@misael703/ui 1.59.0 → 1.60.0
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.
- package/dist/{chunk-XF445GS6.js → chunk-3N24QPRP.js} +12 -12
- package/dist/{chunk-XF445GS6.js.map → chunk-3N24QPRP.js.map} +1 -1
- package/dist/{chunk-3IZYL42M.js → chunk-53MN366Q.js} +8 -8
- package/dist/{chunk-3IZYL42M.js.map → chunk-53MN366Q.js.map} +1 -1
- package/dist/{chunk-ESU5UMEK.mjs → chunk-5C7LUIBN.mjs} +4 -4
- package/dist/{chunk-ESU5UMEK.mjs.map → chunk-5C7LUIBN.mjs.map} +1 -1
- package/dist/{chunk-VMTN5C6F.mjs → chunk-67SCO4BO.mjs} +4 -4
- package/dist/{chunk-VMTN5C6F.mjs.map → chunk-67SCO4BO.mjs.map} +1 -1
- package/dist/{chunk-DN4KVUJF.mjs → chunk-6IXP5UIY.mjs} +3 -3
- package/dist/{chunk-DN4KVUJF.mjs.map → chunk-6IXP5UIY.mjs.map} +1 -1
- package/dist/{chunk-6JXGCU7F.mjs → chunk-6UYKIUQB.mjs} +4 -4
- package/dist/{chunk-6JXGCU7F.mjs.map → chunk-6UYKIUQB.mjs.map} +1 -1
- package/dist/{chunk-3PYU6OHQ.js → chunk-7AJAQJOX.js} +10 -10
- package/dist/{chunk-3PYU6OHQ.js.map → chunk-7AJAQJOX.js.map} +1 -1
- package/dist/{chunk-YHB3BPZR.js → chunk-7CA4IMXM.js} +4 -4
- package/dist/{chunk-YHB3BPZR.js.map → chunk-7CA4IMXM.js.map} +1 -1
- package/dist/{chunk-G3V4UOZW.js → chunk-AB52PRTH.js} +2 -2
- package/dist/{chunk-G3V4UOZW.js.map → chunk-AB52PRTH.js.map} +1 -1
- package/dist/{chunk-4G6NENVM.js → chunk-ADNQFZ33.js} +145 -18
- package/dist/chunk-ADNQFZ33.js.map +1 -0
- package/dist/{chunk-RZQIZZKH.mjs → chunk-CEDAYY2N.mjs} +4 -4
- package/dist/{chunk-RZQIZZKH.mjs.map → chunk-CEDAYY2N.mjs.map} +1 -1
- package/dist/{chunk-QHI4S5PM.mjs → chunk-DAITXFG3.mjs} +4 -4
- package/dist/{chunk-QHI4S5PM.mjs.map → chunk-DAITXFG3.mjs.map} +1 -1
- package/dist/{chunk-DOAGIAIQ.js → chunk-DF4CKUI6.js} +7 -7
- package/dist/{chunk-DOAGIAIQ.js.map → chunk-DF4CKUI6.js.map} +1 -1
- package/dist/{chunk-A42WMR4M.js → chunk-DKOAATV2.js} +5 -2
- package/dist/chunk-DKOAATV2.js.map +1 -0
- package/dist/{chunk-PKUOZT75.js → chunk-DYYMUXKH.js} +7 -7
- package/dist/{chunk-PKUOZT75.js.map → chunk-DYYMUXKH.js.map} +1 -1
- package/dist/{chunk-2TKTMFVC.mjs → chunk-EFX3FU6B.mjs} +4 -4
- package/dist/{chunk-2TKTMFVC.mjs.map → chunk-EFX3FU6B.mjs.map} +1 -1
- package/dist/{chunk-LYT27EIM.js → chunk-EHTHHF2P.js} +6 -6
- package/dist/{chunk-LYT27EIM.js.map → chunk-EHTHHF2P.js.map} +1 -1
- package/dist/{chunk-X7BV2JFX.mjs → chunk-GL5C55DU.mjs} +5 -5
- package/dist/{chunk-X7BV2JFX.mjs.map → chunk-GL5C55DU.mjs.map} +1 -1
- package/dist/{chunk-VGA7UT6T.mjs → chunk-IGNKSI2E.mjs} +2 -2
- package/dist/{chunk-VGA7UT6T.mjs.map → chunk-IGNKSI2E.mjs.map} +1 -1
- package/dist/{chunk-RFWSMP7Q.js → chunk-IH7U4FJT.js} +6 -6
- package/dist/{chunk-RFWSMP7Q.js.map → chunk-IH7U4FJT.js.map} +1 -1
- package/dist/{chunk-KNQOG43N.js → chunk-JNISZPSL.js} +13 -13
- package/dist/{chunk-KNQOG43N.js.map → chunk-JNISZPSL.js.map} +1 -1
- package/dist/{chunk-F237OMT6.js → chunk-KDNO3TOM.js} +4 -4
- package/dist/{chunk-F237OMT6.js.map → chunk-KDNO3TOM.js.map} +1 -1
- package/dist/{chunk-AECVFYGP.mjs → chunk-LMJW566R.mjs} +3 -3
- package/dist/{chunk-AECVFYGP.mjs.map → chunk-LMJW566R.mjs.map} +1 -1
- package/dist/{chunk-ZAKJKBUX.mjs → chunk-NHSPQDB2.mjs} +3 -3
- package/dist/{chunk-ZAKJKBUX.mjs.map → chunk-NHSPQDB2.mjs.map} +1 -1
- package/dist/{chunk-NPUNAVWM.js → chunk-O4TKMQEY.js} +5 -5
- package/dist/{chunk-NPUNAVWM.js.map → chunk-O4TKMQEY.js.map} +1 -1
- package/dist/{chunk-KYYRQNY7.mjs → chunk-OOIRRKJ7.mjs} +5 -2
- package/dist/chunk-OOIRRKJ7.mjs.map +1 -0
- package/dist/{chunk-O3KM5SQB.mjs → chunk-ORTQGS7I.mjs} +5 -5
- package/dist/{chunk-O3KM5SQB.mjs.map → chunk-ORTQGS7I.mjs.map} +1 -1
- package/dist/{chunk-SCUHLOET.mjs → chunk-PUZNB62R.mjs} +4 -4
- package/dist/{chunk-SCUHLOET.mjs.map → chunk-PUZNB62R.mjs.map} +1 -1
- package/dist/{chunk-Q4WPZJUS.mjs → chunk-QRXFKIQF.mjs} +143 -16
- package/dist/chunk-QRXFKIQF.mjs.map +1 -0
- package/dist/{chunk-5OZ6QIFC.mjs → chunk-QWQSOJFP.mjs} +3 -3
- package/dist/{chunk-5OZ6QIFC.mjs.map → chunk-QWQSOJFP.mjs.map} +1 -1
- package/dist/{chunk-ZXHOBEQM.js → chunk-RPNLDCRV.js} +6 -6
- package/dist/{chunk-ZXHOBEQM.js.map → chunk-RPNLDCRV.js.map} +1 -1
- package/dist/{chunk-J2PQFMR5.js → chunk-SA7NCLEK.js} +7 -7
- package/dist/{chunk-J2PQFMR5.js.map → chunk-SA7NCLEK.js.map} +1 -1
- package/dist/{chunk-VLTIVWKF.mjs → chunk-SB7XXXWS.mjs} +4 -4
- package/dist/{chunk-VLTIVWKF.mjs.map → chunk-SB7XXXWS.mjs.map} +1 -1
- package/dist/{chunk-T2DNEJR3.mjs → chunk-TGSGUOSP.mjs} +3 -3
- package/dist/{chunk-T2DNEJR3.mjs.map → chunk-TGSGUOSP.mjs.map} +1 -1
- package/dist/{chunk-F5EK5PIR.mjs → chunk-UQJU332W.mjs} +3 -3
- package/dist/{chunk-F5EK5PIR.mjs.map → chunk-UQJU332W.mjs.map} +1 -1
- package/dist/{chunk-SHIQMHQP.js → chunk-UROEA7L4.js} +8 -8
- package/dist/{chunk-SHIQMHQP.js.map → chunk-UROEA7L4.js.map} +1 -1
- package/dist/{chunk-KY6OH2IK.js → chunk-UW5DUEXJ.js} +4 -4
- package/dist/{chunk-KY6OH2IK.js.map → chunk-UW5DUEXJ.js.map} +1 -1
- package/dist/{chunk-S3MMU3LW.js → chunk-V6DNE6RE.js} +10 -10
- package/dist/{chunk-S3MMU3LW.js.map → chunk-V6DNE6RE.js.map} +1 -1
- package/dist/{chunk-4HHP3WT7.js → chunk-V7MNWM6L.js} +10 -10
- package/dist/{chunk-4HHP3WT7.js.map → chunk-V7MNWM6L.js.map} +1 -1
- package/dist/{chunk-DLDTUVHR.js → chunk-X4EESFGG.js} +5 -5
- package/dist/{chunk-DLDTUVHR.js.map → chunk-X4EESFGG.js.map} +1 -1
- package/dist/{chunk-JZZHOJWY.mjs → chunk-YBJ7NFFW.mjs} +4 -4
- package/dist/{chunk-JZZHOJWY.mjs.map → chunk-YBJ7NFFW.mjs.map} +1 -1
- package/dist/{chunk-I7JH3OEO.mjs → chunk-YKFZCOOB.mjs} +4 -4
- package/dist/{chunk-I7JH3OEO.mjs.map → chunk-YKFZCOOB.mjs.map} +1 -1
- package/dist/components/AdvancedPickers.d.mts +14 -1
- package/dist/components/AdvancedPickers.d.ts +14 -1
- package/dist/components/AdvancedPickers.js +7 -7
- package/dist/components/AdvancedPickers.mjs +3 -3
- package/dist/components/AppShell.js +4 -4
- package/dist/components/AppShell.mjs +2 -2
- package/dist/components/Comments.js +6 -6
- package/dist/components/Comments.mjs +3 -3
- package/dist/components/Commerce.js +15 -15
- package/dist/components/Commerce.mjs +4 -4
- package/dist/components/DataTable.js +11 -11
- package/dist/components/DataTable.mjs +4 -4
- package/dist/components/Display.js +13 -13
- package/dist/components/Display.mjs +2 -2
- package/dist/components/Display3.js +8 -8
- package/dist/components/Display3.mjs +2 -2
- package/dist/components/Editing.js +9 -9
- package/dist/components/Editing.mjs +3 -3
- package/dist/components/Filters.js +9 -9
- package/dist/components/Filters.mjs +3 -3
- package/dist/components/Gallery.js +5 -5
- package/dist/components/Gallery.mjs +3 -3
- package/dist/components/Inputs.js +7 -7
- package/dist/components/Inputs.mjs +3 -3
- package/dist/components/InputsExtra.js +12 -12
- package/dist/components/InputsExtra.mjs +3 -3
- package/dist/components/Notifications.js +4 -4
- package/dist/components/Notifications.mjs +3 -3
- package/dist/components/Overlay.js +4 -4
- package/dist/components/Overlay.mjs +2 -2
- package/dist/components/Permissions.js +4 -4
- package/dist/components/Permissions.mjs +3 -3
- package/dist/components/Pickers.js +8 -8
- package/dist/components/Pickers.mjs +3 -3
- package/dist/components/TimeAgo.js +6 -6
- package/dist/components/TimeAgo.mjs +4 -4
- package/dist/components/Toast.js +4 -4
- package/dist/components/Toast.mjs +2 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +113 -113
- package/dist/index.mjs +21 -21
- package/dist/locale/index.d.mts +2 -2
- package/dist/locale/index.d.ts +2 -2
- package/dist/locale/index.js +6 -6
- package/dist/locale/index.mjs +2 -2
- package/dist/{messages-B3tPolS2.d.ts → messages-Cd8MBbpL.d.mts} +3 -0
- package/dist/{messages-B3tPolS2.d.mts → messages-Cd8MBbpL.d.ts} +3 -0
- package/dist/styles.css +1 -1
- package/dist/utils/smartTime.d.mts +1 -1
- package/dist/utils/smartTime.d.ts +1 -1
- package/dist/utils/smartTime.js +6 -6
- package/dist/utils/smartTime.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-4G6NENVM.js.map +0 -1
- package/dist/chunk-A42WMR4M.js.map +0 -1
- package/dist/chunk-KYYRQNY7.mjs.map +0 -1
- package/dist/chunk-Q4WPZJUS.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Commerce.tsx"],"names":[],"mappings":"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","file":"chunk-X7BV2JFX.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Drawer } from './Overlay';\nimport { Heart, Minus, Plus, Star, Trash, X, Check } from './Icons';\nimport { getBrand } from '../brand';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format } from '../locale/messages';\n\n// ---------- Rating ------------------------------------------------------\nexport interface RatingProps {\n value: number; // 0..max\n max?: number; // default 5\n /** Si se pasa, se vuelve interactivo. */\n onChange?: (value: number) => void;\n size?: number;\n /** Permite medias estrellas (display only). */\n allowHalf?: boolean;\n className?: string;\n ariaLabel?: string;\n}\n\nexport function Rating({\n value, max = 5, onChange, size = 16, allowHalf = true, className, ariaLabel,\n}: RatingProps) {\n const isInteractive = !!onChange;\n return (\n <div\n className={cx('rating', isInteractive && 'rating--interactive', className)}\n role={isInteractive ? 'slider' : 'img'}\n aria-label={ariaLabel ?? `${value} de ${max} estrellas`}\n aria-valuenow={isInteractive ? value : undefined}\n aria-valuemin={isInteractive ? 0 : undefined}\n aria-valuemax={isInteractive ? max : undefined}\n >\n {Array.from({ length: max }, (_, i) => {\n const idx = i + 1;\n const fill = value >= idx ? 1 : (allowHalf && value >= idx - 0.5 ? 0.5 : 0);\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('rating__star', fill === 1 && 'is-full', fill === 0.5 && 'is-half')}\n disabled={!isInteractive}\n onClick={() => onChange?.(idx)}\n aria-label={`${idx} ${idx === 1 ? 'estrella' : 'estrellas'}`}\n >\n <Star size={size} />\n </button>\n );\n })}\n </div>\n );\n}\n\n// ---------- PriceDisplay -----------------------------------------------\nexport interface PriceDisplayProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n amount: number;\n /** Precio original tachado (para descuentos). */\n compareAt?: number;\n /** ISO 4217. Default desde `getBrand().currency`. */\n currency?: string;\n /** BCP 47. Default desde `getBrand().locale`. */\n locale?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** Muestra \"% off\" si hay compareAt. Default: true. */\n showDiscount?: boolean;\n}\n\nexport function PriceDisplay({\n amount, compareAt, currency, locale,\n size = 'md', showDiscount = true, className, ...rest\n}: PriceDisplayProps) {\n const brand = getBrand();\n const fmt = (n: number) =>\n new Intl.NumberFormat(locale ?? brand.locale, { style: 'currency', currency: currency ?? brand.currency, maximumFractionDigits: 0 }).format(n);\n\n const hasDiscount = compareAt != null && compareAt > amount;\n const discount = hasDiscount ? Math.round(((compareAt - amount) / compareAt) * 100) : 0;\n\n return (\n <div className={cx('price', `price--${size}`, className)} {...rest}>\n <span className=\"price__amount\">{fmt(amount)}</span>\n {hasDiscount && (\n <>\n <span className=\"price__compare\"><del>{fmt(compareAt)}</del></span>\n {showDiscount && discount > 0 && (\n <span className=\"price__discount\">-{discount}%</span>\n )}\n </>\n )}\n </div>\n );\n}\n\n// ---------- QuantitySelector (compacto) --------------------------------\nexport interface QuantitySelectorProps {\n value: number;\n onChange: (v: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n id?: string;\n}\n\nexport function QuantitySelector({\n value, onChange, min = 1, max, step = 1, disabled, size = 'md', className, id,\n}: QuantitySelectorProps) {\n const t = useLocale();\n const set = (next: number) => {\n let v = next;\n if (typeof min === 'number') v = Math.max(min, v);\n if (typeof max === 'number') v = Math.min(max, v);\n onChange(v);\n };\n const dec = () => set(value - step);\n const inc = () => set(value + step);\n return (\n <div className={cx('qty', `qty--${size}`, disabled && 'is-disabled', className)}>\n <button\n type=\"button\"\n className=\"qty__btn\"\n aria-label={t['commerce.decreaseQty']}\n onClick={dec}\n disabled={disabled || (typeof min === 'number' && value <= min)}\n >\n <Minus size={14} />\n </button>\n <input\n id={id}\n type=\"number\"\n className=\"qty__input\"\n value={value}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n onChange={(e) => set(Number(e.target.value))}\n aria-label={t['commerce.quantity']}\n />\n <button\n type=\"button\"\n className=\"qty__btn\"\n aria-label={t['commerce.increaseQty']}\n onClick={inc}\n disabled={disabled || (typeof max === 'number' && value >= max)}\n >\n <Plus size={14} />\n </button>\n </div>\n );\n}\n\n// ---------- VariantSelector --------------------------------------------\nexport interface VariantOption<T = string> {\n value: T;\n label: React.ReactNode;\n disabled?: boolean;\n /** Color hex/rgb para chips de tipo \"color\". */\n swatch?: string;\n}\n\nexport interface VariantSelectorProps<T = string> {\n label?: React.ReactNode;\n options: VariantOption<T>[];\n value: T | null;\n onChange: (value: T) => void;\n /** 'chip' (default), 'swatch' (círculos de color). */\n appearance?: 'chip' | 'swatch';\n className?: string;\n}\n\nexport function VariantSelector<T extends string | number = string>({\n label, options, value, onChange, appearance = 'chip', className,\n}: VariantSelectorProps<T>) {\n return (\n <div className={cx('variants', className)}>\n {label && <div className=\"variants__label\">{label}</div>}\n <div className={cx('variants__options', `variants__options--${appearance}`)} role=\"radiogroup\">\n {options.map((o) => {\n const selected = value === o.value;\n if (appearance === 'swatch') {\n return (\n <button\n key={String(o.value)}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={o.disabled}\n className={cx('variants__swatch', selected && 'is-selected', o.disabled && 'is-disabled')}\n style={{ background: o.swatch }}\n title={typeof o.label === 'string' ? o.label : String(o.value)}\n aria-label={typeof o.label === 'string' ? o.label : String(o.value)}\n onClick={() => onChange(o.value)}\n >\n {selected && <Check size={14} />}\n </button>\n );\n }\n return (\n <button\n key={String(o.value)}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={o.disabled}\n className={cx('variants__chip', selected && 'is-selected', o.disabled && 'is-disabled')}\n onClick={() => onChange(o.value)}\n >\n {o.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ---------- WishlistButton ---------------------------------------------\nexport interface WishlistButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n active?: boolean;\n onToggle?: (next: boolean) => void;\n size?: number;\n}\n\nexport function WishlistButton({ active = false, onToggle, size = 20, className, ...rest }: WishlistButtonProps) {\n const t = useLocale();\n return (\n <button\n type=\"button\"\n className={cx('wishlist', active && 'is-active', className)}\n aria-label={active ? t['commerce.removeFavorite'] : t['commerce.addFavorite']}\n aria-pressed={active}\n onClick={() => onToggle?.(!active)}\n {...rest}\n >\n <Heart size={size} />\n </button>\n );\n}\n\n// ---------- PromoCodeInput ---------------------------------------------\nexport interface PromoCodeInputProps {\n /** Validador async. Resuelve con un mensaje de éxito o lanza un Error con el mensaje. */\n onApply: (code: string) => Promise<string>;\n placeholder?: string;\n buttonLabel?: string;\n className?: string;\n id?: string;\n}\n\nexport function PromoCodeInput({\n onApply, placeholder,\n buttonLabel, className, id,\n}: PromoCodeInputProps) {\n const [code, setCode] = React.useState('');\n const [state, setState] = React.useState<'idle' | 'loading' | 'success' | 'error'>('idle');\n const [message, setMessage] = React.useState<string | null>(null);\n const t = useLocale();\n const ph = placeholder ?? t['commerce.promoPlaceholder'];\n const btn = buttonLabel ?? t['commerce.applyCoupon'];\n\n const apply = async () => {\n if (!code.trim()) return;\n setState('loading');\n setMessage(null);\n try {\n const msg = await onApply(code.trim());\n setState('success');\n setMessage(msg);\n } catch (err) {\n setState('error');\n setMessage(err instanceof Error ? err.message : t['commerce.promoInvalid']);\n }\n };\n\n return (\n <div className={cx('promo', state === 'success' && 'is-success', state === 'error' && 'is-error', className)}>\n <div className=\"promo__row\">\n <input\n id={id}\n type=\"text\"\n className=\"input promo__input\"\n value={code}\n placeholder={ph}\n disabled={state === 'loading' || state === 'success'}\n onChange={(e) => { setCode(e.target.value.toUpperCase()); if (state !== 'idle') setState('idle'); }}\n onKeyDown={(e) => e.key === 'Enter' && apply()}\n />\n <button\n type=\"button\"\n className=\"btn btn--primary btn--md\"\n disabled={!code.trim() || state === 'loading' || state === 'success'}\n onClick={apply}\n >\n {state === 'loading' ? <span className=\"spinner spinner--inverse\" aria-hidden=\"true\" /> : btn}\n </button>\n </div>\n {message && <div className={cx('promo__message', `promo__message--${state}`)}>{message}</div>}\n </div>\n );\n}\n\n// ---------- FreeShippingProgress ---------------------------------------\nexport interface FreeShippingProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Subtotal actual del cart. */\n current: number;\n /** Threshold para envío gratis. */\n threshold: number;\n currency?: string;\n locale?: string;\n achievedMessage?: React.ReactNode;\n}\n\nexport function FreeShippingProgress({\n current, threshold, currency, locale,\n achievedMessage,\n className, ...rest\n}: FreeShippingProgressProps) {\n const brand = getBrand();\n const t = useLocale();\n const fmt = (n: number) =>\n new Intl.NumberFormat(locale ?? brand.locale, { style: 'currency', currency: currency ?? brand.currency, maximumFractionDigits: 0 }).format(n);\n\n const pct = Math.min(100, (current / threshold) * 100);\n const remaining = Math.max(0, threshold - current);\n const achieved = current >= threshold;\n const successMsg = achievedMessage ?? t['commerce.shippingAchieved'];\n\n return (\n <div className={cx('shipping-progress', achieved && 'is-achieved', className)} {...rest}>\n <div className=\"shipping-progress__text\">\n {achieved ? successMsg : <>{t['commerce.shippingPrefix']}<strong>{fmt(remaining)}</strong>{t['commerce.shippingSuffix']}</>}\n </div>\n <div className=\"shipping-progress__track\" aria-hidden=\"true\">\n <div className=\"shipping-progress__bar\" style={{ width: `${pct}%` }} />\n </div>\n </div>\n );\n}\n\n// ---------- CartDrawer + line items ------------------------------------\nexport interface CartLineItem {\n id: string;\n name: React.ReactNode;\n variant?: React.ReactNode;\n image?: string;\n unitPrice: number;\n quantity: number;\n}\n\nexport interface CartDrawerProps {\n open: boolean;\n onClose: () => void;\n items: CartLineItem[];\n onQuantityChange?: (id: string, qty: number) => void;\n onRemove?: (id: string) => void;\n onCheckout?: () => void;\n freeShippingThreshold?: number;\n currency?: string;\n locale?: string;\n}\n\nexport function CartDrawer({\n open, onClose, items,\n onQuantityChange, onRemove, onCheckout,\n freeShippingThreshold, currency, locale,\n}: CartDrawerProps) {\n const brand = getBrand();\n const t = useLocale();\n const resolvedCurrency = currency ?? brand.currency;\n const resolvedLocale = locale ?? brand.locale;\n const subtotal = items.reduce((sum, it) => sum + it.unitPrice * it.quantity, 0);\n const fmt = (n: number) =>\n new Intl.NumberFormat(resolvedLocale, { style: 'currency', currency: resolvedCurrency, maximumFractionDigits: 0 }).format(n);\n\n return (\n <Drawer\n open={open}\n onClose={onClose}\n title={t['commerce.cartTitle']}\n footer={\n <div className=\"cart__footer\">\n {freeShippingThreshold != null && (\n <FreeShippingProgress current={subtotal} threshold={freeShippingThreshold} currency={resolvedCurrency} locale={resolvedLocale} />\n )}\n <div className=\"cart__totals\">\n <span>{t['commerce.subtotal']}</span>\n <strong>{fmt(subtotal)}</strong>\n </div>\n <button type=\"button\" className=\"btn btn--primary btn--lg btn--block\" disabled={items.length === 0} onClick={onCheckout}>\n {t['commerce.checkout']}\n </button>\n </div>\n }\n >\n {items.length === 0 ? (\n <div className=\"cart__empty\">{t['commerce.cartEmpty']}</div>\n ) : (\n <ul className=\"cart__list\">\n {items.map((it) => (\n <li key={it.id} className=\"cart__item\">\n <div className=\"cart__item-media\">\n {it.image ? <img src={it.image} alt=\"\" /> : <div className=\"cart__item-placeholder\" />}\n </div>\n <div className=\"cart__item-body\">\n <div className=\"cart__item-name\">{it.name}</div>\n {it.variant && <div className=\"cart__item-variant\">{it.variant}</div>}\n <div className=\"cart__item-price\">{fmt(it.unitPrice)}</div>\n </div>\n <div className=\"cart__item-actions\">\n {onQuantityChange ? (\n <QuantitySelector\n size=\"sm\"\n value={it.quantity}\n onChange={(q) => onQuantityChange(it.id, q)}\n />\n ) : (\n <span className=\"cart__item-qty\">x{it.quantity}</span>\n )}\n {onRemove && (\n <button\n type=\"button\"\n className=\"cart__item-remove\"\n aria-label={t['commerce.removeFromCart']}\n onClick={() => onRemove(it.id)}\n >\n <Trash size={14} />\n </button>\n )}\n </div>\n </li>\n ))}\n </ul>\n )}\n </Drawer>\n );\n}\n\n// ---------- OrderSummary ------------------------------------------------\nexport interface OrderLineRow {\n label: React.ReactNode;\n value: React.ReactNode;\n /** Aplica estilo de total (negrita, más grande). */\n emphasis?: boolean;\n}\n\nexport interface OrderSummaryProps extends Omit<React.HTMLAttributes<HTMLDListElement>, 'title'> {\n rows: OrderLineRow[];\n title?: React.ReactNode;\n}\n\nexport function OrderSummary({ rows, title, className, ...rest }: OrderSummaryProps) {\n return (\n <div className={cx('order-summary', className)}>\n {title && <div className=\"order-summary__title\">{title}</div>}\n <dl className=\"order-summary__list\" {...rest}>\n {rows.map((r, i) => (\n <div key={i} className={cx('order-summary__row', r.emphasis && 'is-emphasis')}>\n <dt>{r.label}</dt>\n <dd>{r.value}</dd>\n </div>\n ))}\n </dl>\n </div>\n );\n}\n\n// ---------- AddressForm (generic field composer) -----------------------\n// The kit doesn't ship country-specific fields. Consumers pass a `fields`\n// array describing which inputs to render and the order. For Chile, that\n// means defining `[{ key: 'rut', ... }, { key: 'comuna', ... }, ...]` in\n// app code. For other markets, define different fields.\n//\n// Layout: each field declares its `width` ('full' | 'half' | 'third').\n// The form renders in a 6-column CSS grid, where 'full' spans 6, 'half'\n// spans 3, and 'third' spans 2. On narrow viewports everything stacks.\n\nexport interface AddressFieldOption {\n value: string;\n label: React.ReactNode;\n}\n\nexport interface AddressField {\n /** Key del campo en el objeto `value`. */\n key: string;\n label: React.ReactNode;\n type?: 'text' | 'select' | 'textarea';\n placeholder?: string;\n /** Solo para `type: 'select'`. */\n options?: readonly AddressFieldOption[];\n /** Placeholder de la opción vacía. Default: 'Selecciona…' (locale: `common.search` no aplica). */\n selectPlaceholder?: string;\n /** Anchura en una grilla de 6 columnas. Default: 'full'. */\n width?: 'full' | 'half' | 'third';\n /** Solo para `type: 'textarea'`. */\n rows?: number;\n}\n\nexport interface AddressFormProps {\n fields: AddressField[];\n value: Record<string, string>;\n onChange: (value: Record<string, string>) => void;\n className?: string;\n}\n\nexport function AddressForm({ fields, value, onChange, className }: AddressFormProps) {\n const reactId = React.useId();\n const set = (key: string, v: string) => onChange({ ...value, [key]: v });\n\n return (\n <div className={cx('address-form', className)}>\n {fields.map((f) => {\n const id = `${reactId}-${f.key}`;\n const width = f.width ?? 'full';\n const v = value[f.key] ?? '';\n return (\n <div key={f.key} className={cx('form-field', `address-form__field--${width}`)}>\n <label className=\"label\" htmlFor={id}>{f.label}</label>\n {f.type === 'select' ? (\n <select\n id={id}\n className=\"select\"\n value={v}\n onChange={(e) => set(f.key, e.target.value)}\n >\n <option value=\"\">{f.selectPlaceholder ?? 'Selecciona…'}</option>\n {f.options?.map((o) => (\n <option key={o.value} value={o.value}>\n {typeof o.label === 'string' ? o.label : o.value}\n </option>\n ))}\n </select>\n ) : f.type === 'textarea' ? (\n <textarea\n id={id}\n className=\"textarea\"\n value={v}\n placeholder={f.placeholder}\n rows={f.rows ?? 2}\n onChange={(e) => set(f.key, e.target.value)}\n />\n ) : (\n <input\n id={id}\n className=\"input\"\n value={v}\n placeholder={f.placeholder}\n onChange={(e) => set(f.key, e.target.value)}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\n// ---------- CompareTable -----------------------------------------------\nexport interface CompareItem {\n id: string;\n name: React.ReactNode;\n image?: string;\n price?: React.ReactNode;\n}\n\nexport interface CompareAttribute {\n key: string;\n label: React.ReactNode;\n /** Valor por item, indexado por id. */\n values: Record<string, React.ReactNode>;\n}\n\nexport interface CompareTableProps extends React.HTMLAttributes<HTMLTableElement> {\n items: CompareItem[];\n attributes: CompareAttribute[];\n onRemove?: (id: string) => void;\n}\n\nexport function CompareTable({ items, attributes, onRemove, className, ...rest }: CompareTableProps) {\n const t = useLocale();\n return (\n <div className={cx('compare', className)}>\n <table className=\"compare__table\" {...rest}>\n <thead>\n <tr>\n <th />\n {items.map((it) => (\n <th key={it.id} scope=\"col\">\n <div className=\"compare__head\">\n {it.image && <img src={it.image} alt=\"\" className=\"compare__img\" />}\n <div className=\"compare__name\">{it.name}</div>\n {it.price && <div className=\"compare__price\">{it.price}</div>}\n {onRemove && (\n <button\n type=\"button\"\n className=\"compare__remove\"\n aria-label={format(t['commerce.removeItem'], { name: typeof it.name === 'string' ? it.name : 'item' })}\n onClick={() => onRemove(it.id)}\n >\n <X size={14} />\n </button>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {attributes.map((attr) => (\n <tr key={attr.key}>\n <th scope=\"row\" className=\"compare__attr\">{attr.label}</th>\n {items.map((it) => (\n <td key={it.id} className=\"compare__cell\">{attr.values[it.id] ?? '—'}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Commerce.tsx"],"names":[],"mappings":"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","file":"chunk-GL5C55DU.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Drawer } from './Overlay';\nimport { Heart, Minus, Plus, Star, Trash, X, Check } from './Icons';\nimport { getBrand } from '../brand';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format } from '../locale/messages';\n\n// ---------- Rating ------------------------------------------------------\nexport interface RatingProps {\n value: number; // 0..max\n max?: number; // default 5\n /** Si se pasa, se vuelve interactivo. */\n onChange?: (value: number) => void;\n size?: number;\n /** Permite medias estrellas (display only). */\n allowHalf?: boolean;\n className?: string;\n ariaLabel?: string;\n}\n\nexport function Rating({\n value, max = 5, onChange, size = 16, allowHalf = true, className, ariaLabel,\n}: RatingProps) {\n const isInteractive = !!onChange;\n return (\n <div\n className={cx('rating', isInteractive && 'rating--interactive', className)}\n role={isInteractive ? 'slider' : 'img'}\n aria-label={ariaLabel ?? `${value} de ${max} estrellas`}\n aria-valuenow={isInteractive ? value : undefined}\n aria-valuemin={isInteractive ? 0 : undefined}\n aria-valuemax={isInteractive ? max : undefined}\n >\n {Array.from({ length: max }, (_, i) => {\n const idx = i + 1;\n const fill = value >= idx ? 1 : (allowHalf && value >= idx - 0.5 ? 0.5 : 0);\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('rating__star', fill === 1 && 'is-full', fill === 0.5 && 'is-half')}\n disabled={!isInteractive}\n onClick={() => onChange?.(idx)}\n aria-label={`${idx} ${idx === 1 ? 'estrella' : 'estrellas'}`}\n >\n <Star size={size} />\n </button>\n );\n })}\n </div>\n );\n}\n\n// ---------- PriceDisplay -----------------------------------------------\nexport interface PriceDisplayProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n amount: number;\n /** Precio original tachado (para descuentos). */\n compareAt?: number;\n /** ISO 4217. Default desde `getBrand().currency`. */\n currency?: string;\n /** BCP 47. Default desde `getBrand().locale`. */\n locale?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** Muestra \"% off\" si hay compareAt. Default: true. */\n showDiscount?: boolean;\n}\n\nexport function PriceDisplay({\n amount, compareAt, currency, locale,\n size = 'md', showDiscount = true, className, ...rest\n}: PriceDisplayProps) {\n const brand = getBrand();\n const fmt = (n: number) =>\n new Intl.NumberFormat(locale ?? brand.locale, { style: 'currency', currency: currency ?? brand.currency, maximumFractionDigits: 0 }).format(n);\n\n const hasDiscount = compareAt != null && compareAt > amount;\n const discount = hasDiscount ? Math.round(((compareAt - amount) / compareAt) * 100) : 0;\n\n return (\n <div className={cx('price', `price--${size}`, className)} {...rest}>\n <span className=\"price__amount\">{fmt(amount)}</span>\n {hasDiscount && (\n <>\n <span className=\"price__compare\"><del>{fmt(compareAt)}</del></span>\n {showDiscount && discount > 0 && (\n <span className=\"price__discount\">-{discount}%</span>\n )}\n </>\n )}\n </div>\n );\n}\n\n// ---------- QuantitySelector (compacto) --------------------------------\nexport interface QuantitySelectorProps {\n value: number;\n onChange: (v: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n size?: 'sm' | 'md';\n className?: string;\n id?: string;\n}\n\nexport function QuantitySelector({\n value, onChange, min = 1, max, step = 1, disabled, size = 'md', className, id,\n}: QuantitySelectorProps) {\n const t = useLocale();\n const set = (next: number) => {\n let v = next;\n if (typeof min === 'number') v = Math.max(min, v);\n if (typeof max === 'number') v = Math.min(max, v);\n onChange(v);\n };\n const dec = () => set(value - step);\n const inc = () => set(value + step);\n return (\n <div className={cx('qty', `qty--${size}`, disabled && 'is-disabled', className)}>\n <button\n type=\"button\"\n className=\"qty__btn\"\n aria-label={t['commerce.decreaseQty']}\n onClick={dec}\n disabled={disabled || (typeof min === 'number' && value <= min)}\n >\n <Minus size={14} />\n </button>\n <input\n id={id}\n type=\"number\"\n className=\"qty__input\"\n value={value}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n onChange={(e) => set(Number(e.target.value))}\n aria-label={t['commerce.quantity']}\n />\n <button\n type=\"button\"\n className=\"qty__btn\"\n aria-label={t['commerce.increaseQty']}\n onClick={inc}\n disabled={disabled || (typeof max === 'number' && value >= max)}\n >\n <Plus size={14} />\n </button>\n </div>\n );\n}\n\n// ---------- VariantSelector --------------------------------------------\nexport interface VariantOption<T = string> {\n value: T;\n label: React.ReactNode;\n disabled?: boolean;\n /** Color hex/rgb para chips de tipo \"color\". */\n swatch?: string;\n}\n\nexport interface VariantSelectorProps<T = string> {\n label?: React.ReactNode;\n options: VariantOption<T>[];\n value: T | null;\n onChange: (value: T) => void;\n /** 'chip' (default), 'swatch' (círculos de color). */\n appearance?: 'chip' | 'swatch';\n className?: string;\n}\n\nexport function VariantSelector<T extends string | number = string>({\n label, options, value, onChange, appearance = 'chip', className,\n}: VariantSelectorProps<T>) {\n return (\n <div className={cx('variants', className)}>\n {label && <div className=\"variants__label\">{label}</div>}\n <div className={cx('variants__options', `variants__options--${appearance}`)} role=\"radiogroup\">\n {options.map((o) => {\n const selected = value === o.value;\n if (appearance === 'swatch') {\n return (\n <button\n key={String(o.value)}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={o.disabled}\n className={cx('variants__swatch', selected && 'is-selected', o.disabled && 'is-disabled')}\n style={{ background: o.swatch }}\n title={typeof o.label === 'string' ? o.label : String(o.value)}\n aria-label={typeof o.label === 'string' ? o.label : String(o.value)}\n onClick={() => onChange(o.value)}\n >\n {selected && <Check size={14} />}\n </button>\n );\n }\n return (\n <button\n key={String(o.value)}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={o.disabled}\n className={cx('variants__chip', selected && 'is-selected', o.disabled && 'is-disabled')}\n onClick={() => onChange(o.value)}\n >\n {o.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\n// ---------- WishlistButton ---------------------------------------------\nexport interface WishlistButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n active?: boolean;\n onToggle?: (next: boolean) => void;\n size?: number;\n}\n\nexport function WishlistButton({ active = false, onToggle, size = 20, className, ...rest }: WishlistButtonProps) {\n const t = useLocale();\n return (\n <button\n type=\"button\"\n className={cx('wishlist', active && 'is-active', className)}\n aria-label={active ? t['commerce.removeFavorite'] : t['commerce.addFavorite']}\n aria-pressed={active}\n onClick={() => onToggle?.(!active)}\n {...rest}\n >\n <Heart size={size} />\n </button>\n );\n}\n\n// ---------- PromoCodeInput ---------------------------------------------\nexport interface PromoCodeInputProps {\n /** Validador async. Resuelve con un mensaje de éxito o lanza un Error con el mensaje. */\n onApply: (code: string) => Promise<string>;\n placeholder?: string;\n buttonLabel?: string;\n className?: string;\n id?: string;\n}\n\nexport function PromoCodeInput({\n onApply, placeholder,\n buttonLabel, className, id,\n}: PromoCodeInputProps) {\n const [code, setCode] = React.useState('');\n const [state, setState] = React.useState<'idle' | 'loading' | 'success' | 'error'>('idle');\n const [message, setMessage] = React.useState<string | null>(null);\n const t = useLocale();\n const ph = placeholder ?? t['commerce.promoPlaceholder'];\n const btn = buttonLabel ?? t['commerce.applyCoupon'];\n\n const apply = async () => {\n if (!code.trim()) return;\n setState('loading');\n setMessage(null);\n try {\n const msg = await onApply(code.trim());\n setState('success');\n setMessage(msg);\n } catch (err) {\n setState('error');\n setMessage(err instanceof Error ? err.message : t['commerce.promoInvalid']);\n }\n };\n\n return (\n <div className={cx('promo', state === 'success' && 'is-success', state === 'error' && 'is-error', className)}>\n <div className=\"promo__row\">\n <input\n id={id}\n type=\"text\"\n className=\"input promo__input\"\n value={code}\n placeholder={ph}\n disabled={state === 'loading' || state === 'success'}\n onChange={(e) => { setCode(e.target.value.toUpperCase()); if (state !== 'idle') setState('idle'); }}\n onKeyDown={(e) => e.key === 'Enter' && apply()}\n />\n <button\n type=\"button\"\n className=\"btn btn--primary btn--md\"\n disabled={!code.trim() || state === 'loading' || state === 'success'}\n onClick={apply}\n >\n {state === 'loading' ? <span className=\"spinner spinner--inverse\" aria-hidden=\"true\" /> : btn}\n </button>\n </div>\n {message && <div className={cx('promo__message', `promo__message--${state}`)}>{message}</div>}\n </div>\n );\n}\n\n// ---------- FreeShippingProgress ---------------------------------------\nexport interface FreeShippingProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Subtotal actual del cart. */\n current: number;\n /** Threshold para envío gratis. */\n threshold: number;\n currency?: string;\n locale?: string;\n achievedMessage?: React.ReactNode;\n}\n\nexport function FreeShippingProgress({\n current, threshold, currency, locale,\n achievedMessage,\n className, ...rest\n}: FreeShippingProgressProps) {\n const brand = getBrand();\n const t = useLocale();\n const fmt = (n: number) =>\n new Intl.NumberFormat(locale ?? brand.locale, { style: 'currency', currency: currency ?? brand.currency, maximumFractionDigits: 0 }).format(n);\n\n const pct = Math.min(100, (current / threshold) * 100);\n const remaining = Math.max(0, threshold - current);\n const achieved = current >= threshold;\n const successMsg = achievedMessage ?? t['commerce.shippingAchieved'];\n\n return (\n <div className={cx('shipping-progress', achieved && 'is-achieved', className)} {...rest}>\n <div className=\"shipping-progress__text\">\n {achieved ? successMsg : <>{t['commerce.shippingPrefix']}<strong>{fmt(remaining)}</strong>{t['commerce.shippingSuffix']}</>}\n </div>\n <div className=\"shipping-progress__track\" aria-hidden=\"true\">\n <div className=\"shipping-progress__bar\" style={{ width: `${pct}%` }} />\n </div>\n </div>\n );\n}\n\n// ---------- CartDrawer + line items ------------------------------------\nexport interface CartLineItem {\n id: string;\n name: React.ReactNode;\n variant?: React.ReactNode;\n image?: string;\n unitPrice: number;\n quantity: number;\n}\n\nexport interface CartDrawerProps {\n open: boolean;\n onClose: () => void;\n items: CartLineItem[];\n onQuantityChange?: (id: string, qty: number) => void;\n onRemove?: (id: string) => void;\n onCheckout?: () => void;\n freeShippingThreshold?: number;\n currency?: string;\n locale?: string;\n}\n\nexport function CartDrawer({\n open, onClose, items,\n onQuantityChange, onRemove, onCheckout,\n freeShippingThreshold, currency, locale,\n}: CartDrawerProps) {\n const brand = getBrand();\n const t = useLocale();\n const resolvedCurrency = currency ?? brand.currency;\n const resolvedLocale = locale ?? brand.locale;\n const subtotal = items.reduce((sum, it) => sum + it.unitPrice * it.quantity, 0);\n const fmt = (n: number) =>\n new Intl.NumberFormat(resolvedLocale, { style: 'currency', currency: resolvedCurrency, maximumFractionDigits: 0 }).format(n);\n\n return (\n <Drawer\n open={open}\n onClose={onClose}\n title={t['commerce.cartTitle']}\n footer={\n <div className=\"cart__footer\">\n {freeShippingThreshold != null && (\n <FreeShippingProgress current={subtotal} threshold={freeShippingThreshold} currency={resolvedCurrency} locale={resolvedLocale} />\n )}\n <div className=\"cart__totals\">\n <span>{t['commerce.subtotal']}</span>\n <strong>{fmt(subtotal)}</strong>\n </div>\n <button type=\"button\" className=\"btn btn--primary btn--lg btn--block\" disabled={items.length === 0} onClick={onCheckout}>\n {t['commerce.checkout']}\n </button>\n </div>\n }\n >\n {items.length === 0 ? (\n <div className=\"cart__empty\">{t['commerce.cartEmpty']}</div>\n ) : (\n <ul className=\"cart__list\">\n {items.map((it) => (\n <li key={it.id} className=\"cart__item\">\n <div className=\"cart__item-media\">\n {it.image ? <img src={it.image} alt=\"\" /> : <div className=\"cart__item-placeholder\" />}\n </div>\n <div className=\"cart__item-body\">\n <div className=\"cart__item-name\">{it.name}</div>\n {it.variant && <div className=\"cart__item-variant\">{it.variant}</div>}\n <div className=\"cart__item-price\">{fmt(it.unitPrice)}</div>\n </div>\n <div className=\"cart__item-actions\">\n {onQuantityChange ? (\n <QuantitySelector\n size=\"sm\"\n value={it.quantity}\n onChange={(q) => onQuantityChange(it.id, q)}\n />\n ) : (\n <span className=\"cart__item-qty\">x{it.quantity}</span>\n )}\n {onRemove && (\n <button\n type=\"button\"\n className=\"cart__item-remove\"\n aria-label={t['commerce.removeFromCart']}\n onClick={() => onRemove(it.id)}\n >\n <Trash size={14} />\n </button>\n )}\n </div>\n </li>\n ))}\n </ul>\n )}\n </Drawer>\n );\n}\n\n// ---------- OrderSummary ------------------------------------------------\nexport interface OrderLineRow {\n label: React.ReactNode;\n value: React.ReactNode;\n /** Aplica estilo de total (negrita, más grande). */\n emphasis?: boolean;\n}\n\nexport interface OrderSummaryProps extends Omit<React.HTMLAttributes<HTMLDListElement>, 'title'> {\n rows: OrderLineRow[];\n title?: React.ReactNode;\n}\n\nexport function OrderSummary({ rows, title, className, ...rest }: OrderSummaryProps) {\n return (\n <div className={cx('order-summary', className)}>\n {title && <div className=\"order-summary__title\">{title}</div>}\n <dl className=\"order-summary__list\" {...rest}>\n {rows.map((r, i) => (\n <div key={i} className={cx('order-summary__row', r.emphasis && 'is-emphasis')}>\n <dt>{r.label}</dt>\n <dd>{r.value}</dd>\n </div>\n ))}\n </dl>\n </div>\n );\n}\n\n// ---------- AddressForm (generic field composer) -----------------------\n// The kit doesn't ship country-specific fields. Consumers pass a `fields`\n// array describing which inputs to render and the order. For Chile, that\n// means defining `[{ key: 'rut', ... }, { key: 'comuna', ... }, ...]` in\n// app code. For other markets, define different fields.\n//\n// Layout: each field declares its `width` ('full' | 'half' | 'third').\n// The form renders in a 6-column CSS grid, where 'full' spans 6, 'half'\n// spans 3, and 'third' spans 2. On narrow viewports everything stacks.\n\nexport interface AddressFieldOption {\n value: string;\n label: React.ReactNode;\n}\n\nexport interface AddressField {\n /** Key del campo en el objeto `value`. */\n key: string;\n label: React.ReactNode;\n type?: 'text' | 'select' | 'textarea';\n placeholder?: string;\n /** Solo para `type: 'select'`. */\n options?: readonly AddressFieldOption[];\n /** Placeholder de la opción vacía. Default: 'Selecciona…' (locale: `common.search` no aplica). */\n selectPlaceholder?: string;\n /** Anchura en una grilla de 6 columnas. Default: 'full'. */\n width?: 'full' | 'half' | 'third';\n /** Solo para `type: 'textarea'`. */\n rows?: number;\n}\n\nexport interface AddressFormProps {\n fields: AddressField[];\n value: Record<string, string>;\n onChange: (value: Record<string, string>) => void;\n className?: string;\n}\n\nexport function AddressForm({ fields, value, onChange, className }: AddressFormProps) {\n const reactId = React.useId();\n const set = (key: string, v: string) => onChange({ ...value, [key]: v });\n\n return (\n <div className={cx('address-form', className)}>\n {fields.map((f) => {\n const id = `${reactId}-${f.key}`;\n const width = f.width ?? 'full';\n const v = value[f.key] ?? '';\n return (\n <div key={f.key} className={cx('form-field', `address-form__field--${width}`)}>\n <label className=\"label\" htmlFor={id}>{f.label}</label>\n {f.type === 'select' ? (\n <select\n id={id}\n className=\"select\"\n value={v}\n onChange={(e) => set(f.key, e.target.value)}\n >\n <option value=\"\">{f.selectPlaceholder ?? 'Selecciona…'}</option>\n {f.options?.map((o) => (\n <option key={o.value} value={o.value}>\n {typeof o.label === 'string' ? o.label : o.value}\n </option>\n ))}\n </select>\n ) : f.type === 'textarea' ? (\n <textarea\n id={id}\n className=\"textarea\"\n value={v}\n placeholder={f.placeholder}\n rows={f.rows ?? 2}\n onChange={(e) => set(f.key, e.target.value)}\n />\n ) : (\n <input\n id={id}\n className=\"input\"\n value={v}\n placeholder={f.placeholder}\n onChange={(e) => set(f.key, e.target.value)}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\n// ---------- CompareTable -----------------------------------------------\nexport interface CompareItem {\n id: string;\n name: React.ReactNode;\n image?: string;\n price?: React.ReactNode;\n}\n\nexport interface CompareAttribute {\n key: string;\n label: React.ReactNode;\n /** Valor por item, indexado por id. */\n values: Record<string, React.ReactNode>;\n}\n\nexport interface CompareTableProps extends React.HTMLAttributes<HTMLTableElement> {\n items: CompareItem[];\n attributes: CompareAttribute[];\n onRemove?: (id: string) => void;\n}\n\nexport function CompareTable({ items, attributes, onRemove, className, ...rest }: CompareTableProps) {\n const t = useLocale();\n return (\n <div className={cx('compare', className)}>\n <table className=\"compare__table\" {...rest}>\n <thead>\n <tr>\n <th />\n {items.map((it) => (\n <th key={it.id} scope=\"col\">\n <div className=\"compare__head\">\n {it.image && <img src={it.image} alt=\"\" className=\"compare__img\" />}\n <div className=\"compare__name\">{it.name}</div>\n {it.price && <div className=\"compare__price\">{it.price}</div>}\n {onRemove && (\n <button\n type=\"button\"\n className=\"compare__remove\"\n aria-label={format(t['commerce.removeItem'], { name: typeof it.name === 'string' ? it.name : 'item' })}\n onClick={() => onRemove(it.id)}\n >\n <X size={14} />\n </button>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {attributes.map((attr) => (\n <tr key={attr.key}>\n <th scope=\"row\" className=\"compare__attr\">{attr.label}</th>\n {items.map((it) => (\n <td key={it.id} className=\"compare__cell\">{attr.values[it.id] ?? '—'}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/locale/messages.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../src/locale/messages.ts"],"names":[],"mappings":";AAoNO,SAAS,MAAA,CAAO,UAAkB,IAAA,EAA+C;AACtF,EAAA,OAAO,QAAA,CAAS,OAAA;AAAA,IAAQ,YAAA;AAAA,IAAc,CAAC,KAAA,EAAO,GAAA,KAC5C,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,GAAG,CAAC,CAAA,GAAI;AAAA,GACxE;AACF","file":"chunk-IGNKSI2E.mjs","sourcesContent":["/**\n * Flat dictionary of UI strings used by the kit. Keys are dot-separated\n * namespaces (component or area). Values may include `{var}` placeholders\n * that get substituted via `format()`.\n */\nexport interface UiKitMessages {\n // Generic actions\n 'common.close': string;\n 'common.cancel': string;\n 'common.confirm': string;\n 'common.apply': string;\n 'common.clear': string;\n 'common.edit': string;\n 'common.empty': string;\n 'common.loading': string;\n 'common.search': string;\n 'common.noResults': string;\n\n // Overlay\n 'modal.close': string;\n 'drawer.close': string;\n 'toast.close': string;\n\n // DataTable\n 'table.empty': string;\n 'table.selectAll': string;\n /** Template: \"Seleccionar {label}\" */\n 'table.selectRow': string;\n /** Template: \"Ver {label}\" — accessible name of an interactive row. */\n 'table.rowAction': string;\n /** Template: \"Expandir detalle de {label}\" — accessible name of the row-expansion toggle. */\n 'table.expandRow': string;\n /** Accessible name of the (visually empty) expansion-toggle column header. */\n 'table.expandColumn': string;\n /** ColumnToggle trigger label / menu name (\"Columnas\"). */\n 'table.columns': string;\n /** EditableCell: shown (via title/aria) when an async commit rejects. */\n 'editable.commitError': string;\n\n // AppShell\n 'appshell.mainNav': string;\n 'appshell.breadcrumb': string;\n /** Accessible name for the kit's built-in menu toggle (opt-in via `showMenuToggle`). */\n 'appshell.toggleMenu': string;\n\n // TimeAgo / smart-time helpers\n /** Sub-minute past: \"ahora\". */\n 'timeAgo.now': string;\n /** Sub-minute future: \"pronto\". */\n 'timeAgo.soon': string;\n /** Template: \"hace {n} min\" (past, 1-59 minutes). */\n 'timeAgo.minAgo': string;\n /** Template: \"en {n} min\" (future, 1-59 minutes). */\n 'timeAgo.minIn': string;\n /** Same-day prefix: \"hoy\". */\n 'timeAgo.today': string;\n /** Day-before prefix: \"ayer\". */\n 'timeAgo.yesterday': string;\n /** Day-after prefix: \"mañana\". */\n 'timeAgo.tomorrow': string;\n /** Compact weekday names, index 0 = Sunday (matches `Date.prototype.getDay()`). */\n 'timeAgo.weekdaysShort': string[];\n /** Compact month names, index 0 = January (matches `Date.prototype.getMonth()`). */\n 'timeAgo.monthsShort': string[];\n\n // Notifications\n 'notifications.button': string;\n /** Template: \" ({n} sin leer)\" */\n 'notifications.unreadSuffix': string;\n 'notifications.empty': string;\n 'notifications.panel': string;\n 'notifications.title': string;\n 'notifications.markAllRead': string;\n 'notifications.clear': string;\n\n // Filters\n 'filters.panel': string;\n 'filters.clear': string;\n 'filters.bulkActions': string;\n 'filters.deselectAll': string;\n 'filters.sortBy': string;\n /** Template: \"{n} seleccionado\" (used when n === 1) */\n 'filters.selectedOne': string;\n /** Template: \"{n} seleccionados\" (used when n !== 1) */\n 'filters.selectedMany': string;\n\n // Editing\n 'transfer.available': string;\n 'transfer.assigned': string;\n 'transfer.assignSelected': string;\n 'transfer.removeSelected': string;\n 'transfer.empty': string;\n 'descList.edit': string;\n 'diff.label': string;\n 'diff.field': string;\n 'diff.before': string;\n 'diff.after': string;\n\n // Permissions\n 'permissions.markAll': string;\n 'permissions.unmarkAll': string;\n 'permissions.action': string;\n /** Template: \"{action} para {role}\" */\n 'permissions.cellLabel': string;\n\n // Comments\n 'comments.placeholder': string;\n 'comments.send': string;\n 'comments.internalTag': string;\n 'comments.internalOnly': string;\n 'attachments.empty': string;\n /** Template: \"Eliminar {name}\" */\n 'attachments.remove': string;\n /** Template: \"Descargar {name}\" */\n 'attachments.download': string;\n\n // Gallery\n 'gallery.thumbnails': string;\n 'gallery.viewer': string;\n 'gallery.prev': string;\n 'gallery.next': string;\n 'gallery.close': string;\n /** Template: \"Imagen {n}\" */\n 'gallery.imageNumber': string;\n\n // Display\n 'alert.close': string;\n 'spinner.loading': string;\n 'chip.remove': string;\n\n // Display3 — Calendar\n 'calendar.prevMonth': string;\n 'calendar.nextMonth': string;\n 'calendar.expand': string;\n 'calendar.collapse': string;\n /** Mon, Tue, Wed, Thu, Fri, Sat, Sun (in array order, kit assumes Mon-first) */\n 'calendar.weekdays': readonly [string, string, string, string, string, string, string];\n 'calendar.months': readonly [\n string, string, string, string, string, string,\n string, string, string, string, string, string,\n ];\n\n // Pickers\n 'picker.openCalendar': string;\n 'picker.clearSelection': string;\n 'picker.selectRange': string;\n 'daterange.from': string;\n 'daterange.to': string;\n 'daterange.jumpMonth': string;\n 'picker.searchCommands': string;\n 'picker.commandPalette': string;\n 'picker.prevYear': string;\n 'picker.nextYear': string;\n 'picker.prevDecade': string;\n 'picker.nextDecade': string;\n 'picker.selectYear': string;\n 'picker.selectMonth': string;\n 'picker.selectTime': string;\n 'picker.hours': string;\n 'picker.minutes': string;\n 'picker.seconds': string;\n /**\n * Single-letter weekday initials used by compact calendar grids (DatePicker,\n * DateRangePicker). Mon-first to match the kit's calendars.\n */\n 'picker.weekdaysShort': readonly [string, string, string, string, string, string, string];\n /** Template: \"Quitar {label}\" */\n 'combobox.remove': string;\n 'fileUpload.title': string;\n\n // Inputs\n 'pagination.label': string;\n 'pagination.prev': string;\n 'pagination.next': string;\n /** Template: \"{from}–{to} de {total}\" */\n 'pagination.range': string;\n 'pagination.rowsPerPage': string;\n 'numberInput.decrement': string;\n 'numberInput.increment': string;\n\n // Commerce\n 'commerce.quantity': string;\n 'commerce.decreaseQty': string;\n 'commerce.increaseQty': string;\n 'commerce.removeFromCart': string;\n /** Template: \"Quitar {name}\" */\n 'commerce.removeItem': string;\n 'commerce.addFavorite': string;\n 'commerce.removeFavorite': string;\n 'commerce.applyCoupon': string;\n 'commerce.cartTitle': string;\n 'commerce.cartEmpty': string;\n 'commerce.subtotal': string;\n 'commerce.checkout': string;\n 'commerce.promoPlaceholder': string;\n 'commerce.promoInvalid': string;\n 'commerce.shippingAchieved': string;\n /** Template before {amount} placeholder: \"Te falta \" (suffix \" para envío gratis\"). Split into two so consumers can swap word order. */\n 'commerce.shippingPrefix': string;\n 'commerce.shippingSuffix': string;\n\n // Tags input\n /** Template: \"Quitar {tag}\" */\n 'tagsInput.remove': string;\n 'tagsInput.placeholder': string;\n}\n\n/**\n * Replace `{var}` placeholders in a template string with values from `vars`.\n * Missing vars are left as-is, so a typo surfaces during dev instead of being\n * silently dropped.\n */\nexport function format(template: string, vars: Record<string, string | number>): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, key) =>\n Object.prototype.hasOwnProperty.call(vars, key) ? String(vars[key]) : match\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkDKOAATV2_js = require('./chunk-DKOAATV2.js');
|
|
5
5
|
var chunkEUB4PHPI_js = require('./chunk-EUB4PHPI.js');
|
|
6
6
|
var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
|
|
7
7
|
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
@@ -91,7 +91,7 @@ function Badge({
|
|
|
91
91
|
);
|
|
92
92
|
}
|
|
93
93
|
function Alert({ variant = "info", title, icon, onClose, className, children, ...rest }) {
|
|
94
|
-
const t =
|
|
94
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
95
95
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "alert", className: chunkPASF6T4H_js.cx("alert", `alert--${variant}`, className), ...rest, children: [
|
|
96
96
|
icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "alert__icon", "aria-hidden": "true", children: icon }),
|
|
97
97
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "alert__body", children: [
|
|
@@ -113,7 +113,7 @@ function Skeleton({ width, height, rounded, className, style, ...rest }) {
|
|
|
113
113
|
);
|
|
114
114
|
}
|
|
115
115
|
function Spinner({ size = "md", inverse, className, ...rest }) {
|
|
116
|
-
const t =
|
|
116
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
117
117
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
118
118
|
"span",
|
|
119
119
|
{
|
|
@@ -125,7 +125,7 @@ function Spinner({ size = "md", inverse, className, ...rest }) {
|
|
|
125
125
|
);
|
|
126
126
|
}
|
|
127
127
|
function Chip({ active, onRemove, removeLabel, className, children, ...rest }) {
|
|
128
|
-
const t =
|
|
128
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
129
129
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkPASF6T4H_js.cx("chip", active && "chip--active", className), ...rest, children: [
|
|
130
130
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children }),
|
|
131
131
|
onRemove && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -190,5 +190,5 @@ exports.ChipGroup = ChipGroup;
|
|
|
190
190
|
exports.ProductCard = ProductCard;
|
|
191
191
|
exports.Skeleton = Skeleton;
|
|
192
192
|
exports.Spinner = Spinner;
|
|
193
|
-
//# sourceMappingURL=chunk-
|
|
194
|
-
//# sourceMappingURL=chunk-
|
|
193
|
+
//# sourceMappingURL=chunk-IH7U4FJT.js.map
|
|
194
|
+
//# sourceMappingURL=chunk-IH7U4FJT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Display.tsx"],"names":["React","Card","cx","Slot","CardHeader","jsx","CardBody","CardFooter","jsxs","useLocale","X","ChipGroup"],"mappings":"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","file":"chunk-RFWSMP7Q.js","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { Slot } from './Primitives';\nimport type { Extensible } from '../utils/types';\n\nexport type CategoryAccent = 'cat-1' | 'cat-2' | 'cat-3' | 'cat-4' | 'cat-5' | 'cat-6';\nexport type CardAccent =\n | 'brand' | 'secondary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral'\n | CategoryAccent;\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n interactive?: boolean;\n accent?: Extensible<CardAccent>;\n /**\n * Render as the provided single child element instead of `<div>` (e.g.\n * a clickable card as `next/link`'s `<a>`). Card classes, ref and handlers\n * are merged onto it. Default `false` (identical behavior).\n */\n asChild?: boolean;\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(function Card(\n { interactive, accent, className, asChild = false, ...rest },\n ref\n) {\n const cls = cx(\n 'card',\n interactive && 'card--interactive',\n accent && `card--accent-${accent}`,\n className\n );\n if (asChild) {\n return <Slot ref={ref as React.Ref<HTMLElement>} className={cls} {...rest} />;\n }\n return <div ref={ref} className={cls} {...rest} />;\n});\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardHeader({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__header', className)} {...rest} />;\n }\n);\n\nexport const CardBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardBody({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__body', className)} {...rest} />;\n }\n);\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooter({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__footer', className)} {...rest} />;\n }\n);\n\n// ---------- Badge --------------------------------------------------------\nexport type BadgeVariant =\n | 'primary' | 'accent' | 'success' | 'warning' | 'danger' | 'info' | 'neutral'\n | CategoryAccent;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: Extensible<BadgeVariant>;\n dot?: boolean;\n /**\n * Pulsing status dot. Lets ONE component cover a \"status\" column\n * (previously you had to mix `StatusIndicator` + `Badge`, which read\n * inconsistently). Implies a dot. Respects `prefers-reduced-motion`.\n */\n pulse?: boolean;\n /**\n * Typographic register. `'data'` (default) is the quiet data-chip:\n * sentence case, tinted, no hard border — it reads as metadata in a\n * dense table. `'label'` is the brand micro-label: uppercase texture\n * for eyebrows, kickers and short tags. Opt into `'label'` only when\n * the badge is a label, not a value.\n */\n tone?: 'data' | 'label';\n /**\n * Surface intensity, orthogonal to `variant` (which is the colour\n * role). `'soft'` (default) is the tinted chip. `'solid'` is a filled\n * chip (the variant's deep tone + white text). `'outline'` is a hairline\n * chip (transparent fill, the variant's deep tone for text + border).\n * `variant=\"neutral\" appearance=\"solid\"` is the dark/ink tag. Supersedes\n * the legacy `variant=\"solid\"` / `\"solid-orange\"` magic strings (still\n * supported, not removed).\n */\n appearance?: 'soft' | 'solid' | 'outline';\n}\n\nexport function Badge({\n variant = 'neutral', dot, pulse, tone = 'data', appearance = 'soft', className, children, ...rest\n}: BadgeProps) {\n const showDot = dot || pulse;\n return (\n <span\n className={cx(\n 'badge',\n `badge--${variant}`,\n tone === 'label' && 'badge--label',\n appearance !== 'soft' && `badge--app-${appearance}`,\n className\n )}\n {...rest}\n >\n {showDot && (\n <span\n className={cx('badge__dot', pulse && 'is-pulsing')}\n aria-hidden=\"true\"\n />\n )}\n {children}\n </span>\n );\n}\n\n// ---------- Alert --------------------------------------------------------\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n variant?: Extensible<AlertVariant>;\n title?: React.ReactNode;\n icon?: React.ReactNode;\n onClose?: () => void;\n}\n\nexport function Alert({ variant = 'info', title, icon, onClose, className, children, ...rest }: AlertProps) {\n const t = useLocale();\n return (\n <div role=\"alert\" className={cx('alert', `alert--${variant}`, className)} {...rest}>\n {icon && <span className=\"alert__icon\" aria-hidden=\"true\">{icon}</span>}\n <div className=\"alert__body\">\n {title && <div className=\"alert__title\">{title}</div>}\n {children && <div className=\"alert__desc\">{children}</div>}\n </div>\n {onClose && (\n <button type=\"button\" className=\"alert__close\" onClick={onClose} aria-label={t['alert.close']}>\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n// ---------- Skeleton & Spinner ------------------------------------------\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: number | string;\n height?: number | string;\n rounded?: boolean;\n}\n\nexport function Skeleton({ width, height, rounded, className, style, ...rest }: SkeletonProps) {\n return (\n <div\n className={cx('skel', className)}\n style={{ width, height, borderRadius: rounded ? 999 : undefined, ...style }}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n}\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: 'sm' | 'md' | 'lg';\n inverse?: boolean;\n}\n\nexport function Spinner({ size = 'md', inverse, className, ...rest }: SpinnerProps) {\n const t = useLocale();\n return (\n <span\n role=\"status\"\n aria-label={t['spinner.loading']}\n className={cx('spinner', size === 'lg' && 'spinner--lg', inverse && 'spinner--inverse', className)}\n {...rest}\n />\n );\n}\n\n// ---------- Chip + ChipGroup --------------------------------------------\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {\n active?: boolean;\n onRemove?: () => void;\n removeLabel?: string;\n}\n\nexport function Chip({ active, onRemove, removeLabel, className, children, ...rest }: ChipProps) {\n const t = useLocale();\n return (\n <span className={cx('chip', active && 'chip--active', className)} {...rest}>\n <span>{children}</span>\n {onRemove && (\n <button\n type=\"button\"\n className=\"chip__close\"\n aria-label={removeLabel ?? t['chip.remove']}\n onClick={(e) => { e.stopPropagation(); onRemove(); }}\n >\n <X size={12} />\n </button>\n )}\n </span>\n );\n}\n\nexport const ChipGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function ChipGroup({ className, style, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={cx('chip-group', className)}\n style={{ display: 'flex', flexWrap: 'wrap', gap: 8, ...style }}\n {...rest}\n />\n );\n }\n);\n\n// ---------- ProductCard -------------------------------------------------\nexport interface ProductCardProps extends React.HTMLAttributes<HTMLElement> {\n sku?: React.ReactNode;\n name: React.ReactNode;\n price?: React.ReactNode;\n image?: string;\n imageAlt?: string;\n tag?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nexport function ProductCard({\n sku, name, price, image, imageAlt, tag, footer, className, ...rest\n}: ProductCardProps) {\n return (\n <article className={cx('product-card', className)} {...rest}>\n {tag && <span className=\"product-card__tag\">{tag}</span>}\n <div className=\"product-card__media\">\n {image ? (\n <img src={image} alt={imageAlt ?? (typeof name === 'string' ? name : '')} />\n ) : (\n <div className=\"product-card__placeholder\">{sku ? `[ ${sku} ]` : 'SKU'}</div>\n )}\n </div>\n <div className=\"product-card__body\">\n {sku && <div className=\"product-card__sku\">{sku}</div>}\n <h4 className=\"product-card__title\">{name}</h4>\n {price && <div className=\"product-card__price\">{price}</div>}\n </div>\n {footer && <div className=\"product-card__footer\">{footer}</div>}\n </article>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Display.tsx"],"names":["React","Card","cx","Slot","CardHeader","jsx","CardBody","CardFooter","jsxs","useLocale","X","ChipGroup"],"mappings":"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","file":"chunk-IH7U4FJT.js","sourcesContent":["import * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { Slot } from './Primitives';\nimport type { Extensible } from '../utils/types';\n\nexport type CategoryAccent = 'cat-1' | 'cat-2' | 'cat-3' | 'cat-4' | 'cat-5' | 'cat-6';\nexport type CardAccent =\n | 'brand' | 'secondary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral'\n | CategoryAccent;\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n interactive?: boolean;\n accent?: Extensible<CardAccent>;\n /**\n * Render as the provided single child element instead of `<div>` (e.g.\n * a clickable card as `next/link`'s `<a>`). Card classes, ref and handlers\n * are merged onto it. Default `false` (identical behavior).\n */\n asChild?: boolean;\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(function Card(\n { interactive, accent, className, asChild = false, ...rest },\n ref\n) {\n const cls = cx(\n 'card',\n interactive && 'card--interactive',\n accent && `card--accent-${accent}`,\n className\n );\n if (asChild) {\n return <Slot ref={ref as React.Ref<HTMLElement>} className={cls} {...rest} />;\n }\n return <div ref={ref} className={cls} {...rest} />;\n});\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardHeader({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__header', className)} {...rest} />;\n }\n);\n\nexport const CardBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardBody({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__body', className)} {...rest} />;\n }\n);\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooter({ className, ...rest }, ref) {\n return <div ref={ref} className={cx('card__footer', className)} {...rest} />;\n }\n);\n\n// ---------- Badge --------------------------------------------------------\nexport type BadgeVariant =\n | 'primary' | 'accent' | 'success' | 'warning' | 'danger' | 'info' | 'neutral'\n | CategoryAccent;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: Extensible<BadgeVariant>;\n dot?: boolean;\n /**\n * Pulsing status dot. Lets ONE component cover a \"status\" column\n * (previously you had to mix `StatusIndicator` + `Badge`, which read\n * inconsistently). Implies a dot. Respects `prefers-reduced-motion`.\n */\n pulse?: boolean;\n /**\n * Typographic register. `'data'` (default) is the quiet data-chip:\n * sentence case, tinted, no hard border — it reads as metadata in a\n * dense table. `'label'` is the brand micro-label: uppercase texture\n * for eyebrows, kickers and short tags. Opt into `'label'` only when\n * the badge is a label, not a value.\n */\n tone?: 'data' | 'label';\n /**\n * Surface intensity, orthogonal to `variant` (which is the colour\n * role). `'soft'` (default) is the tinted chip. `'solid'` is a filled\n * chip (the variant's deep tone + white text). `'outline'` is a hairline\n * chip (transparent fill, the variant's deep tone for text + border).\n * `variant=\"neutral\" appearance=\"solid\"` is the dark/ink tag. Supersedes\n * the legacy `variant=\"solid\"` / `\"solid-orange\"` magic strings (still\n * supported, not removed).\n */\n appearance?: 'soft' | 'solid' | 'outline';\n}\n\nexport function Badge({\n variant = 'neutral', dot, pulse, tone = 'data', appearance = 'soft', className, children, ...rest\n}: BadgeProps) {\n const showDot = dot || pulse;\n return (\n <span\n className={cx(\n 'badge',\n `badge--${variant}`,\n tone === 'label' && 'badge--label',\n appearance !== 'soft' && `badge--app-${appearance}`,\n className\n )}\n {...rest}\n >\n {showDot && (\n <span\n className={cx('badge__dot', pulse && 'is-pulsing')}\n aria-hidden=\"true\"\n />\n )}\n {children}\n </span>\n );\n}\n\n// ---------- Alert --------------------------------------------------------\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n variant?: Extensible<AlertVariant>;\n title?: React.ReactNode;\n icon?: React.ReactNode;\n onClose?: () => void;\n}\n\nexport function Alert({ variant = 'info', title, icon, onClose, className, children, ...rest }: AlertProps) {\n const t = useLocale();\n return (\n <div role=\"alert\" className={cx('alert', `alert--${variant}`, className)} {...rest}>\n {icon && <span className=\"alert__icon\" aria-hidden=\"true\">{icon}</span>}\n <div className=\"alert__body\">\n {title && <div className=\"alert__title\">{title}</div>}\n {children && <div className=\"alert__desc\">{children}</div>}\n </div>\n {onClose && (\n <button type=\"button\" className=\"alert__close\" onClick={onClose} aria-label={t['alert.close']}>\n <X size={16} />\n </button>\n )}\n </div>\n );\n}\n\n// ---------- Skeleton & Spinner ------------------------------------------\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: number | string;\n height?: number | string;\n rounded?: boolean;\n}\n\nexport function Skeleton({ width, height, rounded, className, style, ...rest }: SkeletonProps) {\n return (\n <div\n className={cx('skel', className)}\n style={{ width, height, borderRadius: rounded ? 999 : undefined, ...style }}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n}\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: 'sm' | 'md' | 'lg';\n inverse?: boolean;\n}\n\nexport function Spinner({ size = 'md', inverse, className, ...rest }: SpinnerProps) {\n const t = useLocale();\n return (\n <span\n role=\"status\"\n aria-label={t['spinner.loading']}\n className={cx('spinner', size === 'lg' && 'spinner--lg', inverse && 'spinner--inverse', className)}\n {...rest}\n />\n );\n}\n\n// ---------- Chip + ChipGroup --------------------------------------------\nexport interface ChipProps extends React.HTMLAttributes<HTMLSpanElement> {\n active?: boolean;\n onRemove?: () => void;\n removeLabel?: string;\n}\n\nexport function Chip({ active, onRemove, removeLabel, className, children, ...rest }: ChipProps) {\n const t = useLocale();\n return (\n <span className={cx('chip', active && 'chip--active', className)} {...rest}>\n <span>{children}</span>\n {onRemove && (\n <button\n type=\"button\"\n className=\"chip__close\"\n aria-label={removeLabel ?? t['chip.remove']}\n onClick={(e) => { e.stopPropagation(); onRemove(); }}\n >\n <X size={12} />\n </button>\n )}\n </span>\n );\n}\n\nexport const ChipGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function ChipGroup({ className, style, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={cx('chip-group', className)}\n style={{ display: 'flex', flexWrap: 'wrap', gap: 8, ...style }}\n {...rest}\n />\n );\n }\n);\n\n// ---------- ProductCard -------------------------------------------------\nexport interface ProductCardProps extends React.HTMLAttributes<HTMLElement> {\n sku?: React.ReactNode;\n name: React.ReactNode;\n price?: React.ReactNode;\n image?: string;\n imageAlt?: string;\n tag?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nexport function ProductCard({\n sku, name, price, image, imageAlt, tag, footer, className, ...rest\n}: ProductCardProps) {\n return (\n <article className={cx('product-card', className)} {...rest}>\n {tag && <span className=\"product-card__tag\">{tag}</span>}\n <div className=\"product-card__media\">\n {image ? (\n <img src={image} alt={imageAlt ?? (typeof name === 'string' ? name : '')} />\n ) : (\n <div className=\"product-card__placeholder\">{sku ? `[ ${sku} ]` : 'SKU'}</div>\n )}\n </div>\n <div className=\"product-card__body\">\n {sku && <div className=\"product-card__sku\">{sku}</div>}\n <h4 className=\"product-card__title\">{name}</h4>\n {price && <div className=\"product-card__price\">{price}</div>}\n </div>\n {footer && <div className=\"product-card__footer\">{footer}</div>}\n </article>\n );\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkX4EESFGG_js = require('./chunk-X4EESFGG.js');
|
|
5
|
+
var chunkAB52PRTH_js = require('./chunk-AB52PRTH.js');
|
|
6
6
|
var chunk3PXYCXDW_js = require('./chunk-3PXYCXDW.js');
|
|
7
|
-
var
|
|
7
|
+
var chunkDKOAATV2_js = require('./chunk-DKOAATV2.js');
|
|
8
8
|
var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
|
|
9
9
|
var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
|
|
10
10
|
var React = require('react');
|
|
@@ -105,7 +105,7 @@ function QuantitySelector({
|
|
|
105
105
|
className,
|
|
106
106
|
id
|
|
107
107
|
}) {
|
|
108
|
-
const t =
|
|
108
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
109
109
|
const set = (next) => {
|
|
110
110
|
let v = next;
|
|
111
111
|
if (typeof min === "number") v = Math.max(min, v);
|
|
@@ -201,7 +201,7 @@ function VariantSelector({
|
|
|
201
201
|
] });
|
|
202
202
|
}
|
|
203
203
|
function WishlistButton({ active = false, onToggle, size = 20, className, ...rest }) {
|
|
204
|
-
const t =
|
|
204
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
205
205
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
206
206
|
"button",
|
|
207
207
|
{
|
|
@@ -225,7 +225,7 @@ function PromoCodeInput({
|
|
|
225
225
|
const [code, setCode] = React__namespace.useState("");
|
|
226
226
|
const [state, setState] = React__namespace.useState("idle");
|
|
227
227
|
const [message, setMessage] = React__namespace.useState(null);
|
|
228
|
-
const t =
|
|
228
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
229
229
|
const ph = placeholder ?? t["commerce.promoPlaceholder"];
|
|
230
230
|
const btn = buttonLabel ?? t["commerce.applyCoupon"];
|
|
231
231
|
const apply = async () => {
|
|
@@ -283,7 +283,7 @@ function FreeShippingProgress({
|
|
|
283
283
|
...rest
|
|
284
284
|
}) {
|
|
285
285
|
const brand = chunk3PXYCXDW_js.getBrand();
|
|
286
|
-
const t =
|
|
286
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
287
287
|
const fmt = (n) => new Intl.NumberFormat(locale ?? brand.locale, { style: "currency", currency: currency ?? brand.currency, maximumFractionDigits: 0 }).format(n);
|
|
288
288
|
const pct = Math.min(100, current / threshold * 100);
|
|
289
289
|
const remaining = Math.max(0, threshold - current);
|
|
@@ -310,13 +310,13 @@ function CartDrawer({
|
|
|
310
310
|
locale
|
|
311
311
|
}) {
|
|
312
312
|
const brand = chunk3PXYCXDW_js.getBrand();
|
|
313
|
-
const t =
|
|
313
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
314
314
|
const resolvedCurrency = currency ?? brand.currency;
|
|
315
315
|
const resolvedLocale = locale ?? brand.locale;
|
|
316
316
|
const subtotal = items.reduce((sum, it) => sum + it.unitPrice * it.quantity, 0);
|
|
317
317
|
const fmt = (n) => new Intl.NumberFormat(resolvedLocale, { style: "currency", currency: resolvedCurrency, maximumFractionDigits: 0 }).format(n);
|
|
318
318
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
319
|
-
|
|
319
|
+
chunkX4EESFGG_js.Drawer,
|
|
320
320
|
{
|
|
321
321
|
open,
|
|
322
322
|
onClose,
|
|
@@ -417,7 +417,7 @@ function AddressForm({ fields, value, onChange, className }) {
|
|
|
417
417
|
}) });
|
|
418
418
|
}
|
|
419
419
|
function CompareTable({ items, attributes, onRemove, className, ...rest }) {
|
|
420
|
-
const t =
|
|
420
|
+
const t = chunkDKOAATV2_js.useLocale();
|
|
421
421
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkPASF6T4H_js.cx("compare", className), children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "compare__table", ...rest, children: [
|
|
422
422
|
/* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
423
423
|
/* @__PURE__ */ jsxRuntime.jsx("th", {}),
|
|
@@ -430,7 +430,7 @@ function CompareTable({ items, attributes, onRemove, className, ...rest }) {
|
|
|
430
430
|
{
|
|
431
431
|
type: "button",
|
|
432
432
|
className: "compare__remove",
|
|
433
|
-
"aria-label":
|
|
433
|
+
"aria-label": chunkAB52PRTH_js.format(t["commerce.removeItem"], { name: typeof it.name === "string" ? it.name : "item" }),
|
|
434
434
|
onClick: () => onRemove(it.id),
|
|
435
435
|
children: /* @__PURE__ */ jsxRuntime.jsx(chunkC4AKMVDZ_js.X, { size: 14 })
|
|
436
436
|
}
|
|
@@ -455,5 +455,5 @@ exports.QuantitySelector = QuantitySelector;
|
|
|
455
455
|
exports.Rating = Rating;
|
|
456
456
|
exports.VariantSelector = VariantSelector;
|
|
457
457
|
exports.WishlistButton = WishlistButton;
|
|
458
|
-
//# sourceMappingURL=chunk-
|
|
459
|
-
//# sourceMappingURL=chunk-
|
|
458
|
+
//# sourceMappingURL=chunk-JNISZPSL.js.map
|
|
459
|
+
//# sourceMappingURL=chunk-JNISZPSL.js.map
|