{"version":3,"file":"Variant_selector.DAPI4iQa.mjs","names":["parseShopifyData","EXAMPLE_DATA","sanitizeQuantity","useProductSelectionStore","create","create","SUPPORT_CONTROL","SHOPIFY_DATA_DESCRIPTION","VARIANT_IMAGE_MAPPING_DESCRIPTION","parseShopifyData","useProductSelectionStore","LoadingSkeleton","SHOPIFY_DATA_DESCRIPTION","SUPPORT_CONTROL","sanitizeQuantity","create","EXAMPLE_DATA","create","extractImageNumbersForVariant","parseShopifyData","useProductSelectionStore","create","parseShopifyData","useMemo","useProductSelectionStore","extractImageNumbersForVariant","useState","getBorderColor","adjustBorderRadius","useState","useState","useRef","useState","SHOPIFY_DATA_DESCRIPTION","VARIANT_IMAGE_MAPPING_DESCRIPTION","SUPPORT_CONTROL","useMemo","useState","Input","QueryClientProvider","Children","useMemo","maxParts","useState","useRef","useState","getBorderWidth","getBorderStyle","getBorderColor","adjustBorderRadius","useState","useMemo"],"sources":["https:/framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/Uam6NjjQgBdbM2uxwvNZ/Parse_shopify_data.js","https:/framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/yNIABzdTP3fu4mWtyAdp/Product_selection_store.js","https:/framerusercontent.com/modules/TgekT24FCXsp3m1M9KnX/UiecgZDEjubVKN4lur2X/Get_shopify_config.js","https:/framerusercontent.com/modules/c5gtsBimYk7u4sSXwOlt/CM2cTm98pCUipAHQyaQn/Shopify_client.js","https:/framerusercontent.com/modules/we4CziCpeycopbrILvTY/1hIa8yvOuEL3RoQ1l6t2/Live_pricing_service.js","https:/framerusercontent.com/modules/CyNT4Zo4FfF9Gv96WuEJ/C3ACb88i82CG2pKDbgwd/Live_pricing_cache.js","https:/framerusercontent.com/modules/3C9wF5reOoO0EZmRXDu0/U0F0IYbzpYj27k6whgBv/Live_pricing_store.js","https:/framerusercontent.com/modules/mHaK3bedwyJwyNxfaowX/r1Q3D8lLCMVdN6bFU9bz/Shared_currency_props.js","https:/framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/tl22i1lNtmmpBOq8EDe4/Shared_props.js","https:/framerusercontent.com/modules/DVekzR4Sf5b9vz5aNZl6/7TkUjog2l0gLWTslezhC/Variant_info_label.js","https:/framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/MEUHNK3OpmhBSPhZhnEx/Product_selection_store.js","https:/framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/rkjqZclSkQOy0QCpfAmc/Parse_shopify_data.js","https:/framerusercontent.com/modules/CEFL18JTsoVN7HzqbGVy/KndVJRNlxYcbiwXYnvWR/Custom_product_field_store.js","https:/framerusercontent.com/modules/iUgN6EtVE5IGf92CQax3/USpHN4LWirnIhrBrq1Gw/Add_to_cart_button.js","https:/framerusercontent.com/modules/Yka9BTwP6pnUEgruT9LS/Jc9IxeCuGijc2VjPdP2l/Helpers.js","https:/framerusercontent.com/modules/l1z5Z7HKu7jw66Txaa5F/7aL6JiqExNvheuIFD72s/State_empty_canvas.js","https:/framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/rIQkvmwRwXuf9UdI67ZU/Parse_shopify_data.js","https:/framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/7lKMJPqBiw0YZrxpJACh/Product_selection_store.js","https:/framerusercontent.com/modules/3Um7Da0PioNPYdqeX5Ez/zrXbPheMmqE6W2yULZdI/Hooks.js","https:/framerusercontent.com/modules/7wU9mRDjXO6UTdjgi9UD/yuxQwKE8YV0i5zSDg7eT/Swatch.js","https:/framerusercontent.com/modules/bbjyVb2V57Nhjs1gu9rH/GK97OdzakPPjxQfUUuyS/Use_is_mobile.js","https:/framerusercontent.com/modules/EAtAInyNWWh0slvVOxX5/pJmXVbV0Z2aGDUgGtoMa/Lightbox.js","https:/framerusercontent.com/modules/E8uvFgVk9lf9dvq1WmMl/HsfI3mZpqPD0s34wqkoG/Zoom_image.js","https:/framerusercontent.com/modules/IUxqF8JlmtZMvOa0ETXF/FVdGFTzpr62DN9zALiuH/Gallery.js","https:/framerusercontent.com/modules/SxGVBI9k7bU23KYa4lkZ/c4AjDC7ApqQv1TZcUc6I/Quantity_input.js","https:/framerusercontent.com/modules/0evMA5BbGcSJocTHhMA2/W7o2Az487E34eYHbWBNC/Shared_layer_wrapper.js","https:/framerusercontent.com/modules/YJSlZPJ3OtkgZ7JnMbkR/nTiKI5ZTLCUnpRSRytRm/Utils.js","https:/framerusercontent.com/modules/9b4zJBr97cGoCaUw99YG/zHtSZJ3YHpM5nW9Vtm33/Hooks.js","https:/framerusercontent.com/modules/YPQf3XlJIdM0syI4Nah6/9AhsKJVjEXQRAGU2JnFH/Variant_dropdown.js","https:/framerusercontent.com/modules/W4tqGjcLIoIG56X9KCvh/aGiJkVtdGHsS93FA6kJF/Placeholder_state.js","https:/framerusercontent.com/modules/8tz291z0qufTiAyO29YU/AWBSLbzFNc2Br3YWcnZk/Variant_button.js","https:/framerusercontent.com/modules/iesOg5jXxMF9FWC1YGiR/gtPVXBsJWvpsXUJFWUxV/Variant_image.js","https:/framerusercontent.com/modules/Meh2p99DzON6Pbyel14V/CrsC5NplVA7L5tt9NSfw/Variant_color.js","https:/framerusercontent.com/modules/2trYS2Zee5YYYduPj7X7/QOtcrTbxpUVTBbqQ8VRN/Filtered_group_view.js","https:/framerusercontent.com/modules/O4SyIrImO0lFCBVnjE4R/yP8qXju2JC8RCFOvTDQn/Default_variant_view.js","https:/framerusercontent.com/modules/GEHbnmiI1XMToLgGgCcJ/ym8mZVoeaba1y3bYc8ex/Types_controls.js","https:/framerusercontent.com/modules/ZZZL9FqToObg8GkOUY1O/E0c7o3qvaXtuDsNZ39tv/Variant_selector.js"],"sourcesContent":["export const parseShopifyData=shopifyData=>{const parsedShopifyData=shopifyData?JSON.parse(shopifyData):EXAMPLE_DATA;return parsedShopifyData;};const EXAMPLE_DATA={id:\"15176683880773\",variants:[{id:\"55218501157189\",title:\"Variant Title\",price:{amount:\"99\",currencyCode:\"USD\"},priceByMarket:{US:{amount:\"99\",currencyCode:\"USD\"},GB:{amount:\"79\",currencyCode:\"GBP\"},CA:{amount:\"129\",currencyCode:\"CAD\"},EU:{amount:\"89\",currencyCode:\"EUR\"},AU:{amount:\"139\",currencyCode:\"AUD\"}},compareAtPriceByMarket:{US:{amount:\"120\",currencyCode:\"USD\"},GB:{amount:\"95\",currencyCode:\"GBP\"},CA:{amount:\"155\",currencyCode:\"CAD\"},EU:{amount:\"109\",currencyCode:\"EUR\"},AU:{amount:\"169\",currencyCode:\"AUD\"}},weight:0,weightUnit:\"KILOGRAMS\",availableForSale:true,sku:\"sku-untracked-1\",image:{id:\"gid://shopify/ProductImage/77445152801093\",url:\"https://cdn.shopify.com/s/files/1/0967/3896/7877/files/snowboard_purple_hydrogen.png?v=1753365380\",altText:\"Top and bottom view of a snowboard. The top view shows a centred hexagonal logo for Hydrogen that\\n          appears to radiate outwards, as well as some overlapping hexagons at the bottom. The bottom view shows an\\n          abstract angular grid in purples.\",width:3097,height:3908}}]};\nexport const __FramerMetadata__ = {\"exports\":{\"parseShopifyData\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Parse_shopify_data.map","import{create}from\"https://framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js\";const sanitizeQuantity=value=>{if(!Number.isFinite(value))return 1;const rounded=Math.floor(value);return Math.max(1,rounded);};export const useProductSelectionStore=create((set,get)=>({quantitiesByVariantId:{},selectedVariantByProductId:{},getQuantity:variantId=>{const value=get().quantitiesByVariantId[variantId];return typeof value===\"number\"?value:1;},setQuantity:(variantId,quantity)=>{const next=sanitizeQuantity(quantity);set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}}));},increment:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current+step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},decrement:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current-step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},resetQuantity:variantId=>{set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:1}}));},getSelectedVariant:(productId,variants)=>{const selectedVariantId=get().selectedVariantByProductId[productId];if(selectedVariantId&&variants.some(v=>v.id===selectedVariantId)){return selectedVariantId;}// Default to first variant if no selection or invalid selection\n    return variants[0]?.id||\"\";},setSelectedVariant:(productId,variantId)=>{set(state=>({selectedVariantByProductId:{...state.selectedVariantByProductId,[productId]:variantId}}));},clearAll:()=>set({quantitiesByVariantId:{},selectedVariantByProductId:{}})}));\nexport const __FramerMetadata__ = {\"exports\":{\"useProductSelectionStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Product_selection_store.map","import{isBrowserFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";let _cfg=null;export function getShopifyConfig(){const isBrowser=isBrowserFn();if(!isBrowser)return null;if(_cfg)return _cfg;// 1) JSON script\nconst el=document.getElementById(\"frameship-shopify-config\");if(el?.textContent){try{_cfg=JSON.parse(el.textContent);if(_cfg?.shop&&_cfg?.storefrontToken)return _cfg;}catch(error){console.error(\"Error parsing Shopify config:\",error);return null;}}// throw new Error(\"Frameship Shopify config not found on page.\");\nreturn null;}export function getLicenseId(){const config=getShopifyConfig();return config?.licenseId||null;}\nexport const __FramerMetadata__ = {\"exports\":{\"getLicenseId\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getShopifyConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Get_shopify_config.map","import{getShopifyConfig}from\"https://framerusercontent.com/modules/TgekT24FCXsp3m1M9KnX/UiecgZDEjubVKN4lur2X/Get_shopify_config.js\";export async function shopifyClient({query,variables}){try{const config=getShopifyConfig();// Early return if config is null or missing required fields\nif(!config||!config.shop||!config.storefrontToken){return{data:null,errors:[{message:\"Shopify configuration is not available. Make sure the frameship-shopify-config script is present on the page.\"}]};}// Construct the Shopify GraphQL endpoint URL\nconst endpoint=`https://${config.shop}/api/${config.apiVersion}/graphql.json`;// Prepare the request body\nconst requestBody={query,...variables&&{variables}};// Make the fetch request\nconst response=await fetch(endpoint,{method:\"POST\",headers:{\"Content-Type\":\"application/json\",\"X-Shopify-Storefront-Access-Token\":config.storefrontToken},body:JSON.stringify(requestBody)});// Check if the response is ok\nif(!response.ok){return{data:null,errors:[{message:`Shopify API request failed: ${response.status} ${response.statusText}`}]};}// Parse the JSON response\nconst result=await response.json();// Check for GraphQL errors\nif(result.errors&&result.errors.length>0){const errorMessages=result.errors.map(error=>error.message).join(\", \");// throw new Error(`GraphQL errors: ${errorMessages}`);\nreturn{data:null,errors:[{message:`GraphQL errors: ${errorMessages}`}]};}// Return the data if everything is successful\nreturn{data:result.data,errors:[]};}catch(error){return{data:null,errors:[{message:`Unexpected error occurred: ${String(error)}`}]};}}\nexport const __FramerMetadata__ = {\"exports\":{\"shopifyClient\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{shopifyClient}from\"https://framerusercontent.com/modules/c5gtsBimYk7u4sSXwOlt/CM2cTm98pCUipAHQyaQn/Shopify_client.js\";import{LIVE_PRICING_CONFIG}from\"https://framerusercontent.com/modules/rf7AA1DfRPDSrhfmrmpj/dKau7FhYy42WCs2fsPCY/Live_pricing_config.js\";const LIVE_PRICING_QUERY=`#graphql\n  query GetLivePricing($country: CountryCode, $first: Int!, $after: String) \n    @inContext(country: $country) {\n    products(first: $first, after: $after) {\n      edges {\n        node {\n          id\n          variants(first: 100) {\n            edges {\n              node {\n                id\n                price {\n                  amount\n                  currencyCode\n                }\n                compareAtPrice {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n      }\n      pageInfo {\n        hasNextPage\n        endCursor\n      }\n    }\n  }\n`;/**\n * Normalize pricing data from GraphQL response to flat map\n */function normalizePricingData(products){const normalized={};for(const product of products){for(const{node:variant}of product.variants.edges){// Strip GID prefix if present\nconst variantId=variant.id.replace(\"gid://shopify/ProductVariant/\",\"\");normalized[variantId]={price:variant.price,compareAtPrice:variant.compareAtPrice};}}return normalized;}/**\n * Fetch all pages of live pricing data recursively\n */async function fetchAllPagesLivePricing(country,after,accumulatedProducts=[]){const variables={first:LIVE_PRICING_CONFIG.MAX_PRODUCTS_PER_QUERY,after,...country&&{country}};const result=await shopifyClient({query:LIVE_PRICING_QUERY,variables});// Handle errors\nif(result.errors.length>0){return{data:null,errors:result.errors};}if(!result.data||!result.data.products){return{data:null,errors:[{message:\"No products data in response\"}]};}// Accumulate products from this page\nconst products=result.data.products.edges.map(e=>e.node);const allProducts=[...accumulatedProducts,...products];// Check if there are more pages\nif(result.data.products.pageInfo.hasNextPage&&result.data.products.pageInfo.endCursor){// Recursively fetch next page\nreturn fetchAllPagesLivePricing(country,result.data.products.pageInfo.endCursor,allProducts);}// All pages fetched, normalize and return\nconst normalized=normalizePricingData(allProducts);return{data:normalized,errors:[]};}/**\n * Main function to fetch live pricing for all products\n * @param country - Country code for market-specific pricing (e.g., \"US\", \"GB\")\n * @returns Normalized pricing data keyed by variant ID\n */export async function fetchLivePricing(country){try{console.log(`[Live Pricing] Fetching live pricing${country?` for market: ${country}`:\"\"}`);const result=await fetchAllPagesLivePricing(country);if(result.data){const variantCount=Object.keys(result.data).length;console.log(`[Live Pricing] Successfully fetched pricing for ${variantCount} variants`);}return result;}catch(error){console.error(\"[Live Pricing] Error fetching live pricing:\",error);return{data:null,errors:[{message:error instanceof Error?error.message:\"Unknown error fetching live pricing\"}]};}}\nexport const __FramerMetadata__ = {\"exports\":{\"NormalizedLivePricing\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fetchLivePricing\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{LIVE_PRICING_CONFIG}from\"https://framerusercontent.com/modules/rf7AA1DfRPDSrhfmrmpj/dKau7FhYy42WCs2fsPCY/Live_pricing_config.js\";const CACHE_KEY=\"frameship_live_pricing_cache\";/**\n * Get live pricing data from localStorage cache\n */export function getLivePricingFromCache(){try{const cached=localStorage.getItem(CACHE_KEY);if(!cached)return null;const parsed=JSON.parse(cached);return parsed;}catch(error){console.error(\"Error reading live pricing cache:\",error);return null;}}/**\n * Save live pricing data to localStorage cache\n */export function saveLivePricingToCache(data,market){try{const cacheData={data,timestamp:Date.now(),market,defaultCurrency:LIVE_PRICING_CONFIG.DEFAULT_CURRENCY};localStorage.setItem(CACHE_KEY,JSON.stringify(cacheData));}catch(error){console.error(\"Error saving live pricing cache:\",error);}}/**\n * Check if cache is still valid (not expired)\n */export function isCacheValid(cache,ttlMinutes=LIVE_PRICING_CONFIG.CACHE_TTL_MINUTES){if(!cache)return false;const ageMinutes=(Date.now()-cache.timestamp)/1e3/60;return ageMinutes<ttlMinutes;}/**\n * Determine if live pricing should be fetched\n * Fetch if:\n * 1. No cache exists\n * 2. Cache expired (> TTL)\n * 3. Market changed (different country code)\n */export function shouldFetchLivePricing(currentMarket){const cache=getLivePricingFromCache();// No cache exists - need to fetch\nif(!cache){console.log(`[Live Pricing Cache] No cache exists, will fetch for market: ${currentMarket}`);return true;}// Cache expired - need to fetch\nif(!isCacheValid(cache)){console.log(`[Live Pricing Cache] Cache expired (${Math.round((Date.now()-cache.timestamp)/1e3/60)} min old), will fetch for market: ${currentMarket}`);return true;}// Market changed - need to fetch\nif(currentMarket&&cache.market!==currentMarket){console.log(`[Live Pricing Cache] Market changed from ${cache.market} to ${currentMarket}, will fetch`);return true;}// Cache is valid and market hasn't changed\nconsole.log(`[Live Pricing Cache] Cache valid for market ${cache.market}, skipping fetch`);return false;}/**\n * Clear live pricing cache\n */export function clearLivePricingCache(){try{localStorage.removeItem(CACHE_KEY);}catch(error){console.error(\"Error clearing live pricing cache:\",error);}}\nexport const __FramerMetadata__ = {\"exports\":{\"isCacheValid\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clearLivePricingCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getLivePricingFromCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"shouldFetchLivePricing\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LivePricingCacheData\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"saveLivePricingToCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Live_pricing_cache.map","import{create}from\"https://framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js\";import{fetchLivePricing}from\"https://framerusercontent.com/modules/we4CziCpeycopbrILvTY/1hIa8yvOuEL3RoQ1l6t2/Live_pricing_service.js\";import{getLivePricingFromCache,saveLivePricingToCache,shouldFetchLivePricing,clearLivePricingCache}from\"https://framerusercontent.com/modules/CyNT4Zo4FfF9Gv96WuEJ/C3ACb88i82CG2pKDbgwd/Live_pricing_cache.js\";import{LIVE_PRICING_CONFIG}from\"https://framerusercontent.com/modules/rf7AA1DfRPDSrhfmrmpj/dKau7FhYy42WCs2fsPCY/Live_pricing_config.js\";export const useLivePricingStore=create((set,get)=>{// Initialize from cache on store creation\nconst cachedData=getLivePricingFromCache();const initialData=cachedData?.data||null;return{livePricing:initialData,isLoading:false,isFetching:false,error:null,setLivePricing:data=>{set({livePricing:data,error:null});},fetchLivePricingData:async(market,force)=>{// Check if feature is enabled\nif(!LIVE_PRICING_CONFIG.ENABLE_LIVE_PRICING){console.log(\"[Live Pricing] Feature disabled\");return;}// Check if we should fetch\nif(!force&&!shouldFetchLivePricing(market)){console.log(\"[Live Pricing] Using cached data, no fetch needed\");return;}const currentData=get().livePricing;const hasExistingData=currentData!==null;// Set appropriate loading state\nif(hasExistingData){// Background refresh - use isFetching\nset({isFetching:true,error:null});}else{// Initial load - use isLoading\nset({isLoading:true,error:null});}try{console.log(`[Live Pricing] Fetching live pricing for market: ${market||\"default\"}`);const result=await fetchLivePricing(market);if(result.errors.length>0){const errorMsg=result.errors.map(e=>e.message).join(\", \");console.error(\"[Live Pricing] Fetch errors:\",errorMsg);set({error:errorMsg,isLoading:false,isFetching:false});return;}if(result.data){// Update store\nset({livePricing:result.data,error:null,isLoading:false,isFetching:false});// Save to cache\nsaveLivePricingToCache(result.data,market||\"default\");console.log(\"[Live Pricing] Successfully updated live pricing\");}else{set({error:\"No data received\",isLoading:false,isFetching:false});}}catch(error){const errorMsg=error instanceof Error?error.message:\"Unknown error\";console.error(\"[Live Pricing] Unexpected error:\",errorMsg);set({error:errorMsg,isLoading:false,isFetching:false});}},getLivePrice:variantId=>{const{livePricing}=get();if(!livePricing)return null;// Strip GID prefix if present in the variant ID\nconst cleanVariantId=variantId.replace(\"gid://shopify/ProductVariant/\",\"\");return livePricing[cleanVariantId]||null;},clearLivePricing:()=>{clearLivePricingCache();set({livePricing:null,error:null,isLoading:false,isFetching:false});console.log(\"[Live Pricing] Cleared live pricing data\");}};});\nexport const __FramerMetadata__ = {\"exports\":{\"useLivePricingStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{ControlType}from\"framer\";import{CURRENCY_SYMBOLS}from\"https://framerusercontent.com/modules/gNrx5shePoNxbUKTvliC/HLQJlFFZMsPSLpGIiDtr/Currency_symbols.js\";export function formatCurrency({amount,currencyCode,options}){amount=amount||0;const showDecimals=options.decimals==\"auto\"?amount%1!==0:options.decimals==\"always\";const decimals=showDecimals?2:0;let formattedAmount=\"\";if(options.formatted&&typeof Intl!==\"undefined\"){const locale=options.locale||(typeof navigator!==\"undefined\"?navigator.language:\"en-us\");const formatter=new Intl.NumberFormat(locale,{minimumFractionDigits:decimals,maximumFractionDigits:decimals});formattedAmount=formatter.format(amount);}else{formattedAmount=amount.toFixed(decimals);}if(!currencyCode||currencyCode===\"XXX\"){return formattedAmount;}const symbol=CURRENCY_SYMBOLS[currencyCode];if(options.style===\"code\"){return options.location===\"before\"?`${currencyCode} ${formattedAmount}`:`${formattedAmount} ${currencyCode}`;}else{return`${symbol}${formattedAmount}`;}}export const CurrencyFormatControls={currencyFormat:{type:ControlType.Object,title:\"Format\",controls:{style:{type:ControlType.Enum,defaultValue:\"symbol\",options:[\"symbol\",\"code\"],optionTitles:[\"Symbol ($)\",\"Code (USD)\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},location:{type:ControlType.Enum,defaultValue:\"after\",options:[\"before\",\"after\"],optionTitles:[\"Before\",\"After\"],displaySegmentedControl:true,hidden:props=>props.style!==\"code\"},decimals:{type:ControlType.Enum,defaultValue:\"auto\",options:[\"auto\",\"always\",\"never\"],optionTitles:[\"Auto\",\"Show (10.00)\",\"Hide (10)\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},formatted:{type:ControlType.Boolean,defaultValue:true},locale:{type:ControlType.String,defaultValue:\"\",placeholder:`Auto (${typeof navigator!==\"undefined\"?navigator.language:\"\"})`,description:\"Formatting examples:\\n*1,000* | *1.000* | *1 000*\",hidden:props=>!props.formatted}},hidden:props=>props.type!==\"subtotal\"}};\nexport const __FramerMetadata__ = {\"exports\":{\"formatCurrency\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CurrencyFormatControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CurrencyFormatControlsProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{ControlType}from\"framer\";export const SUPPORT_CONTROL={needHelp:{type:ControlType.Object,title:\"Need help?\",buttonTitle:\"Get Support\",icon:\"interaction\",controls:{info:{type:ControlType.Enum,defaultValue:\"info\",options:[\"info\"],optionTitles:[\"Support 🛟\"],displaySegmentedControl:true,title:\"Get Support\",description:\"We're here to help! The best place to get support is to visit our documentation to find your answers. We're also available on live chat.\\n\\n[Visit Frameship docs](https://insertframe.io/docs/frameship)\"}}}};export const SHOPIFY_DATA_DESCRIPTION=\"Connect this to a *Shopify Data* variable from CMS.\";export const VARIANT_IMAGE_MAPPING_DESCRIPTION=\"Connect this to a *Variant Image Mapping* variable from CMS.\";export const VARIANT_OPTIONS_DESCRIPTION=\"Connect this to a *Variant Options* variable from CMS.\";\nexport const __FramerMetadata__ = {\"exports\":{\"SUPPORT_CONTROL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SHOPIFY_DATA_DESCRIPTION\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VARIANT_IMAGE_MAPPING_DESCRIPTION\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VARIANT_OPTIONS_DESCRIPTION\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Shared_props.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{parseShopifyData}from\"https://framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/Uam6NjjQgBdbM2uxwvNZ/Parse_shopify_data.js\";import{useProductSelectionStore}from\"https://framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/yNIABzdTP3fu4mWtyAdp/Product_selection_store.js\";import{useLivePricingStore}from\"https://framerusercontent.com/modules/3C9wF5reOoO0EZmRXDu0/U0F0IYbzpYj27k6whgBv/Live_pricing_store.js\";import{SHARED_COLORS}from\"https://framerusercontent.com/modules/Nrs4jz2AAEOfEZRQEQij/7Ao2SBt1Ssf683HHXgzl/Shared_styles.js\";import{renderWithTag,TagPropertyControls}from\"https://framerusercontent.com/modules/cmJdj1YCmFSsS6n95OKk/9t9XeEHurZ6w5fbXeCsJ/Shared_tag_props.js\";import{CurrencyFormatControls,formatCurrency}from\"https://framerusercontent.com/modules/mHaK3bedwyJwyNxfaowX/r1Q3D8lLCMVdN6bFU9bz/Shared_currency_props.js\";import{TextDecorationControls}from\"https://framerusercontent.com/modules/br9bXgadWgfJaD0swwuT/jUc9YNpAtX8KUoSpiBD2/Shared_text_decoration_props.js\";import LoadingSkeleton from\"https://framerusercontent.com/modules/N0h2Mv73o8xtz2My1yiB/RR9fj2DVzBXn0Wwu7ijL/Loading_skeleton.js\";import{SHOPIFY_DATA_DESCRIPTION,SUPPORT_CONTROL}from\"https://framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/tl22i1lNtmmpBOq8EDe4/Shared_props.js\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function VariantInfoLabel(props){const shopifyData=parseShopifyData(props.shopifyData);const{getSelectedVariant}=useProductSelectionStore();const{getLivePrice,isLoading,isFetching}=useLivePricingStore();const selectedVariantId=getSelectedVariant(shopifyData.id,shopifyData.variants);const selectedVariant=shopifyData.variants.find(variant=>variant.id===selectedVariantId);const renderVariantInfo=()=>{if(!selectedVariant)return null;switch(props.type){case\"price\":{// Priority: live > cms default\nconst livePrice=getLivePrice(selectedVariant.id);let priceData=selectedVariant.price;// Default fallback\n// Override with live pricing if available\nif(livePrice?.price){priceData=livePrice.price;}return formatCurrency({amount:Number(priceData.amount),currencyCode:priceData.currencyCode,options:props.currencyFormat});}case\"compareAtPrice\":{// Priority: live > cms market > cms default\nconst livePrice=getLivePrice(selectedVariant.id);let compareAtPriceData=selectedVariant.compareAtPrice;// Default fallback\n// Override with live pricing if available\nif(livePrice?.compareAtPrice){compareAtPriceData=livePrice.compareAtPrice;}if(!compareAtPriceData)return\"\";return formatCurrency({amount:Number(compareAtPriceData.amount),currencyCode:compareAtPriceData.currencyCode,options:props.currencyFormat});}case\"variantName\":return selectedVariant.title===\"Default Title\"?\"\":selectedVariant.title;case\"sku\":return selectedVariant.sku;case\"barcode\":return selectedVariant.barcode;}};// Show loading skeleton for price/compareAtPrice during initial load\nconst isPriceType=props.type===\"price\"||props.type===\"compareAtPrice\";if(isLoading&&isPriceType){return /*#__PURE__*/_jsx(LoadingSkeleton,{style:{width:\"60px\",height:\"20px\"}});}const content=renderVariantInfo();const style={...props.font,color:props.color,textDecoration:props.decoration===\"none\"?\"none\":props.decoration};// Hide component when empty and whenZero is \"hide\"\nconst isEmptyValue=!content||content===\"\";if(props.whenZero===\"hide\"&&isEmptyValue){return null;}// Show specified text if whenZero is \"text\" and empty\nif(props.whenZero===\"text\"&&isEmptyValue){return /*#__PURE__*/_jsx(\"div\",{style:{opacity:isFetching&&isPriceType?.6:1,transition:\"opacity 0.3s ease\"},children:renderWithTag(props.tag,props.text,style)});}// Show empty content if whenZero is \"show\"\nif(isEmptyValue){return /*#__PURE__*/_jsx(\"div\",{style:{opacity:isFetching&&isPriceType?.6:1,transition:\"opacity 0.3s ease\"},children:renderWithTag(props.tag,\"0\",style)});}// Wrap content in fade transition container for price types\nreturn /*#__PURE__*/_jsx(\"div\",{style:{opacity:isFetching&&isPriceType?.6:1,transition:\"opacity 0.3s ease\"},children:renderWithTag(props.tag,content,style)});}// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(VariantInfoLabel,{shopifyData:{type:ControlType.String,description:SHOPIFY_DATA_DESCRIPTION},type:{type:ControlType.Enum,options:[\"price\",\"compareAtPrice\",\"variantName\",\"sku\",\"barcode\"],optionTitles:[\"Price\",\"Compare At Price\",\"Variant Name\",\"SKU\",\"Barcode\"],defaultValue:\"price\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:SHARED_COLORS.foreground},whenZero:{type:ControlType.Enum,title:\"When Zero\",options:[\"show\",\"hide\",\"text\"],optionTitles:[\"Show\",\"Hide\",\"Text\"],defaultValue:\"hide\",displaySegmentedControl:true},text:{type:ControlType.String,title:\"Text\",defaultValue:\"Free\",hidden:props=>props.whenZero!==\"text\"},currencyFormat:{...CurrencyFormatControls.currencyFormat,hidden:props=>props.type!==\"price\"&&props.type!==\"compareAtPrice\"},...TagPropertyControls,...TextDecorationControls,...SUPPORT_CONTROL});VariantInfoLabel.displayName=\"Variant Info Label\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VariantInfoLabel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{create}from\"https://framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js\";const sanitizeQuantity=value=>{if(!Number.isFinite(value))return 1;const rounded=Math.floor(value);return Math.max(1,rounded);};export const useProductSelectionStore=create((set,get)=>({quantitiesByVariantId:{},selectedVariantByProductId:{},selectedSellingPlanByProductId:{},sellingPlanSelectionRequirementByProductId:{},getQuantity:variantId=>{const value=get().quantitiesByVariantId[variantId];return typeof value===\"number\"?value:1;},setQuantity:(variantId,quantity)=>{const next=sanitizeQuantity(quantity);set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}}));},increment:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current+step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},decrement:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current-step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},resetQuantity:variantId=>{set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:1}}));},getSelectedVariant:(productId,variants)=>{const selectedVariantId=get().selectedVariantByProductId[productId];if(selectedVariantId&&variants.some(v=>v.id===selectedVariantId)){return selectedVariantId;}// Default to first variant if no selection or invalid selection\n    return variants[0]?.id||\"\";},setSelectedVariant:(productId,variantId)=>{set(state=>({selectedVariantByProductId:{...state.selectedVariantByProductId,[productId]:variantId}}));},getSelectedSellingPlan:productId=>{return get().selectedSellingPlanByProductId[productId]??null;},hasSellingPlanSelection:productId=>{return Object.prototype.hasOwnProperty.call(get().selectedSellingPlanByProductId,productId);},setSelectedSellingPlan:(productId,planId)=>{set(state=>({selectedSellingPlanByProductId:{...state.selectedSellingPlanByProductId,[productId]:planId}}));},setSellingPlanSelectionRequirement:(productId,requirement)=>{set(state=>({sellingPlanSelectionRequirementByProductId:{...state.sellingPlanSelectionRequirementByProductId,[productId]:requirement}}));},getSellingPlanSelectionRequirement:productId=>{return get().sellingPlanSelectionRequirementByProductId[productId]??\"none\";},clearAll:()=>set({quantitiesByVariantId:{},selectedVariantByProductId:{},selectedSellingPlanByProductId:{},sellingPlanSelectionRequirementByProductId:{}})}));\nexport const __FramerMetadata__ = {\"exports\":{\"SellingPlanSelectionRequirement\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useProductSelectionStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Product_selection_store.map","import{SHARED_IMAGES}from\"https://framerusercontent.com/modules/KV16nQZJzK2PakIJS3ds/mMwI0Z7Bn85AP14ADxu9/Shared_images.js\";export const parseShopifyData=shopifyData=>{const parsedShopifyData=shopifyData?JSON.parse(shopifyData):EXAMPLE_DATA;return parsedShopifyData;};const EXAMPLE_DATA={id:\"15176683880773\",title:\"Green Polo\",handle:\"green-polo\",variants:[{id:\"55218501157189\",title:\"Variant Title\",price:{amount:\"99\",currencyCode:\"USD\"},priceByMarket:{US:{amount:\"99\",currencyCode:\"USD\"},GB:{amount:\"79\",currencyCode:\"GBP\"},CA:{amount:\"129\",currencyCode:\"CAD\"},EU:{amount:\"89\",currencyCode:\"EUR\"},AU:{amount:\"139\",currencyCode:\"AUD\"}},compareAtPriceByMarket:{US:{amount:\"120\",currencyCode:\"USD\"},GB:{amount:\"95\",currencyCode:\"GBP\"},CA:{amount:\"155\",currencyCode:\"CAD\"},EU:{amount:\"109\",currencyCode:\"EUR\"},AU:{amount:\"169\",currencyCode:\"AUD\"}},weight:0,weightUnit:\"KILOGRAMS\",availableForSale:true,sku:\"sku-untracked-1\",image:{id:\"gid://shopify/ProductImage/77445152801093\",url:SHARED_IMAGES.defaultProductImage,altText:\"Product image\",width:3097,height:3908}}]};\nexport const __FramerMetadata__ = {\"exports\":{\"parseShopifyData\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{create}from\"https://framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js\";export const useCustomProductFieldStore=create((set,get)=>({fieldsByProductId:{},registerField:(productId,fieldId,field)=>{set(state=>({fieldsByProductId:{...state.fieldsByProductId,[productId]:{...state.fieldsByProductId[productId]||{},[fieldId]:{key:field.key,label:field.label,required:field.required,value:state.fieldsByProductId[productId]?.[fieldId]?.value??field.value??\"\"}}}}));},unregisterField:(productId,fieldId)=>{set(state=>{const productFields=state.fieldsByProductId[productId];if(!productFields?.[fieldId]){return state;}const nextProductFields={...productFields};delete nextProductFields[fieldId];if(Object.keys(nextProductFields).length===0){const nextFieldsByProductId={...state.fieldsByProductId};delete nextFieldsByProductId[productId];return{fieldsByProductId:nextFieldsByProductId};}return{fieldsByProductId:{...state.fieldsByProductId,[productId]:nextProductFields}};});},setFieldValue:(productId,fieldId,value)=>{set(state=>{const currentField=state.fieldsByProductId[productId]?.[fieldId];if(!currentField){return state;}return{fieldsByProductId:{...state.fieldsByProductId,[productId]:{...state.fieldsByProductId[productId],[fieldId]:{...currentField,value}}}};});},getFieldValue:(productId,fieldId)=>{return get().fieldsByProductId[productId]?.[fieldId]?.value??\"\";},getCartAttributes:productId=>{const productFields=Object.values(get().fieldsByProductId[productId]||{});return productFields.map(field=>({key:field.key.trim(),value:field.value.trim()})).filter(field=>field.key&&field.value);},hasInvalidRequiredFields:productId=>{const productFields=Object.values(get().fieldsByProductId[productId]||{});return productFields.some(field=>field.required&&field.value.trim().length===0);}}));\nexport const __FramerMetadata__ = {\"exports\":{\"useCustomProductFieldStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CartLineAttribute\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Custom_product_field_store.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useCart}from\"https://framerusercontent.com/modules/qNwuWLbXbcYKugmCfVBu/dinNTfa1kBLfc6BMWWww/Use_cart.js\";import{useProductSelectionStore}from\"https://framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/MEUHNK3OpmhBSPhZhnEx/Product_selection_store.js\";import{parseShopifyData}from\"https://framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/rkjqZclSkQOy0QCpfAmc/Parse_shopify_data.js\";import{createVariantGid,createProductGid}from\"https://framerusercontent.com/modules/tzN8qHzrVYThnxhKObeP/7xRaFLeVY9UkDbqtIhhH/Shopify_utils.js\";import{QueryClientWrapper}from\"https://framerusercontent.com/modules/zParpRuqXNNcrHNZHUCA/c79VKYmrBl02dZ0c2Deg/Query_client_wrapper.js\";import{OPEN_CART_EVENT}from\"https://framerusercontent.com/modules/ULfRcpFPm40RheG8xy3S/Pfxgjc633U68bx2ecZz0/Shared_config.js\";import PresetButton from\"https://framerusercontent.com/modules/a6C1Qq7kxeKULOsvIpdv/ecI5o772u1j7pOp69yfN/Preset_button.js\";import CustomButtonWrapper from\"https://framerusercontent.com/modules/KkMHEXBTzNGLCAGsRLrm/C2sk9cjUnc3YE4Ebu9Zq/Custom_button_wrapper.js\";import CartSvg from\"https://framerusercontent.com/modules/qGSs7SULtHSo8Msf1WUy/vraFd5f3jmKFoHJ9xWa7/Cart.js\";import{PresetPrimaryButtonStyleControls,PresetButtonContentControls,CustomButtonControls,overrideControlDefaults,useInventoryDisabled,OutOfStockStyleControls}from\"https://framerusercontent.com/modules/jSzgfFOp8vV7JiKIMM1a/e63BNADx6M6EECzgf5mB/Shared_button_props.js\";import{SHOPIFY_DATA_DESCRIPTION,SUPPORT_CONTROL}from\"https://framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/mIDGZDuYkLeEfvCEqoly/Shared_props.js\";import{isOnFramerCanvasFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";import{useCurrentLocation}from\"https://framer.com/m/UseCurrentLocation-oZyA.js@1l8XdClJld0xwptzsD73\";import{useCustomProductFieldStore}from\"https://framerusercontent.com/modules/CEFL18JTsoVN7HzqbGVy/KndVJRNlxYcbiwXYnvWR/Custom_product_field_store.js\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\nfunction AddToCartButtonContent(props){const isOnFramerCanvas=isOnFramerCanvasFn();const{addToCart,isLoading:isCartLoading}=useCart();const shopifyData=parseShopifyData(props.shopifyData);const selectedVariantId=useProductSelectionStore(state=>state.getSelectedVariant(shopifyData.id,shopifyData.variants));const selectedSellingPlan=useProductSelectionStore(state=>state.getSelectedSellingPlan(shopifyData.id));const hasSellingPlanSelection=useProductSelectionStore(state=>state.hasSellingPlanSelection(shopifyData.id));const selectorSelectionRequirement=useProductSelectionStore(state=>state.getSellingPlanSelectionRequirement(shopifyData.id));const hasInvalidRequiredFields=useCustomProductFieldStore(state=>state.hasInvalidRequiredFields(shopifyData.id));const[,setCurrentLocation]=useCurrentLocation();const{isDisabled}=useInventoryDisabled(shopifyData.id,selectedVariantId,props.disableWhenOutOfStock);const isOutOfStockDisabled=isDisabled;const hasSellingPlans=(shopifyData.sellingPlanGroups||[]).some(group=>(group.sellingPlans||[]).length>0);const selectionRequirement=shopifyData.requiresSellingPlan===true&&hasSellingPlans?\"sellingPlan\":selectorSelectionRequirement;const isMissingRequiredSellingPlan=selectionRequirement===\"sellingPlan\"?!hasSellingPlanSelection||selectedSellingPlan===null:selectionRequirement===\"purchaseOption\"&&!hasSellingPlanSelection;const handleAddToCart=async()=>{if(isOutOfStockDisabled||isCartLoading||hasInvalidRequiredFields||isMissingRequiredSellingPlan)return;const finalVariantIdString=createVariantGid(selectedVariantId);const qty=useProductSelectionStore.getState().getQuantity(selectedVariantId);const attributes=useCustomProductFieldStore.getState().getCartAttributes(shopifyData.id);// Build optimistic variant data for instant UI update\nconst selectedVariant=shopifyData.variants.find(v=>createVariantGid(v.id)===finalVariantIdString);const variantData=selectedVariant?{title:selectedVariant.title||\"\",productTitle:shopifyData.title||\"\",productHandle:shopifyData.handle||\"\",productId:createProductGid(shopifyData.id),image:{url:selectedVariant.image?.url||\"\",altText:selectedVariant.image?.altText||\"\"},price:selectedVariant.price||{amount:\"0\",currencyCode:\"USD\"}}:undefined;try{// Using the sync version - pass sellingPlanId if subscription selected\naddToCart(finalVariantIdString,qty,selectedSellingPlan??undefined,variantData,attributes);if(props.openCartOnAddToCart===\"cartOverlay\"){// delau\nsetTimeout(()=>{document.dispatchEvent(new Event(OPEN_CART_EVENT));},75);}else if(props.openCartOnAddToCart===\"cartPage\"){setCurrentLocation(props.cartPage);}}catch(error){console.error(\"Error adding to cart:\",error);}};// Determine if button should be disabled\nconst isButtonDisabled=isOutOfStockDisabled||hasInvalidRequiredFields||isMissingRequiredSellingPlan;const finalDisabled=isOnFramerCanvas?props.previewType===\"disabled\":isButtonDisabled;// Update button text if cart is loading\nconst displayText=props.text;// ---------------- BUTTON STYLES ---------------- //\nconst buttonText=isOutOfStockDisabled?props.outOfStockStyle.text:displayText;const buttonOpacity=isOutOfStockDisabled?props.outOfStockStyle.opacity:undefined;const disabledStyle={alignItems:props.presetButtonStyle.alignItems,justifyContent:props.presetButtonStyle.justifyContent,gap:props.presetButtonStyle.gap,padding:props.presetButtonStyle.padding,border:props.outOfStockStyle.border,borderRadius:props.presetButtonStyle.borderRadius,textColor:props.outOfStockStyle.textColor,backgroundColor:props.outOfStockStyle.backgroundColor,shadow:props.outOfStockStyle.shadow,tapScale:props.presetButtonStyle.tapScale,font:props.presetButtonStyle.font};if(props.buttonType===\"custom\"){return /*#__PURE__*/_jsx(CustomButtonWrapper,{onClick:handleAddToCart,customButtonSize:props.customButtonSize,disabled:finalDisabled,disabledButton:props.customButtonDisabled?.[0],children:props.customButton});}return /*#__PURE__*/_jsx(PresetButton,{onClick:handleAddToCart,leftIcon:props.showDefaultIcon?/*#__PURE__*/_jsx(CartSvg,{}):props.leftIcon?.[0],rightIcon:props.rightIcon?.[0],text:buttonText,font:props.presetButtonStyle.font,presetButtonStyle:props.presetButtonStyle,disabledStyle:disabledStyle,disabled:finalDisabled,style:{opacity:buttonOpacity}});}// ------------------------------------------------------------ //\n// EXPORT WITH QUERY CLIENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 40\n * @framerDisableUnlink\n */export default function AddToCartButton(props){return /*#__PURE__*/_jsx(QueryClientWrapper,{children:/*#__PURE__*/_jsx(AddToCartButtonContent,{...props})});}// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(AddToCartButton,{shopifyData:{type:ControlType.String,description:SHOPIFY_DATA_DESCRIPTION},openCartOnAddToCart:{type:ControlType.Enum,title:\"Open Cart\",options:[\"cartOverlay\",\"cartPage\",\"none\"],optionTitles:[\"Cart Overlay\",\"Cart Page\",\"None\"],defaultValue:\"cartOverlay\",description:\"Action to take when adding to cart.\"},cartPage:{type:ControlType.Link,title:\"Cart Page\",defaultValue:\"/cart\",hidden:props=>props.openCartOnAddToCart!==\"cartPage\"},disableWhenOutOfStock:{type:ControlType.Boolean,title:\"Disable Out-of-Stock\",defaultValue:true,description:\"Disable if selected variant is out-of-stock\"},...OutOfStockStyleControls,...CustomButtonControls,...overrideControlDefaults(PresetPrimaryButtonStyleControls,{\"presetButtonStyle.tapScale\":.995}),...overrideControlDefaults(PresetButtonContentControls,{text:\"Add to Cart\",\"showDefaultIcon.hidden\":props=>props.buttonType===\"custom\"}),previewType:{type:ControlType.Enum,title:\"Preview\",options:[\"default\",\"disabled\"],optionTitles:[\"Default\",\"Out of Stock\"],defaultValue:\"default\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},...SUPPORT_CONTROL});AddToCartButton.displayName=\"Add To Cart Button\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AddToCartButton\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"40\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"400\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","export const DEFAULT_PRODUCT_IMAGE=\"https://framerusercontent.com/images/oqyYSLXhERdfkDY5XMVyprSYO0.webp\";export const DEFAULT_PRODUCT_IMAGE_2=\"https://framerusercontent.com/images/ub17BCl84mP9KkiTTOme1UDyvk.webp\";export const DEFAULT_PRODUCT_IMAGE_3=\"https://framerusercontent.com/images/ORfm700yP1zckvftzPEQOe006k.webp\";export function extractImageNumbersForVariant(mappingString,variantId){if(!mappingString||!variantId)return[];const result=[];const regex=/\\[img (\\d+) ~ (\\d+)\\]/g;let match;while((match=regex.exec(mappingString))!==null){const imageNum=match[1];const mappedVariantId=match[2];if(String(mappedVariantId)===String(variantId)){result.push(imageNum);}}return result;}export function getVariantIdForImageNumber(mappingString,imageNumber){if(!mappingString||!imageNumber)return null;const regex=/\\[img (\\d+) ~ (\\d+)\\]/g;let match;while((match=regex.exec(mappingString))!==null){const imageNum=Number(match[1]);const variantId=match[2];if(imageNum===imageNumber)return variantId;}return null;}export function getObjectFit(objectFit){if(objectFit===\"fill\")return\"cover\";if(objectFit===\"fit\")return\"contain\";if(objectFit===\"stretch\")return\"fill\";return\"cover\";}\nexport const __FramerMetadata__ = {\"exports\":{\"getVariantIdForImageNumber\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_PRODUCT_IMAGE_3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_PRODUCT_IMAGE_2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getObjectFit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_PRODUCT_IMAGE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"extractImageNumbersForVariant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Helpers.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{DEFAULT_PRODUCT_IMAGE,DEFAULT_PRODUCT_IMAGE_2,DEFAULT_PRODUCT_IMAGE_3,getObjectFit}from\"https://framerusercontent.com/modules/Yka9BTwP6pnUEgruT9LS/Jc9IxeCuGijc2VjPdP2l/Helpers.js\";export default function GalleryEmptyCanvasState(props){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8,height:\"100%\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",overflow:\"hidden\",height:\"100%\"},children:/*#__PURE__*/_jsx(\"img\",{src:DEFAULT_PRODUCT_IMAGE,alt:\"Default product image\",style:{width:\"100%\",height:\"100%\",display:\"block\",objectFit:getObjectFit(props.imageFit),objectPosition:props.imageFit===\"fill\"?`${props.focalPoint.x}% ${props.focalPoint.y}%`:undefined}})}),props.showSwatches&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",gap:6},children:[1,2,3].map(i=>/*#__PURE__*/_jsx(\"img\",{src:i===1?DEFAULT_PRODUCT_IMAGE:i===2?DEFAULT_PRODUCT_IMAGE_2:DEFAULT_PRODUCT_IMAGE_3,alt:`Default swatch ${i}`,style:{width:64,height:64,objectFit:\"cover\",borderRadius:6,border:\"2px solid transparent\",cursor:\"pointer\"}},i))})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GalleryEmptyCanvasState\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./State_empty_canvas.map","export const parseShopifyData=shopifyData=>{const parsedShopifyData=shopifyData?JSON.parse(shopifyData):EXAMPLE_DATA;return parsedShopifyData;};const EXAMPLE_DATA={id:\"15176683880773\",variants:[{id:\"55218501157189\",title:\"Variant Title\",price:{amount:\"99\",currencyCode:\"USD\"},priceByMarket:{US:{amount:\"99\",currencyCode:\"USD\"},GB:{amount:\"79\",currencyCode:\"GBP\"},CA:{amount:\"129\",currencyCode:\"CAD\"},EU:{amount:\"89\",currencyCode:\"EUR\"},AU:{amount:\"139\",currencyCode:\"AUD\"}},compareAtPriceByMarket:{US:{amount:\"120\",currencyCode:\"USD\"},GB:{amount:\"95\",currencyCode:\"GBP\"},CA:{amount:\"155\",currencyCode:\"CAD\"},EU:{amount:\"109\",currencyCode:\"EUR\"},AU:{amount:\"169\",currencyCode:\"AUD\"}},weight:0,weightUnit:\"KILOGRAMS\",availableForSale:true,sku:\"sku-untracked-1\",image:{id:\"gid://shopify/ProductImage/77445152801093\",url:\"https://cdn.shopify.com/s/files/1/0967/3896/7877/files/snowboard_purple_hydrogen.png?v=1753365380\",altText:\"Top and bottom view of a snowboard. The top view shows a centred hexagonal logo for Hydrogen that\\n          appears to radiate outwards, as well as some overlapping hexagons at the bottom. The bottom view shows an\\n          abstract angular grid in purples.\",width:3097,height:3908}}]};\nexport const __FramerMetadata__ = {\"exports\":{\"parseShopifyData\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Parse_shopify_data.map","import{create}from\"https://framerusercontent.com/modules/ieMSnIJVCiFKJmsg1OmM/KWFJj6n258MVreTmJoNk/Zustand.js\";const sanitizeQuantity=value=>{if(!Number.isFinite(value))return 1;const rounded=Math.floor(value);return Math.max(1,rounded);};export const useProductSelectionStore=create((set,get)=>({quantitiesByVariantId:{},selectedVariantByProductId:{},getQuantity:variantId=>{const value=get().quantitiesByVariantId[variantId];return typeof value===\"number\"?value:1;},setQuantity:(variantId,quantity)=>{const next=sanitizeQuantity(quantity);set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}}));},increment:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current+step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},decrement:(variantId,step=1)=>{set(state=>{const current=state.quantitiesByVariantId[variantId]??1;const next=sanitizeQuantity(current-step);return{quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:next}};});},resetQuantity:variantId=>{set(state=>({quantitiesByVariantId:{...state.quantitiesByVariantId,[variantId]:1}}));},getSelectedVariant:(productId,variants)=>{const selectedVariantId=get().selectedVariantByProductId[productId];if(selectedVariantId&&variants.some(v=>v.id===selectedVariantId)){return selectedVariantId;}// Default to first variant if no selection or invalid selection\n    return variants[0]?.id||\"\";},setSelectedVariant:(productId,variantId)=>{set(state=>({selectedVariantByProductId:{...state.selectedVariantByProductId,[productId]:variantId}}));},clearAll:()=>set({quantitiesByVariantId:{},selectedVariantByProductId:{}})}));\nexport const __FramerMetadata__ = {\"exports\":{\"useProductSelectionStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Product_selection_store.map","import{useEffect,useMemo,useState}from\"react\";import{parseShopifyData}from\"https://framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/rIQkvmwRwXuf9UdI67ZU/Parse_shopify_data.js\";import{useProductSelectionStore}from\"https://framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/7lKMJPqBiw0YZrxpJACh/Product_selection_store.js\";import{isBrowserFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";import{extractImageNumbersForVariant,getVariantIdForImageNumber}from\"https://framerusercontent.com/modules/Yka9BTwP6pnUEgruT9LS/Jc9IxeCuGijc2VjPdP2l/Helpers.js\";/**\n * Hook to parse Shopify data and extract product information\n */export function useShopifyProductData(shopifyData){const data=parseShopifyData(shopifyData);const productId=data?.id||\"\";const variants=data?.variants||[];return{data,productId,variants};}/**\n * Hook to compute images array from component props\n */export function useGalleryImages(props){const images=useMemo(()=>{const arr=[];for(let i=1;i<=props.numberOfImages;i++){const imageProp=props[`image${i}`];if(imageProp?.src){arr.push(imageProp.src);}}return arr;},[props]);return images;}/**\n * Hook to get the currently selected variant ID\n */export function useSelectedVariant(productId,variants){const selectedVariantId=useProductSelectionStore(state=>state.getSelectedVariant(productId,variants));return selectedVariantId;}/**\n * Hook to handle variant-image mapping logic\n */export function useVariantImageMapping(variantImageMapping,selectedVariantId,images){// Get initial image index based on variant from Zustand storage\nconst getInitialImageIndex=()=>{if(!variantImageMapping||!selectedVariantId){return 0;// Default to first image if no variant selected\n}const nums=extractImageNumbersForVariant(variantImageMapping,selectedVariantId);if(nums[0]){const idx=Number(nums[0])-1;if(idx>=0&&idx<images.length){return idx;}}// If variant not found in mapping, default to first image\nreturn 0;};// Compute which image indices belong to the currently selected variant\nconst variantImageIndices=useMemo(()=>{if(!variantImageMapping||!selectedVariantId){return images.map((_,i)=>i);}const nums=extractImageNumbersForVariant(variantImageMapping,selectedVariantId);const idxs=nums.map(n=>Number(n)-1).filter(i=>Number.isFinite(i)&&i>=0&&i<images.length);return idxs.length>0?idxs:images.map((_,i)=>i);},[variantImageMapping,selectedVariantId,images,images.length]);return{getInitialImageIndex,variantImageIndices};}/**\n * Hook to handle global variant image sync events\n */export function useVariantImageSync(productId,images,setCurrentImageIndex){const isBrowser=isBrowserFn();useEffect(()=>{if(!isBrowser)return;function handleVariantImageMatch(e){if(!e?.detail?.imageNumber)return;if(e.detail?.shopifyProductID!==`gid://shopify/Product/${productId}`){return;}const imgNum=Number(e.detail.imageNumber);if(!Number.isFinite(imgNum))return;const idx=imgNum-1;if(idx>=0&&idx<images.length)setCurrentImageIndex(idx);}document.addEventListener(\"frameship_variant_image_selected\",handleVariantImageMatch);return()=>{document.removeEventListener(\"frameship_variant_image_selected\",handleVariantImageMatch);};},[productId,images.length,setCurrentImageIndex,isBrowser]);}/**\n * Hook to manage gallery state and auto-sync effects\n */export function useGalleryState(variantImageMapping,selectedVariantId,images,getInitialImageIndex,productId){const[currentImageIndex,setCurrentImageIndex]=useState(getInitialImageIndex);// Auto-sync to first mapped image when selection changes (initial mount and changes)\nuseEffect(()=>{if(!variantImageMapping||!selectedVariantId)return;const nums=extractImageNumbersForVariant(variantImageMapping,selectedVariantId);if(nums[0]){const idx=Number(nums[0])-1;if(idx>=0&&idx<images.length)setCurrentImageIndex(idx);}},[variantImageMapping,selectedVariantId,images.length]);// Set up global sync listener\nuseVariantImageSync(productId,images,setCurrentImageIndex);return{currentImageIndex,setCurrentImageIndex};}/**\n * Hook to handle variant selection when clicking swatches\n */export function useSwatchClick(variantImageMapping,variants,fullIdx){const handleSwatchClick=()=>{if(!variantImageMapping)return;const variantId=getVariantIdForImageNumber(variantImageMapping,fullIdx+1);if(!variantId)return;const variant=variants.find(v=>String(v.id)===String(variantId));if(!variant)return;// Note: Variant selection logic would go here if needed\n// Currently just prevents the click if no variant found\n};return handleSwatchClick;}\nexport const __FramerMetadata__ = {\"exports\":{\"useVariantImageSync\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useGalleryImages\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSwatchClick\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useShopifyProductData\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useSelectedVariant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useVariantImageMapping\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useGalleryState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{motion}from\"framer-motion\";import{getObjectFit}from\"https://framerusercontent.com/modules/Yka9BTwP6pnUEgruT9LS/Jc9IxeCuGijc2VjPdP2l/Helpers.js\";import{useSwatchClick}from\"https://framerusercontent.com/modules/3Um7Da0PioNPYdqeX5Ez/zrXbPheMmqE6W2yULZdI/Hooks.js\";// ------------------------------------------------------------ //\n// SUB-COMPONENTS\n// ------------------------------------------------------------ //\nexport default function Swatch(props){const{swatchConfig,isSelected}=props;const handleSwatchClick=useSwatchClick(props.variantImageMapping,props.variants,props.imageIndex);const defaultBorderColor=getBorderColor(swatchConfig.border.default);const selectedBorderColor=getBorderColor(swatchConfig.border.selected);const borderStyle=swatchConfig.border.default.borderStyle||\"solid\";const wrapperStyles={display:\"inline-flex\",borderRadius:swatchConfig.borderRadius,borderWidth:1,borderStyle:borderStyle,cursor:\"pointer\"};const imageStyles={width:swatchConfig.width,height:swatchConfig.height,objectFit:getObjectFit(swatchConfig.imageFit),objectPosition:swatchConfig.imageFit===\"fill\"?`${swatchConfig.focalPoint.x}% ${swatchConfig.focalPoint.y}%`:undefined,borderRadius:adjustBorderRadius(swatchConfig.borderRadius,1),borderWidth:1,borderStyle:borderStyle,background:swatchConfig.background||\"transparent\",display:\"block\"};const borderTransition={duration:.2,ease:\"easeOut\"};function handleClick(){props.onClick();handleSwatchClick();}return /*#__PURE__*/_jsx(motion.div,{style:wrapperStyles,animate:{borderColor:isSelected?selectedBorderColor:\"rgba(0, 0, 0, 0)\"},initial:false,transition:borderTransition,onClick:handleClick,children:/*#__PURE__*/_jsx(motion.img,{src:props.src,alt:\"\",style:imageStyles,initial:false,animate:{borderColor:isSelected?selectedBorderColor:defaultBorderColor},transition:borderTransition})});}// ------------------------------------------------------------ //\n// UTILITY FUNCTIONS\n// ------------------------------------------------------------ //\n/**\n * Extracts border color from BorderProps\n */function getBorderColor(borderProps){if(borderProps.borderColor){return borderProps.borderColor;}if(borderProps.border){const parts=borderProps.border.split(\" \");if(parts.length>=3){return parts.slice(2).join(\" \");}}return\"transparent\";}/**\n * Adjusts border radius to account for nested border\n */function adjustBorderRadius(borderRadius,offset){const match=borderRadius.match(/^(\\d+(?:\\.\\d+)?)(px|%|em|rem)?$/);if(match){const value=parseFloat(match[1]);const unit=match[2]||\"px\";const adjusted=Math.max(0,value-offset);return`${adjusted}${unit}`;}return borderRadius;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Swatch\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SwatchConfigProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Swatch.map","import{useEffect,useState}from\"react\";export function useIsMobile(){const[isMobile,setIsMobile]=useState(()=>{if(typeof window===\"undefined\")return false;return window.innerWidth<768;});useEffect(()=>{let timeoutId;const handleResize=()=>{clearTimeout(timeoutId);timeoutId=setTimeout(()=>{setIsMobile(window.innerWidth<768);},100);};window.addEventListener(\"resize\",handleResize);return()=>{window.removeEventListener(\"resize\",handleResize);clearTimeout(timeoutId);};},[]);return isMobile;}\nexport const __FramerMetadata__ = {\"exports\":{\"useIsMobile\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Use_is_mobile.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect}from\"react\";import{motion,AnimatePresence}from\"framer-motion\";import{useIsMobile}from\"https://framerusercontent.com/modules/bbjyVb2V57Nhjs1gu9rH/GK97OdzakPPjxQfUUuyS/Use_is_mobile.js\";export default function Lightbox(props){const{images,currentIndex,onClose,onNext,onPrev,alt,lightboxConfig}=props;const isMobile=useIsMobile();// Keyboard navigation\nuseEffect(()=>{const handleKeyDown=e=>{if(e.key===\"Escape\"){onClose();}else if(e.key===\"ArrowLeft\"){onPrev();}else if(e.key===\"ArrowRight\"){onNext();}};document.addEventListener(\"keydown\",handleKeyDown);// Prevent body scroll when lightbox is open\ndocument.body.style.overflow=\"hidden\";return()=>{document.removeEventListener(\"keydown\",handleKeyDown);document.body.style.overflow=\"\";};},[onClose,onNext,onPrev]);const handleBackdropClick=e=>{if(e.target===e.currentTarget){onClose();}};const handleNext=()=>{if(currentIndex<images.length-1){onNext();}};const handlePrev=()=>{if(currentIndex>0){onPrev();}};return /*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},onClick:handleBackdropClick,style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,backgroundColor:lightboxConfig.overlayBackground,zIndex:9999,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"zoom-out\"},children:[/*#__PURE__*/_jsx(motion.button,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:onClose,style:{position:\"absolute\",top:\"20px\",right:\"20px\",width:\"40px\",height:\"40px\",borderRadius:\"50%\",border:\"none\",backgroundColor:\"rgba(255, 255, 255, 0.1)\",color:\"white\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",fontSize:\"24px\",fontWeight:\"bold\",transition:\"background-color 0.2s\"},whileHover:{backgroundColor:\"rgba(255, 255, 255, 0.2)\"},whileTap:{scale:.95},children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 20 20\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M15 5L5 15M5 5L15 15\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsx(motion.button,{initial:{opacity:currentIndex===0?.5:1},animate:{opacity:currentIndex===0?.5:1},exit:{opacity:currentIndex===0?.5:1},onClick:handlePrev,style:{position:\"absolute\",left:isMobile?\"calc(50% - 60px)\":\"20px\",bottom:isMobile?\"40px\":\"auto\",width:`${lightboxConfig.prevButtonStyles.size}px`,height:`${lightboxConfig.prevButtonStyles.size}px`,borderRadius:lightboxConfig.prevButtonStyles.borderRadius,border:\"none\",backgroundColor:lightboxConfig.prevButtonStyles.backgroundColor,color:lightboxConfig.prevButtonStyles.svgColor,cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"background-color 0.2s\"},whileHover:{backgroundColor:lightboxConfig.prevButtonStyles.hoverBackgroundColor},whileTap:{scale:lightboxConfig.prevButtonStyles.tapScale},disabled:currentIndex===0,children:/*#__PURE__*/_jsx(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M15 18L9 12L15 6\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsx(motion.button,{initial:{opacity:currentIndex===images.length-1?.5:1},animate:{opacity:currentIndex===images.length-1?.5:1},exit:{opacity:currentIndex===images.length-1?.5:1},onClick:handleNext,style:{position:\"absolute\",left:isMobile?\"calc(50%)\":\"auto\",right:isMobile?\"auto\":\"20px\",bottom:isMobile?\"40px\":\"auto\",width:`${lightboxConfig.nextButtonStyles.size}px`,height:`${lightboxConfig.nextButtonStyles.size}px`,borderRadius:lightboxConfig.nextButtonStyles.borderRadius,border:\"none\",backgroundColor:lightboxConfig.nextButtonStyles.backgroundColor,color:lightboxConfig.nextButtonStyles.svgColor,cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transition:\"background-color 0.2s\"},whileHover:{backgroundColor:lightboxConfig.nextButtonStyles.hoverBackgroundColor},whileTap:{scale:lightboxConfig.nextButtonStyles.tapScale},disabled:currentIndex===images.length-1,children:/*#__PURE__*/_jsx(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M9 18L15 12L9 6\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})}),/*#__PURE__*/_jsx(AnimatePresence,{mode:\"popLayout\",initial:false,children:/*#__PURE__*/_jsx(motion.img,{initial:{opacity:.7},animate:{opacity:1},exit:{opacity:.7},src:images[currentIndex],alt:alt||\"\",style:{maxWidth:\"90vw\",maxHeight:\"90vh\",objectFit:\"contain\",cursor:\"zoom-out\",// position relative helps with layout animations\nposition:\"relative\"},transition:{duration:.3,ease:\"easeInOut\",// Separate opacity transition for smoother crossfade\nopacity:{duration:.2}}},currentIndex)})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Lightbox\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Lightbox.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useRef}from\"react\";import{getObjectFit}from\"https://framerusercontent.com/modules/Yka9BTwP6pnUEgruT9LS/Jc9IxeCuGijc2VjPdP2l/Helpers.js\";export default function ZoomImage(props){const{src,alt,imageFit,focalPoint,zoomConfig,onClick,cursor}=props;const[isHovering,setIsHovering]=useState(false);const[transformOrigin,setTransformOrigin]=useState(\"50% 50%\");const containerRef=useRef(null);const handleMouseMove=e=>{if(!zoomConfig.enabled||!containerRef.current)return;const container=containerRef.current;const rect=container.getBoundingClientRect();const x=(e.clientX-rect.left)/rect.width*100;const y=(e.clientY-rect.top)/rect.height*100;setTransformOrigin(`${x}% ${y}%`);};const handleMouseEnter=()=>{if(zoomConfig.enabled){setIsHovering(true);}};const handleMouseLeave=()=>{setIsHovering(false);// Don't reset transformOrigin - let the image zoom out from the last cursor position\n// Since scale goes to 1, the transform origin doesn't affect the final visual\n};const scale=isHovering&&zoomConfig.enabled?zoomConfig.zoomLevel/100:1;return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,onMouseMove:handleMouseMove,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onClick:onClick,style:{width:\"100%\",height:\"100%\",overflow:\"hidden\",cursor:cursor||\"default\"},children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:alt,style:{width:\"100%\",height:\"100%\",display:\"block\",objectFit:getObjectFit(imageFit),objectPosition:imageFit===\"fill\"?`${focalPoint.x}% ${focalPoint.y}%`:undefined,transform:`scale(${scale})`,transformOrigin:transformOrigin,transition:\"transform 0.3s ease-out\"}})});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ZoomImage\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Zoom_image.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState}from\"react\";import{AnimatePresence}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";import{isOnFramerCanvasFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";import GalleryEmptyCanvasState from\"https://framerusercontent.com/modules/l1z5Z7HKu7jw66Txaa5F/7aL6JiqExNvheuIFD72s/State_empty_canvas.js\";import{useShopifyProductData,useGalleryImages,useSelectedVariant,useVariantImageMapping,useGalleryState}from\"https://framerusercontent.com/modules/3Um7Da0PioNPYdqeX5Ez/zrXbPheMmqE6W2yULZdI/Hooks.js\";import Swatch from\"https://framerusercontent.com/modules/7wU9mRDjXO6UTdjgi9UD/yuxQwKE8YV0i5zSDg7eT/Swatch.js\";import{SHARED_COLORS}from\"https://framerusercontent.com/modules/Nrs4jz2AAEOfEZRQEQij/7Ao2SBt1Ssf683HHXgzl/Shared_styles.js\";import{SHOPIFY_DATA_DESCRIPTION,SUPPORT_CONTROL,VARIANT_IMAGE_MAPPING_DESCRIPTION}from\"https://framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/tl22i1lNtmmpBOq8EDe4/Shared_props.js\";import Lightbox from\"https://framerusercontent.com/modules/EAtAInyNWWh0slvVOxX5/pJmXVbV0Z2aGDUgGtoMa/Lightbox.js\";import ZoomImage from\"https://framerusercontent.com/modules/E8uvFgVk9lf9dvq1WmMl/HsfI3mZpqPD0s34wqkoG/Zoom_image.js\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 800\n * @framerDisableUnlink\n */export default function Gallery(props){const isOnFramerCanvas=isOnFramerCanvasFn();// Parse Shopify product data\nconst{productId,variants}=useShopifyProductData(props.shopifyData);// Get selected variant\nconst selectedVariantId=useSelectedVariant(productId,variants);// Get images array from props\nconst images=useGalleryImages(props);// Get variant-image mapping utilities\nconst{getInitialImageIndex,variantImageIndices}=useVariantImageMapping(props.variantImageMapping,selectedVariantId,images);// Manage gallery state\nconst{currentImageIndex,setCurrentImageIndex}=useGalleryState(props.variantImageMapping,selectedVariantId,images,getInitialImageIndex,productId);// Lightbox state\nconst[isLightboxOpen,setIsLightboxOpen]=useState(false);const[lightboxImageIndex,setLightboxImageIndex]=useState(0);// When on Framer canvas, show light content with default images\nif(isOnFramerCanvas&&!props.image1?.src){return /*#__PURE__*/_jsx(GalleryEmptyCanvasState,{imageFit:props.imageFit,focalPoint:props.focalPoint,showSwatches:props.showSwatches});}if(!productId||!images.length)return null;const isLeftPosition=props.swatchConfig.position===\"left\";// Get lightbox images (only variant images)\nconst lightboxImages=variantImageIndices.map(idx=>images[idx]);const initialLightboxIndex=variantImageIndices.indexOf(currentImageIndex);// Lightbox navigation handlers\nconst handleLightboxOpen=()=>{setLightboxImageIndex(initialLightboxIndex);setIsLightboxOpen(true);};const handleLightboxClose=()=>{setIsLightboxOpen(false);};const handleLightboxNext=()=>{if(lightboxImageIndex<lightboxImages.length-1){const nextIndex=lightboxImageIndex+1;setLightboxImageIndex(nextIndex);// Update gallery index immediately to keep it in sync for close animation\nconst newGalleryIndex=variantImageIndices[nextIndex];if(newGalleryIndex!==undefined){setCurrentImageIndex(newGalleryIndex);}}};const handleLightboxPrev=()=>{if(lightboxImageIndex>0){const prevIndex=lightboxImageIndex-1;setLightboxImageIndex(prevIndex);// Update gallery index immediately to keep it in sync for close animation\nconst newGalleryIndex=variantImageIndices[prevIndex];if(newGalleryIndex!==undefined){setCurrentImageIndex(newGalleryIndex);}}};return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:isLeftPosition?\"row\":\"column\",gap:props.gap,height:\"100%\",width:\"100%\"},children:[props.showSwatches&&isLeftPosition&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:props.swatchConfig.gap,alignItems:\"center\",overflowY:props.swatchConfig.allowWrap?\"visible\":\"auto\",maxHeight:props.swatchConfig.allowWrap?\"none\":\"100%\"},children:variantImageIndices.map(fullIdx=>/*#__PURE__*/_jsx(Swatch,{src:images[fullIdx],isSelected:fullIdx===currentImageIndex,onClick:()=>setCurrentImageIndex(fullIdx),variantImageMapping:props.variantImageMapping,variants:variants,imageIndex:fullIdx,swatchConfig:props.swatchConfig},images[fullIdx]+String(fullIdx)))}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1,overflow:\"hidden\",height:\"100%\",width:isLeftPosition?\"auto\":\"100%\"},children:/*#__PURE__*/_jsx(ZoomImage,{src:images[currentImageIndex],alt:(variants.find(v=>v.id===selectedVariantId)?.title)||\"\",imageFit:props.imageFit,focalPoint:props.focalPoint,zoomConfig:props.zoomConfig,onClick:props.lightboxConfig.enabled?handleLightboxOpen:undefined,cursor:props.lightboxConfig.enabled?\"zoom-in\":\"default\"})}),props.showSwatches&&!isLeftPosition&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexWrap:props.swatchConfig.allowWrap?\"wrap\":\"nowrap\",gap:props.swatchConfig.gap,overflowX:props.swatchConfig.allowWrap?\"visible\":\"auto\"},children:variantImageIndices.map(fullIdx=>/*#__PURE__*/_jsx(Swatch,{src:images[fullIdx],isSelected:fullIdx===currentImageIndex,onClick:()=>setCurrentImageIndex(fullIdx),variantImageMapping:props.variantImageMapping,variants:variants,imageIndex:fullIdx,swatchConfig:props.swatchConfig},images[fullIdx]+String(fullIdx)))}),props.lightboxConfig.enabled&&/*#__PURE__*/_jsx(AnimatePresence,{children:isLightboxOpen&&/*#__PURE__*/_jsx(Lightbox,{images:lightboxImages,currentIndex:lightboxImageIndex,onClose:handleLightboxClose,onNext:handleLightboxNext,onPrev:handleLightboxPrev,layoutId:`gallery-main-image-${productId}-${variantImageIndices[lightboxImageIndex]}`,alt:(variants.find(v=>v.id===selectedVariantId)?.title)||\"\",lightboxConfig:props.lightboxConfig})})]});}// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\nconst generateGalleryPropertyControls=()=>{const controls={shopifyData:{type:ControlType.String,description:SHOPIFY_DATA_DESCRIPTION},variantImageMapping:{type:ControlType.String,title:\"Variant Image Mapping\",description:VARIANT_IMAGE_MAPPING_DESCRIPTION},imageFit:{title:\"Image Fit\",type:ControlType.Enum,options:[\"fill\",\"fit\",\"stretch\"],optionTitles:[\"Fill\",\"Fit\",\"Stretch\"],defaultValue:\"fill\"},focalPoint:{type:ControlType.Object,title:\"Focal Point\",buttonTitle:\"X, Y Position\",controls:{x:{type:ControlType.Number,title:\"X Position\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",description:\"Horizontal focal point (0% = left, 100% = right)\"},y:{type:ControlType.Number,title:\"Y Position\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",description:\"Vertical focal point (0% = top, 100% = bottom)\"}},hidden:props=>props.imageFit!==\"fill\",defaultValue:{x:50,y:50}},showSwatches:{type:ControlType.Boolean,title:\"Show Swatches\",defaultValue:true},swatchConfig:{type:ControlType.Object,title:\"Swatch Config\",controls:{position:{type:ControlType.Enum,title:\"Position\",options:[\"bottom\",\"left\"],optionTitles:[\"Bottom\",\"Left\"],defaultValue:\"bottom\",displaySegmentedControl:true},width:{type:ControlType.Number,title:\"Width\",defaultValue:64,unit:\"px\"},height:{type:ControlType.Number,title:\"Height\",defaultValue:64,unit:\"px\"},imageFit:{title:\"Image Fit\",type:ControlType.Enum,options:[\"fill\",\"fit\",\"stretch\"],optionTitles:[\"Fill\",\"Fit\",\"Stretch\"],defaultValue:\"fit\"},focalPoint:{type:ControlType.Object,title:\"Focal Point\",buttonTitle:\"X, Y Position\",controls:{x:{type:ControlType.Number,title:\"X Position\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",description:\"Horizontal focal point (0% = left, 100% = right)\"},y:{type:ControlType.Number,title:\"Y Position\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",description:\"Vertical focal point (0% = top, 100% = bottom)\"}},hidden:props=>props.imageFit!==\"fill\",defaultValue:{x:50,y:50}},border:{type:ControlType.Object,title:\"Border\",buttonTitle:\"Style\",controls:{default:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Default\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(0, 0, 0, 0.1)\"}},selected:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Selected\",defaultValue:{borderWidth:2,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground}}},defaultValue:{default:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(0, 0, 0, 0.1)\"},selected:{borderWidth:2,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground}}},borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"6px\"},background:{type:ControlType.Color,title:\"Background\",optional:true},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:6,min:0,step:1,displayStepper:true,unit:\"px\",description:\"Space between swatches\"},allowWrap:{type:ControlType.Boolean,title:\"Allow Wrap\",defaultValue:true,description:\"Allow swatches to wrap to new lines. When disabled, swatches will be scrollable.\"}},hidden:props=>!props.showSwatches,defaultValue:{position:\"bottom\",width:64,height:64,imageFit:\"fit\",border:{default:{borderWidth:1,borderStyle:\"solid\",borderColor:\"rgba(0, 0, 0, 0.1)\"},selected:{borderWidth:2,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground}},borderRadius:\"6px\",gap:6,allowWrap:true}},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:8,min:0,step:1,displayStepper:true,unit:\"px\",description:\"Space between swatches and main image\"},lightboxConfig:{type:ControlType.Object,title:\"Lightbox Config\",buttonTitle:\"Enabled, Styles, etc.\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:true},overlayBackground:{type:ControlType.Color,title:\"Overlay Background\",defaultValue:\"rgba(0, 0, 0, 0.9)\",hidden:props=>!props.enabled},prevButtonStyles:{type:ControlType.Object,title:\"Previous Button\",buttonTitle:\"Size, Radius, Background, Icon\",controls:{size:{type:ControlType.Number,title:\"Size\",defaultValue:50,min:20,max:100,step:1,displayStepper:true,unit:\"px\"},borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"50%\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(255, 255, 255, 0.1)\"},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background\",defaultValue:\"rgba(255, 255, 255, 0.2)\"},svgColor:{type:ControlType.Color,title:\"Icon Color\",defaultValue:\"#ffffff\"},tapScale:{type:ControlType.Number,title:\"Tap Scale\",defaultValue:.95,min:0,max:1,step:.01}},defaultValue:{size:50,borderRadius:\"50%\",backgroundColor:\"rgba(255, 255, 255, 0.1)\",svgColor:\"#ffffff\",tapScale:.95,hoverBackgroundColor:\"rgba(255, 255, 255, 0.2)\"},hidden:props=>!props.enabled},nextButtonStyles:{type:ControlType.Object,title:\"Next Button\",buttonTitle:\"Size, Radius, Background, Icon\",controls:{size:{type:ControlType.Number,title:\"Size\",defaultValue:50,min:20,max:100,step:1,displayStepper:true,unit:\"px\"},borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"50%\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(255, 255, 255, 0.1)\"},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background\",defaultValue:\"rgba(255, 255, 255, 0.2)\"},svgColor:{type:ControlType.Color,title:\"Icon Color\",defaultValue:\"#ffffff\"},tapScale:{type:ControlType.Number,title:\"Tap Scale\",defaultValue:.95,min:0,max:1,step:.01}},defaultValue:{size:50,borderRadius:\"50%\",backgroundColor:\"rgba(255, 255, 255, 0.1)\",svgColor:\"#ffffff\",tapScale:.95,hoverBackgroundColor:\"rgba(255, 255, 255, 0.2)\"},hidden:props=>!props.enabled}}},zoomConfig:{type:ControlType.Object,title:\"Zoom Config\",buttonTitle:\"Enabled, Zoom Level\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:false,description:\"Enable zoom functionality when hovering over the main image.\"},zoomLevel:{type:ControlType.Number,title:\"Zoom Level\",defaultValue:150,min:100,max:500,step:1,unit:\"%\",hidden:props=>!props.enabled}},defaultValue:{enabled:true,zoomLevel:150}},// this need to be the last one\nnumberOfImages:{type:ControlType.Number,title:\"# of Images\",defaultValue:10,min:1,max:30,step:1,displayStepper:true}};// Dynamically generate image controls based on numberOfImages\nfor(let i=1;i<=30;i++){controls[`image${i}`]={type:ControlType.ResponsiveImage,title:`Image ${i}`,hidden:props=>props.numberOfImages<i};}return{...controls,...SUPPORT_CONTROL};};addPropertyControls(Gallery,generateGalleryPropertyControls());Gallery.displayName=\"Smart Gallery\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Gallery\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"800\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Gallery.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useMemo,useState,useEffect}from\"react\";import{QueryClientProvider}from\"https://framerusercontent.com/modules/EsOvuK0xi7z7RIQRkokm/o6ldhcInFD0f6tYPAqS1/Tanstack_query.js\";import{getQueryClient}from\"https://framerusercontent.com/modules/hfxq8MeR8YqgxUjDt3zM/SevNFArcD3y2JLRMZBW2/Tanstack_query_client.js\";import{useProductSelectionStore}from\"https://framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/MEUHNK3OpmhBSPhZhnEx/Product_selection_store.js\";import{parseShopifyData}from\"https://framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/rkjqZclSkQOy0QCpfAmc/Parse_shopify_data.js\";import{useInventory}from\"https://framerusercontent.com/modules/DW1wzS65glja20YJJb0w/G9UV22s9zuhMp7F56tFI/Use_inventory.js\";import PlusSvg from\"https://framerusercontent.com/modules/CgNesoEVhclZxcf3DGoV/KiFqdjKmxFukmUMhyMDX/Plus.js\";import MinusSvg from\"https://framerusercontent.com/modules/rg6FA2ZzLed1GXAPqbZS/mzbz3S2bGl9kzIhDyRAM/Minus.js\";import{PresetSecondaryButtonStyleControls,PresetButtonContentControls,CustomButtonControls,overrideControlDefaults}from\"https://framerusercontent.com/modules/jSzgfFOp8vV7JiKIMM1a/e63BNADx6M6EECzgf5mB/Shared_button_props.js\";import PresetButton from\"https://framerusercontent.com/modules/a6C1Qq7kxeKULOsvIpdv/ecI5o772u1j7pOp69yfN/Preset_button.js\";import CustomButtonWrapper from\"https://framerusercontent.com/modules/KkMHEXBTzNGLCAGsRLrm/C2sk9cjUnc3YE4Ebu9Zq/Custom_button_wrapper.js\";import Input,{InputStyleControls,InputContentControls}from\"https://framerusercontent.com/modules/8tTWwqu9i87Vk9zESDn0/7qpJrWvR1Ym2ddexvyIR/Input.js\";import{SHOPIFY_DATA_DESCRIPTION,SUPPORT_CONTROL}from\"https://framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/mIDGZDuYkLeEfvCEqoly/Shared_props.js\";import{isOnFramerCanvasFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";import{deriveInventoryState,findInventoryVariant}from\"https://framerusercontent.com/modules/rBCLWR4S69MLTQ5ZpxAH/2r4ruxRQRUOEBlTMh5zc/Inventory_state.js\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\nfunction QuantityInputInner(props){const isOnFramerCanvas=isOnFramerCanvasFn();const shopifyData=parseShopifyData(props.shopifyData);const selectedVariantId=useProductSelectionStore(s=>s.getSelectedVariant(shopifyData.id,shopifyData.variants));const quantity=useProductSelectionStore(s=>s.getQuantity(selectedVariantId));const setQuantity=useProductSelectionStore(s=>s.setQuantity);const{data:inventoryData}=useInventory(shopifyData.id);const inventoryMax=useMemo(()=>{const variants=inventoryData?.data?.product?.variants?.edges??[];const variant=findInventoryVariant(variants,selectedVariantId);return deriveInventoryState(variant).maxPurchasableQuantity;},[inventoryData,selectedVariantId]);// Local state for input value to allow empty string\nconst[inputValue,setInputValue]=useState(String(quantity));const min=props.min??1;const max=Math.min(props.max??Infinity,inventoryMax);const step=props.step??1;// Init quantity to min if below min\nuseEffect(()=>{if(quantity<min){setQuantity(selectedVariantId,min);}},[selectedVariantId,min,quantity,setQuantity]);// Sync local state with store quantity changes\nuseEffect(()=>{setInputValue(String(quantity));},[quantity]);const ariaLabel=useMemo(()=>{if(props.type===\"add\")return\"Increase quantity\";if(props.type===\"subtract\")return\"Decrease quantity\";return\"Quantity\";},[props.type]);const handleClickAdd=()=>{if(quantity>=max)return;setQuantity(selectedVariantId,Math.min(max,quantity+step));};const handleClickSubtract=()=>{if(quantity<=min)return;setQuantity(selectedVariantId,Math.max(min,quantity-step));};const handleChangeInput=e=>{const value=e.target.value;// Update local state immediately to allow deletion\nsetInputValue(value);// If empty, don't update store yet\nif(value===\"\"){return;}const numValue=Number(value);if(!Number.isFinite(numValue))return;if(numValue<1){// Allow partial input like typing \"1\" then \"0\" for \"10\"\nreturn;}// Update store with valid value, clamped to max\nsetQuantity(selectedVariantId,Math.min(max,Math.floor(numValue)));};const handleBlurInput=e=>{const value=e.target.value;const numValue=Number(value);if(value===\"\"||!Number.isFinite(numValue)||numValue<min){setQuantity(selectedVariantId,min);setInputValue(String(min));}else if(numValue>max){setQuantity(selectedVariantId,max);setInputValue(String(max));}};const addDisabled=quantity>=max&&!isOnFramerCanvas;const subtractDisabled=quantity<=min&&!isOnFramerCanvas;if(props.type===\"add\"&&props.buttonType===\"custom\"){return /*#__PURE__*/_jsx(CustomButtonWrapper,{onClick:handleClickAdd,customButtonSize:props.customButtonSize,disabled:addDisabled,disabledButton:props.customButtonDisabled?.[0],children:props.customButton});}if(props.type===\"add\"&&props.buttonType===\"preset\"){return /*#__PURE__*/_jsx(PresetButton,{onClick:handleClickAdd,font:props.presetButtonStyle.font,leftIcon:props.leftIcon?.[0]??/*#__PURE__*/_jsx(PlusSvg,{style:{width:\"16px\",height:\"16px\"}}),rightIcon:props.rightIcon?.[0],presetButtonStyle:props.presetButtonStyle,disabled:addDisabled});}if(props.type===\"subtract\"&&props.buttonType===\"custom\"){return /*#__PURE__*/_jsx(CustomButtonWrapper,{onClick:handleClickSubtract,customButtonSize:props.customButtonSize,disabled:subtractDisabled,disabledButton:props.customButtonDisabled?.[0],children:props.customButton});}if(props.type===\"subtract\"&&props.buttonType===\"preset\"){return /*#__PURE__*/_jsx(PresetButton,{onClick:handleClickSubtract,font:props.presetButtonStyle.font,leftIcon:props.leftIcon?.[0]??/*#__PURE__*/_jsx(MinusSvg,{style:{width:\"16px\",height:\"16px\"}}),rightIcon:props.rightIcon?.[0],presetButtonStyle:props.presetButtonStyle});}return /*#__PURE__*/_jsx(Input,{\"aria-label\":ariaLabel,type:props.inputType,min:props.min,max:props.max,step:props.step,value:inputValue,onChange:handleChangeInput,onBlur:handleBlurInput,onFocus:e=>e.currentTarget.select(),inputStyle:props.inputStyle});}// ------------------------------------------------------------ //\n// MAIN EXPORT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 40\n * @framerIntrinsicHeight 40\n * @framerDisableUnlink\n */export default function QuantityInput(props){const queryClient=getQueryClient();return /*#__PURE__*/_jsx(QueryClientProvider,{client:queryClient,children:/*#__PURE__*/_jsx(QuantityInputInner,{...props})});}// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(QuantityInput,{type:{type:ControlType.Enum,options:[\"subtract\",\"input\",\"add\"],optionTitles:[\"-\",\"123\",\"+\"],defaultValue:\"input\",displaySegmentedControl:true},shopifyData:{type:ControlType.String,defaultValue:\"\",description:SHOPIFY_DATA_DESCRIPTION},step:{type:ControlType.Number,defaultValue:1,min:1,step:1,displayStepper:true},min:{type:ControlType.Number,defaultValue:1,min:1,step:1,displayStepper:true},max:{type:ControlType.Number,defaultValue:99,min:1,step:1,displayStepper:true},...overrideControlDefaults(CustomButtonControls,{\"buttonType.hidden\":props=>props.type===\"input\",\"customButton.hidden\":props=>props.buttonType===\"preset\"||props.type===\"input\",\"customButtonSize.hidden\":props=>props.buttonType===\"preset\"||props.type===\"input\"}),...overrideControlDefaults(PresetSecondaryButtonStyleControls,{\"presetButtonStyle.hidden\":props=>props.buttonType===\"custom\"||props.type===\"input\"}),...overrideControlDefaults(PresetButtonContentControls,{\"leftIcon.hidden\":props=>props.buttonType===\"custom\"||props.type===\"input\",\"leftIcon.title\":\"Icon\",\"rightIcon.hidden\":true,\"text.hidden\":true}),...overrideControlDefaults(InputStyleControls,{\"inputStyle.hidden\":props=>props.type!==\"input\"}),...overrideControlDefaults(InputContentControls,{\"placeholder.hidden\":props=>props.type!==\"input\",\"disabled.hidden\":props=>props.type!==\"input\",\"inputType.hidden\":true}),...SUPPORT_CONTROL});QuantityInput.displayName=\"Quantity Input\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"QuantityInput\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"40\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"40\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsxs as _jsxs}from\"react/jsx-runtime\";import{Children,cloneElement,isValidElement}from\"react\";import{ControlType}from\"framer\";import{MARGIN_DESCRIPTION}from\"https://framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/mIDGZDuYkLeEfvCEqoly/Shared_props.js\";export const defaultLayerLayout={display:\"flex\",gap:16,direction:\"column\",wrap:true,justifyContent:\"flex-start\",alignItems:\"flex-start\",columns:3,rowGap:4,columnGap:4,justifyItems:\"stretch\",gridAlignItems:\"stretch\"};/**\n * Maps LayerLayoutConfig to CSS (same rules as Variant selector layout).\n */export function getLayerLayoutStyle(layout){if(layout.display===\"grid\"){return{display:\"grid\",gridTemplateColumns:`repeat(${layout.columns??3}, auto)`,rowGap:layout.rowGap??4,columnGap:layout.columnGap??4,justifyItems:layout.justifyItems??\"stretch\",alignItems:layout.gridAlignItems??\"stretch\"};}return{display:\"flex\",flexDirection:layout.direction??\"row\",flexWrap:layout.wrap?\"wrap\":\"nowrap\",justifyContent:layout.justifyContent??\"flex-start\",alignItems:layout.alignItems??\"flex-start\",gap:layout.gap??4};}function cloneFullWidthChildren(node){return Children.map(node,child=>{if(/*#__PURE__*/isValidElement(child)){return /*#__PURE__*/cloneElement(child,{style:{...child.props.style,width:\"100%\"}});}return child;});}// ------------------------------------------------------------ //\n// COMPONENT\n// ------------------------------------------------------------ //\nexport function LayerWrapper({layerStyles={},topBottomContent,children}){const layout=layerStyles.layout??defaultLayerLayout;const clonedTopContent=cloneFullWidthChildren(topBottomContent?.[0]);const clonedBottomContent=cloneFullWidthChildren(topBottomContent?.[1]);return /*#__PURE__*/_jsxs(\"div\",{style:{...getLayerLayoutStyle(layout),backgroundColor:layerStyles.backgroundColor,border:typeof layerStyles.border===\"string\"?layerStyles.border:undefined,...typeof layerStyles.border===\"object\"?layerStyles.border:{},borderRadius:layerStyles.radius,padding:layerStyles.padding,margin:layerStyles.margin,boxShadow:layerStyles.shadow},children:[clonedTopContent,children,clonedBottomContent]});}// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\nexport const LAYER_WRAPPER_PROPERTY_CONTROLS={layerStyles:{type:ControlType.Object,title:\"Layer Style\",buttonTitle:\"Layout, Colors, Border, etc.\",controls:{layout:{type:ControlType.Object,title:\"📐 Layout\",buttonTitle:\"Flex, Grid, Gap, etc.\",controls:{display:{type:ControlType.Enum,title:\"Display\",options:[\"flex\",\"grid\"],optionTitles:[\"Flex\",\"Grid\"],defaultValue:\"flex\",displaySegmentedControl:true},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:16,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"flex\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"row\",\"column\"],optionTitles:[\"Row\",\"Column\"],defaultValue:\"column\",displaySegmentedControl:true,hidden:props=>props.display!==\"flex\"},wrap:{type:ControlType.Boolean,title:\"Wrap\",defaultValue:true,hidden:props=>props.display!==\"flex\"},justifyContent:{type:ControlType.Enum,title:\"Justify\",options:[\"flex-start\",\"flex-end\",\"center\",\"space-between\",\"space-around\",\"space-evenly\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Space Between\",\"Space Around\",\"Space Evenly\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},alignItems:{type:ControlType.Enum,title:\"Align\",options:[\"flex-start\",\"flex-end\",\"center\",\"stretch\",\"baseline\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Stretch\",\"Baseline\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},columns:{type:ControlType.Number,title:\"Columns\",defaultValue:3,min:1,max:12,step:1,hidden:props=>props.display!==\"grid\",displayStepper:true},rowGap:{type:ControlType.Number,title:\"Row Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"},columnGap:{type:ControlType.Number,title:\"Column Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"},justifyItems:{type:ControlType.Enum,title:\"Justify Items\",options:[\"start\",\"end\",\"center\",\"stretch\",\"baseline\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Stretch\",\"Baseline\"],defaultValue:\"stretch\",hidden:props=>props.display!==\"grid\"},gridAlignItems:{type:ControlType.Enum,title:\"Align Items\",options:[\"start\",\"end\",\"center\",\"stretch\",\"baseline\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Stretch\",\"Baseline\"],defaultValue:\"stretch\",hidden:props=>props.display!==\"grid\"}},defaultValue:{display:\"flex\",gap:16,direction:\"column\",wrap:true,justifyContent:\"flex-start\",alignItems:\"flex-start\",columns:3,rowGap:4,columnGap:4,justifyItems:\"stretch\",gridAlignItems:\"stretch\"}},backgroundColor:{type:ControlType.Color,title:\"Background Color\",optional:true},shadow:{// @ts-expect-error - BoxShadow is not a valid control type in this Framer npm version\ntype:ControlType.BoxShadow,title:\"Shadow\",optional:true},border:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Border\",optional:true},radius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Radius\"},padding:{// @ts-expect-error - Padding is not a valid control type in this Framer npm version\ntype:ControlType.Padding,title:\"Padding\"},margin:{// @ts-expect-error - Padding is not a valid control type in this Framer npm version\ntype:ControlType.Padding,title:\"Margin\",optional:true,description:MARGIN_DESCRIPTION}}},topBottomContent:{type:ControlType.Array,title:\"Top & Bottom Content\",control:{type:ControlType.ComponentInstance},maxCount:2}};\nexport const __FramerMetadata__ = {\"exports\":{\"LayerLayoutConfig\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LayerWrapperProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getLayerLayoutStyle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LayerWrapper\":{\"type\":\"reactComponent\",\"name\":\"LayerWrapper\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultLayerLayout\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LayerStylesProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LAYER_WRAPPER_PROPERTY_CONTROLS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Shared_layer_wrapper.map","// ------------------------------------------------------------ //\n// UTILITY FUNCTIONS\n// ------------------------------------------------------------ //\n/**\n * Convert a VariantLayoutConfig into a CSSProperties object\n */export function getLayoutStyle(layout){if(layout.display===\"grid\"){return{display:\"grid\",gridTemplateColumns:`repeat(${layout.columns??3}, auto)`,rowGap:layout.rowGap??4,columnGap:layout.columnGap??4};}return{display:\"flex\",flexDirection:layout.direction??\"row\",flexWrap:layout.wrap?\"wrap\":\"nowrap\",justifyContent:layout.justifyContent??\"flex-start\",alignItems:layout.alignItems??\"flex-start\",gap:layout.gap??4};}/**\n * Split a variant title into option values by index\n */export function getOptionValuesFromTitle(title){if(!title)return[];return title.split(\" / \").map(s=>s.trim());}/**\n * Find the variant that matches a set of option values at all indices\n */export function findVariantByOptionValues(variants,optionValues){for(const v of variants){const parts=getOptionValuesFromTitle(v.title||\"\");let allMatch=true;for(let i=0;i<optionValues.length;i++){const desired=optionValues[i];if(!desired)continue;// skip unspecified\nif(String(parts[i]||\"\")!==String(desired)){allMatch=false;break;}}if(allMatch)return v;}return null;}/**\n * Extract image numbers for a given variant from the mapping string\n * Format: [img 1 ~ 123][img 2 ~ 456]\n */export function extractImageNumbersForVariant(mappingString,variantId){if(!mappingString||!variantId)return[];const result=[];const regex=/\\[img (\\d+) ~ (\\d+)\\]/g;let match;while((match=regex.exec(mappingString))!==null){const imageNum=match[1];const mappedVariantId=match[2];if(String(mappedVariantId)===String(variantId)){result.push(imageNum);}}return result;}/**\n * Dispatch gallery sync event for variant image selection\n */export function dispatchGallerySyncEvent(shopifyProductId,imageNumber){if(typeof window===\"undefined\")return;const evt=new CustomEvent(\"frameship_variant_image_selected\",{detail:{imageNumber,shopifyProductID:`gid://shopify/Product/${shopifyProductId}`}});document.dispatchEvent(evt);}\nexport const __FramerMetadata__ = {\"exports\":{\"getOptionValuesFromTitle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getLayoutStyle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dispatchGallerySyncEvent\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"findVariantByOptionValues\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"extractImageNumbersForVariant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Utils.map","import{useMemo,useEffect}from\"react\";import{extractImageNumbersForVariant,dispatchGallerySyncEvent}from\"https://framerusercontent.com/modules/YJSlZPJ3OtkgZ7JnMbkR/nTiKI5ZTLCUnpRSRytRm/Utils.js\";import{isBrowserFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";// ------------------------------------------------------------ //\n// CUSTOM HOOKS\n// ------------------------------------------------------------ //\n/**\n * Parse CMS Variant Options from JSON string\n */export function useParsedVariantOptions(variantOptions){return useMemo(()=>{if(!variantOptions)return null;try{const parsed=JSON.parse(variantOptions);// transfrom the ID to the format gid://shopify/ProductOption/10535841136801\nconst transformed=parsed.map(option=>({...option,id:`gid://shopify/ProductOption/${option.id}`}));if(Array.isArray(transformed))return transformed;return null;}catch{return null;}},[variantOptions]);}/**\n * Infer option groups from variants or use CMS options\n */export function useInferredOptionGroups(variants,cmsVariantOptions){return useMemo(()=>{if(!variants.length)return[];// If CMS Variant Options are provided, trust their names and values\nif(cmsVariantOptions&&cmsVariantOptions.length>0){const maxParts=variants.reduce((m,v)=>{const parts=(v.title||\"\").split(\" / \");return Math.max(m,parts.length);},0);const limited=cmsVariantOptions.slice(0,maxParts);return limited.map((opt,idx)=>({index:idx,name:opt.name,values:Array.from(new Set(opt.values.map(v=>String(v)))).filter(Boolean)}));}// Fallback: infer groups as Option 1, Option 2, ... based on variant title parts\nconst maxParts=variants.reduce((m,v)=>{const parts=(v.title||\"\").split(\" / \");return Math.max(m,parts.length);},0);const groups=[];for(let i=0;i<maxParts;i++){groups.push({index:i,name:`Option ${i+1}`,values:new Set});}for(const v of variants){const parts=(v.title||\"\").split(\" / \");for(let i=0;i<maxParts;i++){const value=String(parts[i]||\"\").trim();if(value)groups[i].values.add(value);}}return groups.map(g=>({index:g.index,name:g.name,values:Array.from(g.values)}));},[variants,cmsVariantOptions]);}/**\n * Determine effective filter settings from props\n */export function useEffectiveFilter(filterGroups,filterGroupTitles,filterType){return useMemo(()=>{if(filterGroups)return filterGroups;const titles=(filterGroupTitles||\"\").split(\",\").map(t=>t.trim()).filter(Boolean);const type=filterType||\"all\";return{filterType:type,variantGroupTitles:titles};},[filterGroups,filterGroupTitles,filterType]);}/**\n * Find the target group based on filter settings\n */export function useTargetGroup(effectiveFilter,inferredOptionGroups){return useMemo(()=>{if(effectiveFilter.filterType!==\"contains\")return null;if(!effectiveFilter.variantGroupTitles?.length)return null;const wantedNames=effectiveFilter.variantGroupTitles.map(n=>n.toLowerCase());// Match by name (case-insensitive)\nconst byName=inferredOptionGroups.find(g=>wantedNames.includes(g.name.toLowerCase()));if(byName)return byName;// If no names match (e.g., inferred names like Option 1), allow using positional keywords \"Option 1\"\nconst byFallback=inferredOptionGroups.find(g=>wantedNames.includes(`option ${g.index+1}`));return byFallback||null;},[effectiveFilter,inferredOptionGroups]);}/**\n * Keep gallery in sync when selection changes\n */export function useGallerySync(variantImageMapping,selectedVariantId,shopifyProductId){const isBrowser=isBrowserFn();useEffect(()=>{if(!isBrowser)return;if(!variantImageMapping||!selectedVariantId||!shopifyProductId)return;const imageNumbersForVariant=extractImageNumbersForVariant(variantImageMapping,selectedVariantId);const firstImageNumber=imageNumbersForVariant[0];if(!firstImageNumber)return;dispatchGallerySyncEvent(shopifyProductId,Number(firstImageNumber));},[variantImageMapping,selectedVariantId,shopifyProductId,isBrowser]);}/**\n * Check if component should be hidden based on filter rules\n */export function useFilterVisibility(effectiveFilter,groupNamesLower){return useMemo(()=>{if(effectiveFilter.filterType===\"contains\"&&effectiveFilter.variantGroupTitles?.length){const wanted=effectiveFilter.variantGroupTitles.map(t=>t.toLowerCase());const hasMatch=groupNamesLower.some(n=>wanted.includes(n));if(!hasMatch)return false;}if(effectiveFilter.filterType===\"doesn't contain\"&&effectiveFilter.variantGroupTitles?.length){const blocked=effectiveFilter.variantGroupTitles.map(t=>t.toLowerCase());const hasBlocked=groupNamesLower.some(n=>blocked.includes(n));if(hasBlocked)return false;}return true;},[effectiveFilter,groupNamesLower]);}\nexport const __FramerMetadata__ = {\"exports\":{\"useParsedVariantOptions\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useTargetGroup\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useInferredOptionGroups\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useEffectiveFilter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFilterVisibility\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useGallerySync\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useRef,useEffect}from\"react\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\nexport function VariantDropdown(props){const{config,options,selectedId,onSelect,forceOpen}=props;const[isOpen,setIsOpen]=useState(false);const[hoveredId,setHoveredId]=useState(null);const containerRef=useRef(null);const open=forceOpen||isOpen;const selectedOption=options.find(o=>o.id===selectedId);useEffect(()=>{if(forceOpen)return;function handleClickOutside(e){if(containerRef.current&&!containerRef.current.contains(e.target)){setIsOpen(false);}}document.addEventListener(\"mousedown\",handleClickOutside);return()=>document.removeEventListener(\"mousedown\",handleClickOutside);},[forceOpen]);const triggerWidth=config.widthType===\"fit\"?\"fit-content\":config.widthType===\"fill\"?\"100%\":config.width??160;const containerStyles={position:\"relative\",display:\"inline-block\",width:triggerWidth};const triggerStyles={display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",width:\"100%\",height:config.height,padding:config.padding,borderRadius:config.borderRadius,border:borderToCss(config.triggerStyles.border),backgroundColor:config.triggerStyles.backgroundColor,color:config.triggerStyles.textColor,cursor:\"pointer\",boxSizing:\"border-box\",...config.font};const listStyles={position:\"absolute\",top:\"100%\",left:0,right:0,zIndex:1e3,marginTop:4,backgroundColor:config.listStyles.backgroundColor,border:borderToCss(config.listStyles.border),borderRadius:config.listStyles.borderRadius,maxHeight:config.listStyles.maxHeight,overflowY:\"auto\",boxSizing:\"border-box\",padding:0,margin:\"4px 0 0 0\",listStyle:\"none\"};return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:containerStyles,children:[/*#__PURE__*/_jsxs(\"button\",{style:triggerStyles,onClick:()=>!forceOpen&&setIsOpen(v=>!v),\"aria-haspopup\":\"listbox\",\"aria-expanded\":open,children:[/*#__PURE__*/_jsx(\"span\",{style:{minWidth:0,textOverflow:\"ellipsis\",whiteSpace:\"nowrap\",overflow:\"visible\"},children:selectedOption?.label??options[0]?.label??\"Select...\"}),/*#__PURE__*/_jsx(ChevronIcon,{color:config.triggerStyles.chevronColor,size:config.triggerStyles.chevronSize,isOpen:open,transitionDuration:config.triggerStyles.chevronTransitionDuration})]}),open&&/*#__PURE__*/_jsx(\"ul\",{role:\"listbox\",style:listStyles,children:options.map(option=>{const isSelected=option.id===selectedId;const isHovered=hoveredId===option.id;const optionStyles={display:\"flex\",alignItems:\"center\",height:config.listStyles.optionHeight,padding:config.listStyles.optionPadding,cursor:\"pointer\",backgroundColor:isSelected?config.listStyles.selectedBackgroundColor:isHovered?config.listStyles.hoverBackgroundColor:\"transparent\",color:isSelected?config.listStyles.selectedTextColor:isHovered?config.listStyles.hoverTextColor:config.listStyles.textColor,boxSizing:\"border-box\",listStyle:\"none\",...config.font};return /*#__PURE__*/_jsx(\"li\",{role:\"option\",\"aria-selected\":isSelected,style:optionStyles,onMouseEnter:()=>setHoveredId(option.id),onMouseLeave:()=>setHoveredId(null),onClick:()=>{if(!forceOpen){onSelect(option.id);setIsOpen(false);}},children:option.label},option.id);})})]});}// ------------------------------------------------------------ //\n// CHEVRON ICON\n// ------------------------------------------------------------ //\nfunction ChevronIcon(props){return /*#__PURE__*/_jsx(\"svg\",{width:props.size,height:props.size,viewBox:\"0 0 12 12\",fill:\"none\",style:{flexShrink:0,transition:`transform ${props.transitionDuration}ms ease`,transform:props.isOpen?\"rotate(180deg)\":\"rotate(0deg)\",marginLeft:8},children:/*#__PURE__*/_jsx(\"path\",{d:\"M2 4L6 8L10 4\",stroke:props.color,strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});}// ------------------------------------------------------------ //\n// UTILITY\n// ------------------------------------------------------------ //\nfunction borderToCss(border){if(border.border)return border.border;const w=border.borderWidth??1;const s=border.borderStyle??\"solid\";const c=border.borderColor??\"transparent\";return`${w}px ${s} ${c}`;}\nexport const __FramerMetadata__ = {\"exports\":{\"VariantDropdown\":{\"type\":\"reactComponent\",\"name\":\"VariantDropdown\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Variant_dropdown.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{VariantDropdown}from\"https://framerusercontent.com/modules/YPQf3XlJIdM0syI4Nah6/9AhsKJVjEXQRAGU2JnFH/Variant_dropdown.js\";import{getLayoutStyle}from\"https://framerusercontent.com/modules/YJSlZPJ3OtkgZ7JnMbkR/nTiKI5ZTLCUnpRSRytRm/Utils.js\";export function PlaceholderState(props){if(props.type===\"button\"&&props.buttonConfig){const{buttonConfig,buttonLayout}=props;const font=buttonConfig.font||{};const defaultStyles=buttonConfig.defaultStyles||{};const layoutStyle=buttonLayout?getLayoutStyle(buttonLayout):{display:\"flex\",gap:4};const buttonStyles={height:buttonConfig.height,width:buttonConfig.width,padding:buttonConfig.padding,borderRadius:buttonConfig.borderRadius,backgroundColor:defaultStyles.backgroundColor||\"#fff\",color:defaultStyles.textColor||\"#000\",border:defaultStyles.border?`${defaultStyles.border.borderWidth||1}px ${defaultStyles.border.borderStyle||\"solid\"} ${defaultStyles.border.borderColor||\"#ccc\"}`:\"1px solid #ccc\",fontFamily:font.fontFamily||\"inherit\",fontSize:font.fontSize?`${font.fontSize}px`:\"14px\",fontWeight:font.fontWeight||\"normal\",cursor:\"pointer\",transition:\"all 0.2s ease\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\"};return /*#__PURE__*/_jsx(\"div\",{style:layoutStyle,children:[\"S\",\"M\",\"L\"].map(size=>/*#__PURE__*/_jsx(\"button\",{style:buttonStyles,\"aria-label\":`Select ${size} size`,children:size},size))});}if(props.type===\"image\"&&props.imageConfig){const{imageConfig,imageLayout}=props;const layoutStyle=imageLayout?getLayoutStyle(imageLayout):{display:\"flex\",flexWrap:\"wrap\",gap:4};const border=imageConfig.border?.default||{};const imagePlaceholderStyles={width:imageConfig.width,height:imageConfig.height,borderRadius:imageConfig.borderRadius||\"6px\",backgroundColor:imageConfig.background||\"#f0f0f0\",border:border?`${border.borderWidth||1}px ${border.borderStyle||\"solid\"} ${border.borderColor||\"#ccc\"}`:\"1px solid #ccc\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#999\",fontSize:\"12px\",fontWeight:\"500\",cursor:\"pointer\",transition:\"all 0.2s ease\"};return /*#__PURE__*/_jsx(\"div\",{style:layoutStyle,children:[1,2,3].map(i=>/*#__PURE__*/_jsx(\"div\",{style:imagePlaceholderStyles,\"aria-label\":`Placeholder variant ${i}`,children:i},i))});}if(props.type===\"color\"&&props.colorConfig){const{colorConfig,colorLayout}=props;const layoutStyle=colorLayout?getLayoutStyle(colorLayout):{display:\"flex\",flexWrap:\"wrap\",gap:4};const border=colorConfig.border?.default||{};const colorPlaceholderStyles={width:colorConfig.size,height:colorConfig.size,borderRadius:colorConfig.borderRadius||\"50%\",border:border?`${border.borderWidth||1}px ${border.borderStyle||\"solid\"} ${border.borderColor||\"#ccc\"}`:\"1px solid #ccc\",display:\"block\",cursor:\"pointer\",transition:\"all 0.2s ease\"};const sampleColors=[\"#ff0000\",\"#00ff00\",\"#0000ff\"];return /*#__PURE__*/_jsx(\"div\",{style:layoutStyle,children:sampleColors.map((color,i)=>/*#__PURE__*/_jsx(\"div\",{style:{...colorPlaceholderStyles,backgroundColor:color},\"aria-label\":`Placeholder color swatch ${i+1}`},i))});}if(props.type===\"dropdown\"&&props.dropdownConfig){const sampleOptions=[{id:\"opt1\",label:\"Small\"},{id:\"opt2\",label:\"Medium\"},{id:\"opt3\",label:\"Large\"}];return /*#__PURE__*/_jsx(VariantDropdown,{options:sampleOptions,selectedId:\"opt1\",onSelect:()=>{},config:props.dropdownConfig,forceOpen:props.dropdownConfig.preview!==\"closed\"});}return null;}\nexport const __FramerMetadata__ = {\"exports\":{\"PlaceholderState\":{\"type\":\"reactComponent\",\"name\":\"PlaceholderState\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{motion}from\"framer-motion\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\nexport function VariantButton(props){const baseStyles=buildBaseButtonStyles(props.config);const animateStyles=props.isSelected?buildSelectedButtonStyles(props.config):buildDefaultButtonStyles(props.config);const hoverStyles=props.isSelected?{}:buildHoverButtonStyles(props.config);return /*#__PURE__*/_jsx(motion.button,{style:baseStyles,animate:animateStyles,onClick:props.onClick,\"aria-label\":props.ariaLabel,\"aria-pressed\":props.isSelected,whileHover:hoverStyles,whileTap:{scale:props.config.tapScale},transition:{duration:.15,ease:\"easeOut\"},children:props.label});}// ------------------------------------------------------------ //\n// UTILITY FUNCTIONS\n// ------------------------------------------------------------ //\n/**\n * Converts a BorderProps object to a CSS border string\n */function borderPropsToCss(borderProps){// If shorthand border is provided, use it\nif(borderProps.border){return borderProps.border;}// Otherwise, build from individual properties\nconst width=borderProps.borderWidth||0;const style=borderProps.borderStyle||\"solid\";const color=borderProps.borderColor||\"transparent\";return`${width}px ${style} ${color}`;}/**\n * Builds base CSSProperties that don't animate\n */function buildBaseButtonStyles(config){return{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",height:config.height,width:config.widthType===\"fit\"?\"fit-content\":config.widthType===\"fill\"?\"100%\":config.width,padding:config.padding,borderRadius:config.borderRadius,border:borderPropsToCss(config.defaultStyles.border),cursor:\"pointer\",color:config.defaultStyles.textColor,backgroundColor:config.defaultStyles.backgroundColor,...config.font};}/**\n * Builds animatable CSSProperties for default state\n */function buildDefaultButtonStyles(config){return{border:borderPropsToCss(config.defaultStyles.border),backgroundColor:config.defaultStyles.backgroundColor,color:config.defaultStyles.textColor};}/**\n * Builds animatable CSSProperties for selected state\n */function buildSelectedButtonStyles(config){return{border:borderPropsToCss(config.selectedStyles.border),backgroundColor:config.selectedStyles.backgroundColor,color:config.selectedStyles.textColor};}/**\n * Builds hover styles for animation\n */function buildHoverButtonStyles(config){return{border:borderPropsToCss(config.hoverStyles.border),backgroundColor:config.hoverStyles.backgroundColor,color:config.hoverStyles.textColor};}\nexport const __FramerMetadata__ = {\"exports\":{\"VariantButton\":{\"type\":\"reactComponent\",\"name\":\"VariantButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Variant_button.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{motion}from\"framer-motion\";import{useState}from\"react\";import{getObjectFit}from\"https://framerusercontent.com/modules/Yka9BTwP6pnUEgruT9LS/Jc9IxeCuGijc2VjPdP2l/Helpers.js\";export function VariantImage(props){const{config,isSelected}=props;const[isHovered,setIsHovered]=useState(false);// Extract border properties\nconst defaultBorderWidth=getBorderWidth(config.border.default);const selectedBorderWidth=getBorderWidth(config.border.selected);const hoverBorderResolved=config.border.hover??config.border.default;const hoverBorderWidth=getBorderWidth(hoverBorderResolved);const defaultBorderStyle=getBorderStyle(config.border.default);const selectedBorderStyle=getBorderStyle(config.border.selected);const hoverBorderStyle=getBorderStyle(hoverBorderResolved);const defaultBorderColor=getBorderColor(config.border.default);const selectedBorderColor=getBorderColor(config.border.selected);const hoverBorderColor=getBorderColor(hoverBorderResolved);// Calculate border widths to prevent layout shifts:\n// - Inner element always has the default border width (always visible)\n// - Wrapper has the \"extra\" width for selected / hover states (transparent when inactive)\n// - Total border slot = max(default, selected, hover) — constant, no layout shift!\nconst innerWidth=defaultBorderWidth;const extraSelected=Math.max(0,selectedBorderWidth-defaultBorderWidth);const extraHover=Math.max(0,hoverBorderWidth-defaultBorderWidth);const wrapperWidth=Math.max(extraSelected,extraHover);const showWrapperBorder=isSelected||!isSelected&&isHovered&&extraHover>0;const wrapperBorderStyleResolved=isSelected?selectedBorderStyle:isHovered&&extraHover>0?hoverBorderStyle:selectedBorderStyle;const innerBorderStyleResolved=isSelected?selectedBorderStyle:isHovered?hoverBorderStyle:defaultBorderStyle;// Total border slot for border radius calculation\nconst totalBorderSlot=innerWidth+wrapperWidth;// Wrapper div handles the \"extra\" border that appears when selected\n// Width is constant to prevent layout shifts, only color animates\nconst wrapperStyles={display:\"inline-flex\",borderRadius:config.borderRadius,borderWidth:wrapperWidth,borderStyle:wrapperBorderStyleResolved,cursor:\"pointer\"};// Inner element always shows the default border width\nconst imageStyles={width:config.width,height:config.height,objectFit:getObjectFit(config.imageFit),objectPosition:config.imageFit===\"fill\"?`${config?.focalPoint?.x??50}% ${config?.focalPoint?.y??50}%`:undefined,borderRadius:adjustBorderRadius(config.borderRadius,totalBorderSlot),borderWidth:innerWidth,borderStyle:innerBorderStyleResolved,background:config.background||\"transparent\",display:\"block\",cursor:\"pointer\"};const borderTransition={duration:.2,ease:\"easeOut\"};function handleKeyDown(e){if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();props.onClick();}}return /*#__PURE__*/_jsx(motion.div,{style:wrapperStyles,animate:{borderColor:showWrapperBorder?isSelected?selectedBorderColor:hoverBorderColor:\"rgba(0, 0, 0, 0)\"},initial:false,whileTap:{scale:config.tapScale},transition:borderTransition,onClick:props.onClick,onPointerEnter:()=>setIsHovered(true),onPointerLeave:()=>setIsHovered(false),role:\"button\",tabIndex:0,\"aria-label\":props.ariaLabel,\"aria-pressed\":isSelected,onKeyDown:handleKeyDown,children:/*#__PURE__*/_jsx(motion.img,{src:props.src,alt:props.alt,style:imageStyles,initial:false,animate:{borderColor:isSelected?selectedBorderColor:isHovered?hoverBorderColor:defaultBorderColor},transition:borderTransition})});}// ------------------------------------------------------------ //\n// UTILITY FUNCTIONS\n// ------------------------------------------------------------ //\n/**\n * Extracts border width from BorderProps\n */function getBorderWidth(borderProps){if(borderProps.borderWidth!==undefined){return borderProps.borderWidth;}// Try to parse from shorthand border string\nif(borderProps.border){const match=borderProps.border.match(/^(\\d+(?:\\.\\d+)?)/);if(match){return parseFloat(match[1]);}}return 1;// fallback\n}/**\n * Extracts border style from BorderProps\n */function getBorderStyle(borderProps){if(borderProps.borderStyle){return borderProps.borderStyle;}// Try to parse from shorthand border string\nif(borderProps.border){const parts=borderProps.border.split(\" \");// Border shorthand is typically \"width style color\"\nif(parts.length>=2){return parts[1];}}return\"solid\";// fallback\n}/**\n * Extracts border color from BorderProps\n */function getBorderColor(borderProps){if(borderProps.borderColor){return borderProps.borderColor;}// Try to parse from shorthand border string\nif(borderProps.border){const parts=borderProps.border.split(\" \");// Border shorthand is typically \"width style color\"\nif(parts.length>=3){return parts.slice(2).join(\" \");}}return\"transparent\";}/**\n * Adjusts border radius to account for nested border\n * Subtracts the offset from numeric values to keep corners aligned\n */function adjustBorderRadius(borderRadius,offset){// Handle simple numeric values like \"8px\" or \"8\"\nconst match=borderRadius.match(/^(\\d+(?:\\.\\d+)?)(px|%|em|rem)?$/);if(match){const value=parseFloat(match[1]);const unit=match[2]||\"px\";const adjusted=Math.max(0,value-offset);return`${adjusted}${unit}`;}// For complex values, return as-is\nreturn borderRadius;}\nexport const __FramerMetadata__ = {\"exports\":{\"VariantImage\":{\"type\":\"reactComponent\",\"name\":\"VariantImage\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Variant_image.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{motion}from\"framer-motion\";import{useState}from\"react\";// ------------------------------------------------------------ //\n// VARIANT COLOR COMPONENT\n// ------------------------------------------------------------ //\nexport function VariantColor(props){const{config,isSelected,colorValue}=props;const[isHovered,setIsHovered]=useState(false);// Extract border properties\nconst defaultBorderWidth=getBorderWidth(config.border.default);const selectedBorderWidth=getBorderWidth(config.border.selected);const hoverBorderResolved=config.border.hover??config.border.default;const hoverBorderWidth=getBorderWidth(hoverBorderResolved);const defaultBorderStyle=getBorderStyle(config.border.default);const selectedBorderStyle=getBorderStyle(config.border.selected);const hoverBorderStyle=getBorderStyle(hoverBorderResolved);const defaultBorderColor=getBorderColor(config.border.default);const selectedBorderColor=getBorderColor(config.border.selected);const hoverBorderColor=getBorderColor(hoverBorderResolved);// Calculate border widths to prevent layout shifts:\nconst innerWidth=defaultBorderWidth;const extraSelected=Math.max(0,selectedBorderWidth-defaultBorderWidth);const extraHover=Math.max(0,hoverBorderWidth-defaultBorderWidth);const wrapperWidth=Math.max(extraSelected,extraHover);const showWrapperBorder=isSelected||!isSelected&&isHovered&&extraHover>0;const wrapperBorderStyleResolved=isSelected?selectedBorderStyle:isHovered&&extraHover>0?hoverBorderStyle:selectedBorderStyle;const innerBorderStyleResolved=isSelected?selectedBorderStyle:isHovered?hoverBorderStyle:defaultBorderStyle;// Total border slot for border radius calculation\nconst totalBorderSlot=innerWidth+wrapperWidth;// Wrapper div handles the \"extra\" border that appears when selected\n// Width is constant to prevent layout shifts, only color animates\nconst wrapperStyles={display:\"inline-flex\",borderRadius:config.borderRadius,borderWidth:wrapperWidth,borderStyle:wrapperBorderStyleResolved,cursor:\"pointer\"};const swatchStyles={width:config.size,height:config.size,borderRadius:adjustBorderRadius(config.borderRadius,totalBorderSlot),backgroundColor:colorValue||\"#cccccc\",borderWidth:innerWidth,borderStyle:innerBorderStyleResolved,display:\"block\",padding:0,margin:0,cursor:\"pointer\"};const borderTransition={duration:.2,ease:\"easeOut\"};function handleKeyDown(e){if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();props.onClick();}}return /*#__PURE__*/_jsx(motion.div,{style:wrapperStyles,animate:{borderColor:showWrapperBorder?isSelected?selectedBorderColor:hoverBorderColor:\"rgba(0, 0, 0, 0)\"},initial:false,whileTap:{scale:config.tapScale},transition:borderTransition,onClick:props.onClick,onPointerEnter:()=>setIsHovered(true),onPointerLeave:()=>setIsHovered(false),role:\"button\",tabIndex:0,\"aria-label\":props.ariaLabel,\"aria-pressed\":isSelected,onKeyDown:handleKeyDown,children:/*#__PURE__*/_jsx(motion.button,{type:\"button\",style:swatchStyles,initial:false,animate:{borderColor:isSelected?selectedBorderColor:isHovered?hoverBorderColor:defaultBorderColor},transition:borderTransition})});}// ------------------------------------------------------------ //\n// UTILITY FUNCTIONS\n// ------------------------------------------------------------ //\n/**\n * Extracts border width from BorderProps\n */function getBorderWidth(borderProps){if(borderProps.borderWidth!==undefined){return borderProps.borderWidth;}// Try to parse from shorthand border string\nif(borderProps.border){const match=borderProps.border.match(/^(\\d+(?:\\.\\d+)?)/);if(match){return parseFloat(match[1]);}}return 1;// fallback\n}/**\n * Extracts border style from BorderProps\n */function getBorderStyle(borderProps){if(borderProps.borderStyle){return borderProps.borderStyle;}// Try to parse from shorthand border string\nif(borderProps.border){const parts=borderProps.border.split(\" \");// Border shorthand is typically \"width style color\"\nif(parts.length>=2){return parts[1];}}return\"solid\";// fallback\n}/**\n * Extracts border color from BorderProps\n */function getBorderColor(borderProps){if(borderProps.borderColor){return borderProps.borderColor;}// Try to parse from shorthand border string\nif(borderProps.border){const parts=borderProps.border.split(\" \");// Border shorthand is typically \"width style color\"\nif(parts.length>=3){return parts.slice(2).join(\" \");}}return\"transparent\";}/**\n * Adjusts border radius to account for nested border\n * Subtracts the offset from numeric values to keep corners aligned\n */function adjustBorderRadius(borderRadius,offset){// Handle simple numeric values like \"8px\" or \"8\"\nconst match=borderRadius.match(/^(\\d+(?:\\.\\d+)?)(px|%|em|rem)?$/);if(match){const value=parseFloat(match[1]);const unit=match[2]||\"px\";const adjusted=Math.max(0,value-offset);return`${adjusted}${unit}`;}// For complex values like \"50%\", return as-is\nreturn borderRadius;}\nexport const __FramerMetadata__ = {\"exports\":{\"VariantColor\":{\"type\":\"reactComponent\",\"name\":\"VariantColor\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Variant_color.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{getOptionValuesFromTitle,findVariantByOptionValues,getLayoutStyle}from\"https://framerusercontent.com/modules/YJSlZPJ3OtkgZ7JnMbkR/nTiKI5ZTLCUnpRSRytRm/Utils.js\";import{VariantButton}from\"https://framerusercontent.com/modules/8tz291z0qufTiAyO29YU/AWBSLbzFNc2Br3YWcnZk/Variant_button.js\";import{VariantImage}from\"https://framerusercontent.com/modules/iesOg5jXxMF9FWC1YGiR/gtPVXBsJWvpsXUJFWUxV/Variant_image.js\";import{VariantColor}from\"https://framerusercontent.com/modules/Meh2p99DzON6Pbyel14V/CrsC5NplVA7L5tt9NSfw/Variant_color.js\";import{VariantDropdown}from\"https://framerusercontent.com/modules/YPQf3XlJIdM0syI4Nah6/9AhsKJVjEXQRAGU2JnFH/Variant_dropdown.js\";export function FilteredGroupView(props){const{targetGroup,variants,selectedVariantId,onVariantSelect,type,effectiveFilter,layoutConfig,buttonConfig,imageConfig,colorConfig,dropdownConfig,colorMapping,isOnFramerCanvas}=props;function getColorValueForOptionValue(optionValue){if(!colorMapping||colorMapping.length===0){return\"#cccccc\";}const mapping=colorMapping.find(m=>m.colorName===optionValue);return mapping?.colorValue||\"#cccccc\";}// Check if we should hide when only one option is available\nconst whenSingleImage=effectiveFilter.whenSingleImage||\"hide\";if(whenSingleImage===\"hide\"&&targetGroup.values.length===1){return null;}const selectedVariant=variants.find(v=>v.id===selectedVariantId);const selectedParts=getOptionValuesFromTitle(selectedVariant?.title||\"\");if(type===\"dropdown\"){const dropdownOptions=targetGroup.values.map(value=>({id:String(value),label:String(value)}));const selectedValue=String(selectedParts[targetGroup.index]||\"\");function handleDropdownSelect(value){const desired=[...selectedParts];desired[targetGroup.index]=value;const variant=findVariantByOptionValues(variants,desired)||variants.find(v=>{const parts=getOptionValuesFromTitle(v.title||\"\");return String(parts[targetGroup.index]||\"\")===value;});if(variant)onVariantSelect(variant.id);}return /*#__PURE__*/_jsx(VariantDropdown,{options:dropdownOptions,selectedId:selectedValue||dropdownOptions[0]?.id,onSelect:handleDropdownSelect,config:dropdownConfig,forceOpen:isOnFramerCanvas&&dropdownConfig.preview!==\"closed\"});}// For each value in the target group, pick a representative variant\nconst items=targetGroup.values.map(value=>{// Determine if this value is selected\nconst isSelectedValue=String(selectedParts[targetGroup.index]||\"\")===String(value);// Choose representative variant: keep other option values from selected variant when possible\nlet representative=null;if(selectedParts.length){const desired=[...selectedParts];desired[targetGroup.index]=value;representative=findVariantByOptionValues(variants,desired);}if(!representative){// Fallback to first variant matching just this group's value\nrepresentative=variants.find(v=>{const parts=getOptionValuesFromTitle(v.title||\"\");return String(parts[targetGroup.index]||\"\")===String(value);})||null;}const handleSelect=()=>{if(!representative)return;onVariantSelect(representative.id);};const key=`${targetGroup.name}-${value}`;const ariaLabel=`Select ${String(value)} ${targetGroup.name}`;if(type===\"image\"){return /*#__PURE__*/_jsx(VariantImage,{src:representative?.image?.url,alt:representative?.image?.altText||String(value),isSelected:isSelectedValue,onClick:handleSelect,ariaLabel:ariaLabel,config:imageConfig},key);}if(type===\"color\"){const colorValue=getColorValueForOptionValue(String(value));return /*#__PURE__*/_jsx(VariantColor,{colorValue:colorValue,colorName:String(value),isSelected:isSelectedValue,onClick:handleSelect,ariaLabel:ariaLabel,config:colorConfig},key);}return /*#__PURE__*/_jsx(VariantButton,{label:String(value),isSelected:isSelectedValue,onClick:handleSelect,ariaLabel:ariaLabel,config:buttonConfig},key);});return /*#__PURE__*/_jsx(\"div\",{style:layoutConfig?getLayoutStyle(layoutConfig):{display:\"flex\",flexWrap:\"wrap\",gap:4},children:items});}\nexport const __FramerMetadata__ = {\"exports\":{\"FilteredGroupView\":{\"type\":\"reactComponent\",\"name\":\"FilteredGroupView\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{VariantButton}from\"https://framerusercontent.com/modules/8tz291z0qufTiAyO29YU/AWBSLbzFNc2Br3YWcnZk/Variant_button.js\";import{VariantImage}from\"https://framerusercontent.com/modules/iesOg5jXxMF9FWC1YGiR/gtPVXBsJWvpsXUJFWUxV/Variant_image.js\";import{VariantColor}from\"https://framerusercontent.com/modules/Meh2p99DzON6Pbyel14V/CrsC5NplVA7L5tt9NSfw/Variant_color.js\";import{VariantDropdown}from\"https://framerusercontent.com/modules/YPQf3XlJIdM0syI4Nah6/9AhsKJVjEXQRAGU2JnFH/Variant_dropdown.js\";import{getOptionValuesFromTitle,getLayoutStyle}from\"https://framerusercontent.com/modules/YJSlZPJ3OtkgZ7JnMbkR/nTiKI5ZTLCUnpRSRytRm/Utils.js\";export function DefaultVariantView(props){const{variants,selectedVariantId,onVariantSelect,type,layoutConfig,buttonConfig,imageConfig,colorConfig,dropdownConfig,colorMapping,isOnFramerCanvas}=props;function getColorValueForVariant(variant){if(!colorMapping||colorMapping.length===0){return\"#cccccc\";}// Get the first option value from the variant title\n// For color variants, we assume the first option is the color\nconst optionValues=getOptionValuesFromTitle(variant.title||\"\");const colorName=optionValues[0]||\"\";// Find matching color mapping\nconst mapping=colorMapping.find(m=>m.colorName===colorName);return mapping?.colorValue||\"#cccccc\";}if(type===\"dropdown\"){return /*#__PURE__*/_jsx(VariantDropdown,{options:variants.map(v=>({id:v.id,label:v.title})),selectedId:selectedVariantId,onSelect:onVariantSelect,config:dropdownConfig,forceOpen:isOnFramerCanvas&&dropdownConfig.preview!==\"closed\"});}return /*#__PURE__*/_jsx(\"div\",{style:layoutConfig?getLayoutStyle(layoutConfig):{display:\"flex\",flexWrap:\"wrap\",gap:4},children:variants.map(variant=>{const isSelected=selectedVariantId===variant.id;const ariaLabel=`Select ${variant.title} variant`;if(type===\"image\"){return /*#__PURE__*/_jsx(VariantImage,{src:variant.image?.url,alt:variant.image?.altText||variant.title,isSelected:isSelected,onClick:()=>onVariantSelect(variant.id),ariaLabel:ariaLabel,config:imageConfig},variant.id);}if(type===\"color\"){const optionValues=getOptionValuesFromTitle(variant.title||\"\");const colorName=optionValues[0]||variant.title;const colorValue=getColorValueForVariant(variant);return /*#__PURE__*/_jsx(VariantColor,{colorValue:colorValue,colorName:colorName,isSelected:isSelected,onClick:()=>onVariantSelect(variant.id),ariaLabel:ariaLabel,config:colorConfig},variant.id);}return /*#__PURE__*/_jsx(VariantButton,{label:variant.title,isSelected:isSelected,onClick:()=>onVariantSelect(variant.id),ariaLabel:ariaLabel,config:buttonConfig},variant.id);})});}\nexport const __FramerMetadata__ = {\"exports\":{\"DefaultVariantView\":{\"type\":\"reactComponent\",\"name\":\"DefaultVariantView\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// ------------------------------------------------------------ //\n// TYPE DEFINITIONS\n// ------------------------------------------------------------ //\nimport{ControlType}from\"framer\";import{LAYER_WRAPPER_PROPERTY_CONTROLS}from\"https://framerusercontent.com/modules/0evMA5BbGcSJocTHhMA2/W7o2Az487E34eYHbWBNC/Shared_layer_wrapper.js\";import{SHOPIFY_DATA_DESCRIPTION,SUPPORT_CONTROL,VARIANT_IMAGE_MAPPING_DESCRIPTION,VARIANT_OPTIONS_DESCRIPTION}from\"https://framerusercontent.com/modules/G9UZNzEc4NZQrMJzPvWx/mIDGZDuYkLeEfvCEqoly/Shared_props.js\";import{SHARED_COLORS}from\"https://framerusercontent.com/modules/Nrs4jz2AAEOfEZRQEQij/7Ao2SBt1Ssf683HHXgzl/Shared_styles.js\";export const defaultLabelConfig={show:false,name:\"\",layout:{direction:\"column\",align:\"start\",justify:\"start\"},gap:6,textColor:\"#131313\"};// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\nexport const PROPERTY_CONTROLS={shopifyData:{type:ControlType.String,description:SHOPIFY_DATA_DESCRIPTION},variantImageMapping:{type:ControlType.String,title:\"Variant Image Mapping\",description:VARIANT_IMAGE_MAPPING_DESCRIPTION},variantOptions:{type:ControlType.String,title:\"Variant Options\",description:VARIANT_OPTIONS_DESCRIPTION},type:{type:ControlType.Enum,options:[\"button\",\"image\",\"color\",\"dropdown\"],optionTitles:[\"Button\",\"Image\",\"Color\",\"Dropdown\"],defaultValue:\"button\"},labelConfig:{type:ControlType.Object,title:\"🔖 Label\",buttonTitle:\"Layout, Font, Colors\",controls:{show:{type:ControlType.Boolean,title:\"Show Label\",defaultValue:false},name:{type:ControlType.String,title:\"Name\",placeholder:\"Color\",defaultValue:\"\",hidden:props=>!props.show},layout:{type:ControlType.Object,title:\"📐 Layout\",buttonTitle:\"Direction, Align, Distribution\",controls:{direction:{type:ControlType.Enum,title:\"Direction\",options:[\"column\",\"row\"],optionIcons:[\"direction-vertical\",\"direction-horizontal\"],defaultValue:\"column\",displaySegmentedControl:true},align:{type:ControlType.Enum,title:\"Align\",options:[\"start\",\"center\",\"end\"],optionTitles:[\"Start\",\"Center\",\"End\"],defaultValue:\"start\"},justify:{type:ControlType.Enum,title:\"Distribution\",options:[\"start\",\"center\",\"end\",\"space-between\"],optionTitles:[\"Start\",\"Center\",\"End\",\"Space Between\"],defaultValue:\"start\"}},hidden:props=>!props.show},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:6,min:0,max:100,step:1,unit:\"px\",hidden:props=>!props.show},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultFontSize:\"12px\",defaultValue:{fontSize:12,variant:\"Regular\",lineHeight:1.4,textAlign:\"left\"},hidden:props=>!props.show},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#131313\",hidden:props=>!props.show}},defaultValue:defaultLabelConfig},buttonConfig:{type:ControlType.Object,title:\"🎨 Styling\",buttonTitle:\"Colors, Padding, etc.\",controls:{widthType:{type:ControlType.Enum,title:\"Width Type\",options:[\"fit\",\"fill\",\"fixed\"],optionTitles:[\"Fit\",\"Fill\",\"Fixed\"],defaultValue:\"fixed\",displaySegmentedControl:true},width:{type:ControlType.Number,title:\"Width\",defaultValue:40,min:1,step:1,unit:\"px\",hidden:props=>props.widthType!==\"fixed\"},height:{type:ControlType.Number,title:\"Height\",defaultValue:30,min:1,step:1,unit:\"px\"},padding:{// @ts-expect-error - Padding is not a valid control type in this Framer npm version\ntype:ControlType.Padding,title:\"Padding\",defaultValue:\"0px\"},borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"6px\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\"},defaultStyles:{type:ControlType.Object,title:\"🎨 Default Styles\",buttonTitle:\"Colors, Border\",controls:{backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:SHARED_COLORS.background},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:SHARED_COLORS.foreground},border:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}}}},selectedStyles:{type:ControlType.Object,title:\"🎨 Selected Styles\",buttonTitle:\"Colors, Border\",controls:{backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:SHARED_COLORS.foreground},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:SHARED_COLORS.background},border:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground}}}},hoverStyles:{type:ControlType.Object,title:\"🎨 Hover Styles\",buttonTitle:\"Colors, Border\",controls:{backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:SHARED_COLORS.backgroundHover},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:SHARED_COLORS.foreground},border:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}}},description:\"Only applies when the button is not selected\"},tapScale:{type:ControlType.Number,title:\"Tap Scale\",defaultValue:.98,min:0,max:1,step:.01}},defaultValue:{padding:\"8px 16px 8px 16px\",borderRadius:6,defaultStyles:{backgroundColor:SHARED_COLORS.background,textColor:SHARED_COLORS.foreground,border:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}},selectedStyles:{backgroundColor:SHARED_COLORS.foreground,textColor:SHARED_COLORS.background,border:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground}},hoverStyles:{backgroundColor:SHARED_COLORS.backgroundHover,textColor:SHARED_COLORS.foreground,border:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}}},hidden:props=>props.type!==\"button\"},buttonLayout:{type:ControlType.Object,title:\"📐 Layout\",buttonTitle:\"Flex, Grid, Gap, etc.\",controls:{display:{type:ControlType.Enum,title:\"Display\",options:[\"flex\",\"grid\"],optionTitles:[\"Flex\",\"Grid\"],defaultValue:\"flex\",displaySegmentedControl:true},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"flex\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"row\",\"column\"],optionTitles:[\"Row\",\"Column\"],defaultValue:\"row\",displaySegmentedControl:true,hidden:props=>props.display!==\"flex\"},wrap:{type:ControlType.Boolean,title:\"Wrap\",defaultValue:true,hidden:props=>props.display!==\"flex\"},justifyContent:{type:ControlType.Enum,title:\"Justify\",options:[\"flex-start\",\"flex-end\",\"center\",\"space-between\",\"space-around\",\"space-evenly\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Space Between\",\"Space Around\",\"Space Evenly\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},alignItems:{type:ControlType.Enum,title:\"Align\",options:[\"flex-start\",\"flex-end\",\"center\",\"stretch\",\"baseline\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Stretch\",\"Baseline\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},columns:{type:ControlType.Number,title:\"Columns\",defaultValue:3,min:1,max:12,step:1,hidden:props=>props.display!==\"grid\",displayStepper:true},rowGap:{type:ControlType.Number,title:\"Row Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"},columnGap:{type:ControlType.Number,title:\"Column Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"}},defaultValue:{display:\"flex\",gap:4,direction:\"row\",wrap:true,justifyContent:\"flex-start\",alignItems:\"flex-start\",columns:3,rowGap:4,columnGap:4},hidden:props=>props.type!==\"button\"},imageConfig:{type:ControlType.Object,title:\"🎨 Styling\",buttonTitle:\"Size, Fit, Border, etc.\",controls:{width:{type:ControlType.Number,title:\"Width\",defaultValue:60,min:20,max:200,step:1},height:{type:ControlType.Number,title:\"Height\",defaultValue:60,min:20,max:200,step:1},imageFit:{type:ControlType.Enum,title:\"Image Fit\",options:[\"fill\",\"fit\",\"stretch\"],optionTitles:[\"Fill\",\"Fit\",\"Stretch\"],defaultValue:\"fill\"},focalPoint:{type:ControlType.Object,title:\"Focal Point\",buttonTitle:\"X, Y Position\",controls:{x:{type:ControlType.Number,title:\"X Position\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",description:\"Horizontal focal point (0% = left, 100% = right)\"},y:{type:ControlType.Number,title:\"Y Position\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",description:\"Vertical focal point (0% = top, 100% = bottom)\"}},hidden:props=>props.imageFit!==\"fill\",defaultValue:{x:50,y:50}},borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Border Radius\",defaultValue:\"6px\"},background:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"transparent\"},border:{type:ControlType.Object,title:\"Border\",controls:{default:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Default\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}},selected:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Selected\",defaultValue:{borderWidth:2,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground}},hover:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Hover\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover},description:\"Hover applies when the option is not selected\"}}},tapScale:{type:ControlType.Number,title:\"Tap Scale\",defaultValue:.98,min:0,max:1,step:.01}},defaultValue:{width:60,height:60,imageFit:\"fill\",focalPoint:{x:50,y:50},borderRadius:\"6px\",background:\"transparent\",border:{default:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover},selected:{borderWidth:2,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground},hover:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}}},hidden:props=>props.type!==\"image\"},imageLayout:{type:ControlType.Object,title:\"📐 Layout\",buttonTitle:\"Flex, Grid, Gap, etc.\",controls:{display:{type:ControlType.Enum,title:\"Display\",options:[\"flex\",\"grid\"],optionTitles:[\"Flex\",\"Grid\"],defaultValue:\"flex\",displaySegmentedControl:true},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"flex\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"row\",\"column\"],optionTitles:[\"Row\",\"Column\"],defaultValue:\"row\",displaySegmentedControl:true,hidden:props=>props.display!==\"flex\"},wrap:{type:ControlType.Boolean,title:\"Wrap\",defaultValue:true,hidden:props=>props.display!==\"flex\"},justifyContent:{type:ControlType.Enum,title:\"Justify\",options:[\"flex-start\",\"flex-end\",\"center\",\"space-between\",\"space-around\",\"space-evenly\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Space Between\",\"Space Around\",\"Space Evenly\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},alignItems:{type:ControlType.Enum,title:\"Align\",options:[\"flex-start\",\"flex-end\",\"center\",\"stretch\",\"baseline\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Stretch\",\"Baseline\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},columns:{type:ControlType.Number,title:\"Columns\",defaultValue:3,min:1,max:12,step:1,hidden:props=>props.display!==\"grid\",displayStepper:true},rowGap:{type:ControlType.Number,title:\"Row Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"},columnGap:{type:ControlType.Number,title:\"Column Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"}},defaultValue:{display:\"flex\",gap:4,direction:\"row\",wrap:true,justifyContent:\"flex-start\",alignItems:\"flex-start\",columns:3,rowGap:4,columnGap:4},hidden:props=>props.type!==\"image\"},colorMapping:{type:ControlType.Array,title:\"Color Mapping\",description:\"Map all Shopify variant option color names to color values\",control:{type:ControlType.Object,controls:{colorName:{type:ControlType.String,title:\"Color Name\",description:\"Must match exactly the Shopify option value\"},colorValue:{type:ControlType.Color,title:\"Color\"}}},hidden:props=>props.type!==\"color\"},colorConfig:{type:ControlType.Object,title:\"🎨 Styling\",buttonTitle:\"Size, Border, etc.\",controls:{size:{type:ControlType.Number,title:\"Size\",defaultValue:32,min:20,max:100,step:1,unit:\"px\"},borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Border Radius\",defaultValue:\"50%\"},border:{type:ControlType.Object,title:\"Border\",controls:{default:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Default\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}},selected:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Selected\",defaultValue:{borderWidth:2,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground}},hover:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Hover\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}}},description:\"Hover applies when the option is not selected\"},tapScale:{type:ControlType.Number,title:\"Tap Scale\",defaultValue:.98,min:0,max:1,step:.01}},defaultValue:{size:40,borderRadius:\"50%\",border:{default:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover},selected:{borderWidth:2,borderStyle:\"solid\",borderColor:SHARED_COLORS.foreground},hover:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}},tapScale:.98},hidden:props=>props.type!==\"color\"},colorLayout:{type:ControlType.Object,title:\"📐 Layout\",buttonTitle:\"Flex, Grid, Gap, etc.\",controls:{display:{type:ControlType.Enum,title:\"Display\",options:[\"flex\",\"grid\"],optionTitles:[\"Flex\",\"Grid\"],defaultValue:\"flex\",displaySegmentedControl:true},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"flex\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"row\",\"column\"],optionTitles:[\"Row\",\"Column\"],defaultValue:\"row\",displaySegmentedControl:true,hidden:props=>props.display!==\"flex\"},wrap:{type:ControlType.Boolean,title:\"Wrap\",defaultValue:true,hidden:props=>props.display!==\"flex\"},justifyContent:{type:ControlType.Enum,title:\"Justify\",options:[\"flex-start\",\"flex-end\",\"center\",\"space-between\",\"space-around\",\"space-evenly\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Space Between\",\"Space Around\",\"Space Evenly\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},alignItems:{type:ControlType.Enum,title:\"Align\",options:[\"flex-start\",\"flex-end\",\"center\",\"stretch\",\"baseline\"],optionTitles:[\"Start\",\"End\",\"Center\",\"Stretch\",\"Baseline\"],defaultValue:\"flex-start\",hidden:props=>props.display!==\"flex\"},columns:{type:ControlType.Number,title:\"Columns\",defaultValue:3,min:1,max:12,step:1,hidden:props=>props.display!==\"grid\",displayStepper:true},rowGap:{type:ControlType.Number,title:\"Row Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"},columnGap:{type:ControlType.Number,title:\"Column Gap\",defaultValue:4,min:0,max:100,step:1,unit:\"px\",displayStepper:true,hidden:props=>props.display!==\"grid\"}},defaultValue:{display:\"flex\",gap:4,direction:\"row\",wrap:true,justifyContent:\"flex-start\",alignItems:\"flex-start\",columns:3,rowGap:4,columnGap:4},hidden:props=>props.type!==\"color\"},dropdownConfig:{type:ControlType.Object,title:\"🎨 Styling\",buttonTitle:\"Size, Border, etc.\",controls:{widthType:{type:ControlType.Enum,title:\"Width Type\",options:[\"fit\",\"fill\",\"fixed\"],optionTitles:[\"Fit\",\"Fill\",\"Fixed\"],defaultValue:\"fill\",displaySegmentedControl:true},width:{type:ControlType.Number,title:\"Width\",defaultValue:160,min:40,step:1,unit:\"px\",hidden:props=>props.widthType!==\"fixed\"},height:{type:ControlType.Number,title:\"Height\",defaultValue:40,min:20,step:1,unit:\"px\"},padding:{// @ts-expect-error - Padding is not a valid control type in this Framer npm version\ntype:ControlType.Padding,title:\"Padding\",defaultValue:\"0px 12px 0px 12px\"},borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"6px\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\"},triggerStyles:{type:ControlType.Object,title:\"🎨 Trigger Styles\",buttonTitle:\"Colors, Border\",controls:{backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:SHARED_COLORS.background},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:SHARED_COLORS.foreground},border:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}},chevronColor:{type:ControlType.Color,title:\"Chevron Color\",defaultValue:SHARED_COLORS.foreground},chevronSize:{type:ControlType.Number,title:\"Chevron Size\",defaultValue:12,min:4,max:32,step:1,unit:\"px\"},chevronTransitionDuration:{type:ControlType.Number,title:\"Chevron Speed\",defaultValue:200,min:0,max:1e3,step:10,unit:\"ms\"}}},listStyles:{type:ControlType.Object,title:\"🎨 Dropdown List\",buttonTitle:\"Colors, Size, Border\",controls:{borderRadius:{// @ts-expect-error - BorderRadius is not a valid control type in this Framer npm version\ntype:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"6px\"},maxHeight:{type:ControlType.Number,title:\"Max Height\",defaultValue:200,min:60,step:4,unit:\"px\"},optionHeight:{type:ControlType.Number,title:\"Option Height\",defaultValue:36,min:20,step:1,unit:\"px\"},optionPadding:{// @ts-expect-error - Padding is not a valid control type in this Framer npm version\ntype:ControlType.Padding,title:\"Option Padding\",defaultValue:\"0px 12px 0px 12px\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#ffffff\"},border:{// @ts-expect-error - Border is not a valid control type in this Framer npm version\ntype:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover}},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:SHARED_COLORS.foreground},hoverBackgroundColor:{type:ControlType.Color,title:\"Hover Background\",defaultValue:SHARED_COLORS.background},hoverTextColor:{type:ControlType.Color,title:\"Hover Text\",defaultValue:SHARED_COLORS.foreground},selectedBackgroundColor:{type:ControlType.Color,title:\"Selected Background\",defaultValue:SHARED_COLORS.foreground},selectedTextColor:{type:ControlType.Color,title:\"Selected Text\",defaultValue:SHARED_COLORS.background}}},preview:{type:ControlType.Enum,title:\"Preview\",options:[\"open\",\"closed\"],optionTitles:[\"Open\",\"Closed\"],defaultValue:\"open\",displaySegmentedControl:true}},defaultValue:{widthType:\"fill\",height:40,padding:\"0px 12px 0px 12px\",borderRadius:6,preview:\"open\",triggerStyles:{backgroundColor:SHARED_COLORS.background,textColor:SHARED_COLORS.foreground,border:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover},chevronColor:SHARED_COLORS.foreground,chevronSize:12,chevronTransitionDuration:200},listStyles:{backgroundColor:\"#ffffff\",border:{borderWidth:1,borderStyle:\"solid\",borderColor:SHARED_COLORS.backgroundHover},borderRadius:6,maxHeight:200,optionHeight:36,optionPadding:\"0px 12px 0px 12px\",textColor:SHARED_COLORS.foreground,hoverBackgroundColor:SHARED_COLORS.background,hoverTextColor:SHARED_COLORS.foreground,selectedBackgroundColor:SHARED_COLORS.foreground,selectedTextColor:SHARED_COLORS.background}},hidden:props=>props.type!==\"dropdown\"},filterType:{type:ControlType.Enum,options:[\"all\",\"contains\",\"doesn't contain\"],optionTitles:[\"All\",\"Contains\",\"Doesn't contain\"],defaultValue:\"all\"},filterGroupTitles:{type:ControlType.String,title:\"Filter Group Titles\",description:\"e.g. Color, Size, etc. Must match the title of the Shopify variant group exactly.\",hidden:props=>props.filterType===\"all\"},...LAYER_WRAPPER_PROPERTY_CONTROLS,...SUPPORT_CONTROL};\nexport const __FramerMetadata__ = {\"exports\":{\"VariantColorProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantDropdownProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FilterVariantGroups\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShopifyVariant\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LabelConfigLayout\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantColorConfigProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantDropdownConfigProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PROPERTY_CONTROLS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantLayoutConfig\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantButtonConfigProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ColorMapping\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LabelConfig\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantButtonProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantImageProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantSelectorProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"InferredOptionGroup\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VariantImageConfigProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CmsVariantOption\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultLabelConfig\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Types_controls.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useMemo}from\"react\";import{addPropertyControls}from\"framer\";import{LayerWrapper}from\"https://framerusercontent.com/modules/0evMA5BbGcSJocTHhMA2/W7o2Az487E34eYHbWBNC/Shared_layer_wrapper.js\";import{useProductSelectionStore}from\"https://framerusercontent.com/modules/8l7kldZFdo4Q33wHQBGB/MEUHNK3OpmhBSPhZhnEx/Product_selection_store.js\";import{parseShopifyData}from\"https://framerusercontent.com/modules/Vu8sM3DwKDdSi2bltsPi/rkjqZclSkQOy0QCpfAmc/Parse_shopify_data.js\";import{isOnFramerCanvasFn}from\"https://framerusercontent.com/modules/0cFx6PDS8kp3yxNfnoIw/3wFcPS10LYSFljb1q710/Framer_utils.js\";import{useParsedVariantOptions,useInferredOptionGroups,useEffectiveFilter,useTargetGroup,useGallerySync,useFilterVisibility}from\"https://framerusercontent.com/modules/9b4zJBr97cGoCaUw99YG/zHtSZJ3YHpM5nW9Vtm33/Hooks.js\";import{extractImageNumbersForVariant,dispatchGallerySyncEvent}from\"https://framerusercontent.com/modules/YJSlZPJ3OtkgZ7JnMbkR/nTiKI5ZTLCUnpRSRytRm/Utils.js\";import{PlaceholderState}from\"https://framerusercontent.com/modules/W4tqGjcLIoIG56X9KCvh/aGiJkVtdGHsS93FA6kJF/Placeholder_state.js\";import{FilteredGroupView}from\"https://framerusercontent.com/modules/2trYS2Zee5YYYduPj7X7/QOtcrTbxpUVTBbqQ8VRN/Filtered_group_view.js\";import{DefaultVariantView}from\"https://framerusercontent.com/modules/O4SyIrImO0lFCBVnjE4R/yP8qXju2JC8RCFOvTDQn/Default_variant_view.js\";import{defaultLabelConfig,PROPERTY_CONTROLS}from\"https://framerusercontent.com/modules/GEHbnmiI1XMToLgGgCcJ/ym8mZVoeaba1y3bYc8ex/Types_controls.js\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerDisableUnlink\n */export default function VariantSelector(props){// Parse and prepare data (must happen before any early returns for hooks)\nconst shopifyData=parseShopifyData(props.shopifyData||\"\");const hasMultipleVariants=(shopifyData?.variants?.length||0)>1;const variants=shopifyData?.variants||[];// Get selection state (all hooks must be called unconditionally)\nconst selectedVariantId=useProductSelectionStore(state=>state.getSelectedVariant(shopifyData?.id,variants));const setSelectedVariant=useProductSelectionStore(state=>state.setSelectedVariant);// Parse CMS variant options and infer groups\nconst cmsVariantOptions=useParsedVariantOptions(props.variantOptions);const inferredOptionGroups=useInferredOptionGroups(variants,cmsVariantOptions);// Determine filter settings and target group\nconst effectiveFilter=useEffectiveFilter(props.filterGroups,props.filterGroupTitles,props.filterType);const targetGroup=useTargetGroup(effectiveFilter,inferredOptionGroups);// Check filter visibility rules\nconst groupNamesLower=useMemo(()=>inferredOptionGroups.map(g=>g.name.toLowerCase()),[inferredOptionGroups]);const isVisible=useFilterVisibility(effectiveFilter,groupNamesLower);// Keep gallery in sync with variant selection\nuseGallerySync(props.variantImageMapping,selectedVariantId,shopifyData?.id);// Now we can do conditional rendering (after all hooks)\nconst isOnFramerCanvas=isOnFramerCanvasFn();const labelConfig={...defaultLabelConfig,...props.labelConfig??{}};const labelLayout=labelConfig.layout??defaultLabelConfig.layout;const labelGap=labelConfig.gap??defaultLabelConfig.gap;const showLabel=labelConfig.show;const labelName=labelConfig.name??defaultLabelConfig.name;const flexAlignMap={start:\"flex-start\",center:\"center\",end:\"flex-end\"};const flexJustifyMap={start:\"flex-start\",center:\"center\",end:\"flex-end\",\"space-between\":\"space-between\"};function renderWithLabel(content){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:labelLayout.direction,alignItems:flexAlignMap[labelLayout.align],justifyContent:flexJustifyMap[labelLayout.justify],gap:labelGap,width:\"100%\",height:\"100%\"},children:[showLabel&&/*#__PURE__*/_jsx(\"div\",{style:{color:labelConfig.textColor??\"#131313\",flexShrink:0,whiteSpace:\"nowrap\",...labelConfig.font},children:labelName}),content]});}// Show placeholder when on Framer canvas without data\nif(isOnFramerCanvas&&!props.shopifyData){return /*#__PURE__*/_jsx(LayerWrapper,{layerStyles:props.layerStyles,topBottomContent:props.topBottomContent,children:renderWithLabel(/*#__PURE__*/_jsx(PlaceholderState,{type:props.type,buttonConfig:props.buttonConfig,imageConfig:props.imageConfig,colorConfig:props.colorConfig,dropdownConfig:props.dropdownConfig,buttonLayout:props.buttonLayout,imageLayout:props.imageLayout,colorLayout:props.colorLayout}))});}// Handle variant selection\nfunction handleVariantSelect(variantId){setSelectedVariant(shopifyData?.id,variantId);// Dispatch gallery sync event if mapping exists\nif(typeof window===\"undefined\")return;if(!props.variantImageMapping||!shopifyData?.id)return;const imageNumbersForVariant=extractImageNumbersForVariant(props.variantImageMapping,variantId);const firstImageNumber=imageNumbersForVariant[0];if(firstImageNumber){dispatchGallerySyncEvent(shopifyData.id,Number(firstImageNumber));}}// Early returns for edge cases\nif(!isVisible)return null;if(!hasMultipleVariants)return null;const layoutConfig=props.type===\"button\"?props.buttonLayout:props.type===\"image\"?props.imageLayout:props.type===\"color\"?props.colorLayout:null;// Render filtered group view when filter is active\nif(effectiveFilter.filterType===\"contains\"&&targetGroup){return /*#__PURE__*/_jsx(LayerWrapper,{layerStyles:props.layerStyles,topBottomContent:props.topBottomContent,children:renderWithLabel(/*#__PURE__*/_jsx(FilteredGroupView,{targetGroup:targetGroup,variants:variants,selectedVariantId:selectedVariantId,onVariantSelect:handleVariantSelect,type:props.type,effectiveFilter:effectiveFilter,layoutConfig:layoutConfig,buttonConfig:props.buttonConfig,imageConfig:props.imageConfig,colorConfig:props.colorConfig,dropdownConfig:props.dropdownConfig,colorMapping:props.colorMapping,isOnFramerCanvas:isOnFramerCanvas}))});}// Render default view (all variants)\nreturn /*#__PURE__*/_jsx(LayerWrapper,{layerStyles:props.layerStyles,topBottomContent:props.topBottomContent,children:renderWithLabel(/*#__PURE__*/_jsx(DefaultVariantView,{variants:variants,selectedVariantId:selectedVariantId,onVariantSelect:handleVariantSelect,type:props.type,layoutConfig:layoutConfig,buttonConfig:props.buttonConfig,imageConfig:props.imageConfig,colorConfig:props.colorConfig,dropdownConfig:props.dropdownConfig,colorMapping:props.colorMapping,isOnFramerCanvas:isOnFramerCanvas}))});}addPropertyControls(VariantSelector,PROPERTY_CONTROLS);VariantSelector.displayName=\"Variant Selector\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VariantSelector\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}