1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,80436,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={formatUrl:function(){return o},formatWithValidation:function(){return d},urlObjectKeys:function(){return i}};for(var a in s)Object.defineProperty(r,a,{enumerable:!0,get:s[a]});let l=e.r(44066)._(e.r(21630)),n=/https?|ftp|gopher|file/;function o(e){let{auth:t,hostname:r}=e,s=e.protocol||"",a=e.pathname||"",o=e.hash||"",i=e.query||"",d=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?d=t+e.host:r&&(d=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(d+=":"+e.port)),i&&"object"==typeof i&&(i=String(l.urlQueryToSearchParams(i)));let c=e.search||i&&`?${i}`||"";return s&&!s.endsWith(":")&&(s+=":"),e.slashes||(!s||n.test(s))&&!1!==d?(d="//"+(d||""),a&&"/"!==a[0]&&(a="/"+a)):d||(d=""),o&&"#"!==o[0]&&(o="#"+o),c&&"?"!==c[0]&&(c="?"+c),a=a.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${s}${d}${a}${c}${o}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function d(e){return o(e)}},86032,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return a}});let s=e.r(73576);function a(e,t){let r=(0,s.useRef)(null),a=(0,s.useRef)(null);return(0,s.useCallback)(s=>{if(null===s){let e=r.current;e&&(r.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(r.current=l(e,s)),t&&(a.current=l(t,s))},[e,t])}function l(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97151,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return l}});let s=e.r(69131),a=e.r(42783);function l(e){if(!(0,s.isAbsoluteUrl)(e))return!0;try{let t=(0,s.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},50232,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return s}});let s=e=>{}},55367,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={default:function(){return b},useLinkStatus:function(){return y}};for(var a in s)Object.defineProperty(r,a,{enumerable:!0,get:s[a]});let l=e.r(44066),n=e.r(76350),o=l._(e.r(73576)),i=e.r(80436),d=e.r(76968),c=e.r(86032),u=e.r(69131),p=e.r(36948);e.r(72489);let m=e.r(66215),f=e.r(82393),x=e.r(97151),h=e.r(96478);function b(t){var r,s;let a,l,b,[y,j]=(0,o.useOptimistic)(f.IDLE_LINK_STATUS),v=(0,o.useRef)(null),{href:N,as:k,children:w,prefetch:C=null,passHref:S,replace:M,shallow:$,scroll:P,onClick:_,onMouseEnter:O,onTouchStart:R,legacyBehavior:T=!1,onNavigate:A,transitionTypes:L,ref:E,unstable_dynamicOnHover:U,...I}=t;a=w,T&&("string"==typeof a||"number"==typeof a)&&(a=(0,n.jsx)("a",{children:a}));let z=o.default.useContext(d.AppRouterContext),F=!1!==C,K=!1!==C?null===(s=C)||"auto"===s?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,q="string"==typeof(r=k||N)?r:(0,i.formatUrl)(r);if(T){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});l=o.default.Children.only(a)}let B=T?l&&"object"==typeof l&&l.ref:E,D=o.default.useCallback(e=>(null!==z&&(v.current=(0,f.mountLinkInstance)(e,q,z,K,F,j)),()=>{v.current&&((0,f.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,f.unmountPrefetchableInstance)(e)}),[F,q,z,K,j]),H={ref:(0,c.useMergedRef)(D,B),onClick(t){T||"function"!=typeof _||_(t),T&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t),!z||t.defaultPrevented||function(t,r,s,a,l,n,i){if("u">typeof window){let d,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((d=t.currentTarget.getAttribute("target"))&&"_self"!==d||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,x.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),n){let e=!1;if(n({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(25435);o.default.startTransition(()=>{u(r,a?"replace":"push",!1===l?m.ScrollBehavior.NoScroll:m.ScrollBehavior.Default,s.current,i)})}}(t,q,v,M,P,A,L)},onMouseEnter(e){T||"function"!=typeof O||O(e),T&&l.props&&"function"==typeof l.props.onMouseEnter&&l.props.onMouseEnter(e),z&&F&&(0,f.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){T||"function"!=typeof R||R(e),T&&l.props&&"function"==typeof l.props.onTouchStart&&l.props.onTouchStart(e),z&&F&&(0,f.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,u.isAbsoluteUrl)(q)?H.href=q:T&&!S&&("a"!==l.type||"href"in l.props)||(H.href=(0,p.addBasePath)(q)),b=T?o.default.cloneElement(l,H):(0,n.jsx)("a",{...I,...H,children:a}),(0,n.jsx)(g.Provider,{value:y,children:b})}e.r(50232);let g=(0,o.createContext)(f.IDLE_LINK_STATUS),y=()=>(0,o.useContext)(g);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esMo
1dule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},6927,e=>{"use strict";var t=e.i(73576),r=e.i(9476);let s=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var a=e.i(92339);e.s(["default",0,(e,l)=>{let n=(0,t.forwardRef)(({className:n,...o},i)=>(0,t.createElement)(a.default,{ref:i,iconNode:l,className:(0,r.mergeClasses)(`lucide-${s(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,n),...o}));return n.displayName=s(e),n}],6927)},92331,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={default:function(){return c},getImageProps:function(){return d}};for(var a in s)Object.defineProperty(r,a,{enumerable:!0,get:s[a]});let l=e.r(81258),n=e.r(4879),o=e.r(83540),i=l._(e.r(80934));function d(e){let{props:t}=(0,n.getImgProps)(e,{defaultLoader:i.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let c=o.Image},92321,(e,t,r)=>{t.exports=e.r(92331)},12029,e=>{"use strict";let t=(0,e.i(6927).default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);e.s(["Plus",0,t],12029)},15658,e=>{"use strict";var t=e.i(76350),r=e.i(73576),s=e.i(92321),a=e.i(55367),l=e.i(4403),n=e.i(60744),o=e.i(12029),i=e.i(6927);let d=(0,i.default)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]),c=(0,i.default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);var u=e.i(75442);let p=(0,i.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),m=(0,i.default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);var f=e.i(55107),x=e.i(17722);let h=(0,i.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),b=(0,i.default)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);var g=e.i(47163);let y=(e.i(90954).default.env.NEXT_PUBLIC_SITE_URL??"https://mufflersandmore.com").replace(/\/$/,""),j=(e,t)=>Number.parseFloat(e)-Number.parseFloat(t),v=[{key:"outlets",label:"Outlet Count",values:e=>[/\bdual\b/i.test(e.name)?"Dual":"Single"],sort:e=>"Single"===e?-1:1},{key:"inlet",label:"Inlet Size",values:e=>{let t=e.name.match(/([\d.]+)"\s*Inlet/i);return t?[`${t[1]}"`]:[]},sort:j},{key:"outlet",label:"Outlet Size",values:e=>{let t=e.name.match(/([\d.]+)"(?=[^/]*?Outlets?\b)/i);return t?[`${t[1]}"`]:[]},sort:j},{key:"cut",label:"Cut & Edge",values:e=>{let t=[];return/rolled edge/i.test(e.name)&&t.push("Rolled Edge"),/angle cut/i.test(e.name)&&t.push("Angle Cut"),/straight cut/i.test(e.name)&&t.push("Straight Cut"),t}}],N=[{key:"all",label:"All Categories"},{key:"tips",label:"Exhaust Tips"},{key:"mufflers",label:"Mufflers"},{key:"glasspacks",label:"Glasspacks"},{key:"resonators",label:"Resonators"},{key:"flex-tubes",label:"Flex Tubes"},{key:"pipes",label:"Pipes & Fittings"}],k=[{key:"featured",label:"Featured"},{key:"price-asc",label:"Price: Low to High"},{key:"price-desc",label:"Price: High to Low"},{key:"name",label:"Name: A to Z"}],w={clipPath:"polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%)"};function C(e){return Number.isInteger(e)?`$${e}.00`:`$${e.toFixed(2)}`}function S({product:e,qty:r,onAdd:a,onRemove:l,onClose:o,phoneHref:i}){let d=e.available>0;return(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-end justify-center overflow-y-auto bg-background/80 p-0 backdrop-blur-sm sm:items-center sm:p-6",role:"dialog","aria-modal":"true","aria-label":`${e.name} details`,onClick:o,children:(0,t.jsxs)("div",{style:w,className:"relative w-full max-w-3xl border border-border bg-card shadow-2xl sm:rounded-lg",onClick:e=>e.stopPropagation(),children:[(0,t.jsx)("button",{type:"button",onClick:o,"aria-label":"Close",className:"absolute right-3 top-3 z-10 flex h-9 w-9 items-center justify-center rounded-md bg-background/70 text-muted-foreground outline-none ring-1 ring-border backdrop-blur transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary",children:(0,t.jsx)(u.X,{className:"h-4 w-4"})}),(0,t.jsxs)("div",{className:"grid gap-0 sm:grid-cols-2",children:[(0,t.jsxs)("div",{className:"relative aspect-square bg-secondary sm:rou
1nded-l-lg",children:[(0,t.jsx)(s.default,{src:e.image||"/placeholder.svg",alt:e.name,fill:!0,sizes:"(max-width: 640px) 100vw, 384px",className:"object-cover"}),(0,t.jsx)("span",{className:(0,g.cn)("absolute left-3 top-3 rounded px-2 py-1 text-[10px] font-bold uppercase tracking-wide",d?"bg-primary text-primary-foreground":"bg-background/85 text-muted-foreground ring-1 ring-border backdrop-blur"),children:d?`In Stock \xb7 ${e.available}`:"Call to Order"})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-3 p-6",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"font-display text-[11px] font-semibold uppercase tracking-widest text-muted-foreground",children:e.brand}),(0,t.jsx)("h2",{className:"mt-1 font-display text-xl font-bold uppercase leading-tight tracking-tight text-foreground text-balance",children:e.name}),(0,t.jsxs)("p",{className:"mt-1.5 font-mono text-xs text-muted-foreground",children:["SKU: ",e.partNumber,e.altPartNumbers?` \xb7 ${e.altPartNumbers}`:""]})]}),e.details&&(0,t.jsx)("p",{className:"text-sm font-medium text-foreground/90",children:e.details}),e.description&&(0,t.jsx)("p",{className:"text-sm leading-relaxed text-muted-foreground text-pretty",children:e.description}),e.features?.length?(0,t.jsx)("ul",{className:"flex flex-col gap-1.5",children:e.features.map(e=>(0,t.jsxs)("li",{className:"flex items-start gap-2 text-sm text-foreground/90",children:[(0,t.jsx)(h,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-primary"}),(0,t.jsx)("span",{className:"text-pretty",children:e})]},e))}):null,(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between border-t border-border pt-4",children:[(0,t.jsx)("span",{className:"font-display text-2xl font-bold text-primary",children:C(e.retail)}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[!d&&(0,t.jsx)("a",{href:i,"aria-label":"Call to order",className:"inline-flex h-10 w-10 items-center justify-center rounded-md border border-border text-foreground transition-colors hover:border-primary/60 hover:text-primary",children:(0,t.jsx)(n.Phone,{className:"h-4 w-4"})}),(0,t.jsx)($,{qty:r,onAdd:a,onRemove:l})]})]})]})]})]})})}function M({count:e}){return(0,t.jsxs)("div",{className:"mb-6 flex flex-col gap-3 rounded-xl border border-primary/30 bg-gradient-to-br from-card to-secondary/40 p-4 sm:flex-row sm:items-center sm:justify-between sm:p-5",children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground text-pretty",children:[(0,t.jsxs)("span",{className:"font-semibold text-foreground",children:[e," tip",1===e?"":"s"," shown"]})," ","â don't see your size or finish? We can order almost any tip and weld it on for you."]}),(0,t.jsx)("div",{className:"flex flex-shrink-0 flex-wrap gap-2",children:(0,t.jsxs)(a.default,{href:"/#booking",className:"inline-flex items-center justify-center gap-2 rounded-md bg-primary px-4 py-2.5 text-xs font-semibold uppercase tracking-wide text-primary-foreground transition-transform hover:scale-[1.03]",children:[(0,t.jsx)(b,{className:"h-4 w-4"}),"Book Install"]})})]})}function $({qty:e,onAdd:r,onRemove:s}){return 0===e?(0,t.jsxs)("button",{type:"button",onClick:r,className:"inline-flex items-center gap-1.5 rounded-md border border-primary/60 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-primary transition-colors hover:bg-primary hover:text-primary-foreground",children:[(0,t.jsx)(o.Plus,{className:"h-3.5 w-3.5"}),"Add"]}):(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 rounded-md border border-primary/60",children:[(0,t.jsx)("button",{type:"button",onClick:s,"aria-label":"Remove one",className:"flex h-8 w-8 items-center justify-center text-primary transition-colors hover:bg-primary hover:text-primary-foreground",children:1===e?(0,t.jsx)(u.X,{className:"h-3.5 w-3.5"}):(0,t.jsx)(p,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("span",{className:"min-w-4 text-center font-display text-sm font-bold text-foreground",children:e}),(0,t.jsx)("button",{type:"button",onClick:r,"aria-label":"Add one",className:"flex h-8 w-8 items-center justify-center text-primary transition-colors hover:bg-primary hover:text-primary-foreground",children:(0,t.jsx)(o.Plus,{className:"h-3.5 w-3.5"})})]})}function P({phoneHref:e,smsHref:r}){return(0,t.jsxs)("div",{className:"grid overflow-hidden rounded-2xl border border-silver/20 bg-card lg:grid-cols-2",children:[(0,t.jsxs)("div",{className:"flex flex-col justify-center gap-5 p-8 sm:p-10 lg:p-12",children:[(0,t.jsxs)("span",{className:"inline-flex w-fit items-center gap-2 rounded-full bg-primary/15 px-3 py-1.5 text-xs font-bold uppercase tracking-wider text-primary ring-1 ring-primary/30",children:[(0,t.jsx)(x.Shirt,{className:"h-4 w-4"}),"Merch â Coming Soon"]}),(0,t.jsx)("h2",{className:"font-display text-3xl font-bold uppercase leading-[0.95] tracking-tight text-foreground text-balance sm:text-4xl",children:"Rep the Shop"}),(0,t.jsx)("p",{className:"max-w-md text-lg leading-relaxed text-muted-foreground text-pretty",children:"Mufflers & More tees, hats, stickers, and more are on the way. Wear it loud â because stock
1is boring. Check back soon or ask us in the shop about the first drop."}),(0,t.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row",children:[(0,t.jsxs)("a",{href:e,className:"inline-flex items-center justify-center gap-2 rounded-md bg-primary px-6 py-3.5 text-sm font-semibold uppercase tracking-wide text-primary-foreground transition-transform hover:scale-[1.03]",children:[(0,t.jsx)(n.Phone,{className:"h-4 w-4"}),"Ask About Merch"]}),(0,t.jsxs)("a",{href:r,className:"inline-flex items-center justify-center gap-2 rounded-md border border-silver/40 px-6 py-3.5 text-sm font-semibold uppercase tracking-wide text-foreground transition-colors hover:border-primary/60 hover:text-primary",children:[(0,t.jsx)(l.MessageSquare,{className:"h-4 w-4"}),"Text to Reserve"]})]})]}),(0,t.jsxs)("div",{className:"relative min-h-64 overflow-hidden",children:[(0,t.jsx)(s.default,{src:"/images/shop/merch-coming-soon.png",alt:"Mufflers & More branded merchandise â t-shirt, hat, mug, and stickers",fill:!0,sizes:"(max-width: 1024px) 100vw, 50vw",className:"object-cover"}),(0,t.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-card/40 to-transparent"})]})]})}e.s(["ShopGrid",0,function({products:e,phone:a,phoneHref:o,smsHref:i}){let[p,b]=(0,r.useState)("all"),[j,_]=(0,r.useState)("all"),[O,R]=(0,r.useState)(!1),[T,A]=(0,r.useState)(new Set),[L,E]=(0,r.useState)(!1),[U,I]=(0,r.useState)("featured"),[z,F]=(0,r.useState)("grid"),[K,q]=(0,r.useState)(""),[B,D]=(0,r.useState)({}),[H,W]=(0,r.useState)(null),[X,V]=(0,r.useState)({}),G=(0,r.useMemo)(()=>{let t={all:e.length};for(let r of e)t[r.category]=(t[r.category]??0)+1;return t},[e]),Z=(0,r.useMemo)(()=>{let t=new Map;for(let r of e){if(!r.subcategory)continue;t.has(r.category)||t.set(r.category,new Map);let e=t.get(r.category);e.set(r.subcategory,(e.get(r.subcategory)??0)+1)}let r={};for(let[e,s]of t)s.size<2||(r[e]=[...s.entries()].sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).map(([e,t])=>({label:e,count:t})));return r},[e]),J=e=>{E(!1),b(e),_("all"),V({}),A(t=>{if(!t.has(e))return t;let r=new Set(t);return r.delete(e),r})},Q=Object.values(X).reduce((e,t)=>e+t.length,0),Y=(0,r.useMemo)(()=>{let t=e.filter(e=>"tips"===e.category);return v.map(e=>{let r=new Map;for(let s of t)for(let t of e.values(s))r.set(t,(r.get(t)??0)+1);let s=[...r.entries()].map(([e,t])=>({label:e,count:t})).sort((t,r)=>e.sort?e.sort(t.label,r.label):r.count-t.count||t.label.localeCompare(r.label));return{key:e.key,label:e.label,options:s}}).filter(e=>e.options.length>1)},[e]),ee=(0,r.useMemo)(()=>{let t=K.trim().toLowerCase(),r=[...e.filter(e=>{if("all"!==p&&e.category!==p||"all"!==j&&e.subcategory!==j)return!1;for(let t of v){let r=X[t.key];if(r?.length&&!t.values(e).some(e=>r.includes(e)))return!1}return!t||[e.name,e.brand,e.partNumber,e.altPartNumbers??""].join(" ").toLowerCase().includes(t)})];return"price-asc"===U?r.sort((e,t)=>e.retail-t.retail):"price-desc"===U?r.sort((e,t)=>t.retail-e.retail):"name"===U&&r.sort((e,t)=>e.name.localeCompare(t.name)),r},[p,j,e,U,K,X]),et=(0,r.useMemo)(()=>{let t={};for(let r of e)t[r.partNumber]=r;return t},[e]),er=Object.entries(B).filter(([,e])=>e>0),es=er.reduce((e,[,t])=>e+t,0),ea=er.reduce((e,[t,r])=>e+(et[t]?.retail??0)*r,0),el=e=>D(t=>({...t,[e]:(t[e]??0)+1})),en=e=>D(t=>{let r={...t},s=(r[e]??0)-1;return s<=0?delete r[e]:r[e]=s,r});(0,r.useEffect)(()=>{if(!H)return;let e=e=>{"Escape"===e.key&&W(null)};window.addEventListener("keydown",e);let t=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{window.removeEventListener("keydown",e),document.body.style.overflow=t}},[H]);let eo=(0,r.useMemo)(()=>{if(0===er.length)return i;let e=er.map(([e,t])=>{let r=et[e],s=`⢠${t}x ${r?.name??e} (Part #${e}) â ${C((r?.retail??0)*t)}`,a=r?.image?` 2 Photo: ${function(e="/"){return`${y}${e.startsWith("/")?e:`/${e}`}`}(r.image)}`:"";return`${s}${a}`}),t=`Hi Mufflers & More â I'd like to order these parts: 3 4${e.join("\n")} 5 6Order total: ${C(ea)} 7 8Are these available?`;return`${i}?&body=${encodeURIComponent(t)}`},[er,et,ea,i]);return(0,t.jsxs)("div",{className:"dark relative",children:[(0,t.jsxs)("div",{className:"grid gap-8 lg:grid-cols-[248px_1fr]",children:[(0,t.jsxs)("aside",{className:"lg:sticky lg:top-24 lg:self-start",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>R(e=>!e),"aria-expanded":O,className:"mb-4 flex w-full items-center justify-between rounded-md border border-border bg-card px-4 py-3 lg:hidden",children:[(0,t.jsx)("span",{className:"font-display text-sm font-bold uppercase tracking-widest text-primary",children:"Filters & Categories"}),(0,t.jsx)(f.ChevronDown,{className:(0,g.cn)("h-4 w-4 text-muted-foreground transition-transform",O&&"rotate-180")}
8)]}),(0,t.jsxs)("div",{className:(0,g.cn)(O?"block":"hidden","lg:block"),children:[(0,t.jsx)("p",{className:"hidden font-display text-sm font-bold uppercase tracking-widest text-primary lg:block",children:"Categories"}),(0,t.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[N.map(e=>{let r=G[e.key]??0;if("all"!==e.key&&0===r)return null;let s=p===e.key,a="all"!==e.key?Z[e.key]:void 0,l=!!a?.length,n=l&&!T.has(e.key);return(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:w,className:(0,g.cn)("flex items-stretch overflow-hidden transition-colors",s&&"all"===j?"bg-primary text-primary-foreground":"bg-card text-muted-foreground hover:text-foreground"),children:[(0,t.jsxs)("button",{type:"button",onClick:()=>J(e.key),className:"flex flex-1 items-center justify-between px-4 py-3 text-left text-sm font-semibold uppercase tracking-wide",children:[(0,t.jsx)("span",{className:"text-pretty",children:e.label}),(0,t.jsx)("span",{className:(0,g.cn)("ml-2 text-xs font-bold",s&&"all"===j?"text-primary-foreground/80":"text-muted-foreground/70"),children:r})]}),l&&(0,t.jsx)("button",{type:"button",onClick:()=>A(t=>{let r=new Set(t);return r.has(e.key)?r.delete(e.key):r.add(e.key),r}),"aria-label":`${n?"Collapse":"Expand"} ${e.label}`,"aria-expanded":n,className:"flex w-10 items-center justify-center border-l border-border/60 transition-colors hover:bg-secondary/60",children:(0,t.jsx)(f.ChevronDown,{className:(0,g.cn)("h-4 w-4 transition-transform duration-200",n&&"rotate-180")})})]}),l&&n&&(0,t.jsxs)("div",{className:"mt-1 flex flex-col gap-1 border-l-2 border-border/60 pl-3",children:[a.map(r=>{let a=s&&j===r.label;return(0,t.jsxs)("button",{type:"button",onClick:()=>{var t,s;return t=e.key,s=r.label,void(E(!1),b(t),_(s),A(e=>{if(!e.has(t))return e;let r=new Set(e);return r.delete(t),r}))},className:(0,g.cn)("flex items-center justify-between rounded-md px-3 py-2 text-left text-xs font-semibold uppercase tracking-wide transition-colors",a?"bg-secondary text-primary":"text-muted-foreground hover:bg-secondary/60 hover:text-foreground"),children:[(0,t.jsx)("span",{className:"text-pretty",children:r.label}),(0,t.jsx)("span",{className:"ml-2 text-[10px] font-bold opacity-70",children:r.count})]},r.label)}),"tips"===e.key&&"tips"===p&&Y.length>0&&(0,t.jsxs)("div",{className:"mt-3 border-t border-border/60 pt-3",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("p",{className:"font-display text-[11px] font-bold uppercase tracking-widest text-primary",children:"Refine"}),Q>0&&(0,t.jsxs)("button",{type:"button",onClick:()=>V({}),className:"text-[10px] font-semibold uppercase tracking-wide text-muted-foreground underline-offset-2 hover:text-foreground hover:underline",children:["Clear (",Q,")"]})]}),(0,t.jsx)("div",{className:"mt-3 flex flex-col gap-4",children:Y.map(e=>(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-display text-[11px] font-bold uppercase tracking-wide text-foreground",children:e.label}),(0,t.jsx)("div",{className:"mt-2 flex flex-col gap-1.5",children:e.options.map(r=>{let s=(X[e.key]??[]).includes(r.label);return(0,t.jsxs)("button",{type:"button",onClick:()=>{let t,s;return t=e.key,s=r.label,V(e=>{let r=e[t]??[],a=r.includes(s)?r.filter(e=>e!==s):[...r,s],l={...e};return a.length?l[t]=a:delete l[t],l})},className:"flex items-center gap-2.5 text-left",children:[(0,t.jsx)("span",{className:(0,g.cn)("flex h-4 w-4 flex-shrink-0 items-center justify-center rounded border transition-colors",s?"border-primary bg-primary text-primary-foreground":"border-border bg-card"),children:s&&(0,t.jsx)(h,{className:"h-3 w-3"})}),(0,t.jsx)("span",{className:(0,g.cn)("text-xs font-medium transition-colors",s?"text-foreground":"text-muted-foreground"),children:r.label}),(0,t.jsx)("span",{className:"ml-auto text-[10px] font-bold text-muted-foreground/60",children:r.count})]},r.label)})})]},e.key))})]})]})]},e.key)}),(0,t.jsxs)("button",{type:"button",onClick:()=>{E(!0),b("all"),_("all"),V({}),q("")},style:w,className:(0,g.cn)("flex items-center justify-between px-4 py-3 text-left text-sm font-semibold uppercase tracking-wide transition-colors",L?"bg-primary text-primary-foreground":"bg-card text-muted-foreground hover:text-foreground"),children:[(0,t.jsxs)("span",{className:"flex items-center gap-2 text-pretty",children:[(0,t.jsx)(x.Shirt,{className:"h-4 w-4"}),"Merch"]}
8),(0,t.jsx)("span",{className:(0,g.cn)("ml-2 rounded-full px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider",L?"bg-primary-foreground/20 text-primary-foreground":"bg-primary/15 text-primary"),children:"Soon"})]})]})]})]}),(0,t.jsx)("div",{children:L?(0,t.jsx)(P,{phoneHref:o,smsHref:i}):(0,t.jsxs)(t.Fragment,{children:["tips"===p&&(0,t.jsx)(M,{count:ee.length}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-4 border-b border-border pb-5",children:[(0,t.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,t.jsxs)("p",{className:"text-sm text-muted-foreground",children:[(0,t.jsx)("span",{className:"font-display text-lg font-bold text-foreground",children:ee.length})," ","of ",e.length," parts"]}),(0,t.jsxs)("div",{className:"relative w-full max-w-xs sm:w-64",children:[(0,t.jsx)(m,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,t.jsx)("label",{className:"sr-only",htmlFor:"shop-search",children:"Search parts by name, brand, or SKU"}),(0,t.jsx)("input",{id:"shop-search",type:"search",value:K,onChange:e=>q(e.target.value),placeholder:"Search parts or SKUâ¦",className:"w-full rounded-md border border-border bg-card py-2 pl-9 pr-9 text-sm text-foreground outline-none transition-colors placeholder:text-muted-foreground hover:border-primary/50 focus-visible:border-primary"}),K&&(0,t.jsx)("button",{type:"button",onClick:()=>q(""),"aria-label":"Clear search",className:"absolute right-2 top-1/2 flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded text-muted-foreground transition-colors hover:text-foreground",children:(0,t.jsx)(u.X,{className:"h-4 w-4"})})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("label",{className:"sr-only",htmlFor:"sort",children:"Sort products"}),(0,t.jsx)("select",{id:"sort",value:U,onChange:e=>I(e.target.value),className:"rounded-md border border-border bg-card px-3 py-2 text-sm font-medium text-foreground outline-none transition-colors hover:border-primary/50 focus-visible:border-primary",children:k.map(e=>(0,t.jsx)("option",{value:e.key,children:e.label},e.key))}),(0,t.jsxs)("div",{className:"flex items-center overflow-hidden rounded-md border border-border",children:[(0,t.jsx)("button",{type:"button","aria-label":"Grid view","aria-pressed":"grid"===z,onClick:()=>F("grid"),className:(0,g.cn)("flex h-9 w-9 items-center justify-center transition-colors","grid"===z?"bg-primary text-primary-foreground":"bg-card text-muted-foreground hover:text-foreground"),children:(0,t.jsx)(d,{className:"h-4 w-4"})}),(0,t.jsx)("button",{type:"button","aria-label":"List view","aria-pressed":"list"===z,onClick:()=>F("list"),className:(0,g.cn)("flex h-9 w-9 items-center justify-center border-l border-border transition-colors","list"===z?"bg-primary text-primary-foreground":"bg-card text-muted-foreground hover:text-foreground"),children:(0,t.jsx)(c,{className:"h-4 w-4"})})]})]})]}),0===ee.length&&(0,t.jsxs)("div",{className:"mt-10 flex flex-col items-center gap-3 rounded-xl border border-border bg-card px-6 py-16 text-center",children:[(0,t.jsx)(m,{className:"h-8 w-8 text-muted-foreground"}),(0,t.jsx)("p",{className:"font-display text-lg font-bold uppercase tracking-tight text-foreground",children:"No parts found"}),(0,t.jsxs)("p",{className:"max-w-sm text-sm text-muted-foreground text-pretty",children:["We couldn't match"," ",(0,t.jsxs)("span",{className:"text-foreground",children:['"',K,'"']}),". Try a different term, or call and we'll track it down."]}),(0,t.jsx)("button",{type:"button",onClick:()=>{q(""),J("all")},className:"mt-1 rounded-md border border-primary/60 px-4 py-2 text-xs font-semibold uppercase tracking-wide text-primary transition-colors hover:bg-primary hover:text-primary-foreground",children:"Clear search"})]}),(0,t.jsx)("div",{className:(0,g.cn)("mt-6","grid"===z?"grid grid-cols-1 gap-5 sm:grid-cols-2 xl:grid-cols-3":"flex flex-col gap-4"),children:ee.map((e,r)=>{let a=e.available>0,l=B[e.partNumber]??0;return"list"===z?(0,t.jsxs)("article",{style:w,className:"flex gap-4 border border-border bg-card p-4",children:[(0,t.jsx)("button",{type:"button",onClick:()=>W(e),"aria-label":`View details for ${e.name}`,className:"relative h-28 w-28 flex-shrink-0 overflow-hidden rounded-md bg-secondary outline-none focus-visible:ring-2 focus-visible:ring-primary",children:(0,t.jsx)(s.default,{src:e.image||"/placeholder.svg",alt:e.name,fill:!0,sizes:"112px",className:"object-cover"})}),(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"font-display text-[11px] font-semibold uppercase tracking-widest text-muted-foreground",children:e.brand}),(0,t.jsx)("h3",{className:"mt-1 font-display text-sm font-bold uppercase leading-snug tracking-tight text-foreground",children:(0,t.jsx)("button",{type:"button",onClick:()=>W(e),className:"line-clamp-2 text-left outline-none transition-colors hover:text-primary focus-visible:text-primary",children:e.name})}),(0,t.jsxs)("p",{className:"mt-1 font-mono text-xs text-muted-foreground",children:["SKU: ",e.partNumber]}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between pt-3",children:[(0,t.jsx)("span",{className:"font-display text-xl font-bold text-primary",children:C(e.retail)}),(0,t.jsx)($,{qty:l,onAdd:()=>el(e.partNumber),onRemove:()=>en(e.partNumber)})]})]})]},`${e.partNumber}-${r}`):(0,t.jsxs)("article",{style:w,className:"group flex flex-col border border-border bg-card transition-colors hover:border-primary/40",children:[(0,t.jsxs)("div",{className:"relative m-3 aspect-square overflow-hidden rounded-md bg-secondary",children:[(0,t.jsx)("button",{type:"button",onClick:()=>W(e),"aria-label":`View details for ${e.name}`,className:"absolute inset-0 block h-full w-full outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary",children:(0,t.jsx)(s.default,{src:e.image||"/placeholder.svg",alt:e.name,fill:!0,sizes:"(max-width: 640px) 100v
8w, (max-width: 1280px) 50vw, 33vw",className:"object-cover transition-transform duration-500 group-hover:scale-105"})}),(0,t.jsx)("span",{className:(0,g.cn)("pointer-events-none absolute left-2 top-2 rounded px-2 py-1 text-[10px] font-bold uppercase tracking-wide",a?"bg-primary text-primary-foreground":"bg-background/85 text-muted-foreground ring-1 ring-border backdrop-blur"),children:a?`In Stock \xb7 ${e.available}`:"Call to Order"})]}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col px-4 pb-4",children:[(0,t.jsx)("span",{className:"font-display text-[11px] font-semibold uppercase tracking-widest text-muted-foreground",children:e.brand}),(0,t.jsx)("h3",{className:"mt-1.5 font-display text-sm font-bold uppercase leading-snug tracking-tight text-foreground",children:(0,t.jsx)("button",{type:"button",onClick:()=>W(e),className:"line-clamp-3 text-left outline-none transition-colors hover:text-primary focus-visible:text-primary",children:e.name})}),(0,t.jsxs)("p",{className:"mt-2 font-mono text-xs text-muted-foreground",children:["SKU: ",e.partNumber]}),(e.description||e.features?.length)&&(0,t.jsx)("button",{type:"button",onClick:()=>W(e),className:"mt-2 w-fit text-xs font-semibold uppercase tracking-wide text-primary/90 underline-offset-2 outline-none hover:underline focus-visible:underline",children:"View details"}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between pt-4",children:[(0,t.jsx)("span",{className:"font-display text-2xl font-bold text-primary",children:C(e.retail)}),(0,t.jsx)($,{qty:l,onAdd:()=>el(e.partNumber),onRemove:()=>en(e.partNumber)})]})]})]},`${e.partNumber}-${r}`)})})]})})]}),es>0&&(0,t.jsx)("div",{className:"sticky bottom-4 z-30 mt-8",children:(0,t.jsxs)("div",{className:"mx-auto flex max-w-3xl flex-wrap items-center justify-between gap-4 rounded-xl border border-primary/40 bg-card/95 px-5 py-4 shadow-xl backdrop-blur",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex h-9 min-w-9 items-center justify-center rounded-full bg-primary px-2 text-sm font-bold text-primary-foreground",children:es}),(0,t.jsxs)("div",{className:"leading-tight",children:[(0,t.jsxs)("p",{className:"font-display text-sm font-bold uppercase tracking-wide text-foreground",children:[C(ea)," order"]}),(0,t.jsx)("button",{type:"button",onClick:()=>D({}),className:"text-xs text-muted-foreground underline-offset-2 hover:underline",children:"Clear"})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("a",{href:o,"aria-label":`Call ${a}`,className:"inline-flex h-11 w-11 items-center justify-center rounded-md border border-border text-foreground transition-colors hover:border-primary/60 hover:text-primary",children:(0,t.jsx)(n.Phone,{className:"h-4 w-4"})}),(0,t.jsxs)("a",{href:eo,className:"inline-flex items-center gap-2 rounded-md bg-primary px-5 py-3 text-sm font-semibold uppercase tracking-wide text-primary-foreground transition-transform hover:scale-[1.03]",children:[(0,t.jsx)(l.MessageSquare,{className:"h-4 w-4"}),"Text This Order"]})]})]})}),H&&(0,t.jsx)(S,{product:H,qty:B[H.partNumber]??0,onAdd:()=>el(H.partNumber),onRemove:()=>en(H.partNumber),onClose:()=>W(null),phoneHref:o})]})}],15658)}]);
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.