{"version":3,"file":"PackageAutoFill.DR_o7L9d.mjs","names":["useMemo","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/IziX1FB5aKOzWbCmgK34/lWaiZfqwvXLA5APaPCkt/PackageAutoFill.js"],"sourcesContent":["// PackageAutoFill.tsx\n// Auto-fills the Contact Package page hero (package name, catch tag / tagline,\n// cover image) based on which package the visitor clicked \"Book Now\" on.\n//\n// How it works:\n// 1. Reads ?package=<slug> from the URL (set automatically by\n//    PackageBookNowButton.tsx on the package detail page).\n// 2. Looks up the matching package from PACKAGES_SNAPSHOT below (a data\n//    snapshot of your \"Packages\" CMS collection, pulled at build time so\n//    this works out of the box with zero manual setup).\n// 3. If you'd rather this always reflect the very latest CMS content\n//    live (no re-baking needed when you add/edit packages), connect the\n//    optional \"Collection\" property below to your Packages CMS Collection\n//    List in Framer's right-hand panel — when connected, live data is used\n//    instead of the snapshot automatically.\n// 4. Keeps the site's real \"Package Name\" form field AND the page's\n//    breadcrumb (\"Home > Tours & Experiences > <package> > Book/ Enquiry\")\n//    in sync with whichever package was matched from the URL.\n//\n// Visual design matches the \"Stack eg\" reference layer on the\n// /contact-package design canvas: a full-bleed cover image on top, a small\n// gap (matching the reference's 10px stack gap), then a solid \"Earth\n// olive\" info block below it containing a small \"+ your package\" eyebrow,\n// the bold uppercase package title (Akshar), and an italic \"| <catch tag>\"\n// link (Playfair Display) that deep-links to the package's tour page.\n// There is no picker here by default — this component is primarily a\n// display, driven by the ?package= URL param (the \"Show Dropdown\"\n// property control still exists if you ever want a picker on some other\n// instance).\n//\n// IMPORTANT: this file has been edited more than once (by different\n// tools/agents). If something looks reverted or wrong, read this file\n// first before assuming — a previous run already lost the visual\n// redesign once when another edit overwrote it without merging.\n//\n// To refresh the snapshot after adding/editing packages in the CMS, ask\n// Claude to \"refresh the package snapshot\" — it will re-pull your Packages\n// collection and update this file.\n//\n// MOBILE SYNC FIX (see syncNativePackageSelect / syncBreadcrumb below):\n// the \"Package Name\" field and breadcrumb were confirmed working on\n// Desktop, Tablet and the backup /contact-package-2 page, but not\n// reliably on phones. The sync used to run on a *fixed* schedule (20\n// attempts x 300ms = 6s from mount) and then give up for good. On slower\n// mobile CPUs/networks the real Framer-rendered \"Package Name\" <select>\n// and breadcrumb text can still be hydrating/mounting after that 6s\n// window closes, so the sync silently never applied — nothing was\n// \"broken\" so much as it ran out of patience before the real elements\n// existed. The fix below (a) reacts immediately to DOM changes via a\n// MutationObserver instead of only polling on a timer, and (b) extends\n// the polling safety net well past 6s, while stopping itself as soon as\n// both targets are confirmed in sync so it doesn't run indefinitely.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useMemo,useEffect,useCallback}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// --- Snapshot of the \"Packages\" CMS collection (Title / Catch Tag / Image / slug) ---\nconst PACKAGES_SNAPSHOT=[{id:\"iVdUu74PK\",slug:\"sri-lanka-heritage-and-wildlife\",title:\"Sri Lanka Heritage & Wildlife\",catchTag:\"See It All\",image:\"https://framerusercontent.com/images/zIl40HAxQTmcMkDxz26PirXp518.jpg\"},{id:\"Bxn7_uGSU\",slug:\"sri-lanka-endemic-birding\",title:\"Sri Lanka Endemic Birding Tour\",catchTag:\"Endemic Feathers\",image:\"https://framerusercontent.com/images/h8GMxfxbHE4J0lkERiBxq9xK3I.jpg\"},{id:\"SE5QT9mfd\",slug:\"sri-lanka-leopard-safari-three-parks\",title:\"Sri Lanka Leopard Safari\",catchTag:\"Three Parks, One Cat\",image:\"https://framerusercontent.com/images/QremyAHOjZAEgpwXnZ0rgeT9saY.jpg\"},{id:\"gd76OvfLD\",slug:\"owls-of-sri-lanka\",title:\"Owls of Sri Lanka\",catchTag:\"Hide & Seek\",image:\"https://framerusercontent.com/images/IAxMnShydqJ3TTsFS9IVFQ82M.jpg\"},{id:\"qW6qGx2cJ\",slug:\"sri-lanka-elephant-safaries\",title:\"Sri Lanka Elephant Safaris\",catchTag:\"Land of Giants\",image:\"https://framerusercontent.com/images/2mRvEeTrZt6sU2adehtsgFG6Y.jpg\"},{id:\"QKxHEilyr\",slug:\"leopard-safari-hilands-of-sri-lanka\",title:\"Leopard Safari & Highlands of Sri Lanka\",catchTag:\"Highland Tracks\",image:\"https://framerusercontent.com/images/dQKQmEOOYflUNdtszlYY8DvyMMA.jpg\"},{id:\"kdEVefcXt\",slug:\"birds-butterflies-and-dragonflies\",title:\"Birds, Butterflies & Dragonflies of Sri Lanka\",catchTag:\"On the Wing\",image:\"https://framerusercontent.com/images/e1ZOF3CIBvOd6hu9iid45blZFns.jpg\"},{id:\"cgXGwHvqI\",slug:\"sri-lanka-big-game-camping\",title:\"Sri Lanka Big Game Camping\",catchTag:\"Under Open Skies\",image:\"https://framerusercontent.com/images/dl5vPhFnsaiVCXJ7CllfrdPe4.jpg\"}];function getLayerText(item,names){if(!item||!item.card||!Array.isArray(item.card.layers))return\"\";for(const name of names){const layer=item.card.layers.find(l=>l.type===\"text\"&&l.name&&l.name.toLowerCase()===name.toLowerCase());if(layer&&layer.text)return layer.text;}for(const name of names){const layer=item.card.layers.find(l=>l.type===\"text\"&&l.name&&l.name.toLowerCase().includes(name.toLowerCase()));if(layer&&layer.text)return layer.text;}return\"\";}function getLayerImage(item,names){if(!item||!item.card||!Array.isArray(item.card.layers))return\"\";for(const name of names){const layer=item.card.layers.find(l=>l.type===\"image\"&&l.name&&l.name.toLowerCase().includes(name.toLowerCase()));if(layer&&layer.image&&layer.image.src)return layer.image.src;}const anyImage=item.card.layers.find(l=>l.type===\"image\"&&l.image&&l.image.src);return anyImage?anyImage.image.src:\"\";}function slugFromLink(link){if(!link||typeof link!==\"string\")return\"\";const parts=link.split(\"/\").filter(Boolean);return parts.length>0?parts[parts.length-1]:\"\";}function normalize(str){return(str||\"\").toString().toLowerCase().trim().replace(/\\s+/g,\"-\");}// Normalizes both the live-CMS-connected shape ({ card: { layers } }, slug, link)\n// and the snapshot shape ({ title, catchTag, image, slug }) into one common shape.\nfunction normalizeItem(item,titleLayerNames,tagLayerNames,imageLayerNames){if(!item)return null;const isSnapshot=typeof item.title===\"string\"||typeof item.catchTag===\"string\";if(isSnapshot){return{id:item.id,slug:item.slug,title:item.title||\"\",tag:item.catchTag||\"\",image:item.image||\"\"};}return{id:item.id,slug:item.slug||slugFromLink(item.link),title:getLayerText(item,titleLayerNames),tag:getLayerText(item,tagLayerNames),image:getLayerImage(item,imageLayerNames)};}function findMatch(list,slug){if(!Array.isArray(list)||list.length===0)return null;if(!slug)return list[0];const target=normalize(decodeURIComponent(slug));return list.find(item=>normalize(item.slug)===target)||list.find(item=>normalize(item.id)===target)||list.find(item=>normalize(item.title)===target)||list[0];}function getQueryParam(name){if(typeof window===\"undefined\")return\"\";return new URLSearchParams(window.location.search).get(name)||\"\";}// Finds the site's real \"Package Name\" <select> (part of the Framer\n// Enquiry Form) and sets its value to match the auto-detected package, so\n// the actual form field that gets submitted is filled in too.\nfunction isVisible(el){if(!el||typeof el.getClientRects!==\"function\")return false;if(el.offsetParent===null&&el.getClientRects().length===0)return false;const rects=el.getClientRects();return rects.length>0&&rects[0].width>0&&rects[0].height>0;}// Returns the real Framer \"Package Name\" <select> this component should be\n// syncing (excludes this component's own optional picker, marked with\n// data-pkg-autofill), preferring a currently-visible one over hidden\n// responsive-breakpoint duplicates. Returns null if the field hasn't\n// mounted in the DOM yet (e.g. still hydrating, or lazily mounted below\n// the fold — both more likely to still be happening on slower/mobile\n// devices at the moment this runs).\nfunction findNativePackageSelect(title){if(typeof document===\"undefined\"||!title)return null;let pool=Array.from(document.querySelectorAll(\"select.framer-form-input:not([data-pkg-autofill])\"));if(pool.length===0){pool=Array.from(document.querySelectorAll(\"select:not([data-pkg-autofill])\"));}const candidates=pool.filter(select=>Array.from(select.options).some(opt=>opt.text.trim()===title.trim()));if(candidates.length===0)return null;return candidates.find(isVisible)||candidates[0];}function syncNativePackageSelect(title){const target=findNativePackageSelect(title);if(!target)return;const option=Array.from(target.options).find(opt=>opt.text.trim()===title.trim());if(!option)return;if(target.value===option.value)return;const nativeSetter=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,\"value\").set;nativeSetter.call(target,option.value);target.dispatchEvent(new Event(\"input\",{bubbles:true}));target.dispatchEvent(new Event(\"change\",{bubbles:true}));}// True once the real \"Package Name\" field exists in the DOM AND already\n// holds the matched package's value — used to know when it's safe to stop\n// polling/observing for this target.\nfunction isSelectSynced(title){const target=findNativePackageSelect(title);if(!target)return false;const option=Array.from(target.options).find(opt=>opt.text.trim()===title.trim());return!!option&&target.value===option.value;}// The Contact Package page's breadcrumb (\"Home > Tours & Experiences > ...\")\n// has a static third crumb left over from when the page was cloned from a\n// real package page — it always reads \"sri-lanka-heritage-wildlife)\"\n// regardless of which package the visitor is actually looking at.\n//\n// IMPORTANT: every text layer in this breadcrumb (and several unrelated\n// footer text layers elsewhere on the page) all share the same generic\n// Framer layer name \"Service Description\" — it is NOT unique. An earlier\n// version of this function queried by that name alone and grabbed the\n// FIRST match on the page, which turned out to be the \"Home\" crumb, not\n// the package crumb — silently corrupting \"Home\" into the package title\n// instead of fixing the intended text.\n//\n// Fix: \"book/ enquiry\" is unique on the page, and the package crumb is\n// always the element immediately before it in document order — that\n// relationship holds even though Framer duplicates a hidden\n// \"tours & experiences\" text layer right before the real link (verified\n// live: the raw leaf order is [Home, tours & experiences (hidden dupe),\n// tours & experiences (link), <package>, book/ enquiry, ...]), which broke\n// a simpler \"the crumb right after tours & experiences\" approach. The\n// \"Home\" crumb is recovered separately by walking back from the FIRST\n// \"tours & experiences\" occurrence, and is restored if an earlier buggy\n// version of this function overwrote it with the package title.\n// slug (optional) makes the crumb clickable, taking the visitor back to\n// that package's own tour page at /tours-experiences/<slug> — matching how\n// the other breadcrumb crumbs (\"Home\", \"Tours & Experiences\") already\n// behave as links. We attach a plain onclick (not addEventListener) so\n// re-running this on every interval tick just replaces the handler with\n// the current slug's, instead of stacking up duplicate listeners.\nfunction findBreadcrumbTarget(){if(typeof document===\"undefined\")return null;const leaves=Array.from(document.querySelectorAll(\"p.framer-text, a.framer-text\"));const bIdx=leaves.findIndex(e=>e.textContent&&e.textContent.trim().toLowerCase()===\"book/ enquiry\");if(bIdx<1)return null;const target=leaves[bIdx-1];if(!target||!target.textContent)return null;const lowerTarget=target.textContent.trim().toLowerCase();if(lowerTarget===\"tours & experiences\"||lowerTarget===\"home\")return null;return{target,leaves,tIdxFirst:leaves.findIndex(e=>e.textContent&&e.textContent.trim().toLowerCase()===\"tours & experiences\")};}function syncBreadcrumb(title,slug){if(typeof document===\"undefined\"||!title)return;const found=findBreadcrumbTarget();if(!found)return;const{target,leaves,tIdxFirst}=found;const homeCrumb=tIdxFirst>0?leaves[tIdxFirst-1]:null;if(homeCrumb&&homeCrumb.textContent&&homeCrumb.textContent.trim()!==\"Home\"){homeCrumb.textContent=\"Home\";}if(target.textContent.trim()!==title.trim()){target.textContent=title;}if(slug){const href=\"/tours-experiences/\"+encodeURIComponent(slug);if(target.getAttribute(\"data-pkg-href\")!==href){target.setAttribute(\"data-pkg-href\",href);target.style.cursor=\"pointer\";target.style.transition=\"color 0.15s ease\";target.setAttribute(\"role\",\"link\");target.setAttribute(\"tabIndex\",\"0\");// Remember the crumb's original (non-hover) color so we can\n// restore it exactly on mouse-leave/blur rather than guessing.\nif(!target.dataset.pkgBaseColor){target.dataset.pkgBaseColor=getComputedStyle(target).color;}const baseColor=target.dataset.pkgBaseColor;const hoverColor=\"rgb(189, 95, 100)\"// site's accent/CTA color (matches the \"BOOK NOW!\" button)\n;target.onmouseenter=function(){target.style.color=hoverColor;};target.onmouseleave=function(){target.style.color=baseColor;};target.onfocus=function(){target.style.color=hoverColor;};target.onblur=function(){target.style.color=baseColor;};target.onclick=function(e){e.preventDefault();window.location.assign(href);};target.onkeydown=function(e){if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();window.location.assign(href);}};}}}// True once the breadcrumb crumb exists in the DOM AND already reads the\n// matched package's title.\nfunction isBreadcrumbSynced(title){const found=findBreadcrumbTarget();if(!found)return false;return found.target.textContent.trim()===title.trim();}// Small \"+\" glyph used next to the \"your package\" eyebrow label, matching\n// the Vector10 icon on the Stack eg reference layer.\nfunction PlusIcon({color}){return /*#__PURE__*/_jsx(\"svg\",{width:\"12\",height:\"12\",viewBox:\"0 0 12 12\",fill:\"none\",style:{flexShrink:0},children:/*#__PURE__*/_jsx(\"path\",{d:\"M5.77778 0V6M5.77778 12V6M5.77778 6H0M5.77778 6H11.5556\",stroke:color,strokeWidth:\"2.66667\",strokeLinecap:\"square\"})});}export default function PackageAutoFill(props){const{collection=[],titleLayerNames=[\"Title\",\"Package Name\"],tagLayerNames=[\"Catch Tag\",\"Sub Title\"],imageLayerNames=[\"Image\"],showDropdown=false,dropdownLabel=\"your package\",onPackageChange,titleFont,tagFont,labelFont,textColor=\"rgb(242, 240, 232)\",accentColor=\"rgb(207, 206, 93)\",blockColor=\"rgb(55, 53, 3)\",linkToTourPage=true,blockGap=10,titleTagGap=12,style}=props;// Prefer a live-connected CMS Collection List if present, otherwise fall back\n// to the baked-in snapshot so this works with zero setup.\nconst source=collection&&collection.length>0?collection:PACKAGES_SNAPSHOT;const list=useMemo(()=>source.map(item=>normalizeItem(item,titleLayerNames,tagLayerNames,imageLayerNames)).filter(Boolean),[source,titleLayerNames,tagLayerNames,imageLayerNames]);// IMPORTANT: initialize state to \"\" (not the real URL query value) so the\n// very first client render matches the server-rendered HTML exactly.\n// Reading window.location.search directly in the state initializer would\n// make the client's first render differ from the server's, triggering a\n// React hydration-mismatch error that forces React to tear down and\n// rebuild this subtree — which was silently breaking the native\n// \"Package Name\" field sync below. The real slug is applied a moment\n// later, client-side only, via the effect.\nconst[selectedSlug,setSelectedSlug]=useState(\"\");const isCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{const slug=getQueryParam(\"package\");if(slug)setSelectedSlug(slug);},[]);const matched=useMemo(()=>findMatch(list,selectedSlug),[list,selectedSlug]);const title=matched?matched.title:\"Your Package\";const tag=matched?matched.tag:\"\";const image=matched?matched.image:\"\";// Keep the site's real \"Package Name\" form field AND the breadcrumb in\n// sync with whatever package is currently matched/selected.\n//\n// This used to be a fixed 20 x 300ms (6s) polling window and nothing\n// else. That was enough time on Desktop/Tablet, but on phones the real\n// Enquiry Form and/or breadcrumb can still be hydrating or mounting\n// after 6s (slower CPUs, slower networks, and a shorter viewport can\n// delay below-the-fold content) — so the sync simply ran out of tries\n// before the real elements existed, and \"Package Name\" was left on\n// \"SELECT\" with no further attempts.\n//\n// Fix: react immediately to DOM changes via a MutationObserver (so we\n// don't have to guess a timeout long enough for every device), *and*\n// keep a much longer polling safety net (18s) in case a target updates\n// without a DOM mutation Grid catches. Both stop themselves as soon as\n// the select and breadcrumb are both confirmed in sync, so this isn't\n// left running indefinitely.\nuseEffect(()=>{if(!title||isCanvas)return;if(typeof document===\"undefined\")return;const slugForLink=matched?matched.slug:\"\";let selectDone=false;let breadcrumbDone=false;// IMPORTANT: these must be declared (even as null) BEFORE the first\n// attempt() call below. attempt() can call stop() synchronously on\n// its very first run — e.g. right after mount, before the ?package=\n// value has loaded, \"matched\" briefly defaults to the first package\n// in the list, which is a real valid option, so the sync trivially\n// \"succeeds\" against the wrong package on the first try. If that\n// happens before `interval`/`observer` were declared with\n// const/let further down, stop() would reference them while still\n// in the temporal dead zone and throw — which broke the sync (and\n// visibly broke the page) on EVERY device, not just mobile, since\n// this early-success path is common on fast desktop connections\n// too. Declaring them here first makes an early stop() a safe no-op.\nlet interval=null;let observer=null;let debounceHandle=null;function stop(){if(interval)clearInterval(interval);if(debounceHandle)clearTimeout(debounceHandle);if(observer)observer.disconnect();}function attempt(){if(!selectDone){syncNativePackageSelect(title);if(isSelectSynced(title))selectDone=true;}if(!breadcrumbDone){syncBreadcrumb(title,slugForLink);if(isBreadcrumbSynced(title))breadcrumbDone=true;}if(selectDone&&breadcrumbDone)stop();}function scheduleAttempt(){if(debounceHandle)return;debounceHandle=setTimeout(()=>{debounceHandle=null;attempt();},50);}attempt();let pollCount=0;const maxPolls=60// 60 x 300ms = 18s safety net (was 6s)\n;interval=setInterval(()=>{pollCount+=1;attempt();if(pollCount>=maxPolls)clearInterval(interval);},300);if(typeof MutationObserver!==\"undefined\"){observer=new MutationObserver(scheduleAttempt);observer.observe(document.body,{childList:true,subtree:true});}return stop;},[title,isCanvas,matched]);const handleSelect=useCallback(e=>{const newSlug=e.target.value;setSelectedSlug(newSlug);if(typeof window!==\"undefined\"){const url=new URL(window.location.href);url.searchParams.set(\"package\",newSlug);window.history.replaceState({},\"\",url.toString());}const item=findMatch(list,newSlug);if(item){syncNativePackageSelect(item.title);syncBreadcrumb(item.title,item.slug);}if(typeof onPackageChange===\"function\"){onPackageChange(item);}},[list,onPackageChange]);const tourHref=matched&&matched.slug?`/tours-experiences/${matched.slug}`:undefined;return /*#__PURE__*/_jsxs(\"div\",{style:{...style,width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",// Small break between the image and the info block, matching the\n// \"Stack eg\" reference layer's own 10px stack gap (previously the\n// two panels were flush against each other with no breathing room).\ngap:blockGap,boxSizing:\"border-box\",position:\"relative\",// Was \"hidden\" — with a fixed/stretched instance height, that could\n// clip the bottom padding of the info block below if the combined\n// content ran taller than the allotted height. \"visible\" lets the\n// block always show its full padding instead of getting cropped.\noverflow:\"visible\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{flex:\"1 1 auto\",minHeight:0,backgroundColor:blockColor,backgroundImage:image?`url(${image})`:undefined,backgroundSize:\"cover\",backgroundPosition:\"center\"}}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:\"0 0 auto\",display:\"flex\",flexDirection:\"column\",gap:17,// Slightly more breathing room at the bottom than the other\n// sides so the last line of text doesn't sit flush against\n// the block's edge.\npadding:\"28px 30px 36px 30px\",backgroundColor:blockColor,boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10},children:[/*#__PURE__*/_jsx(PlusIcon,{color:accentColor}),/*#__PURE__*/_jsx(\"span\",{style:{color:accentColor,fontSize:13,letterSpacing:1,fontFamily:\"Rubik, sans-serif\",fontWeight:300,...labelFont},children:dropdownLabel})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:titleTagGap},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:26,fontWeight:700,fontFamily:\"Akshar, sans-serif\",textTransform:\"uppercase\",lineHeight:1.3,color:textColor,...titleFont},children:title||\"—\"}),tag&&(linkToTourPage&&tourHref?/*#__PURE__*/_jsx(\"a\",{href:tourHref,style:{fontSize:16,fontStyle:\"italic\",fontWeight:600,fontFamily:\"'Playfair Display', serif\",opacity:.9,color:textColor,textDecoration:\"underline\",...tagFont},children:`| ${tag}`}):/*#__PURE__*/_jsx(\"span\",{style:{fontSize:16,fontStyle:\"italic\",fontWeight:600,fontFamily:\"'Playfair Display', serif\",opacity:.9,color:textColor,...tagFont},children:`| ${tag}`}))]}),showDropdown&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",marginTop:8},children:/*#__PURE__*/_jsx(\"select\",{\"data-pkg-autofill\":\"true\",value:matched?matched.slug||normalize(matched.title):\"\",onChange:handleSelect,style:{width:\"100%\",padding:\"10px 12px\",borderRadius:8,border:\"1px solid rgba(255,255,255,0.3)\",background:\"rgba(255,255,255,0.08)\",color:textColor,fontSize:15,fontFamily:\"Rubik, sans-serif\"},children:list.map((item,i)=>/*#__PURE__*/_jsx(\"option\",{value:item.slug||normalize(item.title),style:{color:\"#000\"},children:item.title||item.slug},item.id||item.slug||i))})}),isCanvas&&collection.length===0&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11,color:\"rgba(255,255,255,0.55)\",background:\"rgba(0,0,0,0.3)\",padding:6,borderRadius:6},children:'Using built-in package snapshot. Connect \"Collection\" to your Packages CMS Collection List for always-live data.'})]})]});}addPropertyControls(PackageAutoFill,{collection:{type:ControlType.Array,title:\"Collection\",control:{type:ControlType.Object,controls:{}},defaultValue:[],description:\"Optional: connect to your Packages CMS Collection List for always-live data. Leave disconnected to use the built-in snapshot.\"},showDropdown:{type:ControlType.Boolean,title:\"Show Dropdown\",defaultValue:false},dropdownLabel:{type:ControlType.String,title:\"Eyebrow Label\",defaultValue:\"your package\"},linkToTourPage:{type:ControlType.Boolean,title:\"Link Tag to Tour Page\",defaultValue:true},blockGap:{type:ControlType.Number,title:\"Image/Block Gap\",defaultValue:10,min:0,max:40,step:1,unit:\"px\"},titleTagGap:{type:ControlType.Number,title:\"Title/Tag Gap\",defaultValue:12,min:0,max:40,step:1,unit:\"px\"},titleLayerNames:{type:ControlType.Array,title:\"Title Layer Names\",control:{type:ControlType.String},defaultValue:[\"Title\",\"Package Name\"]},tagLayerNames:{type:ControlType.Array,title:\"Catch Tag Layer Names\",control:{type:ControlType.String},defaultValue:[\"Catch Tag\",\"Sub Title\"]},imageLayerNames:{type:ControlType.Array,title:\"Image Layer Names\",control:{type:ControlType.String},defaultValue:[\"Image\"]},onPackageChange:{type:ControlType.EventHandler,title:\"onPackageChange\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"rgb(242, 240, 232)\"},accentColor:{type:ControlType.Color,title:\"Accent Color\",defaultValue:\"rgb(207, 206, 93)\"},blockColor:{type:ControlType.Color,title:\"Block Color\",defaultValue:\"rgb(55, 53, 3)\"},titleFont:{type:ControlType.Font,title:\"Title Font\",controls:\"extended\",defaultFontType:\"sans-serif\"},tagFont:{type:ControlType.Font,title:\"Tag Font\",controls:\"extended\",defaultFontType:\"sans-serif\"},labelFont:{type:ControlType.Font,title:\"Label Font\",controls:\"extended\",defaultFontType:\"sans-serif\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PackageAutoFill\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PackageAutoFill.map"],"mappings":"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"}