{"version":3,"file":"FigmaCollectionFilter.BtheqAkJ.mjs","names":["useRef","useState","useCallback","startTransition"],"sources":["https:/framerusercontent.com/modules/Z1OwFd6R8kyOStaXJq21/myLYOUSHFJRQHgNvfZyx/FigmaCollectionFilter.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useCallback,useEffect,useRef,useState,startTransition}from\"react\";const ALL=\"\\x00__all__\";/**\n * Figma Collection Filter\n *\n * Chip filter + grid for a slotted CMS Collection List. Reads each item's\n * category from a named layer in the rendered output, so the card keeps\n * rendering that layer itself.\n *\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 600\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function FigmaCollectionFilter(props){const{collection,filterLayerName=\"Category\",showAllChip=true,allLabel=\"All\",gridColumns=3,columnGap=20,rowGap=64,enablePagination=false,pageSize=9,paginationGap=8,paginationAlign=\"center\",prevLabel=\"Previous\",nextLabel=\"Next\",scrollOffset=120,chipGap=12,chipRowGap=12,resetItemPadding=true,chipFont,chipPadding=\"13px 16px\",chipRadius=\"0px\",chipBackground=\"#FBFAF9\",chipTextColor=\"rgba(24, 33, 45, 0.7)\",hoverBackground=\"#F2F0EF\",hoverTextColor=\"rgb(24, 33, 45)\",activeBackground=\"#101E26\",activeTextColor=\"#FFFFFF\",chipBorder,overrideCardSpacing=false,cardGap=24,contentGap=20,metaGap=12,avatarGap=12,contentLayerName=\"Content\",metaLayerName=\"Meta\",avatarLayerName=\"avatar\",listLayerName=\"\"}=props;const slotRef=useRef(null);const rootRef=useRef(null);const[categories,setCategories]=useState([]);const[selected,setSelected]=useState(ALL);const[hovered,setHovered]=useState(null);const[page,setPage]=useState(0);// How many items survive the current filter. Read back out of the DOM by\n// the visibility pass below, because the CMS is Framer's, not ours.\nconst[matchCount,setMatchCount]=useState(0);// Two ways to find the list. Default: the Collection List renders as the\n// single child of our slot wrapper. Alternative: when `listLayerName` is\n// set, the list is an ordinary sibling somewhere in the page tree, found\n// by walking up from our own root. That keeps the list inside the\n// breakpoint tree so it keeps its per-breakpoint CSS.\nconst getListEl=useCallback(()=>{const name=(listLayerName??\"\").trim();if(name){const selector='[data-framer-name=\"'+name+'\"]';let node=rootRef.current;while(node){const found=node.querySelector(selector);if(found&&found!==node)return found;node=node.parentElement;}return null;}const root=slotRef.current;if(!root)return null;return root.firstElementChild??null;},[listLayerName]);const getItems=useCallback(()=>{const list=getListEl();if(!list)return[];return Array.from(list.children);},[getListEl]);const readCategory=useCallback(item=>{const node=item.querySelector('[data-framer-name=\"'+filterLayerName+'\"]');const text=node?.textContent??\"\";return text.replace(/\\s+/g,\" \").trim();},[filterLayerName]);// Own the grid: this is the thing a single `layoutGap` cannot express.\nconst applyGrid=useCallback(()=>{const list=getListEl();if(!list)return;list.style.display=\"grid\";list.style.gridTemplateColumns=\"repeat(\"+gridColumns+\", minmax(0, 1fr))\";list.style.columnGap=columnGap+\"px\";list.style.rowGap=rowGap+\"px\";list.style.gap=rowGap+\"px \"+columnGap+\"px\";list.style.alignItems=\"start\";},[getListEl,gridColumns,columnGap,rowGap]);const syncFromDom=useCallback(()=>{const items=getItems();if(!items.length)return;applyGrid();// The card root sits a level or two below the grid item, so walk the\n// first-child chain to find whatever actually carries bottom padding.\nconst clearPad=(el,depth)=>{if(depth>2)return;const pb=window.getComputedStyle(el).paddingBottom;if(pb&&parseFloat(pb)>0)el.style.paddingBottom=\"0px\";const kid=el.firstElementChild;if(kid)clearPad(kid,depth+1);};// Override the card's own internal gaps without editing the card\n// component, which is shared with the other grid on this page.\nconst applyCardSpacing=item=>{if(!overrideCardSpacing)return;const q=name=>name?item.querySelector('[data-framer-name=\"'+name+'\"]'):null;const contentEl=q(contentLayerName);const metaEl=q(metaLayerName);const avatarEl=q(avatarLayerName);const cardRoot=contentEl?.parentElement;if(cardRoot)cardRoot.style.gap=cardGap+\"px\";if(contentEl)contentEl.style.gap=contentGap+\"px\";if(metaEl)metaEl.style.gap=metaGap+\"px\";if(avatarEl)avatarEl.style.gap=avatarGap+\"px\";};const seen=[];for(const item of items){if(resetItemPadding)clearPad(item,0);applyCardSpacing(item);const cat=readCategory(item);if(cat&&!seen.includes(cat))seen.push(cat);}seen.sort((a,b)=>a.localeCompare(b));startTransition(()=>{setCategories(prev=>prev.length===seen.length&&prev.every((c,i)=>c===seen[i])?prev:seen);});},[getItems,applyGrid,readCategory,resetItemPadding,overrideCardSpacing,cardGap,contentGap,metaGap,avatarGap,contentLayerName,metaLayerName,avatarLayerName]);useEffect(()=>{if(typeof window===\"undefined\")return;let observer=null;let raf=0;let tries=0;let cancelled=false;// With `listLayerName` the list is a sibling Framer may render after\n// us, so a single lookup can miss it. Keep looking for a short while,\n// then observe it. The slot case resolves on the first attempt.\nconst attach=()=>{if(cancelled)return;const list=getListEl();if(list){syncFromDom();observer=new MutationObserver(()=>syncFromDom());observer.observe(list,{childList:true,subtree:true});return;}if(tries++<120)raf=requestAnimationFrame(attach);};syncFromDom();attach();return()=>{cancelled=true;if(raf)cancelAnimationFrame(raf);if(observer)observer.disconnect();};},[syncFromDom,getListEl]);// Show/hide items rather than unmounting, so Framer keeps owning the CMS.\n// Pagination is a second pass over the *filtered* set, not the full one —\n// otherwise page 2 of a small category renders an empty grid.\nuseEffect(()=>{if(typeof window===\"undefined\")return;const items=getItems();const matches=items.filter(item=>selected===ALL||readCategory(item)===selected);const start=enablePagination?page*pageSize:0;const end=enablePagination?start+pageSize:matches.length;const visible=new Set(matches.slice(start,end));for(const item of items){item.style.display=visible.has(item)?\"\":\"none\";}startTransition(()=>{setMatchCount(prev=>prev===matches.length?prev:matches.length);});},[selected,categories,page,pageSize,enablePagination,getItems,readCategory]);const totalPages=enablePagination?Math.max(1,Math.ceil(matchCount/Math.max(1,pageSize))):1;// A category with fewer pages than the one we're on would otherwise strand\n// the reader on an empty grid.\nuseEffect(()=>{if(page>totalPages-1)setPage(totalPages-1);},[page,totalPages]);const goToPage=useCallback(next=>{startTransition(()=>setPage(next));const root=rootRef.current;if(!root)return;const top=root.getBoundingClientRect().top+window.scrollY-scrollOffset;window.scrollTo({top,behavior:\"smooth\"});},[scrollOffset]);const chips=[];if(showAllChip)chips.push({key:ALL,label:allLabel});for(const c of categories)chips.push({key:c,label:c});// First, last, and the current page ±1 — everything else collapses to an\n// ellipsis, so the row stays one line however many articles land.\nconst pageList=[];if(enablePagination&&totalPages>1){const keep=new Set([0,totalPages-1,page-1,page,page+1]);let last=-1;for(let i=0;i<totalPages;i++){if(!keep.has(i))continue;if(last>=0&&i-last>1)pageList.push(\"gap\");pageList.push(i);last=i;}}const borderStyle=chipBorder?.borderWidth?{borderStyle:chipBorder.borderStyle??\"solid\",borderWidth:chipBorder.borderWidth,borderColor:chipBorder.borderColor??\"transparent\"}:{border:\"none\"};// The pager wears the filter chips' clothes — same tokens, so it can never\n// drift from them and there is no second set of controls to keep in sync.\nconst pagerButtonStyle=(isActive,isHover,isDisabled)=>({...chipFont,padding:chipPadding||\"13px 16px\",borderRadius:chipRadius||\"0px\",...borderStyle,cursor:isDisabled?\"default\":\"pointer\",whiteSpace:\"nowrap\",appearance:\"none\",flex:\"0 0 auto\",minWidth:\"max-content\",boxSizing:\"border-box\",margin:0,textAlign:\"center\",opacity:isDisabled?.35:1,background:isActive?activeBackground:isHover?hoverBackground:chipBackground,color:isActive?activeTextColor:isHover?hoverTextColor:chipTextColor,transition:\"background 0.15s ease, color 0.15s ease\"});return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{...props.style,position:\"relative\",width:\"100%\",display:\"flex\",flexDirection:\"column\",gap:40},children:[/*#__PURE__*/_jsx(\"div\",{role:\"tablist\",\"aria-label\":\"Filter by category\",style:{display:\"flex\",flexWrap:\"wrap\",columnGap:chipGap,rowGap:chipRowGap,alignItems:\"center\"},children:chips.map(({key,label})=>{const isActive=selected===key;const isHover=hovered===key&&!isActive;return /*#__PURE__*/_jsx(\"button\",{type:\"button\",role:\"tab\",\"aria-selected\":isActive,onClick:()=>startTransition(()=>{setSelected(key);setPage(0);}),onMouseEnter:()=>setHovered(key),onMouseLeave:()=>setHovered(null),style:{...chipFont,padding:chipPadding||\"13px 16px\",borderRadius:chipRadius||\"0px\",...borderStyle,cursor:\"pointer\",whiteSpace:\"nowrap\",appearance:\"none\",flex:\"0 0 auto\",width:\"auto\",minWidth:\"max-content\",boxSizing:\"border-box\",margin:0,textAlign:\"center\",background:isActive?activeBackground:isHover?hoverBackground:chipBackground,color:isActive?activeTextColor:isHover?hoverTextColor:chipTextColor,transition:\"background 0.15s ease, color 0.15s ease\"},children:label},key);})}),/*#__PURE__*/_jsx(\"div\",{ref:slotRef,style:{width:\"100%\",display:(listLayerName??\"\").trim()?\"none\":undefined},children:collection}),enablePagination&&totalPages>1&&/*#__PURE__*/_jsxs(\"nav\",{\"aria-label\":\"Pagination\",style:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",justifyContent:paginationAlign,gap:paginationGap},children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",disabled:page===0,onClick:()=>goToPage(page-1),onMouseEnter:()=>setHovered(\"__prev__\"),onMouseLeave:()=>setHovered(null),style:pagerButtonStyle(false,hovered===\"__prev__\"&&page>0,page===0),children:prevLabel}),pageList.map((entry,i)=>entry===\"gap\"?/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{...chipFont,color:chipTextColor,padding:\"0 4px\",userSelect:\"none\"},children:\"…\"},\"gap\"+i):/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Page \"+(entry+1),\"aria-current\":entry===page?\"page\":undefined,onClick:()=>goToPage(entry),onMouseEnter:()=>setHovered(\"__p\"+entry),onMouseLeave:()=>setHovered(null),style:pagerButtonStyle(entry===page,hovered===\"__p\"+entry&&entry!==page,false),children:entry+1},entry)),/*#__PURE__*/_jsx(\"button\",{type:\"button\",disabled:page>=totalPages-1,onClick:()=>goToPage(page+1),onMouseEnter:()=>setHovered(\"__next__\"),onMouseLeave:()=>setHovered(null),style:pagerButtonStyle(false,hovered===\"__next__\"&&page<totalPages-1,page>=totalPages-1),children:nextLabel})]})]});}addPropertyControls(FigmaCollectionFilter,{collection:{type:ControlType.Slot,title:\"Collection\",maxCount:1},filterLayerName:{type:ControlType.String,title:\"Filter Layer Name\",defaultValue:\"Category\",description:\"Name of the layer inside each card holding the category\"},listLayerName:{type:ControlType.String,title:\"List Layer Name\",defaultValue:\"\",description:\"Optional. Name of a Collection List elsewhere on the page to drive instead of the Collection slot. Leave empty to use the slot.\"},showAllChip:{type:ControlType.Boolean,title:\"Show All Chip\",defaultValue:true},allLabel:{type:ControlType.String,title:\"All Label\",defaultValue:\"All\",hidden:({showAllChip})=>!showAllChip},gridColumns:{type:ControlType.Number,title:\"Grid Columns\",defaultValue:3,min:1,max:6,step:1,displayStepper:true},columnGap:{type:ControlType.Number,title:\"Column Gap\",defaultValue:20,min:0,max:120,step:1,unit:\"px\"},rowGap:{type:ControlType.Number,title:\"Row Gap\",defaultValue:64,min:0,max:200,step:1,unit:\"px\"},resetItemPadding:{type:ControlType.Boolean,title:\"Reset Item Padding\",defaultValue:true,description:\"Clears bottom padding on cards so Row Gap alone controls the rhythm\"},enablePagination:{type:ControlType.Boolean,title:\"Enable Pagination\",defaultValue:false,description:\"Pages the filtered set. Every item still renders — this is a readability fix, not a page-weight one\"},pageSize:{type:ControlType.Number,title:\"Page Size\",defaultValue:9,min:1,max:60,step:1,displayStepper:true,hidden:({enablePagination})=>!enablePagination},paginationAlign:{type:ControlType.Enum,title:\"Pagination Align\",defaultValue:\"center\",options:[\"flex-start\",\"center\",\"flex-end\"],optionTitles:[\"Left\",\"Centre\",\"Right\"],hidden:({enablePagination})=>!enablePagination},paginationGap:{type:ControlType.Number,title:\"Pagination Gap\",defaultValue:8,min:0,max:60,step:1,unit:\"px\",hidden:({enablePagination})=>!enablePagination},prevLabel:{type:ControlType.String,title:\"Prev Label\",defaultValue:\"Previous\",hidden:({enablePagination})=>!enablePagination},nextLabel:{type:ControlType.String,title:\"Next Label\",defaultValue:\"Next\",hidden:({enablePagination})=>!enablePagination},scrollOffset:{type:ControlType.Number,title:\"Scroll Offset\",defaultValue:120,min:0,max:400,step:4,unit:\"px\",description:\"Clearance for the sticky nav when a page change scrolls back up\",hidden:({enablePagination})=>!enablePagination},chipGap:{type:ControlType.Number,title:\"Chip Gap\",defaultValue:12,min:0,max:60,step:1,unit:\"px\"},chipRowGap:{type:ControlType.Number,title:\"Chip Row Gap\",defaultValue:12,min:0,max:60,step:1,unit:\"px\"},chipFont:{type:ControlType.Font,title:\"Chip Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"16px\",variant:\"Regular\",letterSpacing:\"-0.01em\",lineHeight:\"1em\"}},chipPadding:{type:ControlType.Padding,title:\"Chip Padding\",defaultValue:\"13px 16px\"},chipRadius:{type:ControlType.BorderRadius,title:\"Chip Radius\",defaultValue:\"0px\"},chipBorder:{type:ControlType.Border,title:\"Chip Border\",defaultValue:{borderWidth:0,borderStyle:\"solid\",borderColor:\"rgba(0, 0, 0, 0)\"}},chipBackground:{type:ControlType.Color,title:\"Chip Background\",defaultValue:\"#FBFAF9\"},chipTextColor:{type:ControlType.Color,title:\"Chip Text Color\",defaultValue:\"rgba(24, 33, 45, 0.7)\"},hoverBackground:{type:ControlType.Color,title:\"Hover Background\",defaultValue:\"#F2F0EF\"},hoverTextColor:{type:ControlType.Color,title:\"Hover Text Color\",defaultValue:\"rgb(24, 33, 45)\"},activeBackground:{type:ControlType.Color,title:\"Active Background\",defaultValue:\"#101E26\"},activeTextColor:{type:ControlType.Color,title:\"Active Text Color\",defaultValue:\"#FFFFFF\"},overrideCardSpacing:{type:ControlType.Boolean,title:\"Override Card Spacing\",defaultValue:false,description:\"Take over the gaps inside each card. Off = use the card component's own spacing.\"},cardGap:{type:ControlType.Number,title:\"Card Gap\",description:\"Image to text\",defaultValue:24,min:0,max:120,step:1,unit:\"px\",hidden:({overrideCardSpacing})=>!overrideCardSpacing},contentGap:{type:ControlType.Number,title:\"Content Gap\",description:\"Between meta, title and author\",defaultValue:20,min:0,max:120,step:1,unit:\"px\",hidden:({overrideCardSpacing})=>!overrideCardSpacing},metaGap:{type:ControlType.Number,title:\"Meta Gap\",description:\"Category to dot to date\",defaultValue:12,min:0,max:60,step:1,unit:\"px\",hidden:({overrideCardSpacing})=>!overrideCardSpacing},avatarGap:{type:ControlType.Number,title:\"Avatar Gap\",description:\"Author avatar to name\",defaultValue:12,min:0,max:60,step:1,unit:\"px\",hidden:({overrideCardSpacing})=>!overrideCardSpacing},contentLayerName:{type:ControlType.String,title:\"Content Layer Name\",defaultValue:\"Content\",hidden:({overrideCardSpacing})=>!overrideCardSpacing},metaLayerName:{type:ControlType.String,title:\"Meta Layer Name\",defaultValue:\"Meta\",hidden:({overrideCardSpacing})=>!overrideCardSpacing},avatarLayerName:{type:ControlType.String,title:\"Avatar Layer Name\",defaultValue:\"avatar\",hidden:({overrideCardSpacing})=>!overrideCardSpacing}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FigmaCollectionFilter\",\"slots\":[\"collection\"],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicWidth\":\"1200\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"600\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FigmaCollectionFilter.map"],"mappings":"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"}