@anker-in/headless-ui 1.3.31 → 1.3.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var d=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var E=(e,n)=>{for(var r in n)d(e,r,{get:n[r],enumerable:!0})},I=(e,n,r,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of b(n))!L.call(e,i)&&i!==r&&d(e,i,{get:()=>n[i],enumerable:!(t=S(n,i))||t.enumerable});return e};var P=e=>I(d({},"__esModule",{value:!0}),e);var A={};E(A,{formatPrice:()=>p,formatVariantPrice:()=>M,getFirstAvailableVariant:()=>C,getVariantBySku:()=>O,getVariantFromSelectedOptions:()=>F,languageMap:()=>f,languageTerritory:()=>m,optionsConstructor:()=>v});module.exports=P(A);var l=require("../const.js");function v(e){return e.reduce((n,r)=>(n[r.name]=r.values[0].label,n),{})}const C=e=>e.variants.find(n=>n.availableForSale)||e.variants[0],O=(e,n)=>e.variants.find(r=>r.sku===n),f={us:"en-US",uk:"en-GB",ca:"en-CA",au:"AU","eu-en":"en","eu-fr":"fr-FR",fr:"FR","ca-fr":"FR","nl-fr":"FR",my:"MY",it:"IT",vn:"VN",es:"es-ES","eu-it":"it-IT","eu-de":"de-DE",de:"de-DE","eu-es":"es-ES","cz-en":"en-CZ",nl:"nl-NL","dk-en":"en-DK","gr-en":"en-GR","mk-en":"en-MK","hu-en":"en-HU","se-en":"en-SE","hr-en":"en-HR","bg-en":"en-BG","ee-en":"en-EE","fi-en":"en-FI","lt-en":"en-LT",pl:"pl-PL","ro-en":"en-RO","si-en":"en-SI","sk-en":"en-SK","no-en":"en-NO","ad-en":"en-AD","al-en":"en-AL","ba-en":"en-BA","me-en":"en-ME","rs-en":"en-RS","gl-en":"en-GL","is-en":"en-IS","ua-en":"en-UA","by-en":"en-BY","md-en":"en-MD","lv-en":"en-LV","at-de":"de-AT","lu-de":"de-LU","li-de":"de-LI","va-it":"it-VA","sm-it":"it-SM","be-nl":"nl-BE","ae-en":"en-AE",nz:"en-NZ","sg-en":"en-SG","sa-en":"en-SA","vn-vi":"vi-VN",ie:"en-IE",tw:"zh-TW"},m=e=>(f[e]||console.warn(`[formatPrice] Unknown locale "${e}", falling back to en-US`),f[e]||"en-US");function p({amount:e,currencyCode:n,locale:r,maximumFractionDigits:t,minimumFractionDigits:i,removeTrailingZeros:o=!1}){const s=n?.trim()||"USD",c=m(r);let u;try{u=new Intl.NumberFormat(c,{style:"currency",currency:s,minimumFractionDigits:t===0?0:i,maximumFractionDigits:t})}catch{u=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:t===0?0:i,maximumFractionDigits:t})}let a=u.format(e);return["de-DE","fr-FR","it-IT","es-ES","nl-NL","de-AT","de-LU","de-LI","nl-BE","pl-PL","vi-VN"].includes(c)&&(a=a?.toString()?.replace(/[\s\u00A0\u202F]/g,"")),o&&(a=a.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),a}function M({amount:e,baseAmount:n,currencyCode:r,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:s}){if(typeof Intl>"u")return{price:`${l.PRICE_SYMBOL[t]}${e}`,basePrice:`${l.PRICE_SYMBOL[t]}${n}`,discount:`${l.PRICE_SYMBOL[t]}${n-e||0}`};const c=n>e,u=new Intl.NumberFormat(m(t),{style:"percent"}),a=c?u.format((n-e)/n):null,y=p({amount:e,currencyCode:r,locale:t,removeTrailingZeros:s}),g=c?p({amount:n,currencyCode:r,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:s}):void 0;return{price:y,basePrice:g,discount:a}}function F({product:e,selectedOptions:n}){return e.variants.find(r=>Object.entries(n).every(([t,i])=>r.options.find(o=>{if(o.__typename==="MultipleChoiceOption"&&o.name===t)return o.values.find(s=>s.label===i)})))}
1
+ "use strict";var d=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var L=(e,n)=>{for(var r in n)d(e,r,{get:n[r],enumerable:!0})},I=(e,n,r,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of b(n))!E.call(e,i)&&i!==r&&d(e,i,{get:()=>n[i],enumerable:!(t=S(n,i))||t.enumerable});return e};var P=e=>I(d({},"__esModule",{value:!0}),e);var A={};L(A,{formatPrice:()=>p,formatVariantPrice:()=>M,getFirstAvailableVariant:()=>C,getVariantBySku:()=>O,getVariantFromSelectedOptions:()=>F,languageMap:()=>f,languageTerritory:()=>m,optionsConstructor:()=>v});module.exports=P(A);var l=require("../const.js");function v(e){return e.reduce((n,r)=>(n[r.name]=r.values[0].label,n),{})}const C=e=>e.variants.find(n=>n.availableForSale)||e.variants[0],O=(e,n)=>e.variants.find(r=>r.sku===n),f={us:"en-US",uk:"en-GB",ca:"en-CA",au:"AU","eu-en":"en","eu-fr":"fr-FR",fr:"FR","ca-fr":"FR","nl-fr":"FR",my:"MY",it:"IT",vn:"VN",es:"es-ES","eu-it":"it-IT","eu-de":"de-DE",de:"de-DE","eu-es":"es-ES","cz-en":"en-CZ",nl:"nl-NL","dk-en":"en-DK","gr-en":"en-GR","mk-en":"en-MK","hu-en":"en-HU","se-en":"en-SE","hr-en":"en-HR","bg-en":"en-BG","ee-en":"en-EE","fi-en":"en-FI","lt-en":"en-LT",pl:"pl-PL","ro-en":"en-RO","si-en":"en-SI","sk-en":"en-SK","no-en":"en-NO","ad-en":"en-AD","al-en":"en-AL","ba-en":"en-BA","me-en":"en-ME","rs-en":"en-RS","gl-en":"en-GL","is-en":"en-IS","ua-en":"en-UA","by-en":"en-BY","md-en":"en-MD","lv-en":"en-LV","at-de":"de-AT","lu-de":"de-LU","li-de":"de-LI","va-it":"it-VA","sm-it":"it-SM","be-nl":"nl-BE","ae-en":"en-AE",nz:"en-NZ","sg-en":"en-SG","sa-en":"en-SA","vn-vi":"vi-VN",ie:"en-IE",tw:"zh-TW"},m=e=>(f[e]||console.warn(`[formatPrice] Unknown locale "${e}", falling back to en-US`),f[e]||"en-US");function p({amount:e,currencyCode:n,locale:r,maximumFractionDigits:t,minimumFractionDigits:i,removeTrailingZeros:o=!1}){const s=n?.trim()||"USD",c=m(r);let u;try{u=new Intl.NumberFormat(c,{style:"currency",currency:s,minimumFractionDigits:t===0?0:i,maximumFractionDigits:t})}catch{u=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:t===0?0:i,maximumFractionDigits:t})}let a=u.format(e);return["de-DE","fr-FR","it-IT","es-ES","de-AT","de-LU","de-LI","nl-BE","pl-PL","vi-VN"].includes(c)&&(a=a?.toString()?.replace(/[\s\u00A0\u202F]/g,"")),o&&(a=a.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),a}function M({amount:e,baseAmount:n,currencyCode:r,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:s}){if(typeof Intl>"u")return{price:`${l.PRICE_SYMBOL[t]}${e}`,basePrice:`${l.PRICE_SYMBOL[t]}${n}`,discount:`${l.PRICE_SYMBOL[t]}${n-e||0}`};const c=n>e,u=new Intl.NumberFormat(m(t),{style:"percent"}),a=c?u.format((n-e)/n):null,y=p({amount:e,currencyCode:r,locale:t,removeTrailingZeros:s}),g=c?p({amount:n,currencyCode:r,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:s}):void 0;return{price:y,basePrice:g,discount:a}}function F({product:e,selectedOptions:n}){return e.variants.find(r=>Object.entries(n).every(([t,i])=>r.options.find(o=>{if(o.__typename==="MultipleChoiceOption"&&o.name===t)return o.values.find(s=>s.label===i)})))}
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/biz-components/Listing/utils/index.ts"],
4
- "sourcesContent": ["import { PRICE_SYMBOL } from '../const.js'\nimport type { Options, Product, ProductOption, ProductVariant } from '../types/product'\n\nexport function optionsConstructor(options: ProductOption[]): Options {\n return options.reduce((pre: any, cur: any) => {\n pre[cur.name] = cur.values[0].label\n return pre\n }, {})\n}\n\n/**\n * Returns the first available variant of a product.\n * If no variant is available, it returns the first variant in the list.\n *\n * @param product - The product object.\n * @returns The first available variant of the product.\n */\nexport const getFirstAvailableVariant = (product: Product) =>\n product.variants.find((variant: ProductVariant) => variant.availableForSale) || product.variants[0]\n\nexport const getVariantBySku = (product: Product, sku: string) =>\n product.variants.find((variant: ProductVariant) => variant.sku === sku)\n\nexport const languageMap: { [key: string]: string } = {\n us: 'en-US',\n uk: 'en-GB',\n ca: 'en-CA',\n au: 'AU',\n 'eu-en': 'en',\n 'eu-fr': 'fr-FR',\n fr: 'FR',\n 'ca-fr': 'FR',\n 'nl-fr': 'FR',\n my: 'MY',\n it: 'IT',\n vn: 'VN',\n es: 'es-ES',\n 'eu-it': 'it-IT',\n 'eu-de': 'de-DE',\n de: 'de-DE',\n 'eu-es': 'es-ES',\n 'cz-en': 'en-CZ',\n nl: 'nl-NL',\n 'dk-en': 'en-DK',\n 'gr-en': 'en-GR',\n 'mk-en': 'en-MK',\n 'hu-en': 'en-HU',\n 'se-en': 'en-SE',\n 'hr-en': 'en-HR',\n 'bg-en': 'en-BG',\n 'ee-en': 'en-EE',\n 'fi-en': 'en-FI',\n 'lt-en': 'en-LT',\n pl: 'pl-PL',\n 'ro-en': 'en-RO',\n 'si-en': 'en-SI',\n 'sk-en': 'en-SK',\n 'no-en': 'en-NO',\n 'ad-en': 'en-AD',\n 'al-en': 'en-AL',\n 'ba-en': 'en-BA',\n 'me-en': 'en-ME',\n 'rs-en': 'en-RS',\n 'gl-en': 'en-GL',\n 'is-en': 'en-IS',\n 'ua-en': 'en-UA',\n 'by-en': 'en-BY',\n 'md-en': 'en-MD',\n 'lv-en': 'en-LV',\n 'at-de': 'de-AT',\n 'lu-de': 'de-LU',\n 'li-de': 'de-LI',\n 'va-it': 'it-VA',\n 'sm-it': 'it-SM',\n 'be-nl': 'nl-BE',\n 'ae-en': 'en-AE',\n nz: 'en-NZ',\n 'sg-en': 'en-SG',\n 'sa-en': 'en-SA',\n 'vn-vi': 'vi-VN',\n ie: 'en-IE',\n tw: 'zh-TW',\n}\n\nexport const languageTerritory = (locale: string) => {\n if (!languageMap[locale]) {\n console.warn(`[formatPrice] Unknown locale \"${locale}\", falling back to en-US`)\n }\n return languageMap[locale] || 'en-US'\n}\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const validCurrencyCode = currencyCode?.trim() || 'USD'\n const validLocale = languageTerritory(locale)\n\n let formatCurrency: Intl.NumberFormat\n try {\n formatCurrency = new Intl.NumberFormat(validLocale, {\n style: 'currency',\n currency: validCurrencyCode,\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n } catch {\n // Fallback to en-US with USD if locale/currency combination is invalid\n formatCurrency = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n }\n\n let formattedValue = formatCurrency.format(amount)\n\n const COMMA_DECIMAL_LOCALES = [\n 'de-DE',\n 'fr-FR',\n 'it-IT',\n 'es-ES',\n 'nl-NL',\n 'de-AT',\n 'de-LU',\n 'de-LI',\n 'nl-BE',\n 'pl-PL',\n 'vi-VN',\n ]\n if (COMMA_DECIMAL_LOCALES.includes(validLocale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s\\u00A0\\u202F]/g, '')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n // eslint-disable-next-line no-useless-escape\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n // eslint-disable-next-line no-useless-escape\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\nexport function getVariantFromSelectedOptions({\n product,\n selectedOptions,\n}: {\n product: Product\n selectedOptions: Record<string, string>\n}) {\n return product.variants.find(variant => {\n return Object.entries(selectedOptions).every(([key, value]) =>\n variant.options.find(option => {\n if (option.__typename === 'MultipleChoiceOption' && option.name === key) {\n return option.values.find(v => v.label === value)\n }\n })\n )\n })\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { PRICE_SYMBOL } from '../const.js'\nimport type { Options, Product, ProductOption, ProductVariant } from '../types/product'\n\nexport function optionsConstructor(options: ProductOption[]): Options {\n return options.reduce((pre: any, cur: any) => {\n pre[cur.name] = cur.values[0].label\n return pre\n }, {})\n}\n\n/**\n * Returns the first available variant of a product.\n * If no variant is available, it returns the first variant in the list.\n *\n * @param product - The product object.\n * @returns The first available variant of the product.\n */\nexport const getFirstAvailableVariant = (product: Product) =>\n product.variants.find((variant: ProductVariant) => variant.availableForSale) || product.variants[0]\n\nexport const getVariantBySku = (product: Product, sku: string) =>\n product.variants.find((variant: ProductVariant) => variant.sku === sku)\n\nexport const languageMap: { [key: string]: string } = {\n us: 'en-US',\n uk: 'en-GB',\n ca: 'en-CA',\n au: 'AU',\n 'eu-en': 'en',\n 'eu-fr': 'fr-FR',\n fr: 'FR',\n 'ca-fr': 'FR',\n 'nl-fr': 'FR',\n my: 'MY',\n it: 'IT',\n vn: 'VN',\n es: 'es-ES',\n 'eu-it': 'it-IT',\n 'eu-de': 'de-DE',\n de: 'de-DE',\n 'eu-es': 'es-ES',\n 'cz-en': 'en-CZ',\n nl: 'nl-NL',\n 'dk-en': 'en-DK',\n 'gr-en': 'en-GR',\n 'mk-en': 'en-MK',\n 'hu-en': 'en-HU',\n 'se-en': 'en-SE',\n 'hr-en': 'en-HR',\n 'bg-en': 'en-BG',\n 'ee-en': 'en-EE',\n 'fi-en': 'en-FI',\n 'lt-en': 'en-LT',\n pl: 'pl-PL',\n 'ro-en': 'en-RO',\n 'si-en': 'en-SI',\n 'sk-en': 'en-SK',\n 'no-en': 'en-NO',\n 'ad-en': 'en-AD',\n 'al-en': 'en-AL',\n 'ba-en': 'en-BA',\n 'me-en': 'en-ME',\n 'rs-en': 'en-RS',\n 'gl-en': 'en-GL',\n 'is-en': 'en-IS',\n 'ua-en': 'en-UA',\n 'by-en': 'en-BY',\n 'md-en': 'en-MD',\n 'lv-en': 'en-LV',\n 'at-de': 'de-AT',\n 'lu-de': 'de-LU',\n 'li-de': 'de-LI',\n 'va-it': 'it-VA',\n 'sm-it': 'it-SM',\n 'be-nl': 'nl-BE',\n 'ae-en': 'en-AE',\n nz: 'en-NZ',\n 'sg-en': 'en-SG',\n 'sa-en': 'en-SA',\n 'vn-vi': 'vi-VN',\n ie: 'en-IE',\n tw: 'zh-TW',\n}\n\nexport const languageTerritory = (locale: string) => {\n if (!languageMap[locale]) {\n console.warn(`[formatPrice] Unknown locale \"${locale}\", falling back to en-US`)\n }\n return languageMap[locale] || 'en-US'\n}\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const validCurrencyCode = currencyCode?.trim() || 'USD'\n const validLocale = languageTerritory(locale)\n\n let formatCurrency: Intl.NumberFormat\n try {\n formatCurrency = new Intl.NumberFormat(validLocale, {\n style: 'currency',\n currency: validCurrencyCode,\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n } catch {\n // Fallback to en-US with USD if locale/currency combination is invalid\n formatCurrency = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n }\n\n let formattedValue = formatCurrency.format(amount)\n\n const COMMA_DECIMAL_LOCALES = [\n 'de-DE',\n 'fr-FR',\n 'it-IT',\n 'es-ES',\n // 'nl-NL',\n 'de-AT',\n 'de-LU',\n 'de-LI',\n 'nl-BE',\n 'pl-PL',\n 'vi-VN',\n ]\n if (COMMA_DECIMAL_LOCALES.includes(validLocale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s\\u00A0\\u202F]/g, '')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n // eslint-disable-next-line no-useless-escape\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n // eslint-disable-next-line no-useless-escape\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\nexport function getVariantFromSelectedOptions({\n product,\n selectedOptions,\n}: {\n product: Product\n selectedOptions: Record<string, string>\n}) {\n return product.variants.find(variant => {\n return Object.entries(selectedOptions).every(([key, value]) =>\n variant.options.find(option => {\n if (option.__typename === 'MultipleChoiceOption' && option.name === key) {\n return option.values.find(v => v.label === value)\n }\n })\n )\n })\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["utils_exports", "__export", "formatPrice", "formatVariantPrice", "getFirstAvailableVariant", "getVariantBySku", "getVariantFromSelectedOptions", "languageMap", "languageTerritory", "optionsConstructor", "__toCommonJS", "import_const", "options", "pre", "cur", "product", "variant", "sku", "locale", "amount", "currencyCode", "maximumFractionDigits", "minimumFractionDigits", "removeTrailingZeros", "validCurrencyCode", "validLocale", "formatCurrency", "formattedValue", "baseAmount", "hasDiscount", "formatDiscount", "discount", "price", "basePrice", "selectedOptions", "key", "value", "option", "v"]
7
7
  }
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
3
3
  import { type VariantProps } from 'class-variance-authority';
4
4
  declare const checkboxVariants: (props?: ({
5
- checkedColor?: "default" | "brand" | null | undefined;
5
+ checkedColor?: "brand" | "neutral" | null | undefined;
6
6
  size?: "base" | "lg" | "sm" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, VariantProps<typeof checkboxVariants> {
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var p=Object.create;var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var o in t)s(e,o,{get:t[o],enumerable:!0})},n=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of k(t))!u.call(e,i)&&i!==o&&s(e,i,{get:()=>t[i],enumerable:!(a=m(t,i))||a.enumerable});return e};var d=(e,t,o)=>(o=e!=null?p(x(e)):{},n(t||!e||!e.__esModule?s(o,"default",{value:e,enumerable:!0}):o,e)),v=e=>n(s({},"__esModule",{value:!0}),e);var w={};g(w,{default:()=>R});module.exports=v(w);var r=require("react/jsx-runtime"),C=d(require("react")),b=d(require("@radix-ui/react-checkbox")),c=require("../helpers/index.js"),f=require("class-variance-authority");const y=e=>(0,r.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:(0,r.jsx)("path",{d:"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z",fill:"currentColor"})}),P=(0,f.cva)("border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{default:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary",brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"default",size:"base"}}),l=C.forwardRef(({className:e,size:t,checkedColor:o,iconClassName:a,...i},h)=>(0,r.jsx)(b.Root,{ref:h,className:(0,c.cn)(P({size:t,checkedColor:o}),e),...i,children:(0,r.jsx)(b.Indicator,{className:(0,c.cn)("flex size-full items-center justify-center text-current"),children:(0,r.jsx)(y,{width:16,height:12,className:a})})}));l.displayName="Checkbox";var R=l;
1
+ "use strict";"use client";var p=Object.create;var s=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var u=(e,t)=>{for(var o in t)s(e,o,{get:t[o],enumerable:!0})},n=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of k(t))!g.call(e,i)&&i!==o&&s(e,i,{get:()=>t[i],enumerable:!(a=m(t,i))||a.enumerable});return e};var d=(e,t,o)=>(o=e!=null?p(x(e)):{},n(t||!e||!e.__esModule?s(o,"default",{value:e,enumerable:!0}):o,e)),v=e=>n(s({},"__esModule",{value:!0}),e);var w={};u(w,{default:()=>R});module.exports=v(w);var r=require("react/jsx-runtime"),C=d(require("react")),b=d(require("@radix-ui/react-checkbox")),c=require("../helpers/index.js"),f=require("class-variance-authority");const y=e=>(0,r.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:(0,r.jsx)("path",{d:"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z",fill:"currentColor"})}),P=(0,f.cva)("border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0",neutral:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"brand",size:"base"}}),l=C.forwardRef(({className:e,size:t,checkedColor:o,iconClassName:a,...i},h)=>(0,r.jsx)(b.Root,{ref:h,className:(0,c.cn)(P({size:t,checkedColor:o}),e),...i,children:(0,r.jsx)(b.Indicator,{className:(0,c.cn)("flex size-full items-center justify-center text-current"),children:(0,r.jsx)(y,{width:16,height:12,className:a})})}));l.displayName="Checkbox";var R=l;
2
2
  //# sourceMappingURL=checkbox.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/checkbox.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\n// import { CheckIcon } from '@radix-ui/react-icons'\n\nimport { cn } from '../helpers/index.js'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nconst checkboxVariants = cva(\n 'border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n default:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'default',\n size: 'base',\n },\n }\n)\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, VariantProps<typeof checkboxVariants> {\n iconClassName?: string\n}\n\n/**\n * Checkbox - \u590D\u9009\u6846\n *\n * @description \u5141\u8BB8\u7528\u6237\u8FDB\u884C\u591A\u9009\u64CD\u4F5C\u7684\u590D\u9009\u6846\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u81EA\u5B9A\u4E49\u56FE\u6807\n */\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, size, checkedColor, iconClassName, ...props }, ref) => (\n <CheckboxPrimitive.Root ref={ref} className={cn(checkboxVariants({ size, checkedColor }), className)} {...props}>\n <CheckboxPrimitive.Indicator className={cn('flex size-full items-center justify-center text-current')}>\n <CheckIcon width={16} height={12} className={iconClassName} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\nexport type { CheckboxProps }\n"],
5
- "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAYM,IAAAI,EAAA,6BAVNC,EAAuB,oBACvBC,EAAmC,uCAGnCC,EAAmB,+BACnBC,EAAuC,oCAEvC,MAAMC,EAAaC,MAEf,OAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAA8B,GAAGA,EACjG,mBAAC,QACC,EAAE,wFACF,KAAK,eACP,EACF,EAIEC,KAAmB,OACvB,+QACA,CACE,SAAU,CACR,aAAc,CACZ,QACE,wGACF,MAAO,gGACT,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,UACd,KAAM,MACR,CACF,CACF,EAYMC,EAAWP,EAAM,WACrB,CAAC,CAAE,UAAAQ,EAAW,KAAAC,EAAM,aAAAC,EAAc,cAAAC,EAAe,GAAGN,CAAM,EAAGO,OAC3D,OAACX,EAAkB,KAAlB,CAAuB,IAAKW,EAAK,aAAW,MAAGN,EAAiB,CAAE,KAAAG,EAAM,aAAAC,CAAa,CAAC,EAAGF,CAAS,EAAI,GAAGH,EACxG,mBAACJ,EAAkB,UAAlB,CAA4B,aAAW,MAAG,yDAAyD,EAClG,mBAACG,EAAA,CAAU,MAAO,GAAI,OAAQ,GAAI,UAAWO,EAAe,EAC9D,EACF,CAEJ,EACAJ,EAAS,YAAc,WAEvB,IAAOV,EAAQU",
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\n// import { CheckIcon } from '@radix-ui/react-icons'\n\nimport { cn } from '../helpers/index.js'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nconst checkboxVariants = cva(\n 'border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n neutral:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'brand',\n size: 'base',\n },\n }\n)\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, VariantProps<typeof checkboxVariants> {\n iconClassName?: string\n}\n\n/**\n * Checkbox - \u590D\u9009\u6846\n *\n * @description \u5141\u8BB8\u7528\u6237\u8FDB\u884C\u591A\u9009\u64CD\u4F5C\u7684\u590D\u9009\u6846\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u81EA\u5B9A\u4E49\u56FE\u6807\n */\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, size, checkedColor, iconClassName, ...props }, ref) => (\n <CheckboxPrimitive.Root ref={ref} className={cn(checkboxVariants({ size, checkedColor }), className)} {...props}>\n <CheckboxPrimitive.Indicator className={cn('flex size-full items-center justify-center text-current')}>\n <CheckIcon width={16} height={12} className={iconClassName} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\nexport type { CheckboxProps }\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAYM,IAAAI,EAAA,6BAVNC,EAAuB,oBACvBC,EAAmC,uCAGnCC,EAAmB,+BACnBC,EAAuC,oCAEvC,MAAMC,EAAaC,MAEf,OAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAA8B,GAAGA,EACjG,mBAAC,QACC,EAAE,wFACF,KAAK,eACP,EACF,EAIEC,KAAmB,OACvB,+QACA,CACE,SAAU,CACR,aAAc,CACZ,MAAO,iGACP,QACE,uGACJ,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,QACd,KAAM,MACR,CACF,CACF,EAYMC,EAAWP,EAAM,WACrB,CAAC,CAAE,UAAAQ,EAAW,KAAAC,EAAM,aAAAC,EAAc,cAAAC,EAAe,GAAGN,CAAM,EAAGO,OAC3D,OAACX,EAAkB,KAAlB,CAAuB,IAAKW,EAAK,aAAW,MAAGN,EAAiB,CAAE,KAAAG,EAAM,aAAAC,CAAa,CAAC,EAAGF,CAAS,EAAI,GAAGH,EACxG,mBAACJ,EAAkB,UAAlB,CAA4B,aAAW,MAAG,yDAAyD,EAClG,mBAACG,EAAA,CAAU,MAAO,GAAI,OAAQ,GAAI,UAAWO,EAAe,EAC9D,EACF,CAEJ,EACAJ,EAAS,YAAc,WAEvB,IAAOV,EAAQU",
6
6
  "names": ["checkbox_exports", "__export", "checkbox_default", "__toCommonJS", "import_jsx_runtime", "React", "CheckboxPrimitive", "import_helpers", "import_class_variance_authority", "CheckIcon", "props", "checkboxVariants", "Checkbox", "className", "size", "checkedColor", "iconClassName", "ref"]
7
7
  }
@@ -2,12 +2,12 @@ import * as React from 'react';
2
2
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
3
3
  import { type VariantProps } from 'class-variance-authority';
4
4
  declare const radioGroupVariants: (props?: ({
5
- checkedColor?: "default" | "brand" | null | undefined;
5
+ checkedColor?: "brand" | "neutral" | null | undefined;
6
6
  size?: "base" | "lg" | "sm" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  interface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {
9
9
  /** 选中颜色 */
10
- checkedColor?: 'default' | 'brand';
10
+ checkedColor?: 'brand' | 'neutral';
11
11
  /** 尺寸 */
12
12
  size?: 'sm' | 'base' | 'lg';
13
13
  }
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var y=Object.create;var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var z=(e,o)=>{for(var r in o)s(e,r,{get:o[r],enumerable:!0})},l=(e,o,r,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of k(o))!I.call(e,t)&&t!==r&&s(e,t,{get:()=>o[t],enumerable:!(a=g(o,t))||a.enumerable});return e};var R=(e,o,r)=>(r=e!=null?y(C(e)):{},l(o||!e||!e.__esModule?s(r,"default",{value:e,enumerable:!0}):r,e)),N=e=>l(s({},"__esModule",{value:!0}),e);var w={};z(w,{RadioGroup:()=>f,RadioGroupItem:()=>m});module.exports=N(w);var i=require("react/jsx-runtime"),d=R(require("react")),p=R(require("@radix-ui/react-radio-group")),P=require("./text.js"),G=require("@radix-ui/react-icons"),v=require("class-variance-authority"),n=require("../helpers/index.js");const b=d.createContext({checkedColor:"default",size:"base"}),V=(0,v.cva)("border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{default:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary",brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"default",size:"base"}}),f=d.forwardRef(({className:e,children:o,checkedColor:r,size:a,...t},c)=>(0,i.jsx)(p.Root,{className:(0,n.cn)("text-info-primary grid gap-2",e),...t,ref:c,children:(0,i.jsx)(b.Provider,{value:{checkedColor:r,size:a},children:o})}));f.displayName="RadioGroup";const m=d.forwardRef(({className:e,checkedColor:o,size:r,children:a,...t},c)=>{const{checkedColor:h,size:x}=d.useContext(b),u=(0,i.jsx)(p.Item,{ref:c,className:(0,n.cn)(V({checkedColor:o??h,size:r??x}),e),...t,children:(0,i.jsx)(p.Indicator,{className:"flex size-full items-center justify-center text-current",children:(0,i.jsx)(G.CheckIcon,{})})});return a?(0,i.jsxs)(P.Text,{as:"label",className:(0,n.cn)("flex items-center gap-1",e),children:[u,a]}):u});m.displayName="RadioGroupItem";
1
+ "use strict";"use client";var y=Object.create;var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var z=(e,o)=>{for(var r in o)s(e,r,{get:o[r],enumerable:!0})},l=(e,o,r,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of k(o))!I.call(e,t)&&t!==r&&s(e,t,{get:()=>o[t],enumerable:!(a=g(o,t))||a.enumerable});return e};var R=(e,o,r)=>(r=e!=null?y(C(e)):{},l(o||!e||!e.__esModule?s(r,"default",{value:e,enumerable:!0}):r,e)),N=e=>l(s({},"__esModule",{value:!0}),e);var w={};z(w,{RadioGroup:()=>m,RadioGroupItem:()=>f});module.exports=N(w);var i=require("react/jsx-runtime"),d=R(require("react")),p=R(require("@radix-ui/react-radio-group")),P=require("./text.js"),G=require("@radix-ui/react-icons"),v=require("class-variance-authority"),n=require("../helpers/index.js");const b=d.createContext({checkedColor:"brand",size:"base"}),V=(0,v.cva)("border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0",neutral:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"brand",size:"base"}}),m=d.forwardRef(({className:e,children:o,checkedColor:r,size:a,...t},c)=>(0,i.jsx)(p.Root,{className:(0,n.cn)("text-info-primary grid gap-2",e),...t,ref:c,children:(0,i.jsx)(b.Provider,{value:{checkedColor:r,size:a},children:o})}));m.displayName="RadioGroup";const f=d.forwardRef(({className:e,checkedColor:o,size:r,children:a,...t},c)=>{const{checkedColor:h,size:x}=d.useContext(b),u=(0,i.jsx)(p.Item,{ref:c,className:(0,n.cn)(V({checkedColor:o??h,size:r??x}),e),...t,children:(0,i.jsx)(p.Indicator,{className:"flex size-full items-center justify-center text-current",children:(0,i.jsx)(G.CheckIcon,{})})});return a?(0,i.jsxs)(P.Text,{as:"label",className:(0,n.cn)("flex items-center gap-1",e),children:[u,a]}):u});f.displayName="RadioGroupItem";
2
2
  //# sourceMappingURL=radio.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/radio.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { Text } from './text.js'\nimport { CheckIcon } from '@radix-ui/react-icons'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../helpers/index.js'\n\nconst RadioContext = React.createContext<{ size?: 'sm' | 'base' | 'lg'; checkedColor?: 'default' | 'brand' }>({\n checkedColor: 'default',\n size: 'base',\n})\n\nconst radioGroupVariants = cva(\n 'border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n default:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'default',\n size: 'base',\n },\n }\n)\n\ninterface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n /** \u9009\u4E2D\u989C\u8272 */\n checkedColor?: 'default' | 'brand'\n /** \u5C3A\u5BF8 */\n size?: 'sm' | 'base' | 'lg'\n}\n\n/**\n * RadioGroup - \u5355\u9009\u7EC4\n *\n * @description \u7528\u4E8E\u5355\u9879\u9009\u62E9\u7684\u5355\u9009\u6309\u94AE\u7EC4\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u952E\u76D8\u5BFC\u822A\n */\nconst RadioGroup = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n ({ className, children, checkedColor, size, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root className={cn('text-info-primary grid gap-2', className)} {...props} ref={ref}>\n <RadioContext.Provider value={{ checkedColor, size }}>{children}</RadioContext.Provider>\n </RadioGroupPrimitive.Root>\n )\n }\n)\nRadioGroup.displayName = 'RadioGroup'\n\ninterface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, VariantProps<typeof radioGroupVariants> {}\n\nconst RadioGroupItem = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Item>, RadioGroupItemProps>(\n ({ className, checkedColor, size, children, ...props }, ref) => {\n const { checkedColor: checkedColorFromParent, size: sizeFromParent } = React.useContext(RadioContext)\n\n const ItemRadio = (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n radioGroupVariants({\n checkedColor: checkedColor ?? checkedColorFromParent,\n size: size ?? sizeFromParent,\n }),\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex size-full items-center justify-center text-current\">\n <CheckIcon />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n\n if (children) {\n return (\n <Text as=\"label\" className={cn('flex items-center gap-1', className)}>\n {ItemRadio}\n {children}\n </Text>\n )\n }\n return ItemRadio\n }\n)\nRadioGroupItem.displayName = 'RadioGroupItem'\n\nexport { RadioGroup, RadioGroupItem }\nexport type { RadioGroupProps, RadioGroupItemProps }\n"],
5
- "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,mBAAAC,IAAA,eAAAC,EAAAJ,GAoDQ,IAAAK,EAAA,6BAlDRC,EAAuB,oBACvBC,EAAqC,0CACrCC,EAAqB,qBACrBC,EAA0B,iCAC1BC,EAAuC,oCACvCC,EAAmB,+BAEnB,MAAMC,EAAeN,EAAM,cAAmF,CAC5G,aAAc,UACd,KAAM,MACR,CAAC,EAEKO,KAAqB,OACzB,0PACA,CACE,SAAU,CACR,aAAc,CACZ,QACE,wGACF,MAAO,gGACT,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,UACd,KAAM,MACR,CACF,CACF,EAcMX,EAAaI,EAAM,WACvB,CAAC,CAAE,UAAAQ,EAAW,SAAAC,EAAU,aAAAC,EAAc,KAAAC,EAAM,GAAGC,CAAM,EAAGC,OAEpD,OAACZ,EAAoB,KAApB,CAAyB,aAAW,MAAG,+BAAgCO,CAAS,EAAI,GAAGI,EAAO,IAAKC,EAClG,mBAACP,EAAa,SAAb,CAAsB,MAAO,CAAE,aAAAI,EAAc,KAAAC,CAAK,EAAI,SAAAF,EAAS,EAClE,CAGN,EACAb,EAAW,YAAc,aAKzB,MAAMC,EAAiBG,EAAM,WAC3B,CAAC,CAAE,UAAAQ,EAAW,aAAAE,EAAc,KAAAC,EAAM,SAAAF,EAAU,GAAGG,CAAM,EAAGC,IAAQ,CAC9D,KAAM,CAAE,aAAcC,EAAwB,KAAMC,CAAe,EAAIf,EAAM,WAAWM,CAAY,EAE9FU,KACJ,OAACf,EAAoB,KAApB,CACC,IAAKY,EACL,aAAW,MACTN,EAAmB,CACjB,aAAcG,GAAgBI,EAC9B,KAAMH,GAAQI,CAChB,CAAC,EACDP,CACF,EACC,GAAGI,EAEJ,mBAACX,EAAoB,UAApB,CAA8B,UAAU,0DACvC,mBAAC,cAAU,EACb,EACF,EAGF,OAAIQ,KAEA,QAAC,QAAK,GAAG,QAAQ,aAAW,MAAG,0BAA2BD,CAAS,EAChE,UAAAQ,EACAP,GACH,EAGGO,CACT,CACF,EACAnB,EAAe,YAAc",
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { Text } from './text.js'\nimport { CheckIcon } from '@radix-ui/react-icons'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../helpers/index.js'\n\nconst RadioContext = React.createContext<{ size?: 'sm' | 'base' | 'lg'; checkedColor?: 'brand' | 'neutral' }>({\n checkedColor: 'brand',\n size: 'base',\n})\n\nconst radioGroupVariants = cva(\n 'border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n neutral:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'brand',\n size: 'base',\n },\n }\n)\n\ninterface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n /** \u9009\u4E2D\u989C\u8272 */\n checkedColor?: 'brand' | 'neutral'\n /** \u5C3A\u5BF8 */\n size?: 'sm' | 'base' | 'lg'\n}\n\n/**\n * RadioGroup - \u5355\u9009\u7EC4\n *\n * @description \u7528\u4E8E\u5355\u9879\u9009\u62E9\u7684\u5355\u9009\u6309\u94AE\u7EC4\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u952E\u76D8\u5BFC\u822A\n */\nconst RadioGroup = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n ({ className, children, checkedColor, size, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root className={cn('text-info-primary grid gap-2', className)} {...props} ref={ref}>\n <RadioContext.Provider value={{ checkedColor, size }}>{children}</RadioContext.Provider>\n </RadioGroupPrimitive.Root>\n )\n }\n)\nRadioGroup.displayName = 'RadioGroup'\n\ninterface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, VariantProps<typeof radioGroupVariants> {}\n\nconst RadioGroupItem = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Item>, RadioGroupItemProps>(\n ({ className, checkedColor, size, children, ...props }, ref) => {\n const { checkedColor: checkedColorFromParent, size: sizeFromParent } = React.useContext(RadioContext)\n\n const ItemRadio = (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n radioGroupVariants({\n checkedColor: checkedColor ?? checkedColorFromParent,\n size: size ?? sizeFromParent,\n }),\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex size-full items-center justify-center text-current\">\n <CheckIcon />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n\n if (children) {\n return (\n <Text as=\"label\" className={cn('flex items-center gap-1', className)}>\n {ItemRadio}\n {children}\n </Text>\n )\n }\n return ItemRadio\n }\n)\nRadioGroupItem.displayName = 'RadioGroupItem'\n\nexport { RadioGroup, RadioGroupItem }\nexport type { RadioGroupProps, RadioGroupItemProps }\n"],
5
+ "mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,mBAAAC,IAAA,eAAAC,EAAAJ,GAoDQ,IAAAK,EAAA,6BAlDRC,EAAuB,oBACvBC,EAAqC,0CACrCC,EAAqB,qBACrBC,EAA0B,iCAC1BC,EAAuC,oCACvCC,EAAmB,+BAEnB,MAAMC,EAAeN,EAAM,cAAmF,CAC5G,aAAc,QACd,KAAM,MACR,CAAC,EAEKO,KAAqB,OACzB,0PACA,CACE,SAAU,CACR,aAAc,CACZ,MAAO,iGACP,QACE,uGACJ,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,QACd,KAAM,MACR,CACF,CACF,EAcMX,EAAaI,EAAM,WACvB,CAAC,CAAE,UAAAQ,EAAW,SAAAC,EAAU,aAAAC,EAAc,KAAAC,EAAM,GAAGC,CAAM,EAAGC,OAEpD,OAACZ,EAAoB,KAApB,CAAyB,aAAW,MAAG,+BAAgCO,CAAS,EAAI,GAAGI,EAAO,IAAKC,EAClG,mBAACP,EAAa,SAAb,CAAsB,MAAO,CAAE,aAAAI,EAAc,KAAAC,CAAK,EAAI,SAAAF,EAAS,EAClE,CAGN,EACAb,EAAW,YAAc,aAKzB,MAAMC,EAAiBG,EAAM,WAC3B,CAAC,CAAE,UAAAQ,EAAW,aAAAE,EAAc,KAAAC,EAAM,SAAAF,EAAU,GAAGG,CAAM,EAAGC,IAAQ,CAC9D,KAAM,CAAE,aAAcC,EAAwB,KAAMC,CAAe,EAAIf,EAAM,WAAWM,CAAY,EAE9FU,KACJ,OAACf,EAAoB,KAApB,CACC,IAAKY,EACL,aAAW,MACTN,EAAmB,CACjB,aAAcG,GAAgBI,EAC9B,KAAMH,GAAQI,CAChB,CAAC,EACDP,CACF,EACC,GAAGI,EAEJ,mBAACX,EAAoB,UAApB,CAA8B,UAAU,0DACvC,mBAAC,cAAU,EACb,EACF,EAGF,OAAIQ,KAEA,QAAC,QAAK,GAAG,QAAQ,aAAW,MAAG,0BAA2BD,CAAS,EAChE,UAAAQ,EACAP,GACH,EAGGO,CACT,CACF,EACAnB,EAAe,YAAc",
6
6
  "names": ["radio_exports", "__export", "RadioGroup", "RadioGroupItem", "__toCommonJS", "import_jsx_runtime", "React", "RadioGroupPrimitive", "import_text", "import_react_icons", "import_class_variance_authority", "import_helpers", "RadioContext", "radioGroupVariants", "className", "children", "checkedColor", "size", "props", "ref", "checkedColorFromParent", "sizeFromParent", "ItemRadio"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{PRICE_SYMBOL as l}from"../const.js";function S(e){return e.reduce((n,t)=>(n[t.name]=t.values[0].label,n),{})}const b=e=>e.variants.find(n=>n.availableForSale)||e.variants[0],L=(e,n)=>e.variants.find(t=>t.sku===n),f={us:"en-US",uk:"en-GB",ca:"en-CA",au:"AU","eu-en":"en","eu-fr":"fr-FR",fr:"FR","ca-fr":"FR","nl-fr":"FR",my:"MY",it:"IT",vn:"VN",es:"es-ES","eu-it":"it-IT","eu-de":"de-DE",de:"de-DE","eu-es":"es-ES","cz-en":"en-CZ",nl:"nl-NL","dk-en":"en-DK","gr-en":"en-GR","mk-en":"en-MK","hu-en":"en-HU","se-en":"en-SE","hr-en":"en-HR","bg-en":"en-BG","ee-en":"en-EE","fi-en":"en-FI","lt-en":"en-LT",pl:"pl-PL","ro-en":"en-RO","si-en":"en-SI","sk-en":"en-SK","no-en":"en-NO","ad-en":"en-AD","al-en":"en-AL","ba-en":"en-BA","me-en":"en-ME","rs-en":"en-RS","gl-en":"en-GL","is-en":"en-IS","ua-en":"en-UA","by-en":"en-BY","md-en":"en-MD","lv-en":"en-LV","at-de":"de-AT","lu-de":"de-LU","li-de":"de-LI","va-it":"it-VA","sm-it":"it-SM","be-nl":"nl-BE","ae-en":"en-AE",nz:"en-NZ","sg-en":"en-SG","sa-en":"en-SA","vn-vi":"vi-VN",ie:"en-IE",tw:"zh-TW"},m=e=>(f[e]||console.warn(`[formatPrice] Unknown locale "${e}", falling back to en-US`),f[e]||"en-US");function p({amount:e,currencyCode:n,locale:t,maximumFractionDigits:r,minimumFractionDigits:a,removeTrailingZeros:i=!1}){const s=n?.trim()||"USD",c=m(t);let u;try{u=new Intl.NumberFormat(c,{style:"currency",currency:s,minimumFractionDigits:r===0?0:a,maximumFractionDigits:r})}catch{u=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:r===0?0:a,maximumFractionDigits:r})}let o=u.format(e);return["de-DE","fr-FR","it-IT","es-ES","nl-NL","de-AT","de-LU","de-LI","nl-BE","pl-PL","vi-VN"].includes(c)&&(o=o?.toString()?.replace(/[\s\u00A0\u202F]/g,"")),i&&(o=o.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),o}function E({amount:e,baseAmount:n,currencyCode:t,locale:r,maximumFractionDigits:a,minimumFractionDigits:i,removeTrailingZeros:s}){if(typeof Intl>"u")return{price:`${l[r]}${e}`,basePrice:`${l[r]}${n}`,discount:`${l[r]}${n-e||0}`};const c=n>e,u=new Intl.NumberFormat(m(r),{style:"percent"}),o=c?u.format((n-e)/n):null,d=p({amount:e,currencyCode:t,locale:r,removeTrailingZeros:s}),y=c?p({amount:n,currencyCode:t,locale:r,maximumFractionDigits:a,minimumFractionDigits:i,removeTrailingZeros:s}):void 0;return{price:d,basePrice:y,discount:o}}function I({product:e,selectedOptions:n}){return e.variants.find(t=>Object.entries(n).every(([r,a])=>t.options.find(i=>{if(i.__typename==="MultipleChoiceOption"&&i.name===r)return i.values.find(s=>s.label===a)})))}export{p as formatPrice,E as formatVariantPrice,b as getFirstAvailableVariant,L as getVariantBySku,I as getVariantFromSelectedOptions,f as languageMap,m as languageTerritory,S as optionsConstructor};
1
+ import{PRICE_SYMBOL as l}from"../const.js";function S(e){return e.reduce((n,t)=>(n[t.name]=t.values[0].label,n),{})}const b=e=>e.variants.find(n=>n.availableForSale)||e.variants[0],E=(e,n)=>e.variants.find(t=>t.sku===n),f={us:"en-US",uk:"en-GB",ca:"en-CA",au:"AU","eu-en":"en","eu-fr":"fr-FR",fr:"FR","ca-fr":"FR","nl-fr":"FR",my:"MY",it:"IT",vn:"VN",es:"es-ES","eu-it":"it-IT","eu-de":"de-DE",de:"de-DE","eu-es":"es-ES","cz-en":"en-CZ",nl:"nl-NL","dk-en":"en-DK","gr-en":"en-GR","mk-en":"en-MK","hu-en":"en-HU","se-en":"en-SE","hr-en":"en-HR","bg-en":"en-BG","ee-en":"en-EE","fi-en":"en-FI","lt-en":"en-LT",pl:"pl-PL","ro-en":"en-RO","si-en":"en-SI","sk-en":"en-SK","no-en":"en-NO","ad-en":"en-AD","al-en":"en-AL","ba-en":"en-BA","me-en":"en-ME","rs-en":"en-RS","gl-en":"en-GL","is-en":"en-IS","ua-en":"en-UA","by-en":"en-BY","md-en":"en-MD","lv-en":"en-LV","at-de":"de-AT","lu-de":"de-LU","li-de":"de-LI","va-it":"it-VA","sm-it":"it-SM","be-nl":"nl-BE","ae-en":"en-AE",nz:"en-NZ","sg-en":"en-SG","sa-en":"en-SA","vn-vi":"vi-VN",ie:"en-IE",tw:"zh-TW"},m=e=>(f[e]||console.warn(`[formatPrice] Unknown locale "${e}", falling back to en-US`),f[e]||"en-US");function p({amount:e,currencyCode:n,locale:t,maximumFractionDigits:r,minimumFractionDigits:a,removeTrailingZeros:i=!1}){const s=n?.trim()||"USD",c=m(t);let u;try{u=new Intl.NumberFormat(c,{style:"currency",currency:s,minimumFractionDigits:r===0?0:a,maximumFractionDigits:r})}catch{u=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:r===0?0:a,maximumFractionDigits:r})}let o=u.format(e);return["de-DE","fr-FR","it-IT","es-ES","de-AT","de-LU","de-LI","nl-BE","pl-PL","vi-VN"].includes(c)&&(o=o?.toString()?.replace(/[\s\u00A0\u202F]/g,"")),i&&(o=o.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),o}function L({amount:e,baseAmount:n,currencyCode:t,locale:r,maximumFractionDigits:a,minimumFractionDigits:i,removeTrailingZeros:s}){if(typeof Intl>"u")return{price:`${l[r]}${e}`,basePrice:`${l[r]}${n}`,discount:`${l[r]}${n-e||0}`};const c=n>e,u=new Intl.NumberFormat(m(r),{style:"percent"}),o=c?u.format((n-e)/n):null,d=p({amount:e,currencyCode:t,locale:r,removeTrailingZeros:s}),y=c?p({amount:n,currencyCode:t,locale:r,maximumFractionDigits:a,minimumFractionDigits:i,removeTrailingZeros:s}):void 0;return{price:d,basePrice:y,discount:o}}function I({product:e,selectedOptions:n}){return e.variants.find(t=>Object.entries(n).every(([r,a])=>t.options.find(i=>{if(i.__typename==="MultipleChoiceOption"&&i.name===r)return i.values.find(s=>s.label===a)})))}export{p as formatPrice,L as formatVariantPrice,b as getFirstAvailableVariant,E as getVariantBySku,I as getVariantFromSelectedOptions,f as languageMap,m as languageTerritory,S as optionsConstructor};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/biz-components/Listing/utils/index.ts"],
4
- "sourcesContent": ["import { PRICE_SYMBOL } from '../const.js'\nimport type { Options, Product, ProductOption, ProductVariant } from '../types/product'\n\nexport function optionsConstructor(options: ProductOption[]): Options {\n return options.reduce((pre: any, cur: any) => {\n pre[cur.name] = cur.values[0].label\n return pre\n }, {})\n}\n\n/**\n * Returns the first available variant of a product.\n * If no variant is available, it returns the first variant in the list.\n *\n * @param product - The product object.\n * @returns The first available variant of the product.\n */\nexport const getFirstAvailableVariant = (product: Product) =>\n product.variants.find((variant: ProductVariant) => variant.availableForSale) || product.variants[0]\n\nexport const getVariantBySku = (product: Product, sku: string) =>\n product.variants.find((variant: ProductVariant) => variant.sku === sku)\n\nexport const languageMap: { [key: string]: string } = {\n us: 'en-US',\n uk: 'en-GB',\n ca: 'en-CA',\n au: 'AU',\n 'eu-en': 'en',\n 'eu-fr': 'fr-FR',\n fr: 'FR',\n 'ca-fr': 'FR',\n 'nl-fr': 'FR',\n my: 'MY',\n it: 'IT',\n vn: 'VN',\n es: 'es-ES',\n 'eu-it': 'it-IT',\n 'eu-de': 'de-DE',\n de: 'de-DE',\n 'eu-es': 'es-ES',\n 'cz-en': 'en-CZ',\n nl: 'nl-NL',\n 'dk-en': 'en-DK',\n 'gr-en': 'en-GR',\n 'mk-en': 'en-MK',\n 'hu-en': 'en-HU',\n 'se-en': 'en-SE',\n 'hr-en': 'en-HR',\n 'bg-en': 'en-BG',\n 'ee-en': 'en-EE',\n 'fi-en': 'en-FI',\n 'lt-en': 'en-LT',\n pl: 'pl-PL',\n 'ro-en': 'en-RO',\n 'si-en': 'en-SI',\n 'sk-en': 'en-SK',\n 'no-en': 'en-NO',\n 'ad-en': 'en-AD',\n 'al-en': 'en-AL',\n 'ba-en': 'en-BA',\n 'me-en': 'en-ME',\n 'rs-en': 'en-RS',\n 'gl-en': 'en-GL',\n 'is-en': 'en-IS',\n 'ua-en': 'en-UA',\n 'by-en': 'en-BY',\n 'md-en': 'en-MD',\n 'lv-en': 'en-LV',\n 'at-de': 'de-AT',\n 'lu-de': 'de-LU',\n 'li-de': 'de-LI',\n 'va-it': 'it-VA',\n 'sm-it': 'it-SM',\n 'be-nl': 'nl-BE',\n 'ae-en': 'en-AE',\n nz: 'en-NZ',\n 'sg-en': 'en-SG',\n 'sa-en': 'en-SA',\n 'vn-vi': 'vi-VN',\n ie: 'en-IE',\n tw: 'zh-TW',\n}\n\nexport const languageTerritory = (locale: string) => {\n if (!languageMap[locale]) {\n console.warn(`[formatPrice] Unknown locale \"${locale}\", falling back to en-US`)\n }\n return languageMap[locale] || 'en-US'\n}\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const validCurrencyCode = currencyCode?.trim() || 'USD'\n const validLocale = languageTerritory(locale)\n\n let formatCurrency: Intl.NumberFormat\n try {\n formatCurrency = new Intl.NumberFormat(validLocale, {\n style: 'currency',\n currency: validCurrencyCode,\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n } catch {\n // Fallback to en-US with USD if locale/currency combination is invalid\n formatCurrency = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n }\n\n let formattedValue = formatCurrency.format(amount)\n\n const COMMA_DECIMAL_LOCALES = [\n 'de-DE',\n 'fr-FR',\n 'it-IT',\n 'es-ES',\n 'nl-NL',\n 'de-AT',\n 'de-LU',\n 'de-LI',\n 'nl-BE',\n 'pl-PL',\n 'vi-VN',\n ]\n if (COMMA_DECIMAL_LOCALES.includes(validLocale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s\\u00A0\\u202F]/g, '')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n // eslint-disable-next-line no-useless-escape\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n // eslint-disable-next-line no-useless-escape\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\nexport function getVariantFromSelectedOptions({\n product,\n selectedOptions,\n}: {\n product: Product\n selectedOptions: Record<string, string>\n}) {\n return product.variants.find(variant => {\n return Object.entries(selectedOptions).every(([key, value]) =>\n variant.options.find(option => {\n if (option.__typename === 'MultipleChoiceOption' && option.name === key) {\n return option.values.find(v => v.label === value)\n }\n })\n )\n })\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { PRICE_SYMBOL } from '../const.js'\nimport type { Options, Product, ProductOption, ProductVariant } from '../types/product'\n\nexport function optionsConstructor(options: ProductOption[]): Options {\n return options.reduce((pre: any, cur: any) => {\n pre[cur.name] = cur.values[0].label\n return pre\n }, {})\n}\n\n/**\n * Returns the first available variant of a product.\n * If no variant is available, it returns the first variant in the list.\n *\n * @param product - The product object.\n * @returns The first available variant of the product.\n */\nexport const getFirstAvailableVariant = (product: Product) =>\n product.variants.find((variant: ProductVariant) => variant.availableForSale) || product.variants[0]\n\nexport const getVariantBySku = (product: Product, sku: string) =>\n product.variants.find((variant: ProductVariant) => variant.sku === sku)\n\nexport const languageMap: { [key: string]: string } = {\n us: 'en-US',\n uk: 'en-GB',\n ca: 'en-CA',\n au: 'AU',\n 'eu-en': 'en',\n 'eu-fr': 'fr-FR',\n fr: 'FR',\n 'ca-fr': 'FR',\n 'nl-fr': 'FR',\n my: 'MY',\n it: 'IT',\n vn: 'VN',\n es: 'es-ES',\n 'eu-it': 'it-IT',\n 'eu-de': 'de-DE',\n de: 'de-DE',\n 'eu-es': 'es-ES',\n 'cz-en': 'en-CZ',\n nl: 'nl-NL',\n 'dk-en': 'en-DK',\n 'gr-en': 'en-GR',\n 'mk-en': 'en-MK',\n 'hu-en': 'en-HU',\n 'se-en': 'en-SE',\n 'hr-en': 'en-HR',\n 'bg-en': 'en-BG',\n 'ee-en': 'en-EE',\n 'fi-en': 'en-FI',\n 'lt-en': 'en-LT',\n pl: 'pl-PL',\n 'ro-en': 'en-RO',\n 'si-en': 'en-SI',\n 'sk-en': 'en-SK',\n 'no-en': 'en-NO',\n 'ad-en': 'en-AD',\n 'al-en': 'en-AL',\n 'ba-en': 'en-BA',\n 'me-en': 'en-ME',\n 'rs-en': 'en-RS',\n 'gl-en': 'en-GL',\n 'is-en': 'en-IS',\n 'ua-en': 'en-UA',\n 'by-en': 'en-BY',\n 'md-en': 'en-MD',\n 'lv-en': 'en-LV',\n 'at-de': 'de-AT',\n 'lu-de': 'de-LU',\n 'li-de': 'de-LI',\n 'va-it': 'it-VA',\n 'sm-it': 'it-SM',\n 'be-nl': 'nl-BE',\n 'ae-en': 'en-AE',\n nz: 'en-NZ',\n 'sg-en': 'en-SG',\n 'sa-en': 'en-SA',\n 'vn-vi': 'vi-VN',\n ie: 'en-IE',\n tw: 'zh-TW',\n}\n\nexport const languageTerritory = (locale: string) => {\n if (!languageMap[locale]) {\n console.warn(`[formatPrice] Unknown locale \"${locale}\", falling back to en-US`)\n }\n return languageMap[locale] || 'en-US'\n}\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const validCurrencyCode = currencyCode?.trim() || 'USD'\n const validLocale = languageTerritory(locale)\n\n let formatCurrency: Intl.NumberFormat\n try {\n formatCurrency = new Intl.NumberFormat(validLocale, {\n style: 'currency',\n currency: validCurrencyCode,\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n } catch {\n // Fallback to en-US with USD if locale/currency combination is invalid\n formatCurrency = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n }\n\n let formattedValue = formatCurrency.format(amount)\n\n const COMMA_DECIMAL_LOCALES = [\n 'de-DE',\n 'fr-FR',\n 'it-IT',\n 'es-ES',\n // 'nl-NL',\n 'de-AT',\n 'de-LU',\n 'de-LI',\n 'nl-BE',\n 'pl-PL',\n 'vi-VN',\n ]\n if (COMMA_DECIMAL_LOCALES.includes(validLocale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s\\u00A0\\u202F]/g, '')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n // eslint-disable-next-line no-useless-escape\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n // eslint-disable-next-line no-useless-escape\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\nexport function getVariantFromSelectedOptions({\n product,\n selectedOptions,\n}: {\n product: Product\n selectedOptions: Record<string, string>\n}) {\n return product.variants.find(variant => {\n return Object.entries(selectedOptions).every(([key, value]) =>\n variant.options.find(option => {\n if (option.__typename === 'MultipleChoiceOption' && option.name === key) {\n return option.values.find(v => v.label === value)\n }\n })\n )\n })\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["PRICE_SYMBOL", "optionsConstructor", "options", "pre", "cur", "getFirstAvailableVariant", "product", "variant", "getVariantBySku", "sku", "languageMap", "languageTerritory", "locale", "formatPrice", "amount", "currencyCode", "maximumFractionDigits", "minimumFractionDigits", "removeTrailingZeros", "validCurrencyCode", "validLocale", "formatCurrency", "formattedValue", "formatVariantPrice", "baseAmount", "hasDiscount", "formatDiscount", "discount", "price", "basePrice", "getVariantFromSelectedOptions", "selectedOptions", "key", "value", "option", "v"]
7
7
  }
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
3
3
  import { type VariantProps } from 'class-variance-authority';
4
4
  declare const checkboxVariants: (props?: ({
5
- checkedColor?: "default" | "brand" | null | undefined;
5
+ checkedColor?: "brand" | "neutral" | null | undefined;
6
6
  size?: "base" | "lg" | "sm" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  interface CheckboxProps extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, VariantProps<typeof checkboxVariants> {
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e}from"react/jsx-runtime";import*as b from"react";import*as o from"@radix-ui/react-checkbox";import{cn as i}from"../helpers/index.js";import{cva as l}from"class-variance-authority";const f=t=>e("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:e("path",{d:"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z",fill:"currentColor"})}),h=l("border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{default:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary",brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"default",size:"base"}}),r=b.forwardRef(({className:t,size:a,checkedColor:s,iconClassName:c,...n},d)=>e(o.Root,{ref:d,className:i(h({size:a,checkedColor:s}),t),...n,children:e(o.Indicator,{className:i("flex size-full items-center justify-center text-current"),children:e(f,{width:16,height:12,className:c})})}));r.displayName="Checkbox";var k=r;export{k as default};
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import*as b from"react";import*as o from"@radix-ui/react-checkbox";import{cn as i}from"../helpers/index.js";import{cva as l}from"class-variance-authority";const f=t=>e("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:e("path",{d:"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z",fill:"currentColor"})}),h=l("border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0",neutral:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"brand",size:"base"}}),r=b.forwardRef(({className:t,size:a,checkedColor:s,iconClassName:c,...n},d)=>e(o.Root,{ref:d,className:i(h({size:a,checkedColor:s}),t),...n,children:e(o.Indicator,{className:i("flex size-full items-center justify-center text-current"),children:e(f,{width:16,height:12,className:c})})}));r.displayName="Checkbox";var k=r;export{k as default};
2
2
  //# sourceMappingURL=checkbox.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/checkbox.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\n// import { CheckIcon } from '@radix-ui/react-icons'\n\nimport { cn } from '../helpers/index.js'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nconst checkboxVariants = cva(\n 'border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n default:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'default',\n size: 'base',\n },\n }\n)\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, VariantProps<typeof checkboxVariants> {\n iconClassName?: string\n}\n\n/**\n * Checkbox - \u590D\u9009\u6846\n *\n * @description \u5141\u8BB8\u7528\u6237\u8FDB\u884C\u591A\u9009\u64CD\u4F5C\u7684\u590D\u9009\u6846\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u81EA\u5B9A\u4E49\u56FE\u6807\n */\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, size, checkedColor, iconClassName, ...props }, ref) => (\n <CheckboxPrimitive.Root ref={ref} className={cn(checkboxVariants({ size, checkedColor }), className)} {...props}>\n <CheckboxPrimitive.Indicator className={cn('flex size-full items-center justify-center text-current')}>\n <CheckIcon width={16} height={12} className={iconClassName} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\nexport type { CheckboxProps }\n"],
5
- "mappings": "aAYM,cAAAA,MAAA,oBAVN,UAAYC,MAAW,QACvB,UAAYC,MAAuB,2BAGnC,OAAS,MAAAC,MAAU,sBACnB,OAAS,OAAAC,MAA8B,2BAEvC,MAAMC,EAAaC,GAEfN,EAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAA8B,GAAGM,EACjG,SAAAN,EAAC,QACC,EAAE,wFACF,KAAK,eACP,EACF,EAIEO,EAAmBH,EACvB,+QACA,CACE,SAAU,CACR,aAAc,CACZ,QACE,wGACF,MAAO,gGACT,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,UACd,KAAM,MACR,CACF,CACF,EAYMI,EAAWP,EAAM,WACrB,CAAC,CAAE,UAAAQ,EAAW,KAAAC,EAAM,aAAAC,EAAc,cAAAC,EAAe,GAAGN,CAAM,EAAGO,IAC3Db,EAACE,EAAkB,KAAlB,CAAuB,IAAKW,EAAK,UAAWV,EAAGI,EAAiB,CAAE,KAAAG,EAAM,aAAAC,CAAa,CAAC,EAAGF,CAAS,EAAI,GAAGH,EACxG,SAAAN,EAACE,EAAkB,UAAlB,CAA4B,UAAWC,EAAG,yDAAyD,EAClG,SAAAH,EAACK,EAAA,CAAU,MAAO,GAAI,OAAQ,GAAI,UAAWO,EAAe,EAC9D,EACF,CAEJ,EACAJ,EAAS,YAAc,WAEvB,IAAOM,EAAQN",
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\n// import { CheckIcon } from '@radix-ui/react-icons'\n\nimport { cn } from '../helpers/index.js'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M7.5 15.8333L1.66667 10L3.75 7.91667L7.5 11.6667L16.25 3L18.3333 5.08333L7.5 15.8333Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nconst checkboxVariants = cva(\n 'border-info-primary ring-offset-background disabled:bg-btn-primary-disabled data-[state=checked]:text-info-white peer shrink-0 rounded-sm border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n neutral:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'brand',\n size: 'base',\n },\n }\n)\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, VariantProps<typeof checkboxVariants> {\n iconClassName?: string\n}\n\n/**\n * Checkbox - \u590D\u9009\u6846\n *\n * @description \u5141\u8BB8\u7528\u6237\u8FDB\u884C\u591A\u9009\u64CD\u4F5C\u7684\u590D\u9009\u6846\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u81EA\u5B9A\u4E49\u56FE\u6807\n */\nconst Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(\n ({ className, size, checkedColor, iconClassName, ...props }, ref) => (\n <CheckboxPrimitive.Root ref={ref} className={cn(checkboxVariants({ size, checkedColor }), className)} {...props}>\n <CheckboxPrimitive.Indicator className={cn('flex size-full items-center justify-center text-current')}>\n <CheckIcon width={16} height={12} className={iconClassName} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n)\nCheckbox.displayName = 'Checkbox'\n\nexport default Checkbox\nexport type { CheckboxProps }\n"],
5
+ "mappings": "aAYM,cAAAA,MAAA,oBAVN,UAAYC,MAAW,QACvB,UAAYC,MAAuB,2BAGnC,OAAS,MAAAC,MAAU,sBACnB,OAAS,OAAAC,MAA8B,2BAEvC,MAAMC,EAAaC,GAEfN,EAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAA8B,GAAGM,EACjG,SAAAN,EAAC,QACC,EAAE,wFACF,KAAK,eACP,EACF,EAIEO,EAAmBH,EACvB,+QACA,CACE,SAAU,CACR,aAAc,CACZ,MAAO,iGACP,QACE,uGACJ,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,QACd,KAAM,MACR,CACF,CACF,EAYMI,EAAWP,EAAM,WACrB,CAAC,CAAE,UAAAQ,EAAW,KAAAC,EAAM,aAAAC,EAAc,cAAAC,EAAe,GAAGN,CAAM,EAAGO,IAC3Db,EAACE,EAAkB,KAAlB,CAAuB,IAAKW,EAAK,UAAWV,EAAGI,EAAiB,CAAE,KAAAG,EAAM,aAAAC,CAAa,CAAC,EAAGF,CAAS,EAAI,GAAGH,EACxG,SAAAN,EAACE,EAAkB,UAAlB,CAA4B,UAAWC,EAAG,yDAAyD,EAClG,SAAAH,EAACK,EAAA,CAAU,MAAO,GAAI,OAAQ,GAAI,UAAWO,EAAe,EAC9D,EACF,CAEJ,EACAJ,EAAS,YAAc,WAEvB,IAAOM,EAAQN",
6
6
  "names": ["jsx", "React", "CheckboxPrimitive", "cn", "cva", "CheckIcon", "props", "checkboxVariants", "Checkbox", "className", "size", "checkedColor", "iconClassName", "ref", "checkbox_default"]
7
7
  }
@@ -2,12 +2,12 @@ import * as React from 'react';
2
2
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
3
3
  import { type VariantProps } from 'class-variance-authority';
4
4
  declare const radioGroupVariants: (props?: ({
5
- checkedColor?: "default" | "brand" | null | undefined;
5
+ checkedColor?: "brand" | "neutral" | null | undefined;
6
6
  size?: "base" | "lg" | "sm" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  interface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {
9
9
  /** 选中颜色 */
10
- checkedColor?: 'default' | 'brand';
10
+ checkedColor?: 'brand' | 'neutral';
11
11
  /** 尺寸 */
12
12
  size?: 'sm' | 'base' | 'lg';
13
13
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as e,jsxs as h}from"react/jsx-runtime";import*as t from"react";import*as n from"@radix-ui/react-radio-group";import{Text as b}from"./text.js";import{CheckIcon as P}from"@radix-ui/react-icons";import{cva as G}from"class-variance-authority";import{cn as c}from"../helpers/index.js";const f=t.createContext({checkedColor:"default",size:"base"}),v=G("border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{default:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary",brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"default",size:"base"}}),m=t.forwardRef(({className:o,children:i,checkedColor:a,size:r,...s},d)=>e(n.Root,{className:c("text-info-primary grid gap-2",o),...s,ref:d,children:e(f.Provider,{value:{checkedColor:a,size:r},children:i})}));m.displayName="RadioGroup";const u=t.forwardRef(({className:o,checkedColor:i,size:a,children:r,...s},d)=>{const{checkedColor:l,size:R}=t.useContext(f),p=e(n.Item,{ref:d,className:c(v({checkedColor:i??l,size:a??R}),o),...s,children:e(n.Indicator,{className:"flex size-full items-center justify-center text-current",children:e(P,{})})});return r?h(b,{as:"label",className:c("flex items-center gap-1",o),children:[p,r]}):p});u.displayName="RadioGroupItem";export{m as RadioGroup,u as RadioGroupItem};
1
+ "use client";import{jsx as e,jsxs as h}from"react/jsx-runtime";import*as t from"react";import*as n from"@radix-ui/react-radio-group";import{Text as b}from"./text.js";import{CheckIcon as P}from"@radix-ui/react-icons";import{cva as G}from"class-variance-authority";import{cn as c}from"../helpers/index.js";const m=t.createContext({checkedColor:"brand",size:"base"}),v=G("border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{checkedColor:{brand:"focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0",neutral:"focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary"},size:{sm:"size-[14px]",base:"size-4",lg:"size-5"}},defaultVariants:{checkedColor:"brand",size:"base"}}),f=t.forwardRef(({className:o,children:i,checkedColor:a,size:r,...s},d)=>e(n.Root,{className:c("text-info-primary grid gap-2",o),...s,ref:d,children:e(m.Provider,{value:{checkedColor:a,size:r},children:i})}));f.displayName="RadioGroup";const u=t.forwardRef(({className:o,checkedColor:i,size:a,children:r,...s},d)=>{const{checkedColor:l,size:R}=t.useContext(m),p=e(n.Item,{ref:d,className:c(v({checkedColor:i??l,size:a??R}),o),...s,children:e(n.Indicator,{className:"flex size-full items-center justify-center text-current",children:e(P,{})})});return r?h(b,{as:"label",className:c("flex items-center gap-1",o),children:[p,r]}):p});u.displayName="RadioGroupItem";export{f as RadioGroup,u as RadioGroupItem};
2
2
  //# sourceMappingURL=radio.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/radio.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { Text } from './text.js'\nimport { CheckIcon } from '@radix-ui/react-icons'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../helpers/index.js'\n\nconst RadioContext = React.createContext<{ size?: 'sm' | 'base' | 'lg'; checkedColor?: 'default' | 'brand' }>({\n checkedColor: 'default',\n size: 'base',\n})\n\nconst radioGroupVariants = cva(\n 'border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n default:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'default',\n size: 'base',\n },\n }\n)\n\ninterface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n /** \u9009\u4E2D\u989C\u8272 */\n checkedColor?: 'default' | 'brand'\n /** \u5C3A\u5BF8 */\n size?: 'sm' | 'base' | 'lg'\n}\n\n/**\n * RadioGroup - \u5355\u9009\u7EC4\n *\n * @description \u7528\u4E8E\u5355\u9879\u9009\u62E9\u7684\u5355\u9009\u6309\u94AE\u7EC4\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u952E\u76D8\u5BFC\u822A\n */\nconst RadioGroup = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n ({ className, children, checkedColor, size, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root className={cn('text-info-primary grid gap-2', className)} {...props} ref={ref}>\n <RadioContext.Provider value={{ checkedColor, size }}>{children}</RadioContext.Provider>\n </RadioGroupPrimitive.Root>\n )\n }\n)\nRadioGroup.displayName = 'RadioGroup'\n\ninterface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, VariantProps<typeof radioGroupVariants> {}\n\nconst RadioGroupItem = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Item>, RadioGroupItemProps>(\n ({ className, checkedColor, size, children, ...props }, ref) => {\n const { checkedColor: checkedColorFromParent, size: sizeFromParent } = React.useContext(RadioContext)\n\n const ItemRadio = (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n radioGroupVariants({\n checkedColor: checkedColor ?? checkedColorFromParent,\n size: size ?? sizeFromParent,\n }),\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex size-full items-center justify-center text-current\">\n <CheckIcon />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n\n if (children) {\n return (\n <Text as=\"label\" className={cn('flex items-center gap-1', className)}>\n {ItemRadio}\n {children}\n </Text>\n )\n }\n return ItemRadio\n }\n)\nRadioGroupItem.displayName = 'RadioGroupItem'\n\nexport { RadioGroup, RadioGroupItem }\nexport type { RadioGroupProps, RadioGroupItemProps }\n"],
5
- "mappings": "aAoDQ,cAAAA,EAkCA,QAAAC,MAlCA,oBAlDR,UAAYC,MAAW,QACvB,UAAYC,MAAyB,8BACrC,OAAS,QAAAC,MAAY,YACrB,OAAS,aAAAC,MAAiB,wBAC1B,OAAS,OAAAC,MAA8B,2BACvC,OAAS,MAAAC,MAAU,sBAEnB,MAAMC,EAAeN,EAAM,cAAmF,CAC5G,aAAc,UACd,KAAM,MACR,CAAC,EAEKO,EAAqBH,EACzB,0PACA,CACE,SAAU,CACR,aAAc,CACZ,QACE,wGACF,MAAO,gGACT,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,UACd,KAAM,MACR,CACF,CACF,EAcMI,EAAaR,EAAM,WACvB,CAAC,CAAE,UAAAS,EAAW,SAAAC,EAAU,aAAAC,EAAc,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAEpDhB,EAACG,EAAoB,KAApB,CAAyB,UAAWI,EAAG,+BAAgCI,CAAS,EAAI,GAAGI,EAAO,IAAKC,EAClG,SAAAhB,EAACQ,EAAa,SAAb,CAAsB,MAAO,CAAE,aAAAK,EAAc,KAAAC,CAAK,EAAI,SAAAF,EAAS,EAClE,CAGN,EACAF,EAAW,YAAc,aAKzB,MAAMO,EAAiBf,EAAM,WAC3B,CAAC,CAAE,UAAAS,EAAW,aAAAE,EAAc,KAAAC,EAAM,SAAAF,EAAU,GAAGG,CAAM,EAAGC,IAAQ,CAC9D,KAAM,CAAE,aAAcE,EAAwB,KAAMC,CAAe,EAAIjB,EAAM,WAAWM,CAAY,EAE9FY,EACJpB,EAACG,EAAoB,KAApB,CACC,IAAKa,EACL,UAAWT,EACTE,EAAmB,CACjB,aAAcI,GAAgBK,EAC9B,KAAMJ,GAAQK,CAChB,CAAC,EACDR,CACF,EACC,GAAGI,EAEJ,SAAAf,EAACG,EAAoB,UAApB,CAA8B,UAAU,0DACvC,SAAAH,EAACK,EAAA,EAAU,EACb,EACF,EAGF,OAAIO,EAEAX,EAACG,EAAA,CAAK,GAAG,QAAQ,UAAWG,EAAG,0BAA2BI,CAAS,EAChE,UAAAS,EACAR,GACH,EAGGQ,CACT,CACF,EACAH,EAAe,YAAc",
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group'\nimport { Text } from './text.js'\nimport { CheckIcon } from '@radix-ui/react-icons'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../helpers/index.js'\n\nconst RadioContext = React.createContext<{ size?: 'sm' | 'base' | 'lg'; checkedColor?: 'brand' | 'neutral' }>({\n checkedColor: 'brand',\n size: 'base',\n})\n\nconst radioGroupVariants = cva(\n 'border-info-primary text-info-primary ring-offset-background data-[state=checked]:text-info-white aspect-square rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n checkedColor: {\n brand: 'focus-visible:ring-brand-0 data-[state=checked]:border-brand-0 data-[state=checked]:bg-brand-0',\n neutral:\n 'focus-visible:ring-ring data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary',\n },\n size: {\n sm: 'size-[14px]',\n base: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n checkedColor: 'brand',\n size: 'base',\n },\n }\n)\n\ninterface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n /** \u9009\u4E2D\u989C\u8272 */\n checkedColor?: 'brand' | 'neutral'\n /** \u5C3A\u5BF8 */\n size?: 'sm' | 'base' | 'lg'\n}\n\n/**\n * RadioGroup - \u5355\u9009\u7EC4\n *\n * @description \u7528\u4E8E\u5355\u9879\u9009\u62E9\u7684\u5355\u9009\u6309\u94AE\u7EC4\u7EC4\u4EF6\uFF0C\u652F\u6301\u4E0D\u540C\u5C3A\u5BF8\u548C\u952E\u76D8\u5BFC\u822A\n */\nconst RadioGroup = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Root>, RadioGroupProps>(\n ({ className, children, checkedColor, size, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root className={cn('text-info-primary grid gap-2', className)} {...props} ref={ref}>\n <RadioContext.Provider value={{ checkedColor, size }}>{children}</RadioContext.Provider>\n </RadioGroupPrimitive.Root>\n )\n }\n)\nRadioGroup.displayName = 'RadioGroup'\n\ninterface RadioGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>, VariantProps<typeof radioGroupVariants> {}\n\nconst RadioGroupItem = React.forwardRef<React.ElementRef<typeof RadioGroupPrimitive.Item>, RadioGroupItemProps>(\n ({ className, checkedColor, size, children, ...props }, ref) => {\n const { checkedColor: checkedColorFromParent, size: sizeFromParent } = React.useContext(RadioContext)\n\n const ItemRadio = (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n radioGroupVariants({\n checkedColor: checkedColor ?? checkedColorFromParent,\n size: size ?? sizeFromParent,\n }),\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex size-full items-center justify-center text-current\">\n <CheckIcon />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n\n if (children) {\n return (\n <Text as=\"label\" className={cn('flex items-center gap-1', className)}>\n {ItemRadio}\n {children}\n </Text>\n )\n }\n return ItemRadio\n }\n)\nRadioGroupItem.displayName = 'RadioGroupItem'\n\nexport { RadioGroup, RadioGroupItem }\nexport type { RadioGroupProps, RadioGroupItemProps }\n"],
5
+ "mappings": "aAoDQ,cAAAA,EAkCA,QAAAC,MAlCA,oBAlDR,UAAYC,MAAW,QACvB,UAAYC,MAAyB,8BACrC,OAAS,QAAAC,MAAY,YACrB,OAAS,aAAAC,MAAiB,wBAC1B,OAAS,OAAAC,MAA8B,2BACvC,OAAS,MAAAC,MAAU,sBAEnB,MAAMC,EAAeN,EAAM,cAAmF,CAC5G,aAAc,QACd,KAAM,MACR,CAAC,EAEKO,EAAqBH,EACzB,0PACA,CACE,SAAU,CACR,aAAc,CACZ,MAAO,iGACP,QACE,uGACJ,EACA,KAAM,CACJ,GAAI,cACJ,KAAM,SACN,GAAI,QACN,CACF,EACA,gBAAiB,CACf,aAAc,QACd,KAAM,MACR,CACF,CACF,EAcMI,EAAaR,EAAM,WACvB,CAAC,CAAE,UAAAS,EAAW,SAAAC,EAAU,aAAAC,EAAc,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAEpDhB,EAACG,EAAoB,KAApB,CAAyB,UAAWI,EAAG,+BAAgCI,CAAS,EAAI,GAAGI,EAAO,IAAKC,EAClG,SAAAhB,EAACQ,EAAa,SAAb,CAAsB,MAAO,CAAE,aAAAK,EAAc,KAAAC,CAAK,EAAI,SAAAF,EAAS,EAClE,CAGN,EACAF,EAAW,YAAc,aAKzB,MAAMO,EAAiBf,EAAM,WAC3B,CAAC,CAAE,UAAAS,EAAW,aAAAE,EAAc,KAAAC,EAAM,SAAAF,EAAU,GAAGG,CAAM,EAAGC,IAAQ,CAC9D,KAAM,CAAE,aAAcE,EAAwB,KAAMC,CAAe,EAAIjB,EAAM,WAAWM,CAAY,EAE9FY,EACJpB,EAACG,EAAoB,KAApB,CACC,IAAKa,EACL,UAAWT,EACTE,EAAmB,CACjB,aAAcI,GAAgBK,EAC9B,KAAMJ,GAAQK,CAChB,CAAC,EACDR,CACF,EACC,GAAGI,EAEJ,SAAAf,EAACG,EAAoB,UAApB,CAA8B,UAAU,0DACvC,SAAAH,EAACK,EAAA,EAAU,EACb,EACF,EAGF,OAAIO,EAEAX,EAACG,EAAA,CAAK,GAAG,QAAQ,UAAWG,EAAG,0BAA2BI,CAAS,EAChE,UAAAS,EACAR,GACH,EAGGQ,CACT,CACF,EACAH,EAAe,YAAc",
6
6
  "names": ["jsx", "jsxs", "React", "RadioGroupPrimitive", "Text", "CheckIcon", "cva", "cn", "RadioContext", "radioGroupVariants", "RadioGroup", "className", "children", "checkedColor", "size", "props", "ref", "RadioGroupItem", "checkedColorFromParent", "sizeFromParent", "ItemRadio"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "1.3.31",
3
+ "version": "1.3.32",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",