{"version":3,"file":"PartnersSlider.DIrq-Ds9.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/SocKPhth27NuCEQiu0Ge/lfPCS5UXSFMMHVUJtV1p/PartnersSlider.js"],"sourcesContent":["// ═══════════════════════════════════════════════════════════════════\n//  Clinico Partners Slider — Framer Code Component\n//  Infinite auto-scrolling logo carousel. Upload up to 10 logos.\n//  Slows down on hover. Matches the Clinico website exactly.\n//  Zero external dependencies — uses framer-motion (built into Framer).\n//\n//  Responsive: column layout on mobile, row on desktop.\n//  Optional top border matches site usage.\n//  Font: Geist Sans (matches the Clinico website).\n// ═══════════════════════════════════════════════════════════════════\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useRef,useState,useEffect,useCallback}from\"react\";import{motion,useMotionValue,animate}from\"framer-motion\";// ── Infinite Slider Engine ─────────────────────────────────────\nfunction InfiniteSlider({children,gap=112,speed=40,speedOnHover=20,remeasureKey=0}){const containerRef=useRef(null);const[scrollW,setScrollW]=useState(0);const[currentSpeed,setCurrentSpeed]=useState(speed);const translation=useMotionValue(0);const[isTransitioning,setIsTransitioning]=useState(false);const[animKey,setAnimKey]=useState(0);const measure=useCallback(()=>{if(containerRef.current){setScrollW(containerRef.current.scrollWidth);}},[]);useEffect(()=>{measure();},[measure,remeasureKey]);useEffect(()=>{const el=containerRef.current;if(!el)return;const obs=new ResizeObserver(measure);obs.observe(el);return()=>obs.disconnect();},[measure]);useEffect(()=>{const contentSize=scrollW+gap;if(contentSize<=gap)return;const from=0;const to=-contentSize/2;const distance=Math.abs(to-from);let controls;if(isTransitioning){const remaining=Math.abs(translation.get()-to);controls=animate(translation,[translation.get(),to],{ease:\"linear\",duration:remaining/currentSpeed,onComplete:()=>{setIsTransitioning(false);setAnimKey(k=>k+1);}});}else{controls=animate(translation,[from,to],{ease:\"linear\",duration:distance/currentSpeed,repeat:Infinity,repeatType:\"loop\",repeatDelay:0,onRepeat:()=>translation.set(from)});}return()=>controls?.stop();},[animKey,translation,currentSpeed,scrollW,gap,isTransitioning]);return /*#__PURE__*/_jsx(\"div\",{style:{overflow:\"hidden\",width:\"100%\"},children:/*#__PURE__*/_jsxs(motion.div,{ref:containerRef,style:{display:\"flex\",width:\"max-content\",gap,x:translation},onHoverStart:()=>{setIsTransitioning(true);setCurrentSpeed(speedOnHover);},onHoverEnd:()=>{setIsTransitioning(true);setCurrentSpeed(speed);},children:[children,children]})});}const FONT_FAMILY='Geist, \"Geist Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif';// ════════════════════════════════════════════════════════════════\n//  Main Component\n// ════════════════════════════════════════════════════════════════\n/**\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 60\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function PartnersSlider(props){const{label=\"Meihin luottaa jo\",variant=\"light\",monochrome=false,showBorder=false,speed=40,speedOnHover=20,logoGap=112,logoHeight=36,logo1,logo2,logo3,logo4,logo5,logo6,logo7,logo8,logo9,logo10,style}=props;const isDark=variant===\"dark\";const wrapperRef=useRef(null);const[componentWidth,setComponentWidth]=useState(800);useEffect(()=>{const el=wrapperRef.current;if(!el)return;const observer=new ResizeObserver(entries=>{for(const entry of entries){setComponentWidth(entry.contentRect.width);}});observer.observe(el);setComponentWidth(el.getBoundingClientRect().width);return()=>observer.disconnect();},[]);const isMobile=componentWidth<768;const allLogos=[logo1,logo2,logo3,logo4,logo5,logo6,logo7,logo8,logo9,logo10].filter(Boolean);const placeholders=[\"https://html.tailus.io/blocks/customers/nvidia.svg\",\"https://html.tailus.io/blocks/customers/column.svg\",\"https://html.tailus.io/blocks/customers/github.svg\",\"https://html.tailus.io/blocks/customers/nike.svg\",\"https://html.tailus.io/blocks/customers/lemonsqueezy.svg\",\"https://html.tailus.io/blocks/customers/laravel.svg\",\"https://html.tailus.io/blocks/customers/lilly.svg\",\"https://html.tailus.io/blocks/customers/openai.svg\"];const logos=allLogos.length>0?allLogos:placeholders;// Re-measure the slider every time an image finishes loading\nconst[loadCount,setLoadCount]=useState(0);const handleImageLoad=useCallback(()=>{setLoadCount(c=>c+1);},[]);const borderStyle=showBorder?{borderTop:isDark?\"1px solid rgba(255,255,255,0.2)\":\"1px solid #E5E7EB\",paddingTop:isMobile?16:32}:{};const imageFilter=monochrome?isDark?\"brightness(0) invert(1)\":\"brightness(0)\":\"none\";const imageOpacity=monochrome&&!isDark?.6:1;return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{width:\"100%\",...borderStyle,...style},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:isMobile?\"column\":\"row\",alignItems:\"center\",gap:isMobile?24:32,width:\"100%\"},children:[label&&/*#__PURE__*/_jsx(\"p\",{style:{margin:0,fontSize:14,lineHeight:\"20px\",whiteSpace:\"nowrap\",color:isDark?\"rgba(255,255,255,0.6)\":\"#6B7280\",fontFamily:FONT_FAMILY},children:label}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1,overflow:\"hidden\",minWidth:0,width:\"100%\"},children:/*#__PURE__*/_jsx(InfiniteSlider,{speed:speed,speedOnHover:speedOnHover,gap:logoGap,remeasureKey:loadCount,children:logos.map((src,i)=>/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",flexShrink:0},children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:`Partner ${i+1}`,onLoad:handleImageLoad,style:{height:logoHeight,width:\"auto\",objectFit:\"contain\",display:\"block\",filter:imageFilter,opacity:imageOpacity}})},i))})})]})});}// ── Property Controls ──────────────────────────────────────────\naddPropertyControls(PartnersSlider,{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Luotettavien kumppaneiden kanssa\"},variant:{type:ControlType.Enum,title:\"Variant\",defaultValue:\"light\",options:[\"light\",\"dark\"],optionTitles:[\"Light (dark logos)\",\"Dark (white logos)\"]},monochrome:{type:ControlType.Boolean,title:\"Monochrome\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},showBorder:{type:ControlType.Boolean,title:\"Top border\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:40,min:10,max:200,step:5},speedOnHover:{type:ControlType.Number,title:\"Speed on hover\",defaultValue:20,min:0,max:100,step:5},logoGap:{type:ControlType.Number,title:\"Logo gap\",defaultValue:112,min:20,max:200,step:8},logoHeight:{type:ControlType.Number,title:\"Logo height\",defaultValue:36,min:10,max:60,step:2},logo1:{type:ControlType.Image,title:\"Logo 1\"},logo2:{type:ControlType.Image,title:\"Logo 2\"},logo3:{type:ControlType.Image,title:\"Logo 3\"},logo4:{type:ControlType.Image,title:\"Logo 4\"},logo5:{type:ControlType.Image,title:\"Logo 5\"},logo6:{type:ControlType.Image,title:\"Logo 6\"},logo7:{type:ControlType.Image,title:\"Logo 7\"},logo8:{type:ControlType.Image,title:\"Logo 8\"},logo9:{type:ControlType.Image,title:\"Logo 9\"},logo10:{type:ControlType.Image,title:\"Logo 10\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PartnersSlider\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"60\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"800\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PartnersSlider.map"],"mappings":"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"}