{"version":3,"file":"RBProjectRow.CSXTU8uR.mjs","names":["useState","startTransition","useRef","useMemo","useCallback","_Fragment","Fragment","c","__esmMin","pe","init_npm_react_18_3_1","ne","init_ssg_sandbox_shims","window","te","x","_e","p","c","init_jsx_runtime","ce","de","useInView","useReducedMotion","init_framer_motion_DhsWWWsN","motion","init_framer_CaDWdxiz","useIsStaticRenderer","addPropertyControls","ControlType","hasImage","img","toImage","value","legacySlotFilled","n","mediaKey","item","i","largestSource","best","bestW","url","size","part","w","useCanHover","can","setCan","enabled","mq","update","normaliseCategory","s","MediaFigure","ref","inView","nearView","show","animate","wrapRef","lensRef","innerRef","mainVideoRef","lensVideoRef","lastPoint","armed","setArmed","canHover","lens","zoomSrc","isVideo","lensOn","zoom","live","v","placeLens","clientX","clientY","wrap","el","r","y","half","inner","syncVideo","main","copy","onEnter","onMove","onLeave","frame","radius","tile","mediaMotion","EASE","index","mediaStyle","lensMediaStyle","content","alt","onRatio","ratioKey","R","href","caption","captionStyle","ArrowIcon","RBProjectRow","DEFAULT_DESCRIPTION","props","isStatic","reduceMotion","fg","textColor","bodyC","bodyColor","muted","mutedColor","tileColor","border","borderColor","gutter","paddingX","section","paddingBottom","sticky","stickyTop","mediaColGap","columnGap","mediaRowGap","rowGap","cleanTitle","title","cleanSuffix","suffix","cleanYear","year","slug","linkBase","cornerRadius","magnifier","lensSize","ctaText","buttonText","ctaHref","buttonLink","showCta","external","openNew","newTab","myCategories","list","category","SLUG_CATEGORY","filter","setFilter","filterKey","setFilterKey","current","onFilter","k","EVENT","visible","media","legacy","image1","video1","caption1","alt1","image2","video2","caption2","alt2","image3","video3","caption3","alt3","image4","video4","caption4","alt4","image5","video5","caption5","alt5","image6","video6","caption6","alt6","mediaItems","m","items","PLACEHOLDER_RATIOS","captionFor","altFor","own","name","kind","mediaRef","mediaWidth","setMediaWidth","gapPx","setGapPx","ratios","setRatios","ro","entries","g","ratio","prev","key","colCount","columns","columnsOfItems","cols","heights","colW","captionH","CAPTION_BLOCK","target","descRef","expanded","setExpanded","clamped","setClamped","setHeights","measure","line","collapsed","CLAMP_LINES","description","overflows","toggle","info","clampStyle","details","client","agency","role","label1","value1","label2","value2","l","style","CSS","GEIST","col","c$1","VIDEO_TYPES","imageControl","videoControl","captionControl","altControl","fallbackOnly","init_RBProjectRow"],"sources":["https:/framerusercontent.com/modules/fKCxRYOAK9J0mm3AUDnw/ztzMmqjYBoWWxacpw18B/RBProjectRow.js"],"sourcesContent":["// Request (Oct 2026): \"for my framer work page project tiles, instead of 6 can you add option for adding\n// as many images/ videos as I want?\" → the media column is now driven by an open-ended \"Media\" list.\n// Request (Nov 2026): \"make the whole website much more roomier, breathable and elegant in terms of\n// spacing and font size\" → all spacing and type here read the site rhythm published by RBNav\n// (--rb-gutter, --rb-section, --rb-media-gap …), so every row on every page matches.\n// Request (Nov 2026): \"make info text smaller, compact\" → the left info column uses the smaller\n// --rb-info-* scale, and Client / Agency / Role / extra fields sit in one tight label–value list.\n// Request (Nov 2026): \"improve alt text\" → every Media item (and each legacy Image 1–6 slot) has an\n// \"Alt Text\" field. Images use it as their alt text and videos as their accessible label. When it's empty,\n// the image's own alt from the picker is used, then the caption, then a fallback such as\n// \"Coralia brand, image 3 of 10\", so no image on the site is left without a description.\n//\n// One project on Rajrupa's homepage (Figma \"Brandcast\" frame 7:192, modelled on rahulbhogal.com).\n// Left third: sticky info column — \"Title _ Suffix\" (title in medium weight) with the year small at the\n// right edge of the column (so it always sits just left of the media, at any screen width), a 3-line\n// description with \"Show more\", then a compact list of details (Client, Agency, Role and the two\n// optional label/value pairs, e.g. Deliverables) and finally a quiet text link (custom text + link) with\n// a hairline underline and a small ↗ that darkens on hover.\n// Right two-thirds: media in a MASONRY grid (default two columns): each image/video drops into the\n// currently shorter column using its real proportions once loaded, so there are no row gaps.\n// MEDIA LIST: press \"+\" on the Media list to add as many items as you like. Each item takes an Image,\n// a Video (the image then becomes the video's poster), an optional Caption and Alt Text. Drag items to\n// reorder. Older instances may still hold the original six slots (Image/Video/Caption/Alt 1–6); those\n// render first and only appear in the panel while they hold something, so empty legacy slots stay out\n// of the way.\n// Videos play only while they are on (or near) the screen, so long galleries stay light.\n// Magnifier: hovering any image or video shows a round lens that follows the cursor and enlarges the\n// spot under it (images use the sharpest file in their srcset; videos play in sync inside the lens).\n// Mouse/trackpad only; touch screens are left alone. Shows in Preview and on the live site.\n// Media tiles are square-cornered by default; \"Corner Radius\" rounds every image/video equally if wanted.\n// Captions show only when you type one; an empty Caption field means no caption.\n// Any empty field (client, agency, role, year, button) simply doesn't render.\n// With no media at all, grey Figma placeholder tiles show. Media fades and rises in on scroll.\n// Collapses to one column on narrow screens. The row's bottom spacing sits on the row itself, so the\n// sticky info column always stops that far above the next divider (or the footer).\n// Spacing (side margin, gaps, row spacing, sticky offset) comes from the site rhythm; the old per-row\n// spacing controls are kept only as fallbacks for pages without the nav and are hidden in the panel.\n// Filtering: a project belongs to the RBWorksFilter category whose name matches its Category field\n// (comma-separate several), otherwise its Suffix (e.g. \"Campaigns/Events\"), otherwise its slug mapping.\n// Matching ignores case and spacing.\n// Place inside a Collection List of \"Works\" and bind the props to its fields. Listens to RBWorksFilter.\n// Colours follow the --rb-* theme variables published by RBNav; props are light-mode fallbacks.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView,useReducedMotion}from\"framer-motion\";import{Fragment,useCallback,useEffect,useMemo,useRef,useState,startTransition}from\"react\";const EASE=[.22,1,.36,1];const EVENT=\"rb-works-filter\";const GEIST=\"https://fonts.googleapis.com/css2?family=Geist:wght@400;500&display=swap\";const CLAMP_LINES=3;const CAPTION_BLOCK=31// caption gap + one caption line (used only to balance the masonry)\n;// Site rhythm (published by RBNav), with the old values as fallbacks\nconst R={small:\"var(--rb-small, 10.5px)\",smallLeading:\"var(--rb-small-leading, 14px)\",linePad:\"var(--rb-line-pad, 14px)\",colGap:\"var(--rb-col-gap, 13px)\",capGap:\"var(--rb-cap-gap, 13px)\",// Compact info column\ninfoTitle:\"var(--rb-info-title, 15px)\",infoText:\"var(--rb-info-text, 14px)\",infoLeading:\"var(--rb-info-leading, 21px)\",infoBlock:\"var(--rb-info-block, 20px)\",infoMeasure:\"var(--rb-info-measure, 400px)\"};// Figma placeholder rhythm (height ÷ width of each tile in frame 7:215)\nconst PLACEHOLDER_RATIOS=[1,1.25,1.25,1,.667];// Filter categories for Works items that have no Category field or matching Suffix.\nconst SLUG_CATEGORY={\"youtube-brandcast-india-2025\":\"Campaigns/Events\",\"google-marketing-live-2026\":\"Campaigns/Events\",\"great-magazine-of-timepieces-india\":\"Editorial\",chanelseminars:\"Decks\",\"southeast-asia’s-green-economy-report\":\"Reports\",\"southeast-asias-green-economy-report\":\"Reports\",alokita:\"Brand Identities\",reign:\"Brand Identities\",blaze:\"Brand Identities\"};const DEFAULT_DESCRIPTION=\"A new identity and product catalogue for an Italian interior doors brand that had nothing to work from but material swatches. I generated the interiors with Flora AI and other node-based tools, kept them true to the real swatch data, retouched every image and got factory sign-off on each one. The catalogue is printed and in use.\";const CSS=`\n.rb-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:start}\n.rb-title-link{transition:opacity .25s ease}\n.rb-title-link:hover{opacity:.55}\n.rb-cta{display:inline-flex;align-items:center;gap:7px;color:var(--rb-cta-muted);white-space:nowrap;cursor:pointer;\n  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;\n  text-decoration-color:var(--rb-cta-line);\n  transition:color .3s ease,text-decoration-color .3s ease}\n.rb-cta:hover,.rb-cta:focus-visible{color:var(--rb-cta-fg);text-decoration-color:var(--rb-cta-fg)}\n.rb-cta:focus-visible{outline:1px solid var(--rb-cta-fg);outline-offset:4px}\n.rb-cta svg{transition:transform .35s cubic-bezier(.22,1,.36,1)}\n.rb-cta:hover svg{transform:translate(1.5px,-1.5px)}\n@media (max-width:809px){\n  .rb-row{grid-template-columns:minmax(0,1fr)}\n  .rb-info{position:relative!important;top:auto!important;padding-right:0!important;padding-bottom:var(--rb-block,28px)}\n}\n`;function hasImage(img){return Boolean(img&&typeof img.src===\"string\"&&img.src.length>0);}// Image values can arrive as { src, srcSet, alt } or, in a few places, as a plain URL\nfunction toImage(value){if(!value)return undefined;if(typeof value===\"string\")return value?{src:value}:undefined;if(typeof value===\"object\")return value;return undefined;}// Used by the property panel: does legacy slot n hold anything worth showing?\nfunction legacySlotFilled(p,n){if(!p)return false;const img=toImage(p[`image${n}`]);return Boolean(p[`video${n}`])||hasImage(img)||Boolean(String(p[`caption${n}`]||\"\").trim());}// Stable identity for a media item (its file), so measured proportions survive edits and reorders\nfunction mediaKey(item,i){return item.video||item.image?.src||`placeholder-${i}`;}// The widest file in a srcset (\"a.jpg 512w, b.jpg 2048w\"), so the lens stays sharp\nfunction largestSource(img){if(!img||!img.src)return\"\";let best=img.src;let bestW=0;(img.srcSet||\"\").split(\",\").forEach(part=>{const[url,size]=part.trim().split(/\\s+/);const w=parseFloat(size||\"\")||0;if(url&&w>bestW){best=url;bestW=w;}});return best;}// True only for a real mouse/trackpad, so touch screens don't get a stuck lens\nfunction useCanHover(enabled){const[can,setCan]=useState(false);useEffect(()=>{if(!enabled||typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(hover: hover) and (pointer: fine)\");const update=()=>startTransition(()=>setCan(mq.matches));update();mq.addEventListener?.(\"change\",update);return()=>mq.removeEventListener?.(\"change\",update);},[enabled]);return can;}// \"Campaigns / Events\", \"campaigns/events\" and \"Campaigns/Events\" all match\nfunction normaliseCategory(s){return(s||\"\").toLowerCase().replace(/&/g,\"and\").replace(/\\s+/g,\"\");}function MediaFigure({item,caption,alt,index,ratioKey,animate,live,tile,radius,lens,captionStyle,href,onRatio}){const ref=useRef(null);const inView=useInView(ref,{once:true,margin:\"0px 0px -12% 0px\"});// Looser, repeating check used to play/pause videos as they come and go\nconst nearView=useInView(ref,{margin:\"300px 0px 300px 0px\"});const show=!animate||inView;// ---- Magnifier -------------------------------------------------------\nconst wrapRef=useRef(null);const lensRef=useRef(null);const innerRef=useRef(null);const mainVideoRef=useRef(null);const lensVideoRef=useRef(null);const lastPoint=useRef(null);const[armed,setArmed]=useState(false);const canHover=useCanHover(lens.enabled);const zoomSrc=useMemo(()=>largestSource(item.image),[item.image]);const isVideo=Boolean(item.video);const lensOn=lens.enabled&&canHover&&(isVideo||hasImage(item.image)&&!!zoomSrc);const size=Math.max(60,lens.size);const zoom=Math.max(1.2,lens.zoom);// Only play videos that are on (or close to) the screen\nuseEffect(()=>{if(!live||!isVideo)return;const v=mainVideoRef.current;if(!v)return;if(nearView)v.play().catch(()=>{});else v.pause();},[live,isVideo,nearView]);const placeLens=(clientX,clientY)=>{lastPoint.current={x:clientX,y:clientY};const wrap=wrapRef.current;const el=lensRef.current;if(!wrap||!el)return;const r=wrap.getBoundingClientRect();const x=clientX-r.left;const y=clientY-r.top;const half=size/2;el.style.transform=`translate3d(${x-half}px, ${y-half}px, 0)`;const inner=innerRef.current;if(inner){inner.style.width=`${r.width*zoom}px`;inner.style.height=`${r.height*zoom}px`;inner.style.transform=`translate3d(${half-x*zoom}px, ${half-y*zoom}px, 0)`;}};const syncVideo=()=>{const main=mainVideoRef.current;const copy=lensVideoRef.current;if(!main||!copy)return;try{if(Math.abs(copy.currentTime-main.currentTime)>.15)copy.currentTime=main.currentTime;if(copy.paused)copy.play().catch(()=>{});}catch(e){}};// Once the lens content mounts, put it under the cursor and start the video copy in step\nuseEffect(()=>{if(!armed)return;const p=lastPoint.current;if(p)placeLens(p.x,p.y);if(isVideo)syncVideo();// eslint-disable-next-line react-hooks/exhaustive-deps\n},[armed]);const onEnter=e=>{// Load the zoomed copy only when someone actually looks closer\nif(!armed)setArmed(true);placeLens(e.clientX,e.clientY);if(isVideo)syncVideo();const el=lensRef.current;if(!el)return;el.style.opacity=\"1\";el.style.scale=\"1\";};const onMove=e=>placeLens(e.clientX,e.clientY);const onLeave=()=>{const el=lensRef.current;if(el){el.style.opacity=\"0\";el.style.scale=\"0.85\";}lensVideoRef.current?.pause();};const frame={position:\"relative\",width:\"100%\",overflow:\"hidden\",borderRadius:radius,// Keeps a rounded clip intact in Safari while the media scales in\n...radius>0?{isolation:\"isolate\",WebkitMaskImage:\"-webkit-radial-gradient(white, black)\"}:{},// Grey tile only behind empty placeholders, so no grey shows around real media\nbackground:item.placeholderRatio?tile:\"transparent\",transition:\"background-color .35s ease\",aspectRatio:item.placeholderRatio?`1 / ${item.placeholderRatio}`:undefined};const mediaMotion={initial:animate?{scale:1.06}:false,animate:show?{scale:1}:undefined,transition:{duration:1.4,ease:EASE,delay:index%2*.08}};const mediaStyle={display:\"block\",width:\"100%\",height:\"auto\"};const lensMediaStyle={display:\"block\",width:\"100%\",height:\"100%\",maxWidth:\"none\",objectFit:\"fill\"};const content=/*#__PURE__*/_jsxs(\"div\",{ref:wrapRef,style:{position:\"relative\",cursor:lensOn?\"none\":undefined},onPointerEnter:lensOn?onEnter:undefined,onPointerMove:lensOn?onMove:undefined,onPointerLeave:lensOn?onLeave:undefined,children:[/*#__PURE__*/_jsx(\"div\",{style:frame,children:item.video?/*#__PURE__*/_jsx(motion.video,{ref:mainVideoRef,src:item.video,poster:item.image?.src,autoPlay:true,muted:true,loop:true,playsInline:true,preload:\"metadata\",\"aria-label\":alt||undefined,style:mediaStyle,onLoadedMetadata:e=>{const v=e.currentTarget;if(v.videoWidth)onRatio(ratioKey,v.videoHeight/v.videoWidth);},...mediaMotion}):hasImage(item.image)?/*#__PURE__*/_jsx(motion.img,{src:item.image.src,srcSet:item.image.srcSet,alt:alt,loading:\"lazy\",style:mediaStyle,onLoad:e=>{const img=e.currentTarget;if(img.naturalWidth)onRatio(ratioKey,img.naturalHeight/img.naturalWidth);},...mediaMotion}):null}),lensOn&&/*#__PURE__*/_jsx(\"div\",{ref:lensRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",top:0,left:0,width:size,height:size,borderRadius:\"50%\",overflow:\"hidden\",pointerEvents:\"none\",zIndex:5,opacity:0,scale:\"0.85\",backgroundColor:\"var(--rb-bg, #FFFFFF)\",border:\"1px solid rgba(255,255,255,0.7)\",boxShadow:\"0 10px 30px rgba(0,0,0,0.22), 0 0 0 1px rgba(0,0,0,0.08)\",transition:\"opacity .2s ease, scale .25s cubic-bezier(.22,1,.36,1)\",willChange:\"transform\",WebkitMaskImage:\"-webkit-radial-gradient(white, black)\"},children:armed&&/*#__PURE__*/_jsx(\"div\",{ref:innerRef,style:{position:\"absolute\",top:0,left:0,transformOrigin:\"0 0\",willChange:\"transform\"},children:isVideo?/*#__PURE__*/_jsx(\"video\",{ref:lensVideoRef,src:item.video,muted:true,loop:true,playsInline:true,preload:\"auto\",style:lensMediaStyle,onLoadedData:syncVideo}):/*#__PURE__*/_jsx(\"img\",{src:zoomSrc,alt:\"\",decoding:\"async\",style:lensMediaStyle})})})]});return /*#__PURE__*/_jsxs(motion.figure,{ref:ref,style:{margin:0,display:\"flex\",flexDirection:\"column\",gap:R.capGap,minWidth:0},initial:animate?{opacity:0,y:32}:false,animate:show?{opacity:1,y:0}:undefined,transition:{duration:1,ease:EASE,delay:index%2*.08},children:[href?/*#__PURE__*/_jsx(\"a\",{href:href,\"aria-label\":caption||undefined,style:{display:\"block\",borderRadius:radius},children:content}):content,caption&&/*#__PURE__*/_jsx(\"figcaption\",{style:captionStyle,children:caption})]});}function ArrowIcon(){return /*#__PURE__*/_jsx(\"svg\",{width:\"9\",height:\"9\",viewBox:\"0 0 11 11\",fill:\"none\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M2 9L9 2M9 2H3.2M9 2V7.8\",stroke:\"currentColor\",strokeWidth:\"1.3\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});}/**\n * Project Row\n *\n * @framerIntrinsicWidth 1440\n * @framerIntrinsicHeight 1750\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight auto\n */export default function RBProjectRow(props){const{title=\"Ugo Porro\",suffix=\"Identity\",year=\"2025\",description=DEFAULT_DESCRIPTION,client=\"Ugo Porro\",agency=\"Independent\",role=\"Designer & Art Director\",label1=\"Services\",value1=\"Identity, Catalogue, AI imagery\",label2=\"Tools\",value2=\"Flora AI, node-based image tools\",buttonText=\"View full project\",buttonLink=\"\",newTab=false,slug=\"\",category=\"\",linkBase=\"/work/\",mediaItems=[],image1,image2,image3,image4,image5,image6,video1,video2,video3,video4,video5,video6,caption1=\"\",caption2=\"\",caption3=\"\",caption4=\"\",caption5=\"\",caption6=\"\",alt1=\"\",alt2=\"\",alt3=\"\",alt4=\"\",alt5=\"\",alt6=\"\",columns=2,columnGap=10,rowGap=28,cornerRadius=0,magnifier=true,lensSize=180,zoom=2.5,fontFamily='\"Geist\", sans-serif',textColor=\"#0F0F0F\",bodyColor=\"#555555\",mutedColor=\"#9E9E9E\",tileColor=\"#EDEDED\",borderColor=\"#D9D9D9\",stickyTop=51,paddingX=20,paddingBottom=140,style}=props;const isStatic=useIsStaticRenderer();const reduceMotion=useReducedMotion();const animate=!isStatic&&!reduceMotion;const fg=`var(--rb-fg, ${textColor})`;const bodyC=`var(--rb-body, ${bodyColor})`;const muted=`var(--rb-muted, ${mutedColor})`;const tile=`var(--rb-tile, ${tileColor})`;const border=`var(--rb-border, ${borderColor})`;// Site rhythm, with this row's own numbers as fallbacks\nconst gutter=`var(--rb-gutter, ${paddingX}px)`;const section=`var(--rb-section, ${paddingBottom}px)`;const sticky=`var(--rb-nav-h, ${stickyTop}px)`;const mediaColGap=`var(--rb-media-gap, ${columnGap}px)`;const mediaRowGap=`var(--rb-media-gap, ${rowGap}px)`;const cleanTitle=(title||\"\").trim();const cleanSuffix=(suffix||\"\").trim();const cleanYear=(year||\"\").trim();const href=slug?`${linkBase}${slug}`:undefined;const radius=Math.max(0,Number(cornerRadius)||0);const lens={enabled:magnifier!==false&&!isStatic,size:Number(lensSize)||180,zoom:Number(zoom)||2.5};// Button: its own link first, otherwise the project page. On the canvas it always shows.\nconst ctaText=(buttonText||\"\").trim();const ctaHref=(buttonLink||\"\").trim()||href;const showCta=Boolean(ctaText)&&(Boolean(ctaHref)||isStatic);const external=Boolean(ctaHref&&/^(https?:)?\\/\\//i.test(ctaHref));const openNew=newTab||external;// ---- Filtering -------------------------------------------------------\n// Category field first (comma-separated for several), then the Suffix shown after the title,\n// then the slug mapping. A project can match on any of them.\nconst myCategories=useMemo(()=>{const list=[...(category||\"\").split(\",\"),cleanSuffix,SLUG_CATEGORY[slug]||\"\"];return new Set(list.map(normaliseCategory).filter(Boolean));},[category,cleanSuffix,slug]);const[filter,setFilter]=useState(\"All\");const[filterKey,setFilterKey]=useState(0);useEffect(()=>{if(typeof window===\"undefined\")return;const current=window.__rbWorksFilter;if(current)startTransition(()=>setFilter(current));const onFilter=e=>{const value=e.detail||\"All\";startTransition(()=>{setFilter(value);setFilterKey(k=>k+1);});};window.addEventListener(EVENT,onFilter);return()=>window.removeEventListener(EVENT,onFilter);},[]);const visible=isStatic||filter===\"All\"||myCategories.has(normaliseCategory(filter));// ---- Media: legacy slots 1–6 first, then every item in the Media list ----\nconst media=useMemo(()=>{const legacy=[{image:image1,video:video1||undefined,caption:caption1,alt:alt1},{image:image2,video:video2||undefined,caption:caption2,alt:alt2},{image:image3,video:video3||undefined,caption:caption3,alt:alt3},{image:image4,video:video4||undefined,caption:caption4,alt:alt4},{image:image5,video:video5||undefined,caption:caption5,alt:alt5},{image:image6,video:video6||undefined,caption:caption6,alt:alt6}];const list=(Array.isArray(mediaItems)?mediaItems:[]).map(m=>({image:toImage(m?.image),video:m?.video||undefined,caption:m?.caption||\"\",alt:m?.alt||\"\"}));const items=[...legacy,...list].filter(m=>m.video||hasImage(m.image));if(items.length>0)return items;return PLACEHOLDER_RATIOS.map(r=>({placeholderRatio:r,caption:\"\"}));},[mediaItems,image1,image2,image3,image4,image5,image6,video1,video2,video3,video4,video5,video6,caption1,caption2,caption3,caption4,caption5,caption6,alt1,alt2,alt3,alt4,alt5,alt6]);// Only what was typed in the Caption field; empty means no caption\nconst captionFor=item=>(item.caption||\"\").trim();// Alt text: the item's own Alt Text, then the picker's alt, then the caption, then a described fallback\nconst altFor=(item,i)=>{const own=(item.alt||\"\").trim()||(item.image?.alt||\"\").trim()||captionFor(item);if(own)return own;const name=[cleanTitle,cleanSuffix.toLowerCase()].filter(Boolean).join(\" \");const kind=item.video?\"video\":\"image\";return`${name||\"Project\"}, ${kind} ${i+1} of ${media.length}`;};// ---- Masonry ---------------------------------------------------------\nconst mediaRef=useRef(null);const[mediaWidth,setMediaWidth]=useState(0);// The real gap in pixels (it comes from the site rhythm, which changes with screen width)\nconst[gapPx,setGapPx]=useState(columnGap);// Measured height ÷ width, keyed by file so it survives edits, additions and reordering\nconst[ratios,setRatios]=useState({});useEffect(()=>{const el=mediaRef.current;if(!el||typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(entries=>{const w=entries[0]?.contentRect.width;const g=parseFloat(getComputedStyle(el).columnGap||\"\");startTransition(()=>{if(w)setMediaWidth(w);if(isFinite(g))setGapPx(g);});});ro.observe(el);return()=>ro.disconnect();},[]);const onRatio=useCallback((key,ratio)=>{if(!isFinite(ratio)||ratio<=0)return;startTransition(()=>setRatios(prev=>Math.abs((prev[key]||0)-ratio)<.001?prev:{...prev,[key]:ratio}));},[]);const colCount=mediaWidth>0&&mediaWidth<520?1:Math.max(1,Math.round(columns));// Greedy shortest-column placement, keeping reading order left → right as far as possible\nconst columnsOfItems=useMemo(()=>{const cols=Array.from({length:colCount},()=>[]);const heights=new Array(colCount).fill(0);const colW=mediaWidth>0?(mediaWidth-gapPx*(colCount-1))/colCount:300;media.forEach((item,i)=>{const ratio=item.placeholderRatio||ratios[mediaKey(item,i)]||1;const captionH=(item.caption||\"\").trim()?CAPTION_BLOCK:0;let target=0;for(let c=1;c<colCount;c++)if(heights[c]<heights[target]-1)target=c;cols[target].push(i);heights[target]+=colW*ratio+captionH+gapPx;});return cols;},[media,ratios,colCount,mediaWidth,gapPx]);// ---- Show more -------------------------------------------------------\nconst descRef=useRef(null);const[expanded,setExpanded]=useState(false);const[clamped,setClamped]=useState(true);const[heights,setHeights]=useState(null);useEffect(()=>{const el=descRef.current;if(!el||typeof window===\"undefined\")return;const measure=()=>{const line=parseFloat(getComputedStyle(el).lineHeight)||21;const collapsed=Math.min(el.scrollHeight,line*CLAMP_LINES);startTransition(()=>setHeights({collapsed,full:el.scrollHeight}));};measure();if(typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(measure);ro.observe(el);return()=>ro.disconnect();},[description]);const overflows=heights?heights.full>heights.collapsed+1:true;function toggle(){if(expanded){startTransition(()=>setExpanded(false));}else{startTransition(()=>{setClamped(false);setExpanded(true);});}}// ---- Styles ----------------------------------------------------------\n// Compact info type\nconst info={fontFamily,fontSize:R.infoText,lineHeight:R.infoLeading,fontWeight:400,letterSpacing:\"0\",margin:0,transition:\"color .3s ease\"};const captionStyle={fontFamily,fontSize:R.small,lineHeight:R.smallLeading,fontWeight:400,letterSpacing:\"0.01em\",color:fg,margin:0,whiteSpace:\"pre-line\",transition:\"color .3s ease\"};const clampStyle=clamped?{display:\"-webkit-box\",WebkitLineClamp:CLAMP_LINES,WebkitBoxOrient:\"vertical\",overflow:\"hidden\"}:{};// Details list: Client, Agency, Role, then the two optional label/value pairs\nconst details=[[\"Client\",client],[\"Agency\",agency],[\"Role\",role],[label1,value1],[label2,value2]].map(([l,v])=>[(l||\"\").trim(),(v||\"\").trim()]).filter(([l,v])=>l&&v);if(!visible){return /*#__PURE__*/_jsx(\"div\",{style:{...style,display:\"none\"},\"aria-hidden\":\"true\"});}return /*#__PURE__*/_jsxs(motion.article,{className:\"rb-row\",style:{...style,position:\"relative\",width:\"100%\",boxSizing:\"border-box\",padding:`0 ${gutter} ${section}`},initial:animate&&filterKey>0?{opacity:0}:false,animate:{opacity:1},transition:{duration:.6,ease:EASE},children:[/*#__PURE__*/_jsx(\"style\",{children:CSS}),/*#__PURE__*/_jsx(\"link\",{rel:\"stylesheet\",href:GEIST}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",top:0,left:gutter,right:gutter,height:1,background:border,transition:\"background-color .35s ease\"}}),/*#__PURE__*/_jsxs(motion.div,{className:\"rb-info\",style:{position:\"sticky\",top:sticky,alignSelf:\"start\",display:\"flex\",flexDirection:\"column\",padding:`${R.linePad} ${R.colGap} 0 0`,boxSizing:\"border-box\"},initial:animate?{opacity:0,y:16}:false,whileInView:{opacity:1,y:0},viewport:{once:true,margin:\"0px 0px -10% 0px\"},transition:{duration:.8,ease:EASE},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"baseline\",justifyContent:\"space-between\",gap:20},children:[/*#__PURE__*/_jsxs(\"p\",{style:{...info,fontSize:R.infoTitle,color:fg,minWidth:0},children:[href?/*#__PURE__*/_jsx(\"a\",{href:href,className:\"rb-title-link\",style:{color:\"inherit\",textDecoration:\"none\",fontWeight:500},children:cleanTitle}):/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:500},children:cleanTitle}),cleanSuffix&&/*#__PURE__*/_jsxs(\"span\",{style:{color:muted},children:[\" _ \",cleanSuffix]})]}),cleanYear&&/*#__PURE__*/_jsx(\"span\",{style:{fontFamily,fontSize:R.small,lineHeight:R.infoLeading,letterSpacing:\"0.04em\",fontVariantNumeric:\"tabular-nums\",color:muted,flexShrink:0,transition:\"color .3s ease\"},children:cleanYear})]}),description&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{height:10}}),/*#__PURE__*/_jsx(motion.div,{style:{overflow:\"hidden\",maxWidth:R.infoMeasure},initial:false,animate:heights?{height:expanded?heights.full:heights.collapsed}:undefined,transition:{duration:animate?.6:0,ease:EASE},onAnimationComplete:()=>{if(!expanded)startTransition(()=>setClamped(true));},children:/*#__PURE__*/_jsx(\"p\",{ref:descRef,style:{...info,color:bodyC,whiteSpace:\"pre-line\",...clampStyle},children:description.trim()})}),overflows&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{height:6}}),/*#__PURE__*/_jsx(\"button\",{onClick:toggle,\"aria-expanded\":expanded,style:{...info,color:muted,background:\"none\",border:0,padding:0,cursor:\"pointer\",textAlign:\"left\",alignSelf:\"flex-start\"},onMouseEnter:e=>e.currentTarget.style.color=fg,onMouseLeave:e=>e.currentTarget.style.color=muted,children:expanded?\"Show less\":\"Show more\"})]})]}),details.length>0&&/*#__PURE__*/_jsx(\"dl\",{style:{margin:0,paddingTop:R.infoBlock,display:\"grid\",gridTemplateColumns:\"minmax(0, 7.5em) minmax(0, 1fr)\",columnGap:16,rowGap:3,maxWidth:R.infoMeasure},children:details.map(([l,v])=>/*#__PURE__*/_jsxs(Fragment,{children:[/*#__PURE__*/_jsx(\"dt\",{style:{...info,color:muted},children:l}),/*#__PURE__*/_jsx(\"dd\",{style:{...info,color:fg,margin:0,whiteSpace:\"pre-line\"},children:v})]},l))}),showCta&&/*#__PURE__*/_jsx(\"div\",{style:{paddingTop:R.infoBlock},children:/*#__PURE__*/_jsxs(\"a\",{className:\"rb-cta\",href:ctaHref,target:openNew?\"_blank\":undefined,rel:openNew?\"noopener noreferrer\":undefined,style:{\"--rb-cta-fg\":fg,\"--rb-cta-muted\":muted,\"--rb-cta-line\":border,fontFamily,fontSize:R.infoText,lineHeight:R.infoLeading,fontWeight:400},children:[ctaText,/*#__PURE__*/_jsx(ArrowIcon,{})]})})]}),/*#__PURE__*/_jsx(\"div\",{ref:mediaRef,style:{display:\"flex\",alignItems:\"flex-start\",gap:mediaColGap,paddingTop:R.linePad,minWidth:0},children:columnsOfItems.map((col,c)=>/*#__PURE__*/_jsx(\"div\",{style:{flex:\"1 1 0\",minWidth:0,display:\"flex\",flexDirection:\"column\",gap:mediaRowGap},children:col.map(i=>{const key=mediaKey(media[i],i);return /*#__PURE__*/_jsx(MediaFigure,{item:media[i],index:i,ratioKey:key,animate:animate,live:!isStatic,tile:tile,radius:radius,lens:lens,captionStyle:captionStyle,href:href,onRatio:onRatio,caption:captionFor(media[i]),alt:media[i].placeholderRatio?\"\":altFor(media[i],i)},`${i}-${key}`);})},c))})]},filterKey);}const VIDEO_TYPES=[\"mp4\",\"webm\",\"mov\"];// Legacy slot controls only appear while that slot still holds something\nconst imageControl=(title,n)=>({type:ControlType.ResponsiveImage,title,hidden:p=>!legacySlotFilled(p,n)});const videoControl=(title,n)=>({type:ControlType.File,title,allowedFileTypes:VIDEO_TYPES,hidden:p=>!legacySlotFilled(p,n)});const captionControl=(title,n)=>({type:ControlType.String,title,defaultValue:\"\",placeholder:\"Empty = no caption\",displayTextArea:true,hidden:p=>!legacySlotFilled(p,n)});const altControl=(title,n)=>({type:ControlType.String,title,defaultValue:\"\",placeholder:\"Describe the image for screen readers and search\",displayTextArea:true,hidden:p=>!legacySlotFilled(p,n)});// Spacing now comes from the site rhythm (RBNav); these controls are fallbacks only.\nconst fallbackOnly=()=>true;addPropertyControls(RBProjectRow,{title:{type:ControlType.String,title:\"Title\",defaultValue:\"Ugo Porro\"},suffix:{type:ControlType.String,title:\"Suffix\",defaultValue:\"Identity\",description:\"Also used as the filter category when Category is empty.\"},year:{type:ControlType.String,title:\"Year\",defaultValue:\"2025\",placeholder:\"2025\"},description:{type:ControlType.String,title:\"Description\",defaultValue:DEFAULT_DESCRIPTION,displayTextArea:true},client:{type:ControlType.String,title:\"Client\",defaultValue:\"Ugo Porro\"},agency:{type:ControlType.String,title:\"Agency\",defaultValue:\"Independent\"},role:{type:ControlType.String,title:\"Role\",defaultValue:\"Designer & Art Director\"},label1:{type:ControlType.String,title:\"Label 1\",defaultValue:\"Services\"},value1:{type:ControlType.String,title:\"Value 1\",defaultValue:\"Identity, Catalogue, AI imagery\"},label2:{type:ControlType.String,title:\"Label 2\",defaultValue:\"Tools\"},value2:{type:ControlType.String,title:\"Value 2\",defaultValue:\"Flora AI, node-based image tools\"},buttonText:{type:ControlType.String,title:\"Button Text\",defaultValue:\"View full project\",placeholder:\"Empty hides the button\"},buttonLink:{type:ControlType.Link,title:\"Button Link\",description:\"Empty uses the project page (Link Base + Slug).\"},newTab:{type:ControlType.Boolean,title:\"New Tab\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},slug:{type:ControlType.String,title:\"Slug\",defaultValue:\"\"},category:{type:ControlType.String,title:\"Category\",defaultValue:\"\",placeholder:\"Uses Suffix if empty\",description:\"Must match a filter name. Comma-separate to list under several.\"},linkBase:{type:ControlType.String,title:\"Link Base\",defaultValue:\"/work/\"},mediaItems:{type:ControlType.Array,title:\"Media\",description:\"Add as many images and videos as you like; drag to reorder. With a video, the image is its poster.\",control:{type:ControlType.Object,controls:{image:{type:ControlType.ResponsiveImage,title:\"Image\"},video:{type:ControlType.File,title:\"Video\",allowedFileTypes:VIDEO_TYPES},caption:{type:ControlType.String,title:\"Caption\",defaultValue:\"\",placeholder:\"Empty = no caption\",displayTextArea:true},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"\",placeholder:\"Describe the image for screen readers and search\",displayTextArea:true}}},defaultValue:[]},image1:imageControl(\"Image 1\",1),video1:videoControl(\"Video 1\",1),caption1:captionControl(\"Caption 1\",1),alt1:altControl(\"Alt Text 1\",1),image2:imageControl(\"Image 2\",2),video2:videoControl(\"Video 2\",2),caption2:captionControl(\"Caption 2\",2),alt2:altControl(\"Alt Text 2\",2),image3:imageControl(\"Image 3\",3),video3:videoControl(\"Video 3\",3),caption3:captionControl(\"Caption 3\",3),alt3:altControl(\"Alt Text 3\",3),image4:imageControl(\"Image 4\",4),video4:videoControl(\"Video 4\",4),caption4:captionControl(\"Caption 4\",4),alt4:altControl(\"Alt Text 4\",4),image5:imageControl(\"Image 5\",5),video5:videoControl(\"Video 5\",5),caption5:captionControl(\"Caption 5\",5),alt5:altControl(\"Alt Text 5\",5),image6:imageControl(\"Image 6\",6),video6:videoControl(\"Video 6\",6),caption6:captionControl(\"Caption 6\",6),alt6:altControl(\"Alt Text 6\",6),columns:{type:ControlType.Number,title:\"Columns\",defaultValue:2,min:1,max:4,step:1,displayStepper:true},columnGap:{type:ControlType.Number,title:\"Column Gap\",defaultValue:10,min:0,max:80,unit:\"px\",hidden:fallbackOnly},rowGap:{type:ControlType.Number,title:\"Row Gap\",defaultValue:28,min:0,max:120,unit:\"px\",hidden:fallbackOnly},cornerRadius:{type:ControlType.Number,title:\"Corner Radius\",defaultValue:0,min:0,max:60,step:1,unit:\"px\",description:\"0 = square corners on every image and video.\"},magnifier:{type:ControlType.Boolean,title:\"Magnifier\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Zoom lens on hover over images and videos. Visible in Preview / live site.\"},lensSize:{type:ControlType.Number,title:\"Lens Size\",defaultValue:180,min:80,max:400,step:10,unit:\"px\",hidden:p=>p.magnifier===false},zoom:{type:ControlType.Number,title:\"Zoom\",defaultValue:2.5,min:1.5,max:6,step:.5,displayStepper:true,hidden:p=>p.magnifier===false},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:'\"Geist\", sans-serif'},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#0F0F0F\"},bodyColor:{type:ControlType.Color,title:\"Body\",defaultValue:\"#555555\"},mutedColor:{type:ControlType.Color,title:\"Muted\",defaultValue:\"#9E9E9E\"},tileColor:{type:ControlType.Color,title:\"Tile\",defaultValue:\"#EDEDED\"},borderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#D9D9D9\"},stickyTop:{type:ControlType.Number,title:\"Sticky Top\",defaultValue:51,min:0,max:200,hidden:fallbackOnly},paddingX:{type:ControlType.Number,title:\"Side\",defaultValue:20,min:0,max:120,hidden:fallbackOnly},paddingBottom:{type:ControlType.Number,title:\"Bottom\",defaultValue:140,min:0,max:400,hidden:fallbackOnly}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RBProjectRow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicHeight\":\"1750\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"1440\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RBProjectRow.map"],"mappings":"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"}