1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7616],{59661:(e,t,l)=>{l.d(t,{Lp:()=>d,N_:()=>c,PD:()=>r,_E:()=>o,nH:()=>i,wV:()=>s});var n=l(99374);let r=700;function a(){return(0,n.gt)((0,n.zr)(n.An))}let s="The salon that runs itself.",i="Priced per store.";function o(){return["Idle is all-in-one salon software with AI that answers and books your clients 24/7."]}function d(){return"".concat(a()," per store a month, billed yearly")}function c(){return"Solo is ".concat((0,n.gt)((0,n.zr)(n.ew))," and Grow is ").concat(a()," per store a month, both billed yearly. ")+"Unlimited staff, no commission."}},85928:(e,t,l)=>{l.d(t,{CardRow:()=>o});var n=l(95155),r=l(12115),a=l(51190),s=l(63263);let i="#C85A32";function o(e){let{children:t,grid:l="md:grid-cols-3",className:o="",gap:d="gap-4 md:gap-6",as:c="div",label:u,style:h,stackOnMobile:m=!1}=e,f=(0,r.useRef)(null),[b,p]=(0,r.useState)(()=>r.Children.count(t)),[v,g]=(0,r.useState)(0),[w,x]=(0,r.useState)(!0),[y,N]=(0,r.useState)(!1),[j,k]=(0,r.useState)(!1),C=(0,r.useCallback)(()=>{var e,t;let l=f.current;if(!l)return;p(l.children.length);let n=null!=(t=null==(e=l.children[0])?void 0:e.getBoundingClientRect().width)?t:l.clientWidth,r=parseFloat(getComputedStyle(l).columnGap)||0;g(n?Math.round(l.scrollLeft/(n+r)):0),x(l.scrollLeft<=4),N(l.scrollLeft>=l.scrollWidth-l.clientWidth-4)},[]);(0,r.useEffect)(()=>{let e=window.matchMedia("(max-width: 767.98px)"),t=()=>k(e.matches);return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,r.useEffect)(()=>{let e=f.current;if(e)return C(),e.addEventListener("scroll",C,{passive:!0}),window.addEventListener("resize",C),()=>{e.removeEventListener("scroll",C),window.removeEventListener("resize",C)}},[C]);let E=e=>{var t,l;let n=f.current;if(!n)return;let r=null!=(l=null==(t=n.children[0])?void 0:t.getBoundingClientRect().width)?l:n.clientWidth,a=parseFloat(getComputedStyle(n).columnGap)||0;n.scrollBy({left:e*(r+a),behavior:"smooth"})},L=m?["grid grid-cols-1 sm:grid-cols-2",d,l].join(" "):["flex snap-x snap-mandatory overflow-x-auto scrollbar-hidden pb-1 [&>*]:w-[78vw] [&>*]:shrink-0 [&>*]:snap-start md:grid md:overflow-visible md:pb-0 md:[&>*]:w-auto",d,l].join(" "),S="flex h-9 w-9 items-center justify-center rounded-full bg-white transition-opacity disabled:opacity-30",A={border:"1px solid rgb(var(--theme-border-rgb) / 0.16)",boxShadow:"0 6px 20px rgba(45,41,38,0.08)"};return(0,n.jsxs)("div",{className:o,style:h,children:[(0,n.jsx)(c,{ref:f,className:L,tabIndex:j&&!m?0:void 0,children:t}),b>1&&!m&&(0,n.jsxs)("div",{className:"mt-4 flex items-center justify-between md:hidden",children:[b<=6?(0,n.jsx)("div",{className:"flex items-center gap-1.5","aria-hidden":!0,children:Array.from({length:b}).map((e,t)=>(0,n.jsx)("span",{className:"h-1.5 rounded-full transition-all duration-200",style:{width:t===v?18:6,background:t===v?i:"rgb(var(--theme-text-rgb) / 0.16)"}},t))}):(0,n.jsx)("div",{className:"h-1.5 w-24 overflow-hidden rounded-full",style:{background:"rgb(var(--theme-text-rgb) / 0.12)"},"aria-hidden":!0,children:(0,n.jsx)("span",{className:"block h-full rounded-full transition-all duration-200",style:{width:"".concat(Math.max(12,100/b),"%"),marginLeft:"".concat(v/b*100,"%"),background:i}})}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("button",{type:"button",className:S,style:A,onClick:()=>E(-1),disabled:w,"aria-label":u?"Previous ".concat(u):"Previous card",children:(0,n.jsx)(a.A,{className:"h-4 w-4",style:{color:i}})}),(0,n.jsx)("button",{type:"button",className:S,style:A,onClick:()=>E(1),disabled:y,"aria-label":u?"Next ".concat(u):"Next card",children:(0,n.jsx)(s.A,{className:"h-4 w-4",style:{color:i}})})]})]})]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.