{"version":3,"file":"AfricanPattern.BAueDfP9.mjs","names":["useState","useId","useMemo","useRef","_Fragment","useEffect","useLayoutEffect"],"sources":["https:/framerusercontent.com/modules/jDUXJnzewiXz6SsG0Tgp/twL8cSAbOwPZglyK6dhm/AfricanPattern.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{useEffect,useLayoutEffect,useId,useMemo,useRef,useState}from\"react\";// ---------------------------------------------------------------------------\n// African Pattern — Spiro visual-language pattern engine\n//\n// Motifs are traced from the decorative SVGs already used across spironet.com\n// and from the curated pattern reference tiles:\n//  - \"chevron\":  nested V strokes + solid tip (map hero columns, station bands)\n//  - \"cross\":    nested corner-to-corner diagonals with dot rows + triangles\n//  - \"diamond\":  diamond chain — concentric rings, solid core, X arms and\n//                edge triangles between diamonds\n//  - \"lattice\":  open concentric diamonds with solid cores (protected band)\n//  - \"zigzag\":   thin crossing zigzag ropes (texture bands)\n// ---------------------------------------------------------------------------\nconst TILE=100;const MAX_TILES=600;// Cumulative nested-element offsets: 0, g, g+g·(1+ramp), … so inner gaps can\n// stay linear (ramp 0) or grow/shrink progressively.\nfunction gapSeq(base,count,sp){const offs=[0];let acc=0;for(let i=0;i<count;i++){acc+=base*sp.scale*Math.pow(1+sp.ramp,i);offs.push(acc);}return offs;}// Triangles that sit ON a tile boundary. Drawn as an outline, their base\n// would coincide with the mirrored neighbour's base and leave a hard line\n// across the join — so the \"line\" variant draws only the two slanted sides.\nfunction coreEdgeTriangle(x1,y1,ax,ay,x2,y2,core){if(core===\"none\")return[];const open=`M ${x1} ${y1} L ${ax} ${ay} L ${x2} ${y2}`;if(core===\"line\")return[{kind:\"stroke\",d:open}];return[{kind:\"fill\",d:`${open} Z`}];}function coreShape(d,core){if(core===\"solid\")return[{kind:\"fill\",d}];if(core===\"line\")return[{kind:\"stroke\",d}];return[];}function chevronElements(density,core,sp,cs){// Traced ratios: nested 45° Vs sharing one axis, tips retracting evenly,\n// finished with a small triangle at the innermost tip.\nconst half=TILE/2;const step=half/(density+.4);const offs=gapSeq(step,density,sp);const out=[];const baseY=25;for(let i=0;i<density;i++){const inset=Math.min(offs[i],half*.88);const tip=baseY+(half-inset);out.push({kind:\"stroke\",d:`M ${inset} ${baseY} L ${half} ${tip} L ${TILE-inset} ${baseY}`});}const t=half*.14*cs;const innerOff=Math.min(offs[density],half*.95);const y=baseY+half-innerOff;out.push(...coreShape(`M ${half-t} ${y-t} L ${half} ${y} L ${half+t} ${y-t} Z`,core));return out;}function diamondRing(cx,cy,r){return`M ${cx} ${cy-r} L ${cx+r} ${cy} L ${cx} ${cy+r} L ${cx-r} ${cy} Z`;}function ringDots(rd,cx=TILE/2,cy=TILE/2){const corners=[[cx,cy-rd],[cx+rd,cy],[cx,cy+rd],[cx-rd,cy]];const out=[];for(let e=0;e<4;e++){const[x1,y1]=corners[e];const[x2,y2]=corners[(e+1)%4];for(let k=1;k<=3;k++){const t=k/4;out.push({kind:\"dot\",cx:x1+(x2-x1)*t,cy:y1+(y2-y1)*t,r:2.6});}}return out;}// --- Long diamond chain, traced 1:1 from Diamond_long.svg -----------------\n// Native canvas 359×119 (period 134, height 118, all segments 45°). The band\n// alternates a LARGE diamond (two rings) and a SMALL diamond (one ring),\n// joined by an X connector whose chevron always points toward the large\n// diamond, with elbow arms onto the small diamond's vertices, top/bottom\n// border runs, and triangles nested inside the border Λ/V shapes.\nconst LD_S=100/118;const LD_UW=134*LD_S// ≈113.56 — the diamond tile is not square\n;const LD_CX=LD_UW/2;function ldRings(base,count,gapBase,sp){const offs=gapSeq(gapBase,Math.max(0,count-1),sp);const rs=[];for(let i=0;i<count;i++){const r=Math.max(6,base-offs[i]);if(!rs.includes(r))rs.push(r);}return rs;}// Connector at the right tile boundary. Authored pointing right (small tile →\n// large neighbour); pointLeft mirrors it for the large tile.\nfunction ldConnector(pointLeft,core,cs){const X=dx=>LD_UW+(pointLeft?-dx:dx)*LD_S;const Y=y=>y*LD_S;const out=[// Elbow–chevron polyline: from this side's small-diamond top vertex,\n// elbow out, big chevron vertex, back, elbow to the bottom vertex.\n{kind:\"stroke\",d:`M ${X(-67)} ${Y(32.5)} L ${X(-51)} ${Y(16.5)} L ${X(-8.5)} ${Y(59)} L ${X(-51)} ${Y(101.5)} L ${X(-67)} ${Y(85.5)}`},// Top border run, Λ, and the stub onto the large diamond's vertex.\n{kind:\"stroke\",d:`M ${X(-34.5)} ${Y(0)} L ${X(39.5)} ${Y(0)}`},{kind:\"stroke\",d:`M ${X(-34.5)} ${Y(0)} L ${X(2.5)} ${Y(37)} L ${X(39.5)} ${Y(0)}`},{kind:\"stroke\",d:`M ${X(2.5)} ${Y(37)} L ${X(24.5)} ${Y(59)}`},// Bottom mirror.\n{kind:\"stroke\",d:`M ${X(-34.5)} ${Y(118)} L ${X(39.5)} ${Y(118)}`},{kind:\"stroke\",d:`M ${X(-34.5)} ${Y(118)} L ${X(2.5)} ${Y(81)} L ${X(39.5)} ${Y(118)}`},{kind:\"stroke\",d:`M ${X(2.5)} ${Y(81)} L ${X(24.5)} ${Y(59)}`}];out.push(...coreEdgeTriangle(X(2.5-16.5*cs),Y(0),X(2.5),Y(16.5*cs),X(2.5+16.5*cs),Y(0),core));out.push(...coreEdgeTriangle(X(2.5-16.5*cs),Y(118),X(2.5),Y(118-16.5*cs),X(2.5+16.5*cs),Y(118),core));return out;}function diamondChain(density,core,dots,sp,cs){// Large diamond: outer ring 36.02, inner ring 18.64 (file-exact at\n// density 2); small diamond: single ring 22.46. Density adds/removes\n// rings, Inner Gap/Ramp respace them.\nconst bigRs=ldRings(42.5*LD_S,Math.max(1,Math.min(density,3)),20.5*LD_S,sp);const smallRs=ldRings(26.5*LD_S,density>=4?2:1,13*LD_S,sp);const big=bigRs.map(r=>({kind:\"stroke\",d:diamondRing(LD_CX,50,r)}));const small=smallRs.map(r=>({kind:\"stroke\",d:diamondRing(LD_CX,50,r)}));if(dots&&bigRs.length>1){big.push(...ringDots((bigRs[0]+bigRs[1])/2,LD_CX,50));}if(core!==\"none\"){big.push(...coreShape(diamondRing(LD_CX,50,9*cs)+\" Z\",core));small.push(...coreShape(diamondRing(LD_CX,50,7.5*cs)+\" Z\",core));}big.push(...ldConnector(true,core,cs));small.push(...ldConnector(false,core,cs));return{main:big,alt:small,unitW:LD_UW};}function crossElements(density,core,sp,cs){// The X reference tile, kept simple: nested corner-to-corner diagonals\n// and solid triangles pointing in from each edge. No dots here.\nconst out=[{kind:\"stroke\",d:`M 0 0 L 100 100`},{kind:\"stroke\",d:`M 100 0 L 0 100`}];const extra=Math.max(0,Math.min(2,density-2));const offs=gapSeq(18,extra,sp);for(let k=1;k<=extra;k++){const o=Math.min(44,offs[k]);out.push({kind:\"stroke\",d:`M ${o} 0 L 100 ${100-o}`});out.push({kind:\"stroke\",d:`M 0 ${o} L ${100-o} 100`});out.push({kind:\"stroke\",d:`M ${100-o} 0 L 0 ${100-o}`});out.push({kind:\"stroke\",d:`M 100 ${o} L ${o} 100`});}const t=18*cs;out.push(...coreEdgeTriangle(50-t,0,50,t,50+t,0,core));out.push(...coreEdgeTriangle(50-t,100,50,100-t,50+t,100,core));out.push(...coreEdgeTriangle(0,50-t,t,50,0,50+t,core));out.push(...coreEdgeTriangle(100,50-t,100-t,50,100,50+t,core));return out;}function latticeElements(density,core,dots,sp,cs){const c=TILE/2;const rings=Math.max(1,Math.min(3,density));const offs=gapSeq(14,rings-1,sp);const rs=[];for(let i=0;i<rings;i++){const r=Math.max(18,46-offs[i]);if(!rs.includes(r))rs.push(r);}const out=rs.map(r=>({kind:\"stroke\",d:diamondRing(c,c,r)}));if(dots){out.push(...ringDots(rs.length>1?(rs[0]+rs[1])/2:Math.max(16,rs[0]-10)));}out.push(...coreShape(diamondRing(c,c,10*cs)+\" Z\",core));return out;}function zigzagElements(density,sp){// Zigzag ribbon rows; base spacing at half the amplitude lets lines\n// cross into the woven lattice. Sharp joins only.\nconst rows=density+1;const amp=28;const offs=gapSeq(14,rows-1,sp);const total=amp+offs[rows-1];const y0=(TILE-total)/2;const out=[];for(let j=0;j<rows;j++){const y=y0+offs[j];out.push({kind:\"stroke\",d:`M 0 ${y} L 25 ${y+amp} L 50 ${y} L 75 ${y+amp} L 100 ${y}`});}return out;}// Triangle band from the reference strip: concentric triangle rings apex-up,\n// with the apex-down counterpart sitting on the right tile boundary so the\n// band interleaves seamlessly.\nfunction trianglePoints(cx,cy,up,f){// Tessellating triangle: apex to base spans 10..90, base width 100, so an\n// up triangle's right edge is exactly the neighbouring down triangle's\n// left edge.\nconst sign=up?1:-1;const apex=[cx,cy-sign*53.33*f];const b1=[cx-50*f,cy+sign*26.67*f];const b2=[cx+50*f,cy+sign*26.67*f];return`M ${apex[0]} ${apex[1]} L ${b1[0]} ${b1[1]} L ${b2[0]} ${b2[1]} Z`;}function triangleElements(density,core,sp,cs){const out=[];const rings=Math.max(1,Math.min(3,density));const offs=gapSeq(.22,rings-1,{scale:sp.scale,ramp:sp.ramp});const centres=[[50,63.33,true],[100,36.67,false]];for(const[cx,cy,up]of centres){for(let i=0;i<rings;i++){const f=Math.max(.3,1-offs[i]);out.push({kind:\"stroke\",d:trianglePoints(cx,cy,up,f)});}out.push(...coreShape(trianglePoints(cx,cy,up,.24*cs),core));}return out;}function buildElements(props){const{motif,density,core,showDots,spacing,coreScale:cs}=props;if(motif===\"chevron\")return{main:chevronElements(density,core,spacing,cs),alt:null};if(motif===\"cross\")return{main:crossElements(density,core,spacing,cs),alt:null};if(motif===\"diamond\")return diamondChain(density,core,showDots,spacing,cs);if(motif===\"triangle\")return{main:triangleElements(density,core,spacing,cs),alt:null};if(motif===\"lattice\")return{main:latticeElements(density,core,showDots,spacing,cs),alt:null};return{main:zigzagElements(density,spacing),alt:null};}// --- Helpers ---------------------------------------------------------------\nconst DIRECTION_ANGLE={down:0,up:180,left:90,right:270};function gradientPoints(angleDeg,w,h){const rad=(angleDeg-90)*Math.PI/180;const cx=w/2;const cy=h/2;const len=(Math.abs(w*Math.cos(rad))+Math.abs(h*Math.sin(rad)))/2;return{x1:cx-Math.cos(rad)*len,y1:cy-Math.sin(rad)*len,x2:cx+Math.cos(rad)*len,y2:cy+Math.sin(rad)*len};}// One axis of edge fading; sides combine freely by nesting two masked divs.\nfunction axisFade(from,to,amount,horizontal){if(!from&&!to)return undefined;const a=Math.max(0,Math.min(60,amount));const dir=horizontal?\"to right\":\"to bottom\";const start=from?`transparent 0%, black ${a}%`:`black 0%`;const end=to?`black ${100-a}%, transparent 100%`:`black 100%`;return`linear-gradient(${dir}, ${start}, ${end})`;}function usePrefersReducedMotion(){// Read synchronously on the client so reduced-motion users never see\n// even a first animated frame.\nconst[reduced,setReduced]=useState(()=>typeof window!==\"undefined\"&&typeof window.matchMedia===\"function\"&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches);useEffect(()=>{if(typeof window===\"undefined\"||typeof window.matchMedia!==\"function\")return;const query=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const onChange=event=>setReduced(event.matches);// Older WebKit only supports the deprecated listener API.\nif(typeof query.addEventListener===\"function\"){query.addEventListener(\"change\",onChange);return()=>query.removeEventListener(\"change\",onChange);}query.addListener(onChange);return()=>query.removeListener(onChange);},[]);return reduced;}// useLayoutEffect warns during server rendering; fall back to useEffect there.\nconst useIsoLayoutEffect=typeof window===\"undefined\"?useEffect:useLayoutEffect;// Module-level salt keeps SVG ids unique even across separate React roots\n// (the Framer canvas renders each instance in its own root).\nlet apInstanceCount=0;// --- Component -------------------------------------------------------------\n/**\n * African Pattern\n *\n * Spiro's African-inspired decorative patterns as one dynamic, animatable\n * system. Pick a motif, tune density and colour, then layer animation.\n *\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 200\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function AfricanPattern(props){const{motif=\"chevron\",tileSize=96,uniformScale=true,tileSizeY=96,strokeWidth=3,density=3,innerGap=100,innerRamp=0,core=\"solid\",coreSize=100,showDots=false,dotSize=100,direction=\"down\",alternate=true,brickOffset=false,repeat=\"both\",gapX=0,gapY=0,phaseX=0,phaseY=0,fillStyle=\"solid\",paintLayer,color=\"#075985\",color2=\"#7DD3FC\",gradientAngle=90,gradientScope=\"pattern\",prismBand=100,backgroundColor,animation=\"none\",trigger=\"load\",scrollStart=\"top\",scrollLength=75,replay=true,duration=6,stagger=.08,loopMode=\"infinite\",panDirection=\"right\",trailColor=\"#7DD3FC\",hover=false,hoverColor=\"#38BDF8\",hoverRadius=180,fadeLeft=false,fadeTop=false,fadeRight=false,fadeBottom=false,fadeAmount=30,style}=props;// Layer paint renders the slot content masked by the pattern; the tile\n// animations don't apply there (the layer itself can animate).\nconst layerPaint=fillStyle===\"layer\";const isStatic=useIsStaticRenderer();const prefersReduced=usePrefersReducedMotion();const animate=animation!==\"none\"&&!isStatic&&!prefersReduced&&!layerPaint;const rawId=useId();const[salt]=useState(()=>(++apInstanceCount).toString(36));const uid=useMemo(()=>rawId.replace(/[^a-zA-Z0-9]/g,\"\")+salt,[rawId,salt]);const containerRef=useRef(null);const[measured,setMeasured]=useState(null);useIsoLayoutEffect(()=>{const node=containerRef.current;if(!node)return;// Synchronous first measure avoids a wrong-scale first paint.\nconst rect=node.getBoundingClientRect();if(rect.width>0&&rect.height>0){setMeasured({w:rect.width,h:rect.height});}if(typeof ResizeObserver===\"undefined\")return;const observer=new ResizeObserver(entries=>{for(const entry of entries){const{width,height}=entry.contentRect;if(width>0&&height>0){setMeasured(prev=>prev&&Math.abs(prev.w-width)<1&&Math.abs(prev.h-height)<1?prev:{w:width,h:height});}}});observer.observe(node);return()=>observer.disconnect();},[]);// The editor canvas never scrolls, so scroll-driven triggers degrade to\n// autoplay there — a scrubbed or in-view pattern must never sit frozen\n// while it is being designed.\nconst onCanvas=RenderTarget.current()===RenderTarget.canvas;// Scroll trigger: hold animations paused until the component enters the\n// viewport; with Replay on, leaving the viewport rearms them.\nconst scrollTriggered=animation!==\"none\"&&trigger===\"scroll\"&&!onCanvas;const[inView,setInView]=useState(!scrollTriggered);const[playKey,setPlayKey]=useState(0);useEffect(()=>{if(!scrollTriggered||isStatic||typeof IntersectionObserver===\"undefined\"){setInView(true);return;}const node=containerRef.current;if(!node)return;setInView(false);// Start point: how much of the element must be on screen before the\n// animation begins — its top edge, its middle, or all of it.\nconst needed=scrollStart===\"bottom\"?.95:scrollStart===\"center\"?.5:.01;const io=new IntersectionObserver(entries=>{for(const entry of entries){// Elements taller than the viewport can never reach a high\n// ratio, so filling the viewport counts as satisfied too.\nconst fillsViewport=entry.intersectionRect.height>=(window.innerHeight||1)*.85;if(entry.isIntersecting&&(entry.intersectionRatio>=needed||fillsViewport)){setInView(true);}else if(!entry.isIntersecting&&replay){setInView(false);setPlayKey(k=>k+1);}}},{threshold:[0,.01,.25,.5,.75,.95,1]});io.observe(node);return()=>io.disconnect();},[scrollTriggered,replay,isStatic,scrollStart]);// Scrub trigger: scroll position drives animation progress through the\n// --apd delay variable while every animation stays paused.\nconst cycleRef=useRef(6);const scrubbing=animation!==\"none\"&&trigger===\"scrub\"&&!isStatic&&!onCanvas;useEffect(()=>{if(!scrubbing||typeof window===\"undefined\")return;const node=containerRef.current;if(!node)return;let raf=0;const dur=Math.max(.2,duration);const anchor=scrollStart===\"bottom\"?1:scrollStart===\"center\"?.5:0;const update=()=>{const rect=node.getBoundingClientRect();const vh=window.innerHeight||1;const hEff=Math.min(rect.height,vh);// Progress starts when the chosen anchor point of the element\n// reaches the bottom of the viewport, then runs over an explicit\n// scroll distance — so the window is the same whatever the\n// element's height, and long enough to actually read.\nconst offset=anchor*hEff;const span=Math.max(80,scrollLength/100*vh);const p=Math.max(0,Math.min(1,(vh-rect.top-offset)/span));node.style.setProperty(\"--apd\",`${(-p*cycleRef.current).toFixed(4)}s`);};const onScroll=()=>{cancelAnimationFrame(raf);raf=requestAnimationFrame(update);};update();// capture: true also catches scroll events from nested scroll\n// containers (preview frames, overflow sections), which never reach\n// a plain window scroll listener.\nwindow.addEventListener(\"scroll\",onScroll,{passive:true,capture:true});window.addEventListener(\"resize\",onScroll,{passive:true});return()=>{cancelAnimationFrame(raf);window.removeEventListener(\"scroll\",onScroll,{capture:true});window.removeEventListener(\"resize\",onScroll);};},[scrubbing,duration,scrollStart,scrollLength]);// Fallback estimate so static renders (canvas thumbnails, screenshots)\n// still produce a correctly proportioned pattern before measurement.\nconst styleW=typeof style?.width===\"number\"?style.width:undefined;const styleH=typeof style?.height===\"number\"?style.height:undefined;const width=measured?.w??styleW??800;const height=measured?.h??styleH??200;const spacing=useMemo(()=>({scale:Math.max(.3,innerGap/100),ramp:Math.max(-.6,Math.min(.6,innerRamp/100))}),[innerGap,innerRamp]);const{main:elements,alt:altElements,unitW=100}=useMemo(()=>buildElements({motif,density,core,showDots,spacing,coreScale:Math.max(.1,coreSize/100)}),[motif,density,core,showDots,spacing,coreSize]);// Gaps may go negative so tiles overlap and compose into new patterns;\n// clamp so a step never collapses below a quarter tile. Phase shifts the\n// pattern per axis, wrapped to one step.\nconst computeGrid=(tw,th)=>{const sX=tw+Math.max(-.75*tw,gapX);const sY=th+Math.max(-.75*th,gapY);const pX=(phaseX/100*sX%sX+sX)%sX;const pY=(phaseY/100*sY%sY+sY)%sY;return{stepX:sX,stepY:sY,phaseX:pX,phaseY:pY,cols:repeat===\"y\"?1:Math.ceil((width+pX)/sX)+1,rows:repeat===\"x\"?1:Math.ceil((height+pY)/sY)+1};};let safeW=Math.max(16,tileSize);let safeH=Math.max(16,uniformScale?tileSize:tileSizeY);const wUnits=unitW/100;// Quarter-turns swap which axis carries the motif's long side, so a band\n// that runs horizontally can be made to run vertically instead.\nconst rotation=DIRECTION_ANGLE[direction]??0;const rotated=rotation===90||rotation===270;const tileW=()=>rotated?safeW:safeW*wUnits;const tileH=()=>rotated?safeH*wUnits:safeH;let grid=computeGrid(tileW(),tileH());// Safety valve: on huge surfaces grow the tile instead of dropping\n// coverage, so the pattern always spans the full area.\nif(grid.cols*grid.rows>MAX_TILES){const factor=Math.sqrt(grid.cols*grid.rows/MAX_TILES);safeW*=factor;safeH*=factor;grid=computeGrid(tileW(),tileH());}const{stepX,stepY,phaseX:shiftX,phaseY:shiftY}=grid;let cols=grid.cols;let rows=grid.rows;const scaleX=safeW/TILE;const scaleY=safeH/TILE;// Which layouts use a half-tile brick offset between columns.\nconst useBrick=brickOffset&&repeat===\"both\";// Panning must translate by the pattern's true spatial period: alternate\n// flips and brick offsets repeat every TWO tiles, not one.\nconst panning=animate&&animation===\"pan\";const panHorizontal=panDirection===\"left\"||panDirection===\"right\";const panSteps=alternate||useBrick?2:1;if(panning){if(panHorizontal)cols+=panSteps;else rows+=panSteps;}const dotScale=dotSize/100*Math.max(.75,strokeWidth/3);const gradId=`apg${uid}`;// Prism paints from the gradient regardless of the Paint setting: the\n// gradient itself is what animates.\nconst isPrism=animation===\"prism\";const usesGradient=fillStyle===\"gradient\"||isPrism;const paintRef=usesGradient?`url(#${gradId})`:color;const glowColor=usesGradient?color2:color;// The svg viewBox is in measured px units, so gradients and shimmer\n// geometry are computed against the same space.\nconst vbW=Math.max(1,width);const vbH=Math.max(1,height);const gradPts=gradientPoints(gradientAngle,vbW,vbH);const tileGradPts=gradientPoints(gradientAngle,TILE,TILE);// Single-row and single-column bands center on the free axis.\nconst bandX=repeat===\"y\"?(width-tileW())/2:0;const bandY=repeat===\"x\"?(height-tileH())/2:0;// Panning needs lead-in tiles on the travel axis so the loop stays\n// seamless; brick offsetting needs a lead-in row above the top edge.\nconst cStart=panning&&panHorizontal?-panSteps:0;const rStart=Math.min(panning&&!panHorizontal?-panSteps:0,useBrick?-1:0);// The triangle motif interleaves up/down internally — a 180° flip would\n// double-draw it, so flipping is disabled there.\nconst flipAllowed=motif!==\"triangle\";const tiles=[];{for(let r=rStart;r<rows;r++){for(let c=cStart;c<cols;c++){const offsetY=useBrick&&(c%2+2)%2===1?stepY/2:0;tiles.push({x:c*stepX-shiftX+bandX,y:r*stepY+offsetY-shiftY+bandY,flip:flipAllowed&&alternate&&((c+r)%2+2)%2===1,delay:(Math.abs(c)+Math.abs(r))*Math.max(0,stagger),key:`${r}-${c}`});}}}// --- animation css ---\n// once = play and hold · infinite = linear repeat · bounce = reverse out\n// Scrub holds the final frame instead of wrapping past 100% — with\n// infinite iterations, overshooting the cycle snapped tiles back to the\n// start while the page kept scrolling.\nconst iteration=loopMode===\"once\"||scrubbing?\"1\":\"infinite\";const animDir=loopMode===\"bounce\"?\"alternate\":\"normal\";const dur=Math.max(.2,duration);// Entrance animations stagger tile by tile. Looping on the plain\n// duration restarts the first tile before the last has finished, so the\n// pattern is never whole; stretch the cycle to cover the full cascade\n// plus a hold, and the completed pattern is visible every loop.\nconst lastDelay=tiles.reduce((m,t)=>Math.max(m,t.delay),0);const entrance=animation===\"draw\";const cycle=entrance&&loopMode!==\"once\"?lastDelay+dur:dur;// Fraction of the cycle spent drawing (the rest holds it complete).\nconst drawPct=.6*dur/cycle*100;const fadeFrom=.4*dur/cycle*100;const fadeTo=.7*dur/cycle*100;cycleRef.current=cycle;let css=\"\";if(animate){if(animation===\"draw\"){// Strokes and fills share one cycle so looping stays in sync.\n// Bounce plays the same keyframes in reverse: strokes retrace out.\ncss=`\n            .ap-${uid} path[data-k=\"s\"] {\n                stroke-dasharray: 1 1;\n                stroke-dashoffset: 1;\n                animation: apdraw-${uid} ${cycle}s cubic-bezier(0.6, 0, 0.2, 1) ${animDir} both ${iteration};\n                animation-delay: inherit;\n            }\n            .ap-${uid} .apf {\n                opacity: 0;\n                animation: apfade-${uid} ${cycle}s ease ${animDir} both ${iteration};\n                animation-delay: inherit;\n            }\n            @keyframes apdraw-${uid} { ${drawPct}%, 100% { stroke-dashoffset: 0; } }\n            @keyframes apfade-${uid} { 0%, ${fadeFrom}% { opacity: 0; } ${fadeTo}%, 100% { opacity: 1; } }`;}else if(animation===\"glow\"){// Starts and ends at the natural opacity so tiles waiting out\n// their stagger delay don't pop when the animation kicks in.\ncss=`\n            .ap-${uid} .apt {\n                animation: apglow-${uid} ${dur}s ease-in-out ${animDir} both ${iteration};\n                animation-delay: inherit;\n            }\n            @keyframes apglow-${uid} {\n                0%, 100% { opacity: 1; }\n                50% { opacity: 0.4; }\n            }`;}else if(animation===\"pan\"){{const dist=panSteps;const dx=panHorizontal?(panDirection===\"left\"?-stepX:stepX)*dist:0;const dy=!panHorizontal?(panDirection===\"up\"?-stepY:stepY)*dist:0;css=`\n                .ap-${uid} .apgroup {\n                    animation: appan-${uid} ${dur*dist}s linear ${animDir} both ${iteration};\n                }\n                @keyframes appan-${uid} {\n                    from { transform: translate(0px, 0px); }\n                    to { transform: translate(${dx}px, ${dy}px); }\n                }`;}}else if(animation===\"shimmer\"){css=`\n            .ap-${uid} .apshimmer {\n                animation: apshimmer-${uid} ${dur}s ease-in-out ${animDir} both ${iteration};\n            }\n            @keyframes apshimmer-${uid} {\n                from { transform: translateX(${-vbW*.55}px); }\n                to { transform: translateX(${vbW*1.05}px); }\n            }`;}}if(animate&&scrubbing){// Freeze every animation; --apd (set from scroll position) selects\n// the frame. Animations without per-tile delays read the variable\n// directly; staggered ones get it via their calc() inline delay.\ncss+=`\n        .ap-${uid} path[data-k=\"s\"],\n        .ap-${uid} .apt, .ap-${uid} .apf,\n        .ap-${uid} .apgroup, .ap-${uid} .apshimmer {\n            animation-play-state: paused !important;\n        }`;if(animation===\"pan\"||animation===\"shimmer\"){css+=`\n            .ap-${uid} path[data-k=\"s\"],\n            .ap-${uid} .apgroup, .ap-${uid} .apshimmer {\n                animation-delay: var(--apd, 0s);\n            }`;}}if(animate&&scrollTriggered){css+=`\n        .ap-${uid}.appaused path[data-k=\"s\"],\n        .ap-${uid}.appaused .apt, .ap-${uid}.appaused .apf,\n        .ap-${uid}.appaused .apgroup, .ap-${uid}.appaused .apshimmer {\n            animation-play-state: paused !important;\n        }`;}// Hover spotlight: a cursor-following radial glow painted only on the\n// pattern's shapes, fading to zero at the coverage radius — active\n// across the whole component.\nconst hoverActive=hover&&!layerPaint&&!isStatic;const renderTile=(tile,paint)=>{// Motifs with an alt variant (the diamond spiral) switch geometry on\n// alternate tiles instead of rotating; the rest mirror by rotation.\nconst els=tile.flip&&altElements?altElements:elements;const flipT=tile.flip&&!altElements?` rotate(180 ${unitW/2} ${TILE/2})`:\"\";const rotT=rotation?` rotate(${rotation} ${unitW/2} ${TILE/2})`:\"\";// A quarter turn leaves the tile box off-origin, so shift it back.\nconst recentre=rotated?` translate(${(TILE-unitW)/2} ${(unitW-TILE)/2})`:\"\";// The stagger delay sits on the .apt group: reveal/glow animate the\n// group itself, and draw's paths pick it up via animation-delay: inherit.\nreturn /*#__PURE__*/_jsx(\"g\",{transform:`translate(${tile.x} ${tile.y}) scale(${scaleX} ${scaleY})${recentre}${rotT}${flipT}`,children:/*#__PURE__*/_jsx(\"g\",{className:\"apt\",style:animate&&(animation===\"draw\"||animation===\"glow\")?{animationDelay:scrubbing?`calc(var(--apd, 0s) + ${tile.delay}s)`:`${tile.delay}s`}:undefined,children:els.map((el,i)=>{if(el.kind===\"dot\"){// Compensate by the average scale so dots keep a\n// steady on-screen size at any tile size.\nreturn /*#__PURE__*/_jsx(\"circle\",{className:\"apf\",cx:el.cx,cy:el.cy,r:el.r*dotScale/((scaleX+scaleY)/2),fill:paint??paintRef},i);}if(el.kind===\"fill\"){return /*#__PURE__*/_jsx(\"path\",{className:\"apf\",d:el.d,fill:paint??paintRef},i);}return /*#__PURE__*/_jsx(\"path\",{\"data-k\":\"s\",d:el.d,pathLength:1,fill:\"none\",stroke:paint??paintRef,strokeWidth:strokeWidth,vectorEffect:\"non-scaling-stroke\",strokeMiterlimit:16,strokeLinejoin:\"miter\",strokeLinecap:\"square\"},i);})})},tile.key);};const shimmering=animate&&animation===\"shimmer\";// Layer paint: the pattern becomes a repeating CSS mask (one 2×2-step\n// pattern cell keeps the data URI tiny) applied over the slotted layer.\nlet maskUri=null;if(layerPaint||hoverActive){const avgScale=(scaleX+scaleY)/2;const markupFor=els=>els.map(el=>{if(el.kind===\"dot\")return`<circle cx=\"${el.cx}\" cy=\"${el.cy}\" r=\"${el.r*dotScale/avgScale}\" fill=\"#fff\"/>`;if(el.kind===\"fill\")return`<path d=\"${el.d}\" fill=\"#fff\"/>`;return`<path d=\"${el.d}\" fill=\"none\" stroke=\"#fff\" stroke-width=\"${strokeWidth}\" vector-effect=\"non-scaling-stroke\" stroke-miterlimit=\"16\" stroke-linejoin=\"miter\" stroke-linecap=\"square\"/>`;}).join(\"\");const cellParts=[];for(let pr=0;pr<2;pr++){for(let pc=0;pc<2;pc++){const flip=alternate&&(pc+pr)%2===1;const els=flip&&altElements?altElements:elements;const rotT=rotation?` rotate(${rotation} ${unitW/2} ${TILE/2})`:\"\";const recentreT=rotated?` translate(${(TILE-unitW)/2} ${(unitW-TILE)/2})`:\"\";const flipT=flip&&!altElements?` rotate(180 ${TILE/2} ${TILE/2})`:\"\";const yOffsets=[pr*stepY];if(useBrick&&pc===1){yOffsets[0]+=stepY/2;// Wrap copy so the shifted column stays seamless.\nif(pr===1)yOffsets.push(yOffsets[0]-2*stepY);}for(const y of yOffsets){cellParts.push(`<g transform=\"translate(${pc*stepX} ${y}) scale(${scaleX} ${scaleY})${recentreT}${rotT}${flipT}\">${markupFor(els)}</g>`);}}}const cellW=2*stepX;const cellH=2*stepY;const maskSvg=`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${cellW} ${cellH}\" width=\"${cellW}\" height=\"${cellH}\">${cellParts.join(\"\")}</svg>`;maskUri=`url(\"data:image/svg+xml;utf8,${encodeURIComponent(maskSvg)}\")`;}const maskRepeatMode=repeat===\"both\"?\"repeat\":repeat===\"x\"?\"repeat-x\":\"repeat-y\";const layerFrame=repeat===\"x\"?{position:\"absolute\",left:0,right:0,top:bandY,height:safeH}:repeat===\"y\"?{position:\"absolute\",top:0,bottom:0,left:bandX,width:safeW}:{position:\"absolute\",inset:0};// Track the cursor with CSS variables (no re-renders) for the spotlight.\nuseEffect(()=>{if(!hoverActive||typeof window===\"undefined\")return;const node=containerRef.current;if(!node)return;const onMove=event=>{const rect=node.getBoundingClientRect();node.style.setProperty(\"--apx\",`${event.clientX-rect.left}px`);node.style.setProperty(\"--apy\",`${event.clientY-rect.top}px`);node.style.setProperty(\"--aph\",\"1\");};const onLeave=()=>node.style.setProperty(\"--aph\",\"0\");node.addEventListener(\"mousemove\",onMove);node.addEventListener(\"mouseleave\",onLeave);return()=>{node.removeEventListener(\"mousemove\",onMove);node.removeEventListener(\"mouseleave\",onLeave);};},[hoverActive]);const fadeX=axisFade(fadeLeft,fadeRight,fadeAmount,true);const fadeY=axisFade(fadeTop,fadeBottom,fadeAmount,false);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,className:`aproot-${uid}`,style:{minWidth:40,minHeight:40,...style,position:\"relative\",overflow:\"hidden\",...backgroundColor?{background:backgroundColor}:null},children:[css?/*#__PURE__*/_jsx(\"style\",{children:css}):null,/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,WebkitMaskImage:fadeX,maskImage:fadeX},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",inset:0,WebkitMaskImage:fadeY,maskImage:fadeY},children:[layerPaint&&maskUri?/*#__PURE__*/_jsx(\"div\",{style:{...layerFrame,WebkitMaskImage:maskUri,maskImage:maskUri,WebkitMaskSize:`${2*stepX}px ${2*stepY}px`,maskSize:`${2*stepX}px ${2*stepY}px`,WebkitMaskRepeat:maskRepeatMode,maskRepeat:maskRepeatMode,WebkitMaskPosition:`${-shiftX+bandX}px ${-shiftY}px`,maskPosition:`${-shiftX+bandX}px ${-shiftY}px`},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0},children:paintLayer})}):/*#__PURE__*/_jsxs(\"svg\",{className:`ap-${uid}${animate&&scrollTriggered&&!inView?\" appaused\":\"\"}`,width:\"100%\",height:\"100%\",viewBox:`0 0 ${Math.max(1,width)} ${Math.max(1,height)}`,preserveAspectRatio:\"xMidYMid slice\",style:{display:\"block\",filter:animate&&animation===\"glow\"?`drop-shadow(0 0 ${strokeWidth*2.5}px ${glowColor})`:undefined},role:\"presentation\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsxs(\"defs\",{children:[fillStyle===\"gradient\"&&gradientScope===\"pattern\"&&!isPrism?/*#__PURE__*/_jsxs(\"linearGradient\",{id:gradId,gradientUnits:\"userSpaceOnUse\",x1:gradPts.x1,y1:gradPts.y1,x2:gradPts.x2,y2:gradPts.y2,children:[/*#__PURE__*/_jsx(\"stop\",{offset:\"0\",stopColor:color}),/*#__PURE__*/_jsx(\"stop\",{offset:\"1\",stopColor:color2})]}):null,fillStyle===\"gradient\"&&gradientScope===\"tile\"&&!isPrism||isPrism?// userSpaceOnUse resolves in each tile's local\n// 0..100 space, giving a coherent per-tile sweep\n// instead of per-element bounding-box fitting —\n// and lets Prism spin the gradient inside every\n// tile independently.\n/*#__PURE__*/_jsx(\"linearGradient\",{id:gradId,gradientUnits:\"userSpaceOnUse\",x1:tileGradPts.x1,y1:tileGradPts.y1,x2:tileGradPts.x2,y2:tileGradPts.y2,children:isPrism?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"stop\",{offset:\"0\",stopColor:color}),/*#__PURE__*/_jsx(\"stop\",{offset:Math.max(.001,.5-prismBand/200),stopColor:color}),/*#__PURE__*/_jsx(\"stop\",{offset:\"0.5\",stopColor:color2}),/*#__PURE__*/_jsx(\"stop\",{offset:Math.min(.999,.5+prismBand/200),stopColor:color}),/*#__PURE__*/_jsx(\"stop\",{offset:\"1\",stopColor:color}),animate?/*#__PURE__*/_jsx(\"animateTransform\",{attributeName:\"gradientTransform\",type:\"rotate\",values:loopMode===\"bounce\"?`0 ${unitW/2} 50;360 ${unitW/2} 50;0 ${unitW/2} 50`:`0 ${unitW/2} 50;360 ${unitW/2} 50`,dur:`${loopMode===\"bounce\"?dur*2:dur}s`,repeatCount:loopMode===\"once\"?1:\"indefinite\",fill:\"freeze\"}):null]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"stop\",{offset:\"0\",stopColor:color}),/*#__PURE__*/_jsx(\"stop\",{offset:\"1\",stopColor:color2})]})}):null,shimmering?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"linearGradient\",{id:`apsh${uid}`,x1:\"0\",y1:\"0.5\",x2:\"1\",y2:\"0.5\",children:[/*#__PURE__*/_jsx(\"stop\",{offset:\"0\",stopColor:trailColor,stopOpacity:\"0\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"0.5\",stopColor:trailColor,stopOpacity:\"0.85\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"1\",stopColor:trailColor,stopOpacity:\"0\"})]}),/*#__PURE__*/_jsx(\"mask\",{id:`apm${uid}`,maskUnits:\"userSpaceOnUse\",x:-vbW,y:-vbH,width:vbW*3,height:vbH*3,children:/*#__PURE__*/_jsx(\"g\",{children:tiles.map(t=>renderTile(t,\"#fff\"))})})]}):null]}),/*#__PURE__*/_jsx(\"g\",{className:\"apgroup\",children:tiles.map(t=>renderTile(t,undefined))},`pk${playKey}`),shimmering?/*#__PURE__*/_jsx(\"g\",{mask:`url(#apm${uid})`,children:/*#__PURE__*/_jsx(\"rect\",{className:\"apshimmer\",x:0,y:-vbH,width:vbW*.5,height:vbH*3,fill:`url(#apsh${uid})`})}):null]}),hoverActive&&maskUri?// Cursor spotlight: hoverColor at the centre fading to\n// zero opacity at the coverage radius, painted only where\n// the pattern's shapes are.\n/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,pointerEvents:\"none\",opacity:\"var(--aph, 0)\",transition:\"opacity 0.3s ease\",WebkitMaskImage:`radial-gradient(circle ${hoverRadius}px at var(--apx, 50%) var(--apy, 50%), black 0%, transparent 100%)`,maskImage:`radial-gradient(circle ${hoverRadius}px at var(--apx, 50%) var(--apy, 50%), black 0%, transparent 100%)`},children:/*#__PURE__*/_jsx(\"div\",{style:{...layerFrame,background:hoverColor,WebkitMaskImage:maskUri,maskImage:maskUri,WebkitMaskSize:`${2*stepX}px ${2*stepY}px`,maskSize:`${2*stepX}px ${2*stepY}px`,WebkitMaskRepeat:maskRepeatMode,maskRepeat:maskRepeatMode,WebkitMaskPosition:`${-shiftX+bandX}px ${-shiftY}px`,maskPosition:`${-shiftX+bandX}px ${-shiftY}px`}})}):null]})})]});}AfricanPattern.displayName=\"African Pattern\";addPropertyControls(AfricanPattern,{motif:{type:ControlType.Enum,title:\"Motif\",options:[\"chevron\",\"cross\",\"diamond\",\"lattice\",\"triangle\",\"zigzag\"],optionTitles:[\"Chevron\",\"Cross\",\"Diamond\",\"Lattice\",\"Triangle\",\"Zigzag\"],defaultValue:\"chevron\"},tileSize:{type:ControlType.Number,title:\"Size\",min:24,max:320,step:1,unit:\"px\",defaultValue:96},uniformScale:{type:ControlType.Boolean,title:\"Uniform\",defaultValue:true},tileSizeY:{type:ControlType.Number,title:\"Size Y\",min:24,max:320,step:1,unit:\"px\",defaultValue:96,hidden:props=>props.uniformScale!==false},strokeWidth:{type:ControlType.Number,title:\"Stroke\",min:.5,max:12,step:.5,unit:\"px\",defaultValue:3},density:{type:ControlType.Number,title:\"Density\",min:1,max:5,step:1,displayStepper:true,defaultValue:3},innerGap:{type:ControlType.Number,title:\"Inner Gap\",min:40,max:200,step:1,unit:\"%\",defaultValue:100},innerRamp:{type:ControlType.Number,title:\"Gap Ramp\",min:-60,max:60,step:1,unit:\"%\",defaultValue:0},core:{type:ControlType.Enum,title:\"Core\",options:[\"solid\",\"line\",\"none\"],optionTitles:[\"Solid\",\"Line\",\"None\"],defaultValue:\"solid\",displaySegmentedControl:true,hidden:props=>props.motif===\"zigzag\"},coreSize:{type:ControlType.Number,title:\"Core Size\",min:20,max:250,step:5,unit:\"%\",defaultValue:100,hidden:props=>props.motif===\"zigzag\"||props.core===\"none\"},showDots:{type:ControlType.Boolean,title:\"Dots\",defaultValue:false,hidden:props=>props.motif!==\"diamond\"&&props.motif!==\"lattice\"},dotSize:{type:ControlType.Number,title:\"Dot Size\",min:20,max:300,step:5,unit:\"%\",defaultValue:100,hidden:props=>!props.showDots||props.motif!==\"diamond\"&&props.motif!==\"lattice\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"down\",\"up\",\"left\",\"right\"],optionTitles:[\"Down\",\"Up\",\"Left\",\"Right\"],description:\"Quarter turns also flip which way a band runs — Left or Right makes a horizontal pattern repeat vertically.\",defaultValue:\"down\",displaySegmentedControl:true},alternate:{type:ControlType.Boolean,title:\"Alternate\",description:\"Chevron/zigzag mirror; diamond alternates large and small.\",defaultValue:true,hidden:props=>props.motif===\"lattice\"||props.motif===\"cross\"||props.motif===\"triangle\"},brickOffset:{type:ControlType.Boolean,title:\"Offset Rows\",defaultValue:false,hidden:props=>props.repeat!==\"both\"},repeat:{type:ControlType.Enum,title:\"Repeat\",options:[\"both\",\"x\",\"y\"],optionTitles:[\"Both\",\"X only\",\"Y only\"],defaultValue:\"both\",displaySegmentedControl:true},gapX:{type:ControlType.Number,title:\"Gap X\",min:-120,max:120,step:1,unit:\"px\",defaultValue:0},gapY:{type:ControlType.Number,title:\"Gap Y\",min:-120,max:120,step:1,unit:\"px\",defaultValue:0},phaseX:{type:ControlType.Number,title:\"Phase X\",min:0,max:100,step:1,unit:\"%\",defaultValue:0},phaseY:{type:ControlType.Number,title:\"Phase Y\",min:0,max:100,step:1,unit:\"%\",defaultValue:0},fillStyle:{type:ControlType.Enum,title:\"Paint\",options:[\"solid\",\"gradient\",\"layer\"],optionTitles:[\"Solid\",\"Gradient\",\"Layer\"],defaultValue:\"solid\",displaySegmentedControl:true},paintLayer:{type:ControlType.Slot,title:\"Paint Layer\",maxCount:1,hidden:props=>props.fillStyle!==\"layer\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#075985\"},color2:{type:ControlType.Color,title:\"Color 2\",defaultValue:\"#7DD3FC\",hidden:props=>props.fillStyle!==\"gradient\"&&props.animation!==\"prism\"},gradientAngle:{type:ControlType.Number,title:\"Angle\",min:0,max:360,step:1,unit:\"\\xb0\",defaultValue:90,hidden:props=>props.fillStyle!==\"gradient\"||props.animation===\"prism\"},prismBand:{type:ControlType.Number,title:\"Band Length\",description:\"How wide the second colour's band is as it sweeps.\",min:10,max:100,step:5,unit:\"%\",defaultValue:100,hidden:props=>props.animation!==\"prism\"},gradientScope:{type:ControlType.Enum,title:\"Spread\",options:[\"pattern\",\"tile\"],optionTitles:[\"Whole\",\"Per Tile\"],defaultValue:\"pattern\",displaySegmentedControl:true,hidden:props=>props.fillStyle!==\"gradient\"||props.animation===\"prism\"},backgroundColor:{type:ControlType.Color,title:\"Backdrop\",optional:true},animation:{type:ControlType.Enum,title:\"Animate\",options:[\"none\",\"glow\",\"pan\",\"shimmer\",\"prism\",\"draw\"],optionTitles:[\"None\",\"Glow\",\"Pan\",\"Shimmer\",\"Prism\",\"Draw\"],defaultValue:\"none\"},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"load\",\"scroll\",\"scrub\"],optionTitles:[\"On Load\",\"In View\",\"Scroll Scrub\"],defaultValue:\"load\",displaySegmentedControl:true,hidden:props=>props.animation===\"none\"},scrollLength:{type:ControlType.Number,title:\"Scroll Length\",description:\"How far the page scrolls, as a share of the screen height, between the animation starting and finishing.\",min:20,max:300,step:5,unit:\"%\",defaultValue:75,hidden:props=>props.animation===\"none\"||props.trigger!==\"scrub\"},scrollStart:{type:ControlType.Enum,title:\"Start At\",description:\"How far the section must be on screen before it starts: its top edge, its middle, or all of it.\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],defaultValue:\"top\",displaySegmentedControl:true,hidden:props=>props.animation===\"none\"||props.trigger===\"load\"},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:true,hidden:props=>props.animation===\"none\"||props.trigger!==\"scroll\"},duration:{type:ControlType.Number,title:\"Duration\",description:\"Playback time. Ignored with Scroll Scrub, where scroll position is the timeline — use Scroll Length there.\",min:.5,max:20,step:.5,unit:\"s\",defaultValue:6,hidden:props=>props.animation===\"none\"||props.trigger===\"scrub\"},stagger:{type:ControlType.Number,title:\"Stagger\",description:\"Delay between neighbouring tiles starting the animation — creates the cascade. 0 animates all tiles together.\",min:0,max:10,step:.05,unit:\"s\",defaultValue:.08,hidden:props=>props.animation!==\"draw\"&&props.animation!==\"glow\"},trailColor:{type:ControlType.Color,title:\"Glow Color\",description:\"The colour of the shimmer sweep.\",defaultValue:\"#7DD3FC\",hidden:props=>props.animation!==\"shimmer\"},loopMode:{type:ControlType.Enum,title:\"Loop\",options:[\"infinite\",\"bounce\",\"once\"],optionTitles:[\"Infinite\",\"Bounce\",\"Once\"],defaultValue:\"infinite\",displaySegmentedControl:true,hidden:props=>props.animation===\"none\"},panDirection:{type:ControlType.Enum,title:\"Pan To\",options:[\"left\",\"right\",\"up\",\"down\"],optionTitles:[\"Left\",\"Right\",\"Up\",\"Down\"],defaultValue:\"right\",displaySegmentedControl:true,hidden:props=>props.animation!==\"pan\"},hover:{type:ControlType.Boolean,title:\"Hover\",description:\"A radial spotlight follows the cursor anywhere over the component, fading to nothing at the coverage edge.\",defaultValue:false,hidden:props=>props.fillStyle===\"layer\"},hoverColor:{type:ControlType.Color,title:\"Hover Color\",defaultValue:\"#38BDF8\",hidden:props=>!props.hover||props.fillStyle===\"layer\"},hoverRadius:{type:ControlType.Number,title:\"Coverage\",min:40,max:600,step:10,unit:\"px\",defaultValue:180,hidden:props=>!props.hover||props.fillStyle===\"layer\"},fadeLeft:{type:ControlType.Boolean,title:\"Fade Left\",defaultValue:false},fadeTop:{type:ControlType.Boolean,title:\"Fade Top\",defaultValue:false},fadeRight:{type:ControlType.Boolean,title:\"Fade Right\",defaultValue:false},fadeBottom:{type:ControlType.Boolean,title:\"Fade Bottom\",defaultValue:false},fadeAmount:{type:ControlType.Number,title:\"Fade Size\",min:5,max:60,step:1,unit:\"%\",defaultValue:30,hidden:props=>!props.fadeLeft&&!props.fadeTop&&!props.fadeRight&&!props.fadeBottom}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AfricanPattern\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"800\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AfricanPattern.map"],"mappings":"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"}