{"version":3,"file":"TrustStripSection.CIniIZPj.mjs","names":["useState","useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/p9qlBMBDEeTJIC3Q44t7/edGRJFzQB8xe9TrWMgB3/TrustStripSection.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef,useState}from\"react\";// ── SMCo RESPONSIVE IMAGE (added 2026-08-10) ──────────────────────────────\n// Framer only emits a srcSet for ControlType.ResponsiveImage. Anything bound\n// through ControlType.Image or a plain String URL ships the full-size original,\n// which is why small logos were arriving as multi-thousand-pixel files.\n// framerusercontent.com accepts ?scale-down-to=<w> and never upscales past the\n// original, so we synthesise a srcSet from the URL. Handles BOTH shapes — a\n// ResponsiveImage object and a legacy plain string — so nothing has to be\n// unbound and rebound in the editor.\nconst SMCO_IMAGE_WIDTHS=[128,256,384,512,768,1024,1536,2048];function smcoImage(input,displayWidth){if(!input)return null;const raw=typeof input===\"string\"?input:input?.src;if(!raw||typeof raw!==\"string\")return null;const src=raw.trim();if(!src)return null;const alt=typeof input===\"string\"?undefined:input?.alt;let srcSet=typeof input===\"string\"?undefined:input?.srcSet;if(!srcSet&&src.includes(\"framerusercontent.com\")&&!src.includes(\"scale-down-to\")){// Cover up to 3x DPR. The browser downloads only the single candidate\n// it needs, so an oversized entry costs nothing — whereas a ladder that\n// stops short forces a permanently soft render.\nconst need=displayWidth?Math.ceil(displayWidth*3):2048;const widths=[];for(const w of SMCO_IMAGE_WIDTHS){widths.push(w);if(w>=need)break;}const join=src.includes(\"?\")?\"&\":\"?\";srcSet=widths.map(w=>`${src}${join}scale-down-to=${w} ${w}w`).join(\", \");}return{src,srcSet,alt};}// ── FAIL-OPEN REVEAL (2026-08-11) ─────────────────────────────────────────\n// The client-logo strip is the homepage's primary social proof — it must never\n// be gated behind an effect that might not run. Contract: the VISIBLE state is\n// the default, the IntersectionObserver is decoration layered on top, and every\n// exit path (SSR, canvas, missing API, observer that never fires, reduced\n// motion) lands on visible. The rect guard below force-reveals if the observer\n// stays silent, so a broken observer can never blank the logos.\nconst isStaticEnv=()=>typeof window===\"undefined\"||RenderTarget.current()===RenderTarget.canvas;const prefersReducedMotion=()=>typeof window!==\"undefined\"&&typeof window.matchMedia===\"function\"&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;// Mirrors the observer's own threshold, so the guard reveals at the same moment\n// a working observer would rather than guessing. Anything unmeasurable reveals.\nconst isOnScreen=(node,threshold)=>{if(typeof node.getBoundingClientRect!==\"function\")return true;const rect=node.getBoundingClientRect();const vh=window.innerHeight||document.documentElement.clientHeight||0;if(rect.height<=0||vh<=0)return true;const visible=Math.min(rect.bottom,vh)-Math.max(rect.top,0);return visible>0&&visible/rect.height>=threshold;};// ── LOGOS NORMALISED BY HEIGHT (2026-08-11) ───────────────────────────────\n// The strip used to size every logo by WIDTH: the tile was `width: logo.width`\n// and the <img> inherited it, with logoHeight acting only as a ceiling. Live\n// measurement showed exactly what that does to a mixed set of lockups —\n// Turtle Beach rendered 140×96 and eMoney 130×96 (stacked, squarish marks that\n// hit the ceiling), while Edward Jones rendered 140×21 and Autodesk 140×15\n// (long wordmarks starved by the same width). A 6x height spread inside one\n// row: the tall ones read as billboards, the wordmarks disappeared.\n// A logo strip is normalised on HEIGHT, so that is what we constrain now —\n// height + width:auto + object-fit:contain. max-width is demoted to a pure\n// safety stop so a very long wordmark still can't run away with the row.\nconst SMCO_LOGO_CAP_DESKTOP=32;const SMCO_LOGO_CAP_MOBILE=22;const SMCO_LOGO_MAX_WIDTH_DESKTOP=240;const SMCO_LOGO_MAX_WIDTH_MOBILE=200;function useDarkMode(){const[isDark,setIsDark]=useState(false);useEffect(()=>{if(typeof document===\"undefined\")return;const check=()=>setIsDark(document.documentElement.classList.contains(\"dark\"));check();const onChange=e=>{const detail=e.detail;if(detail&&detail.theme){setIsDark(detail.theme===\"dark\");}};document.addEventListener(\"smco-theme-change\",onChange);return()=>document.removeEventListener(\"smco-theme-change\",onChange);},[]);return isDark;}// ── CANONICAL KITS-SHIPPED FIGURE (2026-08-26) ────────────────────────────\n// The owner's canonical number is 20,000+, and both the destructured default\n// above and the `stats` property control at the bottom of this file already\n// say so. The live site did not: the homepage and several category pages were\n// still rendering \"15,000+\", because each INSTANCE carries its own `stats`\n// array override, copied out of the old defaults at the moment the component\n// was placed. An instance override always beats a code default, so correcting\n// the default fixed nothing that had already been inserted.\n// ControlType.Array props are invisible to the Framer MCP XML API — they can\n// be neither read nor written programmatically — so the only other route is\n// hand-editing the stats list in every instance's property panel, one page at\n// a time, and repeating that on every future insert. This shim resolves the\n// number at render instead, the way resolveCategoryHeroPrice (InteriorHero),\n// resolveCountCopy (CategoryGridSection) and the Footer copyright shim do, so\n// SMCO_KITS_SHIPPED is the single line to edit when the figure next changes.\n// Deliberately narrow: it rewrites the value of a stat whose label names the\n// kits figure and nothing else. Every other stat — \"5-Star / Google Rating\",\n// \"FREE / Shipping Nationwide\", and anything an instance adds later — is\n// passed straight through, unchanged and by identity. It fails open on any\n// unexpected shape (non-array input, non-object row, missing or non-string\n// label) rather than throwing: a wrong number is a copy bug, a thrown error is\n// a blank homepage section.\n//\n// BROADENED 2026-08-26: the first cut matched the label by EXACT equality on\n// \"kits shipped\". That fixed most pages and silently let one through — the\n// /experiences/charcuterie/ instance labels the same stat \"Kits Delivered\"\n// and carried the value \"20,00+\", a typo missing a zero, so the equality test\n// skipped the row and a malformed kits figure sat live on the page. An exact\n// label match is only as good as the wording every instance happens to use,\n// so the test is a normalised CONTAINS now: lowercase + trim the label, then\n// require \"kit\" AND one of \"shipped\" / \"delivered\" / \"sent\". That catches\n// \"Kits Shipped\", \"Kits Delivered\" and \"kits shipped to date\", and still\n// cannot reach \"Google Rating\", \"Shipping Nationwide\", \"Free Shipping\",\n// \"Events Hosted\" or \"Repeat Clients\" — none of them contain \"kit\".\n// SMCO_KITS_SHIPPED stays the single line to edit when the figure changes.\nconst SMCO_KITS_SHIPPED=\"20,000+\";const SMCO_KITS_SHIPPED_VERBS=[\"shipped\",\"delivered\",\"sent\"];function isKitsShippedLabel(label){const normalised=label.trim().toLowerCase();if(!normalised.includes(\"kit\"))return false;return SMCO_KITS_SHIPPED_VERBS.some(verb=>normalised.includes(verb));}function resolveStats(stats){if(!Array.isArray(stats))return stats;return stats.map(stat=>{if(!stat||typeof stat!==\"object\")return stat;const label=stat.label;if(typeof label!==\"string\")return stat;if(!isKitsShippedLabel(label))return stat;if(stat.value===SMCO_KITS_SHIPPED)return stat;return{...stat,value:SMCO_KITS_SHIPPED};});}// SMCo curated trust strip — 12 brands locked 2026-06-10.\n// PLACEHOLDER URLs (clearbit + simpleicons) get the strip rendering while\n// Brent uploads the real SVG/PNG files into Framer's Assets panel. Once\n// uploaded, swap each row's logo via the asset picker (ControlType.Image)\n// in the property panel — no URL pasting needed.\n// Source files live at: /SMCO HQ/08 - BRAND & MEDIA/Client Logos/\n// showLogos / showStats (2026-07-19): either half can be switched off independently,\n// so interior pages can run a stats-only trust bar without repeating the homepage\n// logo marquee. Both default ON for back-compat.\nconst SMCO_TRUST_LOGOS=[{name:\"Google\",src:\"https://cdn.simpleicons.org/google/000000\",width:120},{name:\"Meta\",src:\"https://cdn.simpleicons.org/meta/000000\",width:115},{name:\"Amazon\",src:\"https://cdn.simpleicons.org/amazon/000000\",width:130},{name:\"Autodesk\",src:\"https://cdn.simpleicons.org/autodesk/000000\",width:130},{name:\"UKG\",src:\"https://logo.clearbit.com/ukg.com\",width:95},{name:\"BD\",src:\"https://logo.clearbit.com/bd.com\",width:70},{name:\"Juniper Networks\",src:\"https://cdn.simpleicons.org/junipernetworks/000000\",width:155},{name:\"US Bank\",src:\"https://logo.clearbit.com/usbank.com\",width:120},{name:\"Edward Jones\",src:\"https://logo.clearbit.com/edwardjones.com\",width:140},{name:\"Meltwater\",src:\"https://logo.clearbit.com/meltwater.com\",width:130},{name:\"eMoney\",src:\"https://logo.clearbit.com/emoneyadvisor.com\",width:130},{name:\"Turtle Beach\",src:\"https://logo.clearbit.com/turtlebeach.com\",width:140}];/**\n * SMCo TrustStripSection — Section 2 of the homepage.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicHeight 360\n */export default function TrustStripSection(props){const{logos=SMCO_TRUST_LOGOS,stats=[{value:\"20,000+\",label:\"Kits Shipped\"},{value:\"5-Star\",label:\"Google Rating\"},{value:\"FREE\",label:\"Shipping Nationwide\"}],logoOpacity=.62,logoHeight=56,marqueeDuration=50,logoGap=88,showLogos=true,showStats=true,backgroundColor=\"#f8f5f0\",textColor=\"#0e0e0e\",subtleTextColor=\"rgba(14, 14, 14, 0.62)\",accentColor=\"#96c0a5\",hairlineColor=\"rgba(14, 14, 14, 0.10)\"}=props;const isDark=useDarkMode();const effBg=isDark?\"#1a1612\":backgroundColor;const effText=isDark?\"#f4f4f4\":textColor;const effSubtle=isDark?\"rgba(244, 244, 244, 0.62)\":subtleTextColor;const effHairline=isDark?\"rgba(244, 244, 244, 0.10)\":hairlineColor;const logoFilter=isDark?\"brightness(0) invert(1)\":\"brightness(0) invert(0)\";const ref=useRef(null);const trackRef=useRef(null);const positionRef=useRef(0);const isDraggingRef=useRef(false);const isPointerDownRef=useRef(false);const dragRef=useRef({startX:0,startY:0,startPosition:0,locked:false,direction:null});// Default = revealed. Static export, canvas and reduced-motion users get the\n// final state with zero JS; only a live, motion-friendly browser ever starts\n// from the decorative pre-reveal state.\nconst[revealed,setRevealed]=useState(()=>isStaticEnv()||prefersReducedMotion());const[isMobile,setIsMobile]=useState(false);const[cursorState,setCursorState]=useState(\"grab\");// 2026-08-11: the tiles are content-width now, so the marquee's loop\n// distance is measured off the track instead of summed from logo.width.\nconst[trackSetWidth,setTrackSetWidth]=useState(0);useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(max-width: 880px)\");const onChange=()=>setIsMobile(mq.matches);onChange();if(mq.addEventListener){mq.addEventListener(\"change\",onChange);return()=>mq.removeEventListener(\"change\",onChange);}mq.addListener(onChange);return()=>mq.removeListener(onChange);},[]);// 2026-08-11: logoHeight is still the live control — it just constrains the\n// RENDERED LOGO height now instead of the tile box, and is clamped into the\n// optical band. The homepage instance still carries the old tile value (96),\n// which as a true logo height would be a billboard, so the clamp is what\n// makes the fix land without touching the instance or the control block.\nconst requestedLogoCap=typeof logoHeight===\"number\"&&logoHeight>0?logoHeight:56;const logoCap=Math.min(requestedLogoCap,isMobile?SMCO_LOGO_CAP_MOBILE:SMCO_LOGO_CAP_DESKTOP);const logoMaxWidth=isMobile?SMCO_LOGO_MAX_WIDTH_MOBILE:SMCO_LOGO_MAX_WIDTH_DESKTOP;useEffect(()=>{if(revealed)return;const node=ref.current;// Fail open: no node, or no observer API → show the strip now.\nif(!node||typeof IntersectionObserver===\"undefined\"){setRevealed(true);return;}let observer=null;try{observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(entry.isIntersecting)setRevealed(true);});},{threshold:.15});observer.observe(node);}catch{setRevealed(true);return;}// Guard: a silent observer must never leave the logos invisible. Poll\n// the rect at the observer's own threshold, and force-reveal outright\n// once the deadline passes even if the rect can't be trusted.\nconst deadline=Date.now()+2e4;const guard=window.setInterval(()=>{if(isOnScreen(node,.15)||Date.now()>deadline){setRevealed(true);}},400);return()=>{if(observer)observer.disconnect();window.clearInterval(guard);};},[revealed]);// Retained as the pre-measurement fallback so setWidth is never 0 — a 0 here\n// would stall the marquee and make wrap() spin.\nconst fallbackSetWidth=logos.reduce((sum,l)=>sum+l.width+logoGap,0);const setWidth=trackSetWidth>0?trackSetWidth:fallbackSetWidth;// 2026-08-11: the track renders the list DOUBLED plus one trailing gap, so\n// its scrollWidth is exactly two sets wide. Re-measures as the logos decode\n// (widths are intrinsic now) and on any resize, so the loop stays seamless.\nuseEffect(()=>{if(!showLogos)return;const node=trackRef.current;if(!node)return;const measure=()=>{const total=node.scrollWidth;if(total>0)setTrackSetWidth(total/2);};measure();let ro=null;if(typeof ResizeObserver!==\"undefined\"){ro=new ResizeObserver(measure);ro.observe(node);}window.addEventListener(\"resize\",measure);return()=>{if(ro)ro.disconnect();window.removeEventListener(\"resize\",measure);};},[showLogos,isMobile,logoGap,logoCap,logos]);useEffect(()=>{if(!showLogos||setWidth<=0)return;let raf=0;let lastTime=performance.now();const speed=setWidth/(Math.max(1,marqueeDuration)*1e3);const tick=now=>{const dt=now-lastTime;lastTime=now;if(!isDraggingRef.current){positionRef.current-=speed*dt;while(positionRef.current<=-setWidth){positionRef.current+=setWidth;}}if(trackRef.current){trackRef.current.style.transform=`translate3d(${positionRef.current}px, 0, 0)`;}raf=requestAnimationFrame(tick);};raf=requestAnimationFrame(tick);return()=>cancelAnimationFrame(raf);},[showLogos,setWidth,marqueeDuration]);const wrap=n=>{// 2026-08-11: setWidth is measured now, so guard the loops — a 0 or\n// negative span would spin here forever.\nif(!(setWidth>0))return n;let next=n;while(next<=-setWidth)next+=setWidth;while(next>0)next-=setWidth;return next;};const onPointerDown=e=>{if(!e.isPrimary)return;isPointerDownRef.current=true;dragRef.current={startX:e.clientX,startY:e.clientY,startPosition:positionRef.current,locked:false,direction:null};};const onPointerMove=e=>{if(!isPointerDownRef.current)return;const drag=dragRef.current;const dx=e.clientX-drag.startX;const dy=e.clientY-drag.startY;if(!drag.locked){const adx=Math.abs(dx);const ady=Math.abs(dy);if(adx<5&&ady<5)return;if(ady>adx){drag.locked=true;drag.direction=\"v\";return;}drag.locked=true;drag.direction=\"h\";isDraggingRef.current=true;setCursorState(\"grabbing\");try{e.currentTarget.setPointerCapture(e.pointerId);}catch{// unsupported\n}}if(drag.direction!==\"h\")return;positionRef.current=wrap(drag.startPosition+dx);};const endDrag=e=>{isPointerDownRef.current=false;if(isDraggingRef.current){isDraggingRef.current=false;setCursorState(\"grab\");try{e.currentTarget.releasePointerCapture(e.pointerId);}catch{// unsupported\n}}dragRef.current.locked=false;dragRef.current.direction=null;};const ease=\"cubic-bezier(0.16, 1, 0.3, 1)\";const horizontalPadding=isMobile?\"24px\":\"clamp(32px, 6vw, 96px)\";const verticalPaddingTop=isMobile?\"32px\":\"clamp(40px, 4.5vw, 72px)\";const verticalPaddingBottom=isMobile?\"56px\":\"clamp(72px, 9vw, 120px)\";const reveal=delay=>({opacity:revealed?1:0,transform:revealed?\"translateY(0)\":\"translateY(20px)\",transition:`opacity 900ms ${ease} ${delay}ms, transform 900ms ${ease} ${delay}ms`});const doubled=[...logos,...logos];// Instance overrides can still carry the old figure — see\n// SMCO_KITS_SHIPPED above. Resolved once, here, for the row below.\nconst resolvedStats=resolveStats(stats);const fadeMask=\"linear-gradient(to right, transparent 0%, black 6%, black 94%, transparent 100%)\";return /*#__PURE__*/_jsx(\"section\",{ref:ref,\"data-section\":\"trust\",style:{position:\"relative\",width:\"100%\",backgroundColor:effBg,color:effText,paddingTop:verticalPaddingTop,paddingBottom:verticalPaddingBottom,paddingLeft:horizontalPadding,paddingRight:horizontalPadding,boxSizing:\"border-box\",overflow:\"hidden\",fontFamily:\"'Urbanist', sans-serif\",transition:`background-color 480ms ${ease}, color 480ms ${ease}`},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",maxWidth:1440,margin:\"0 auto\"},children:[showLogos&&/*#__PURE__*/_jsx(\"div\",{onPointerDown:onPointerDown,onPointerMove:onPointerMove,onPointerUp:endDrag,onPointerCancel:endDrag,onPointerLeave:endDrag,style:{...reveal(0),position:\"relative\",overflow:\"hidden\",width:\"100%\",marginBottom:showStats?isMobile?56:72:0,WebkitMaskImage:fadeMask,maskImage:fadeMask,cursor:cursorState,touchAction:\"pan-y\",userSelect:\"none\",WebkitUserSelect:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{ref:trackRef,style:{display:\"flex\",alignItems:\"center\",gap:logoGap,width:\"max-content\",willChange:\"transform\",paddingRight:logoGap},children:doubled.map((logo,idx)=>/*#__PURE__*/_jsx(LogoTile,{logo:logo,capHeight:logoCap,maxWidth:logoMaxWidth,filter:logoFilter,baseOpacity:logoOpacity,ease:ease},logo.name+\"-\"+idx))})}),showStats&&/*#__PURE__*/_jsxs(_Fragment,{children:[showLogos&&/*#__PURE__*/_jsx(\"div\",{style:{...reveal(150),width:\"100%\",height:1,backgroundColor:effHairline,marginBottom:isMobile?40:56,transition:`background-color 480ms ${ease}`}}),/*#__PURE__*/_jsx(\"div\",{style:{...reveal(250),display:\"grid\",// STAT ROW ON MOBILE (2026-08-11): this grid was\n// \"1fr\" under 880px, so the three stats stacked and\n// ate close to a full phone screen of scroll before\n// anything else loaded. It is one row at every width\n// now. Designed against the 400px reference: 400 −\n// 48px gutters = 337px of content, minus two 10px\n// gaps = 317px over three columns = 105.7px per\n// column. \"15,000+\" at ~21.6px sets to roughly 78px,\n// so it clears with room, and the labels drop to 9.5px\n// with tight tracking and are free to wrap to two\n// lines (\"Shipping Nationwide\" is the only one that\n// needs to). The two hairlines are horizontal rules\n// above and below the row, not dividers between the\n// stats, so nothing had to be hidden here.\n// SUPERSEDED 2026-08-12: the mobile label is 13px\n// now, not 9.5px (see the label block below). The\n// column maths is unchanged — the labels simply use\n// more of the two-line budget this row already\n// allows for, and alignItems:\"start\" keeps an\n// uneven row from disturbing the values.\ngridTemplateColumns:\"repeat(3, 1fr)\",gap:isMobile?10:24,alignItems:\"start\",textAlign:\"center\"},children:resolvedStats.map((stat,idx)=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:isMobile?4:8,minWidth:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"'Urbanist', sans-serif\",fontSize:isMobile?\"clamp(18px, 5.4vw, 22px)\":\"clamp(44px, 4.4vw, 68px)\",fontWeight:800,lineHeight:1,letterSpacing:\"-0.025em\",color:effText,transition:`color 480ms ${ease}`},children:stat.value}),/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"'Urbanist', sans-serif\",// TYPE SCALE LIFT (2026-08-12): the\n    // stat labels sat at the very bottom\n    // of the scale — 9.5px on mobile and\n    // 12px on desktop — and were the\n    // hardest text on the homepage to\n    // read. Both branches land on 13px,\n    // matching the Navigation and Footer\n    // treatment so the site reads as one\n    // system. The stat VALUES above are\n    // untouched (18px+ mobile, 44px+\n    // desktop), so the value-over-label\n    // hierarchy is preserved.\n    fontSize:13,fontWeight:600,// Tracking eased with the size so the\n    // uppercase labels don't gain a line:\n    // desktop 0.22em → 0.17em, mobile\n    // 0.06em → 0.04em (the 3-up mobile\n    // row only has ~106px per column).\n    letterSpacing:isMobile?\"0.04em\":\"0.17em\",lineHeight:isMobile?1.25:undefined,textTransform:\"uppercase\",color:effSubtle,marginTop:isMobile?2:4,transition:`color 480ms ${ease}`},children:stat.label})]},stat.label+idx))}),/*#__PURE__*/_jsx(\"div\",{style:{...reveal(350),width:\"100%\",height:1,backgroundColor:effHairline,marginTop:isMobile?40:56,transition:`background-color 480ms ${ease}`}})]})]})});}function LogoTile(props){const{logo,capHeight,maxWidth,filter,baseOpacity,ease}=props;// 2026-08-11: logo.width no longer drives layout — it survives as the\n// request-size hint for the srcSet ladder, floored by the safety stop so a\n// wordmark that now renders wider than its old box still asks for enough\n// pixels to stay crisp.\nconst requestWidth=Math.max(logo.width,maxWidth);const im=smcoImage(logo.src,requestWidth);return /*#__PURE__*/_jsx(\"div\",{style:{flexShrink:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",height:capHeight,opacity:baseOpacity,transition:`opacity 320ms ${ease}`,pointerEvents:\"none\"},title:logo.name,children:/*#__PURE__*/_jsx(\"img\",{src:im?im.src:logo.src,srcSet:im?im.srcSet:undefined,sizes:`${requestWidth}px`,alt:logo.name,loading:\"lazy\",decoding:\"async\",draggable:false,style:{// Height is the constraint; width follows the intrinsic\n// ratio. object-fit:contain keeps the mark undistorted if a\n// very long wordmark hits the max-width safety stop.\nheight:capHeight,width:\"auto\",maxWidth,objectFit:\"contain\",filter,transition:`filter 480ms ${ease}`,userSelect:\"none\",WebkitUserSelect:\"none\",pointerEvents:\"none\"}})});}addPropertyControls(TrustStripSection,{showLogos:{type:ControlType.Boolean,title:\"Show Logos\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},logos:{type:ControlType.Array,title:\"Logos\",hidden:props=>!props.showLogos,control:{type:ControlType.Object,controls:{name:{type:ControlType.String,title:\"Name\",defaultValue:\"Brand\"},src:{type:ControlType.Image,title:\"Logo\"},width:{type:ControlType.Number,title:\"Width\",defaultValue:125,min:40,max:240,step:5}}},defaultValue:SMCO_TRUST_LOGOS},showStats:{type:ControlType.Boolean,title:\"Show Stats\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},stats:{type:ControlType.Array,title:\"Stats\",hidden:props=>!props.showStats,control:{type:ControlType.Object,controls:{value:{type:ControlType.String,title:\"Value\",defaultValue:\"100+\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"Metric\"}}},defaultValue:[{value:\"20,000+\",label:\"Kits Shipped\"},{value:\"5-Star\",label:\"Google Rating\"},{value:\"FREE\",label:\"Shipping Nationwide\"}]},logoOpacity:{type:ControlType.Number,title:\"Logo Opacity\",defaultValue:.62,min:.3,max:1,step:.02,hidden:props=>!props.showLogos},logoHeight:{type:ControlType.Number,title:\"Logo Height (px)\",defaultValue:56,min:28,max:96,step:4,hidden:props=>!props.showLogos},marqueeDuration:{type:ControlType.Number,title:\"Scroll Duration (s)\",defaultValue:50,min:15,max:120,step:5,hidden:props=>!props.showLogos},logoGap:{type:ControlType.Number,title:\"Logo Gap (px)\",defaultValue:88,min:24,max:200,step:4,hidden:props=>!props.showLogos},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#f8f5f0\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#0e0e0e\"},subtleTextColor:{type:ControlType.Color,title:\"Text Subtle\",defaultValue:\"rgba(14, 14, 14, 0.62)\"},accentColor:{type:ControlType.Color,title:\"Accent (Sage)\",defaultValue:\"#96c0a5\"},hairlineColor:{type:ControlType.Color,title:\"Hairline\",defaultValue:\"rgba(14, 14, 14, 0.10)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TrustStripSection\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"360\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TrustStripSection.map"],"mappings":"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"}