admin-ui-starter-kit 0.6.9 → 0.7.1
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/.agents/skills/admin-ui-consumer-migration/SKILL.md +29 -1
- package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +14 -0
- package/.agents/skills/admin-ui-consumer-migration/references/theme-overrides.md +172 -0
- package/.agents/skills/component-library-rules/SKILL.md +5 -4
- package/.agents/skills/component-library-rules/references/components/INDEX.json +23 -4
- package/.agents/skills/component-library-rules/references/components/INDEX.md +21 -2
- package/.agents/skills/component-library-rules/references/components/base__avatar.md +3 -3
- package/.agents/skills/component-library-rules/references/components/base__carousel.md +8 -5
- package/.agents/skills/component-library-rules/references/components/base__css-variables.md +1 -0
- package/.agents/skills/component-library-rules/references/components/base__currency.md +10 -11
- package/.agents/skills/component-library-rules/references/components/base__item.md +7 -7
- package/.agents/skills/component-library-rules/references/components/base__money-display.md +4 -0
- package/.agents/skills/component-library-rules/references/components/base__typography.md +3 -3
- package/.agents/skills/component-library-rules/references/components/composed__commerce-address-card.md +74 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-cart-summary.md +84 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-coupon-input.md +52 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-discount-stack.md +58 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-inventory-section.md +168 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-loyalty-points.md +60 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-order-status.md +62 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-payment-method.md +58 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-refund-status.md +58 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-seo-listing.md +106 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-shipment-tracking.md +65 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-subscription-summary.md +66 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-tax-breakdown.md +60 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-upcoming-booking.md +62 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce-voucher-entry.md +60 -0
- package/.agents/skills/component-library-rules/references/components/composed__commerce.md +29 -143
- package/.agents/skills/component-library-rules/references/components/features__products.md +18 -462
- package/.agents/skills/component-library-rules/references/components/features__products__actions.md +37 -0
- package/.agents/skills/component-library-rules/references/components/features__products__support-rail.md +73 -0
- package/.agents/skills/component-library-rules/references/components/features__products__variant-details.md +97 -0
- package/.agents/skills/component-library-rules/references/components/features__products__variant-management.md +269 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +1 -1
- package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +43 -1
- package/.agents/skills/component-library-rules/references/testing.md +1 -1
- package/.agents/skills/token-system/SKILL.md +4 -1
- package/AGENTS.md +4 -3
- package/COMPONENT_SELECTION.md +15 -0
- package/INTEGRATION.md +41 -2
- package/MIGRATION.md +7 -7
- package/README.md +7 -3
- package/dist/_shared/accordion-CSRRDWVZ.js +135 -0
- package/dist/_shared/accordion-CSRRDWVZ.js.map +1 -0
- package/dist/_shared/accordion-ClVkIaCy.cjs +2 -0
- package/dist/_shared/accordion-ClVkIaCy.cjs.map +1 -0
- package/dist/_shared/action-menu-8RN2_Jdr.js +96 -0
- package/dist/_shared/action-menu-8RN2_Jdr.js.map +1 -0
- package/dist/_shared/action-menu-Cx2xaBjN.cjs +2 -0
- package/dist/_shared/action-menu-Cx2xaBjN.cjs.map +1 -0
- package/dist/_shared/ai-artifact-BO0XGFHz.cjs +3 -0
- package/dist/_shared/ai-artifact-BO0XGFHz.cjs.map +1 -0
- package/dist/_shared/ai-artifact-CbsGR1t8.js +1099 -0
- package/dist/_shared/ai-artifact-CbsGR1t8.js.map +1 -0
- package/dist/_shared/auth-CwipRgNB.cjs +2 -0
- package/dist/_shared/auth-CwipRgNB.cjs.map +1 -0
- package/dist/_shared/auth-Wipu0Oa_.js +643 -0
- package/dist/_shared/auth-Wipu0Oa_.js.map +1 -0
- package/dist/_shared/badge-B0Ashqkn.cjs +2 -0
- package/dist/_shared/badge-B0Ashqkn.cjs.map +1 -0
- package/dist/_shared/badge-DOJpEtsa.js +110 -0
- package/dist/_shared/badge-DOJpEtsa.js.map +1 -0
- package/dist/_shared/breadcrumbs-C7PI8sxx.cjs +2 -0
- package/dist/_shared/breadcrumbs-C7PI8sxx.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-xNjbIrGc.js +105 -0
- package/dist/_shared/breadcrumbs-xNjbIrGc.js.map +1 -0
- package/dist/_shared/button-CB8e7fui.cjs +2 -0
- package/dist/_shared/button-CB8e7fui.cjs.map +1 -0
- package/dist/_shared/button-CNEMqDHK.js +192 -0
- package/dist/_shared/button-CNEMqDHK.js.map +1 -0
- package/dist/_shared/buttons-BCFKQuB5.js +137 -0
- package/dist/_shared/buttons-BCFKQuB5.js.map +1 -0
- package/dist/_shared/buttons-DHj5I2YL.cjs +2 -0
- package/dist/_shared/buttons-DHj5I2YL.cjs.map +1 -0
- package/dist/_shared/card-radio-group-DdubYUJ6.cjs +2 -0
- package/dist/_shared/card-radio-group-DdubYUJ6.cjs.map +1 -0
- package/dist/_shared/card-radio-group-Du6rzuoC.js +150 -0
- package/dist/_shared/card-radio-group-Du6rzuoC.js.map +1 -0
- package/dist/_shared/cards-B7voInTJ.js +430 -0
- package/dist/_shared/cards-B7voInTJ.js.map +1 -0
- package/dist/_shared/cards-DvE5gRFf.cjs +2 -0
- package/dist/_shared/cards-DvE5gRFf.cjs.map +1 -0
- package/dist/_shared/combobox-AbXh9ft4.cjs +2 -0
- package/dist/_shared/combobox-AbXh9ft4.cjs.map +1 -0
- package/dist/_shared/combobox-ImXiC1qy.js +957 -0
- package/dist/_shared/combobox-ImXiC1qy.js.map +1 -0
- package/dist/_shared/command-B-Yokco3.js +39 -0
- package/dist/_shared/command-B-Yokco3.js.map +1 -0
- package/dist/_shared/command-kcPx4TM_.cjs +2 -0
- package/dist/_shared/command-kcPx4TM_.cjs.map +1 -0
- package/dist/_shared/comments-BR5ENvoo.cjs +2 -0
- package/dist/_shared/comments-BR5ENvoo.cjs.map +1 -0
- package/dist/_shared/comments-a3l--GJ-.js +952 -0
- package/dist/_shared/comments-a3l--GJ-.js.map +1 -0
- package/dist/_shared/containers-CclPUW7j.cjs +2 -0
- package/dist/_shared/containers-CclPUW7j.cjs.map +1 -0
- package/dist/_shared/containers-GDaJ3SOV.js +101 -0
- package/dist/_shared/containers-GDaJ3SOV.js.map +1 -0
- package/dist/_shared/copyable-C0KJlRVr.js +38 -0
- package/dist/_shared/copyable-C0KJlRVr.js.map +1 -0
- package/dist/_shared/copyable-tJxsOyn-.cjs +2 -0
- package/dist/_shared/copyable-tJxsOyn-.cjs.map +1 -0
- package/dist/_shared/data-display-0uNuZSN7.js +1878 -0
- package/dist/_shared/data-display-0uNuZSN7.js.map +1 -0
- package/dist/_shared/data-display-DRa39LH8.cjs +2 -0
- package/dist/_shared/data-display-DRa39LH8.cjs.map +1 -0
- package/dist/_shared/date-picker-BaPDfs1p.js +1361 -0
- package/dist/_shared/date-picker-BaPDfs1p.js.map +1 -0
- package/dist/_shared/date-picker-DrkoZZdr.cjs +2 -0
- package/dist/_shared/date-picker-DrkoZZdr.cjs.map +1 -0
- package/dist/_shared/date-pickers-CT3aZpPn.cjs +2 -0
- package/dist/_shared/date-pickers-CT3aZpPn.cjs.map +1 -0
- package/dist/_shared/date-pickers-DRp0VM7k.js +329 -0
- package/dist/_shared/date-pickers-DRp0VM7k.js.map +1 -0
- package/dist/_shared/display-BHIs_Y_j.js +1006 -0
- package/dist/_shared/display-BHIs_Y_j.js.map +1 -0
- package/dist/_shared/display-DV7n0KA1.cjs +2 -0
- package/dist/_shared/display-DV7n0KA1.cjs.map +1 -0
- package/dist/_shared/dropdown-menu-5fFMhKo4.js +147 -0
- package/dist/_shared/dropdown-menu-5fFMhKo4.js.map +1 -0
- package/dist/_shared/dropdown-menu-B_SCGRL2.cjs +2 -0
- package/dist/_shared/dropdown-menu-B_SCGRL2.cjs.map +1 -0
- package/dist/_shared/form-sizing-VNEGzvM7.js +42 -0
- package/dist/_shared/form-sizing-VNEGzvM7.js.map +1 -0
- package/dist/_shared/form-sizing-lBFpJWv4.cjs +2 -0
- package/dist/_shared/form-sizing-lBFpJWv4.cjs.map +1 -0
- package/dist/_shared/forms-B7LYVbAy.cjs +2 -0
- package/dist/_shared/forms-B7LYVbAy.cjs.map +1 -0
- package/dist/_shared/forms-C5uZX_kQ.js +3534 -0
- package/dist/_shared/forms-C5uZX_kQ.js.map +1 -0
- package/dist/_shared/header-B4wGB6Ca.cjs +2 -0
- package/dist/_shared/header-B4wGB6Ca.cjs.map +1 -0
- package/dist/_shared/header-CWyOry0f.js +447 -0
- package/dist/_shared/header-CWyOry0f.js.map +1 -0
- package/dist/_shared/hooks-B4Cop5YI.cjs +2 -0
- package/dist/_shared/hooks-B4Cop5YI.cjs.map +1 -0
- package/dist/_shared/hooks-CFUZJW_S.js +95 -0
- package/dist/_shared/hooks-CFUZJW_S.js.map +1 -0
- package/dist/_shared/icon-size-CMNigtUu.js +15 -0
- package/dist/_shared/icon-size-CMNigtUu.js.map +1 -0
- package/dist/_shared/icon-size-D2NnYd0K.cjs +2 -0
- package/dist/_shared/icon-size-D2NnYd0K.cjs.map +1 -0
- package/dist/_shared/input-BEhrcsk7.js +182 -0
- package/dist/_shared/input-BEhrcsk7.js.map +1 -0
- package/dist/_shared/input-DGvh-izk.cjs +2 -0
- package/dist/_shared/input-DGvh-izk.cjs.map +1 -0
- package/dist/_shared/item-BG2iK1sy.cjs +2 -0
- package/dist/_shared/item-BG2iK1sy.cjs.map +1 -0
- package/dist/_shared/item-D75eGy8G.js +227 -0
- package/dist/_shared/item-D75eGy8G.js.map +1 -0
- package/dist/_shared/layout-DN8tzvlm.cjs +2 -0
- package/dist/_shared/layout-DN8tzvlm.cjs.map +1 -0
- package/dist/_shared/layout-DNrUkvzF.js +268 -0
- package/dist/_shared/layout-DNrUkvzF.js.map +1 -0
- package/dist/_shared/mentions-CWqC8Xds.js +506 -0
- package/dist/_shared/mentions-CWqC8Xds.js.map +1 -0
- package/dist/_shared/mentions-wtkrL2hX.cjs +2 -0
- package/dist/_shared/mentions-wtkrL2hX.cjs.map +1 -0
- package/dist/_shared/money-display-BabyaIWb.js +198 -0
- package/dist/_shared/money-display-BabyaIWb.js.map +1 -0
- package/dist/_shared/money-display-CrNRbByx.cjs +2 -0
- package/dist/_shared/money-display-CrNRbByx.cjs.map +1 -0
- package/dist/_shared/navigation-9DB-vtGI.js +436 -0
- package/dist/_shared/navigation-9DB-vtGI.js.map +1 -0
- package/dist/_shared/navigation-DAjFLSv5.cjs +2 -0
- package/dist/_shared/navigation-DAjFLSv5.cjs.map +1 -0
- package/dist/_shared/overlays-BK0J8zSv.cjs +2 -0
- package/dist/_shared/overlays-BK0J8zSv.cjs.map +1 -0
- package/dist/_shared/overlays-DKsXufDv.js +735 -0
- package/dist/_shared/overlays-DKsXufDv.js.map +1 -0
- package/dist/_shared/popover-menu-DXh14PIu.js +93 -0
- package/dist/_shared/popover-menu-DXh14PIu.js.map +1 -0
- package/dist/_shared/popover-menu-DkjPUZ4v.cjs +2 -0
- package/dist/_shared/popover-menu-DkjPUZ4v.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-DjZTJzdm.cjs +2 -0
- package/dist/_shared/rich-text-editor-DjZTJzdm.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-DloyZq46.js +620 -0
- package/dist/_shared/rich-text-editor-DloyZq46.js.map +1 -0
- package/dist/_shared/settings-AIgixHbB.cjs +2 -0
- package/dist/_shared/settings-AIgixHbB.cjs.map +1 -0
- package/dist/_shared/settings-D3KdypJk.js +143 -0
- package/dist/_shared/settings-D3KdypJk.js.map +1 -0
- package/dist/_shared/sidebar-BzBincq3.js +548 -0
- package/dist/_shared/sidebar-BzBincq3.js.map +1 -0
- package/dist/_shared/sidebar-D5NLbyow.cjs +2 -0
- package/dist/_shared/sidebar-D5NLbyow.cjs.map +1 -0
- package/dist/_shared/skeleton-Bc_qa5l_.js +256 -0
- package/dist/_shared/skeleton-Bc_qa5l_.js.map +1 -0
- package/dist/_shared/skeleton-Wq6G0Kya.cjs +2 -0
- package/dist/_shared/skeleton-Wq6G0Kya.cjs.map +1 -0
- package/dist/_shared/spinner-C-yoZUk-.cjs +2 -0
- package/dist/_shared/spinner-C-yoZUk-.cjs.map +1 -0
- package/dist/_shared/spinner-CDVWFN0N.js +67 -0
- package/dist/_shared/spinner-CDVWFN0N.js.map +1 -0
- package/dist/_shared/table-B70kyH2E.js +1377 -0
- package/dist/_shared/table-B70kyH2E.js.map +1 -0
- package/dist/_shared/table-DQA2m2F0.cjs +2 -0
- package/dist/_shared/table-DQA2m2F0.cjs.map +1 -0
- package/dist/_shared/textarea-Dx9yEZY2.js +118 -0
- package/dist/_shared/textarea-Dx9yEZY2.js.map +1 -0
- package/dist/_shared/textarea-rfnSeHHC.cjs +2 -0
- package/dist/_shared/textarea-rfnSeHHC.cjs.map +1 -0
- package/dist/_shared/typography-C_kCoR1d.js +204 -0
- package/dist/_shared/typography-C_kCoR1d.js.map +1 -0
- package/dist/_shared/typography-sXFd02zl.cjs +2 -0
- package/dist/_shared/typography-sXFd02zl.cjs.map +1 -0
- package/dist/_shared/workspace-Bw-k_HXQ.js +357 -0
- package/dist/_shared/workspace-Bw-k_HXQ.js.map +1 -0
- package/dist/_shared/workspace-CLUsYC5y.cjs +2 -0
- package/dist/_shared/workspace-CLUsYC5y.cjs.map +1 -0
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/buttons/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/carousel/carousel.d.ts.map +1 -1
- package/dist/components/base/carousel/index.cjs +1 -1
- package/dist/components/base/carousel/index.cjs.map +1 -1
- package/dist/components/base/carousel/index.js +98 -97
- package/dist/components/base/carousel/index.js.map +1 -1
- package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.js +1 -1
- package/dist/components/base/command/command.d.ts +1 -1
- package/dist/components/base/command/index.cjs +1 -1
- package/dist/components/base/command/index.js +1 -1
- package/dist/components/base/copyable/index.cjs +1 -1
- package/dist/components/base/copyable/index.js +1 -1
- package/dist/components/base/currency/index.cjs +1 -1
- package/dist/components/base/currency/index.js +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/display/alert.d.ts.map +1 -1
- package/dist/components/base/display/chart.cjs +1 -1
- package/dist/components/base/display/chart.js +1 -1
- package/dist/components/base/display/icon-size.d.ts +6 -0
- package/dist/components/base/display/icon-size.d.ts.map +1 -0
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.d.ts +1 -0
- package/dist/components/base/display/index.d.ts.map +1 -1
- package/dist/components/base/display/index.js +10 -9
- package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.cjs.map +1 -1
- package/dist/components/base/event-calendar/index.js +4 -4
- package/dist/components/base/event-calendar/index.js.map +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +5 -5
- package/dist/components/base/item/index.cjs +1 -1
- package/dist/components/base/item/index.js +1 -1
- package/dist/components/base/item/item.d.ts.map +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.cjs.map +1 -1
- package/dist/components/base/map/index.js +3 -3
- package/dist/components/base/map/index.js.map +1 -1
- package/dist/components/base/map/map.d.ts +1 -1
- package/dist/components/base/map/map.d.ts.map +1 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts +33 -1
- package/dist/components/base/navigation/dropdown-menu.d.ts.map +1 -1
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +4 -4
- package/dist/components/base/popover-menu/index.cjs +1 -1
- package/dist/components/base/popover-menu/index.js +1 -1
- package/dist/components/base/spinner/index.cjs +1 -1
- package/dist/components/base/spinner/index.js +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.js +1 -1
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.cjs.map +1 -1
- package/dist/components/composed/admin/index.js +10 -11
- package/dist/components/composed/admin/index.js.map +1 -1
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.cjs.map +1 -1
- package/dist/components/composed/ai/index.js +8 -9
- package/dist/components/composed/ai/index.js.map +1 -1
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.cjs.map +1 -1
- package/dist/components/composed/analytics/index.js +4 -4
- package/dist/components/composed/analytics/index.js.map +1 -1
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.cjs.map +1 -1
- package/dist/components/composed/cards/index.js +13 -15
- package/dist/components/composed/cards/index.js.map +1 -1
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.d.ts +2 -0
- package/dist/components/composed/commerce/index.d.ts.map +1 -1
- package/dist/components/composed/commerce/index.js +1246 -382
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/commerce/inventory-section/index.d.ts +3 -0
- package/dist/components/composed/commerce/inventory-section/index.d.ts.map +1 -0
- package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts +6 -0
- package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts.map +1 -0
- package/dist/components/composed/commerce/inventory-section/types.d.ts +85 -0
- package/dist/components/composed/commerce/inventory-section/types.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/index.d.ts +4 -0
- package/dist/components/composed/commerce/seo-listing/index.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts +6 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts +6 -0
- package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts.map +1 -0
- package/dist/components/composed/commerce/seo-listing/types.d.ts +68 -0
- package/dist/components/composed/commerce/seo-listing/types.d.ts.map +1 -0
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
- package/dist/components/composed/dark-surfaces/index.js +7 -7
- package/dist/components/composed/dark-surfaces/index.js.map +1 -1
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.js +1 -1
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.cjs.map +1 -1
- package/dist/components/composed/navigation/index.js +5 -6
- package/dist/components/composed/navigation/index.js.map +1 -1
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.js +3 -3
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.js +3 -3
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.js +5 -5
- package/dist/components/features/ai-chat/index.cjs +1 -1
- package/dist/components/features/ai-chat/index.js +5 -5
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.js +4 -4
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/data-view/index.cjs +1 -1
- package/dist/components/features/data-view/index.js +2 -2
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.js +4 -4
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.cjs.map +1 -1
- package/dist/components/features/filters/index.js +64 -64
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.js +4 -4
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.js +3 -3
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.cjs.map +1 -1
- package/dist/components/features/media-library/index.js +230 -206
- package/dist/components/features/media-library/index.js.map +1 -1
- package/dist/components/features/media-library/media-library.d.ts.map +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
- package/dist/components/features/media-library/media-library.strings.d.ts.map +1 -1
- package/dist/components/features/media-library/partials/media-library-partials.d.ts.map +1 -1
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/products/components/index.d.ts +3 -0
- package/dist/components/features/products/components/index.d.ts.map +1 -1
- package/dist/components/features/products/components/product-options-matrix.d.ts +6 -0
- package/dist/components/features/products/components/product-options-matrix.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variants-bulk-table.d.ts +6 -0
- package/dist/components/features/products/components/product-variants-bulk-table.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variants-manager.d.ts +6 -0
- package/dist/components/features/products/components/product-variants-manager.d.ts.map +1 -0
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.cjs.map +1 -1
- package/dist/components/features/products/index.js +1705 -511
- package/dist/components/features/products/index.js.map +1 -1
- package/dist/components/features/products/products.strings.d.ts +70 -0
- package/dist/components/features/products/products.strings.d.ts.map +1 -1
- package/dist/components/features/products/products.types.d.ts +163 -1
- package/dist/components/features/products/products.types.d.ts.map +1 -1
- package/dist/components/features/resource/index.cjs +1 -1
- package/dist/components/features/resource/index.js +5 -5
- package/dist/components/features/rich-text-editor/index.cjs +1 -1
- package/dist/components/features/rich-text-editor/index.js +1 -1
- package/dist/components/features/schema-form/index.cjs +1 -1
- package/dist/components/features/schema-form/index.js +8 -8
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/features/sync/index.cjs +1 -1
- package/dist/components/features/sync/index.js +2 -2
- package/dist/components/layout/auth/index.cjs +1 -1
- package/dist/components/layout/auth/index.js +1 -1
- package/dist/components/layout/containers/index.cjs +1 -1
- package/dist/components/layout/containers/index.d.ts +1 -0
- package/dist/components/layout/containers/index.d.ts.map +1 -1
- package/dist/components/layout/containers/index.js +2 -2
- package/dist/components/layout/containers/two-column-layout.d.ts +43 -0
- package/dist/components/layout/containers/two-column-layout.d.ts.map +1 -0
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +1 -1
- package/dist/components/layout/hooks/index.cjs +1 -1
- package/dist/components/layout/hooks/index.js +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +9 -9
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/page/page-content.d.ts +1 -1
- package/dist/components/layout/page/page-content.d.ts.map +1 -1
- package/dist/components/layout/settings/index.cjs +1 -1
- package/dist/components/layout/settings/index.js +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/workspace/index.cjs +1 -1
- package/dist/components/layout/workspace/index.js +1 -1
- package/dist/components/typography/index.cjs +1 -1
- package/dist/components/typography/index.js +1 -1
- package/dist/components/typography/text-link.d.ts +3 -1
- package/dist/components/typography/text-link.d.ts.map +1 -1
- package/dist/components/typography/text.d.ts.map +1 -1
- package/dist/lib/ui-provider/types.d.ts +1 -1
- package/dist/lib/ui-provider/types.d.ts.map +1 -1
- package/dist/lib/utils.cjs +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/services/actions/index.cjs +1 -1
- package/dist/services/actions/index.js +1 -1
- package/dist/showcase/assets/AreaChart-D_z9eYQj.js +6 -0
- package/dist/showcase/assets/CompositeItem-BSVzIXzg.js +1 -0
- package/dist/showcase/assets/CompositeRoot-Ewl7bgm-.js +1 -0
- package/dist/showcase/assets/DialogTrigger-CD-DcY4b.js +1 -0
- package/dist/showcase/assets/LabelableContext-BdRVtvs6.js +1 -0
- package/dist/showcase/assets/MenuTrigger-B8Y7BUCN.js +1 -0
- package/dist/showcase/assets/PreviewLayout-CE0fmzoc.js +1 -0
- package/dist/showcase/assets/RadioGroup-Qaf-akL1.js +1 -0
- package/dist/showcase/assets/ScrollAreaCorner-BQR87jzh.js +1 -0
- package/dist/showcase/assets/Separator-Cymh2jzU.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-P5BSzPlo.js +1 -0
- package/dist/showcase/assets/accordion-BGUvdQ5Z.js +171 -0
- package/dist/showcase/assets/accordion-variants-B56z6tQI.js +1 -0
- package/dist/showcase/assets/action-menu-C3DOQfP4.js +1 -0
- package/dist/showcase/assets/actions-DHG4zJRu.js +38 -0
- package/dist/showcase/assets/actions-IxPK0biY.js +310 -0
- package/dist/showcase/assets/activities-TK5Lr8Wb.js +500 -0
- package/dist/showcase/assets/activities-feed-card-tgQKimyh.js +1 -0
- package/dist/showcase/assets/admin-BQrDKNJa.js +140 -0
- package/dist/showcase/assets/ai-artifact-Cv7LTw1V.js +2 -0
- package/dist/showcase/assets/ai-chat-Dmg2Tqf1.js +568 -0
- package/dist/showcase/assets/ai-elements-BmokxSCy.js +387 -0
- package/dist/showcase/assets/ai-tool-call-6qESA6We.js +1 -0
- package/dist/showcase/assets/ai-xShhEkrM.js +207 -0
- package/dist/showcase/assets/alert--MONSwFW.js +1 -0
- package/dist/showcase/assets/alert-BuMNu_BZ.js +62 -0
- package/dist/showcase/assets/alert-z1RP5MhA.js +93 -0
- package/dist/showcase/assets/api-key-list-BhmXUJty.js +73 -0
- package/dist/showcase/assets/api-key-list-hPTN6gwa.js +1 -0
- package/dist/showcase/assets/app-sidebar-CY-XpIu6.js +1 -0
- package/dist/showcase/assets/arrow-down-D0XbhSDi.js +1 -0
- package/dist/showcase/assets/arrow-left-DBxsWbzL.js +1 -0
- package/dist/showcase/assets/arrow-right-Dk80zKWl.js +1 -0
- package/dist/showcase/assets/arrow-up-BiZ_VvpP.js +1 -0
- package/dist/showcase/assets/arrow-up-right-OdmPQEwY.js +1 -0
- package/dist/showcase/assets/avatar-BThv_quW.js +1 -0
- package/dist/showcase/assets/avatar-Bcy2snIC.js +67 -0
- package/dist/showcase/assets/avatar-Ca3to6dB.js +57 -0
- package/dist/showcase/assets/avatar-Dba0yVei.js +1 -0
- package/dist/showcase/assets/badge-A1w2eIaM.js +31 -0
- package/dist/showcase/assets/badge-check-DyqZ9Ff8.js +1 -0
- package/dist/showcase/assets/bell-DyqsYdKK.js +1 -0
- package/dist/showcase/assets/boolean-indicator-gaFjXuY1.js +1 -0
- package/dist/showcase/assets/bot-BGQvS_p9.js +1 -0
- package/dist/showcase/assets/box-BoFEAPr6.js +1 -0
- package/dist/showcase/assets/braces-D88Ve7g-.js +1 -0
- package/dist/showcase/assets/brain-hIv2TdLu.js +1 -0
- package/dist/showcase/assets/brand-CiWM8HzB.js +36 -0
- package/dist/showcase/assets/breadcrumb-DlHNoCer.js +1 -0
- package/dist/showcase/assets/breadcrumb-Dy-UbgK5.js +52 -0
- package/dist/showcase/assets/breadcrumbs-BoXmoDHt.js +1 -0
- package/dist/showcase/assets/briefcase-BeN7dk_G.js +1 -0
- package/dist/showcase/assets/building-2-ICycTKXZ.js +1 -0
- package/dist/showcase/assets/button-BADo_inb.js +44 -0
- package/dist/showcase/assets/button-group-BGkXY3HC.js +1 -0
- package/dist/showcase/assets/buttons-3z50eWMp.js +272 -0
- package/dist/showcase/assets/calendar-BAfoc476.js +1 -0
- package/dist/showcase/assets/calendar-DNxQUmlO.js +16 -0
- package/dist/showcase/assets/calendar-days-D86Fv-vG.js +1 -0
- package/dist/showcase/assets/calendar-pjS8iCZE.js +1 -0
- package/dist/showcase/assets/camera-DxWfctRe.js +1 -0
- package/dist/showcase/assets/card-BazLaDA9.js +188 -0
- package/dist/showcase/assets/card-F8Ona144.js +1 -0
- package/dist/showcase/assets/card-checkbox-group-DtK7aVPU.js +1 -0
- package/dist/showcase/assets/card-primitives-DzqLvy5f.js +1 -0
- package/dist/showcase/assets/card-radio-group-EjPkSg-w.js +1 -0
- package/dist/showcase/assets/cards--V2D7Sft.js +354 -0
- package/dist/showcase/assets/carousel-BNmTHQiN.js +452 -0
- package/dist/showcase/assets/cell-renderers-BdpeNGHs.js +1 -0
- package/dist/showcase/assets/chart-column-CJx3qWPs.js +1 -0
- package/dist/showcase/assets/chart-p7dUP6Mo.js +358 -0
- package/dist/showcase/assets/checkbox-BBxn_hxI.js +1 -0
- package/dist/showcase/assets/checkbox-BEyESyQ2.js +1 -0
- package/dist/showcase/assets/chevron-down-mjLUdP6b.js +1 -0
- package/dist/showcase/assets/chevron-left-DOofVtEd.js +1 -0
- package/dist/showcase/assets/chevron-up-BJk6z8Fg.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-C-9zUpl_.js +1 -0
- package/dist/showcase/assets/circle-OmLq29jq.js +1 -0
- package/dist/showcase/assets/circle-alert-DSpR2pdl.js +1 -0
- package/dist/showcase/assets/circle-check-BjuHEm7p.js +1 -0
- package/dist/showcase/assets/circle-check-big-BuYdgE3Q.js +1 -0
- package/dist/showcase/assets/circle-dot-DlYGMuaF.js +1 -0
- package/dist/showcase/assets/circle-question-mark-BlgRDDu3.js +1 -0
- package/dist/showcase/assets/circle-x-BavQ4wuc.js +1 -0
- package/dist/showcase/assets/clock-3-CzeN1Iwk.js +1 -0
- package/dist/showcase/assets/clock-CZYS08d1.js +1 -0
- package/dist/showcase/assets/code-xml-D4NwoTpD.js +1 -0
- package/dist/showcase/assets/collapsible-BtawbO_2.js +1 -0
- package/dist/showcase/assets/collapsible-CJXE3z1T.js +27 -0
- package/dist/showcase/assets/collapsible-ws3VKPg9.js +1 -0
- package/dist/showcase/assets/combobox-Btpk7-vH.js +685 -0
- package/dist/showcase/assets/command-CoiVI2_b.js +1 -0
- package/dist/showcase/assets/command-Dkn9XqF2.js +1 -0
- package/dist/showcase/assets/comment-composer-BNnVQo1O.js +1 -0
- package/dist/showcase/assets/comment-item-BiIgcrPQ.js +1 -0
- package/dist/showcase/assets/comments-CvzWz23L.js +357 -0
- package/dist/showcase/assets/commerce-CBHLQF8q.js +19 -0
- package/dist/showcase/assets/commerce-address-card-Bqm0FQkG.js +33 -0
- package/dist/showcase/assets/commerce-cart-summary-BtGCOEun.js +43 -0
- package/dist/showcase/assets/commerce-coupon-input-I3FY6pgV.js +11 -0
- package/dist/showcase/assets/commerce-discount-stack-CWqyobuL.js +17 -0
- package/dist/showcase/assets/commerce-inventory-section-rBtMNLTt.js +123 -0
- package/dist/showcase/assets/commerce-loyalty-points-ne7c2ObQ.js +19 -0
- package/dist/showcase/assets/commerce-order-status-eLtUC1iE.js +21 -0
- package/dist/showcase/assets/commerce-payment-method-B3yFyhpS.js +17 -0
- package/dist/showcase/assets/commerce-refund-status-C1pzTSus.js +17 -0
- package/dist/showcase/assets/commerce-seo-listing-CBk_c8ru.js +61 -0
- package/dist/showcase/assets/commerce-shipment-tracking-auiKGGyV.js +24 -0
- package/dist/showcase/assets/commerce-subscription-summary-BCX4WxbS.js +25 -0
- package/dist/showcase/assets/commerce-tax-breakdown-D4F5dOjL.js +19 -0
- package/dist/showcase/assets/commerce-upcoming-booking-qlWKp0kq.js +20 -0
- package/dist/showcase/assets/commerce-voucher-entry-CqCuoKHq.js +19 -0
- package/dist/showcase/assets/composite-DeYDU7hg.js +1 -0
- package/dist/showcase/assets/conditional-rendering-CFHxzngX.js +1 -0
- package/dist/showcase/assets/contact-card-CxVeuwp_.js +65 -0
- package/dist/showcase/assets/content-container-CJN01OtO.js +1 -0
- package/dist/showcase/assets/copyable-DajG-Sgx.js +1 -0
- package/dist/showcase/assets/copyable-zOzqOOBl.js +96 -0
- package/dist/showcase/assets/course-card-DO8z-KeM.js +77 -0
- package/dist/showcase/assets/cpu-C8IgjvoP.js +1 -0
- package/dist/showcase/assets/credit-card-XYEEHtzk.js +1 -0
- package/dist/showcase/assets/css-variables-BglvDaVO.js +1223 -0
- package/dist/showcase/assets/currency-Bso6kejw.js +148 -0
- package/dist/showcase/assets/dark-surfaces-5WTjzxYN.js +90 -0
- package/dist/showcase/assets/data-view-B7uRWXOO.js +4 -0
- package/dist/showcase/assets/data-view-C4bGuOlY.js +124 -0
- package/dist/showcase/assets/database-CZLgFKRy.js +1 -0
- package/dist/showcase/assets/date-block-BicWaKPj.js +1 -0
- package/dist/showcase/assets/date-block-yRFY8Ne5.js +1 -0
- package/dist/showcase/assets/date-picker-CskCoiwf.js +1 -0
- package/dist/showcase/assets/date-pickers-fcqdsvef.js +73 -0
- package/dist/showcase/assets/dense-info-Dg38xVsF.js +106 -0
- package/dist/showcase/assets/design-system-consistency-DFa3RNWm.js +264 -0
- package/dist/showcase/assets/dialog-C4fhqXD0.js +1 -0
- package/dist/showcase/assets/dialog-CN_gfVV2.js +1 -0
- package/dist/showcase/assets/dialog-CoJdLYZ8.js +1 -0
- package/dist/showcase/assets/display-utilities-DB0eXAdH.js +4 -0
- package/dist/showcase/assets/display-utilities.examples-ez3DfdgN.js +309 -0
- package/dist/showcase/assets/dist-5H2NtsLp.js +45 -0
- package/dist/showcase/assets/dist-SJMpFlRc.js +1 -0
- package/dist/showcase/assets/dollar-sign-LBLhl0Y2.js +1 -0
- package/dist/showcase/assets/download-BkOWnQEj.js +1 -0
- package/dist/showcase/assets/dropdown-menu-5yqchTEF.js +1 -0
- package/dist/showcase/assets/dropzone-CJHqIcHB.js +1 -0
- package/dist/showcase/assets/earth-BGrx2u2i.js +1 -0
- package/dist/showcase/assets/ellipsis-Dumpj4aE.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-h1O9pibc.js +1 -0
- package/dist/showcase/assets/empty-Cc8JP5--.js +1 -0
- package/dist/showcase/assets/empty-item-C-v-Akyi.js +49 -0
- package/dist/showcase/assets/empty-state-B7BQDoeL.js +1 -0
- package/dist/showcase/assets/empty-state-BSvZNFnQ.js +190 -0
- package/dist/showcase/assets/enhanced-activities-D7g7ZD9m.js +357 -0
- package/dist/showcase/assets/enhanced-combobox-4Olgu--e.js +1 -0
- package/dist/showcase/assets/esm-CFFDcW-Z.js +2 -0
- package/dist/showcase/assets/event-calendar-vdFWcI49.js +138 -0
- package/dist/showcase/assets/event-log-BbHM_3Ko.js +330 -0
- package/dist/showcase/assets/example-BsDQngs7.js +1 -0
- package/dist/showcase/assets/external-link-BvVwsJxR.js +1 -0
- package/dist/showcase/assets/eye-CAeo-GNe.js +1 -0
- package/dist/showcase/assets/feature-announcement-7hZGrJd6.js +34 -0
- package/dist/showcase/assets/file-D4d3b9bx.js +1 -0
- package/dist/showcase/assets/file-text-C59ToXmU.js +1 -0
- package/dist/showcase/assets/filter-layout-BjoG6qxP.js +1 -0
- package/dist/showcase/assets/filters-CrE_UGbo.js +139 -0
- package/dist/showcase/assets/fixtures-ClOCQD2a.js +1 -0
- package/dist/showcase/assets/flag-CuF52WEl.js +1 -0
- package/dist/showcase/assets/folder-open-BLLtgh4E.js +1 -0
- package/dist/showcase/assets/form-field-D5kwgD4P.js +1 -0
- package/dist/showcase/assets/form-sizing-Bv0A0Oi0.js +1 -0
- package/dist/showcase/assets/format-LvvHefMj.js +1 -0
- package/dist/showcase/assets/forms-Ck6hPzLP.js +915 -0
- package/dist/showcase/assets/funnel-Bvp5cFZt.js +1 -0
- package/dist/showcase/assets/generic-Cownd_Wk.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-CPnjAO3K.js +1 -0
- package/dist/showcase/assets/gift-BCQpmV33.js +1 -0
- package/dist/showcase/assets/giftcard-cards-B_78Meny.js +85 -0
- package/dist/showcase/assets/git-branch-r0dDGCKy.js +1 -0
- package/dist/showcase/assets/global-search-DD9cGOt5.js +1 -0
- package/dist/showcase/assets/global-search-fTKzzx8k.js +215 -0
- package/dist/showcase/assets/globe-RF5bwiar.js +1 -0
- package/dist/showcase/assets/gradient-card-BDJes3UK.js +58 -0
- package/dist/showcase/assets/grip-vertical-qqe2NqfZ.js +1 -0
- package/dist/showcase/assets/hash-D9_KYvHs.js +1 -0
- package/dist/showcase/assets/header-XNCAB6Rs.js +1 -0
- package/dist/showcase/assets/header-notifications-BdWsVoN3.js +1 -0
- package/dist/showcase/assets/heart-C56rAanb.js +1 -0
- package/dist/showcase/assets/hooks-fDydjf6M.js +220 -0
- package/dist/showcase/assets/house-DbYM6er_.js +1 -0
- package/dist/showcase/assets/icon-badge-DWQE6dAm.js +37 -0
- package/dist/showcase/assets/icon-badge-ruuI6tt0.js +1 -0
- package/dist/showcase/assets/icon-size-BHn0d6Zp.js +1 -0
- package/dist/showcase/assets/image-DCpC2weW.js +1 -0
- package/dist/showcase/assets/inbox-cvR2MbZq.js +1 -0
- package/dist/showcase/assets/index-B4sKWDcN.js +10 -0
- package/dist/showcase/assets/index-Dy3INIq2.css +2 -0
- package/dist/showcase/assets/inertValue-DhXA8ytu.js +1 -0
- package/dist/showcase/assets/info-DXwnIz56.js +1 -0
- package/dist/showcase/assets/inline-stat-C9Syz6in.js +1 -0
- package/dist/showcase/assets/inline-stat-CDcWILUM.js +15 -0
- package/dist/showcase/assets/input-CLQIEOQ4.js +1 -0
- package/dist/showcase/assets/input-D70ed8oB.js +1 -0
- package/dist/showcase/assets/input-group-CMJ2yUuD.js +47 -0
- package/dist/showcase/assets/input-group-DwZov3Y6.js +1 -0
- package/dist/showcase/assets/inputs-DQWbPvC8.js +155 -0
- package/dist/showcase/assets/installation-B2BcSkJr.js +134 -0
- package/dist/showcase/assets/invoice-header-Ds4A6mLs.js +36 -0
- package/dist/showcase/assets/invoice-items-LFYeS0eR.js +36 -0
- package/dist/showcase/assets/invoice-mini-BMVm8x43.js +14 -0
- package/dist/showcase/assets/invoice-table-BVZ-PtSC.js +30 -0
- package/dist/showcase/assets/isSameDay-BYK9pmDX.js +1 -0
- package/dist/showcase/assets/isToday-B3-xb910.js +1 -0
- package/dist/showcase/assets/italic-CPSVPc63.js +1 -0
- package/dist/showcase/assets/item-KsGEgVjl.js +1 -0
- package/dist/showcase/assets/item-WOhHNpnr.js +1 -0
- package/dist/showcase/assets/item-avTNp1z7.js +140 -0
- package/dist/showcase/assets/kanban-DwVW3Lab.js +188 -0
- package/dist/showcase/assets/key-round-CNEqnMGG.js +1 -0
- package/dist/showcase/assets/label-BZzl85ev.js +1 -0
- package/dist/showcase/assets/languages-BWquWXSu.js +1 -0
- package/dist/showcase/assets/layers-hYbCFSpT.js +1 -0
- package/dist/showcase/assets/layout-app-shell-BRLO7lFp.js +608 -0
- package/dist/showcase/assets/layout-auth-ysobcsYs.js +790 -0
- package/dist/showcase/assets/layout-containers-BoVYkBOk.js +141 -0
- package/dist/showcase/assets/layout-header-BnkgzPgS.js +203 -0
- package/dist/showcase/assets/layout-page-CdzQQr2_.js +315 -0
- package/dist/showcase/assets/layout-primitives-BXP_nFQX.js +34 -0
- package/dist/showcase/assets/layout-sidebar-tPHppANn.js +224 -0
- package/dist/showcase/assets/layout-users-DgChX6ig.js +117 -0
- package/dist/showcase/assets/layout-workspace-u1kkLDCd.js +191 -0
- package/dist/showcase/assets/lib-VG1Lf4Lk.js +1 -0
- package/dist/showcase/assets/list-checks-CUXbiTmk.js +1 -0
- package/dist/showcase/assets/lock-BwI_fNQW.js +1 -0
- package/dist/showcase/assets/lock-keyhole-DKi16lNp.js +1 -0
- package/dist/showcase/assets/mail-BlH-8y33.js +1 -0
- package/dist/showcase/assets/mail-check-DrNT7RWT.js +1 -0
- package/dist/showcase/assets/map-BKztQq4-.js +124 -0
- package/dist/showcase/assets/map-pin-BwGJCGY8.js +1 -0
- package/dist/showcase/assets/media-library-CUI_IPkM.js +699 -0
- package/dist/showcase/assets/mention-inline-suggestions-BIIRKRpU.js +1 -0
- package/dist/showcase/assets/mentions-CTkcQNFc.js +138 -0
- package/dist/showcase/assets/menus-DilZRggQ.js +171 -0
- package/dist/showcase/assets/message-square-Cjuladix.js +1 -0
- package/dist/showcase/assets/metadata-list-C6CF85o9.js +1 -0
- package/dist/showcase/assets/metadata-list-PqngP9QU.js +286 -0
- package/dist/showcase/assets/metric-C5Wrr90_.js +1 -0
- package/dist/showcase/assets/metric-bar-CIesI_gw.js +1 -0
- package/dist/showcase/assets/metric-grid-FlL7atag.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-DxTiaCTB.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-YabnSIOP.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-Buas8exV.js +50 -0
- package/dist/showcase/assets/metrics-comparison-Jx1WGPZL.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-C5cB95P9.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-D7r40gFm.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-CweMAqSm.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-UUa2fUGF.js +42 -0
- package/dist/showcase/assets/metrics-overview-eGnNPvwF.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-CEcX0zqZ.js +54 -0
- package/dist/showcase/assets/minus-CVVsGq91.js +1 -0
- package/dist/showcase/assets/money-display-Chu4t6MY.js +1 -0
- package/dist/showcase/assets/money-display-DNs6PXCm.js +3 -0
- package/dist/showcase/assets/month-year-picker-B0odiuhf.js +1 -0
- package/dist/showcase/assets/navigation-CQwt1f4b.js +90 -0
- package/dist/showcase/assets/navigation-KQxXtiL6.js +231 -0
- package/dist/showcase/assets/navigation-extras-2uJbGPhJ.js +43 -0
- package/dist/showcase/assets/notification-banner-Cx1Qm0ij.js +1 -0
- package/dist/showcase/assets/onboarding-checklist-CAHajXzP.js +119 -0
- package/dist/showcase/assets/overflow-tab-bar-gNULx5Wr.js +1 -0
- package/dist/showcase/assets/overlays-CaSVa-L2.js +159 -0
- package/dist/showcase/assets/overlays-zjTanrAP.js +408 -0
- package/dist/showcase/assets/overview-EZ_RMkeD.js +184 -0
- package/dist/showcase/assets/package-CqQQqj6Y.js +1 -0
- package/dist/showcase/assets/package-check-Nqr5Lv95.js +1 -0
- package/dist/showcase/assets/page-BTXFFFwT.js +1 -0
- package/dist/showcase/assets/page-action-button-NJqE-qP0.js +1 -0
- package/dist/showcase/assets/page-header-AFTuoGVw.js +1 -0
- package/dist/showcase/assets/pagination-B1Ewc7Co.js +1 -0
- package/dist/showcase/assets/pagination-DOdLcTiT.js +42 -0
- package/dist/showcase/assets/paperclip-D0oBI19t.js +1 -0
- package/dist/showcase/assets/password-input-C5MrNrHm.js +1 -0
- package/dist/showcase/assets/pencil-DdCEPDLe.js +1 -0
- package/dist/showcase/assets/phone-BdGmQ_eI.js +1 -0
- package/dist/showcase/assets/placeholder-pattern-BnyJukU0.js +1 -0
- package/dist/showcase/assets/plus-Dp_nZNjk.js +1 -0
- package/dist/showcase/assets/popover-BP4R2w67.js +1 -0
- package/dist/showcase/assets/popover-DfGXC2pN.js +1 -0
- package/dist/showcase/assets/popover-menu-DGkCA4YC.js +1 -0
- package/dist/showcase/assets/product-empty-state-CKylTX_h.js +1 -0
- package/dist/showcase/assets/product-option-action-menu-vqslODBe.js +1 -0
- package/dist/showcase/assets/product-rows-CWy63Dk5.js +1 -0
- package/dist/showcase/assets/product-structure-card-EJY038tP.js +1 -0
- package/dist/showcase/assets/product-variant-action-menu-CnRJscP3.js +1 -0
- package/dist/showcase/assets/products-jpCjHLbZ.js +61 -0
- package/dist/showcase/assets/progress-D19PRprP.js +1 -0
- package/dist/showcase/assets/progress-UbtWRfF2.js +18 -0
- package/dist/showcase/assets/progress-twHfoY8k.js +1 -0
- package/dist/showcase/assets/props-table-aynAz90t.js +1 -0
- package/dist/showcase/assets/props.generated-IUhT2lh_.json +42950 -0
- package/dist/showcase/assets/qr-code-ywR6kVzD.js +1 -0
- package/dist/showcase/assets/quote-BFMPQa3L.js +1 -0
- package/dist/showcase/assets/receipt-CcTseXcy.js +1 -0
- package/dist/showcase/assets/receipt-text-C9BMAbTL.js +1 -0
- package/dist/showcase/assets/refinement-guide-lotMKye4.js +189 -0
- package/dist/showcase/assets/refresh-cw-DpfoVhbc.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-mzTN-8j9.js +1 -0
- package/dist/showcase/assets/resource-CwHVDrOk.js +1 -0
- package/dist/showcase/assets/resource-kPziVtVy.js +139 -0
- package/dist/showcase/assets/resource-selector-card-xIysiHOg.js +43 -0
- package/dist/showcase/assets/rich-text-editor-Bi6stpAW.js +124 -0
- package/dist/showcase/assets/rich-text-editor-DggGI4Dj.js +143 -0
- package/dist/showcase/assets/rotate-ccw-Uau0Jm3_.js +1 -0
- package/dist/showcase/assets/route-Dj29lOBc.js +1 -0
- package/dist/showcase/assets/save-j-PKUm-B.js +1 -0
- package/dist/showcase/assets/schema-form-D4kfmM1o.js +327 -0
- package/dist/showcase/assets/scroll-area-CK1S6JpQ.js +1 -0
- package/dist/showcase/assets/scroll-area-Di7TDfFD.js +32 -0
- package/dist/showcase/assets/section-C_rLy6Zn.js +1 -0
- package/dist/showcase/assets/select-BRC14Sd3.js +1 -0
- package/dist/showcase/assets/select-J0hPSc5B.js +1 -0
- package/dist/showcase/assets/send-BnVbRsaN.js +1 -0
- package/dist/showcase/assets/separator-7gHhV7ed.js +1 -0
- package/dist/showcase/assets/separator-CjWigMul.js +1 -0
- package/dist/showcase/assets/separator-Dpo134G3.js +28 -0
- package/dist/showcase/assets/separator-JYQ5rY8E.js +1 -0
- package/dist/showcase/assets/settings-2-D06IRW2d.js +1 -0
- package/dist/showcase/assets/settings-YDwquOPS.js +1 -0
- package/dist/showcase/assets/sheet-O9T8bfRr.js +1 -0
- package/dist/showcase/assets/shield-Cebk5nXH.js +1 -0
- package/dist/showcase/assets/shield-alert-BldSpQ1t.js +1 -0
- package/dist/showcase/assets/shield-check-CNudpzdR.js +1 -0
- package/dist/showcase/assets/shopping-bag-BuHsmxnN.js +1 -0
- package/dist/showcase/assets/showcase-B1BPgzRP.js +132 -0
- package/dist/showcase/assets/sidebar-DPVgEwE0.js +1 -0
- package/dist/showcase/assets/sidebar.context-CYk51BQ5.js +1 -0
- package/dist/showcase/assets/skeleton-CrB6dGV4.js +29 -0
- package/dist/showcase/assets/skeleton-DMWrHdVi.js +1 -0
- package/dist/showcase/assets/skeleton-IBZSxxTq.js +1 -0
- package/dist/showcase/assets/skeleton-OK5SgmlA.js +1 -0
- package/dist/showcase/assets/slider-DMLIlQeO.js +1 -0
- package/dist/showcase/assets/smart-card-CwDYx0xj.js +1 -0
- package/dist/showcase/assets/sonner-Dpe1Nwfb.js +22 -0
- package/dist/showcase/assets/sortable.esm-BSC2lHxr.js +5 -0
- package/dist/showcase/assets/sparkles-BDnbTUMq.js +1 -0
- package/dist/showcase/assets/spinner-BZ0h-j9y.js +49 -0
- package/dist/showcase/assets/spinner-TNaSAQh7.js +30 -0
- package/dist/showcase/assets/spinner-k76a4i_M.js +1 -0
- package/dist/showcase/assets/square-pen-Cn-sFtCo.js +1 -0
- package/dist/showcase/assets/stacked-avatars-Ds8eV_Nx.js +1 -0
- package/dist/showcase/assets/star-BzQGhFDT.js +1 -0
- package/dist/showcase/assets/startOfDay-BfIUGWW-.js +1 -0
- package/dist/showcase/assets/styles-BleHZ-uX.js +1 -0
- package/dist/showcase/assets/suggestions-CsrJSY__.js +126 -0
- package/dist/showcase/assets/support-rail-C_fc_C1j.js +26 -0
- package/dist/showcase/assets/switch-BEfD8lic.js +1 -0
- package/dist/showcase/assets/switch-BOlIXIn9.js +1 -0
- package/dist/showcase/assets/switch-card-CCJ-MaRI.js +1 -0
- package/dist/showcase/assets/sync-vACCm2ND.js +124 -0
- package/dist/showcase/assets/table-CeZy8iT0.js +686 -0
- package/dist/showcase/assets/table-DPpHEvR_.js +1 -0
- package/dist/showcase/assets/table-actions-C9J5piiU.js +1 -0
- package/dist/showcase/assets/tabs-Ca6ldTWi.js +1 -0
- package/dist/showcase/assets/tabs-DGP5RvNm.js +19 -0
- package/dist/showcase/assets/tags-input-BOemEMZS.js +1 -0
- package/dist/showcase/assets/text-button-C8qZqcCy.js +1 -0
- package/dist/showcase/assets/text-link-BFYPeXTq.js +1 -0
- package/dist/showcase/assets/textarea-DcCHHuP-.js +1 -0
- package/dist/showcase/assets/textarea-RUqV9hNm.js +1 -0
- package/dist/showcase/assets/throttle-alert-Sf7FjTvh.js +1 -0
- package/dist/showcase/assets/timelines-nQ8shLIn.js +200 -0
- package/dist/showcase/assets/toggle-group-k5nqOfUW.js +1 -0
- package/dist/showcase/assets/toggles-E80ufOk5.js +71 -0
- package/dist/showcase/assets/toggles-group-vaJ63gg9.js +32 -0
- package/dist/showcase/assets/tooltip-DIvBe7hb.js +31 -0
- package/dist/showcase/assets/trash-2-C-6T17-B.js +1 -0
- package/dist/showcase/assets/trending-up-DRyRbFnA.js +1 -0
- package/dist/showcase/assets/truck-BE6OFjJs.js +1 -0
- package/dist/showcase/assets/typography-i6Zhj3TO.js +223 -0
- package/dist/showcase/assets/ui-badge-MBQsz2Mn.js +28 -0
- package/dist/showcase/assets/ui-card-jaEeRDe5.js +30 -0
- package/dist/showcase/assets/ui-table-CbmOEWVu.js +42 -0
- package/dist/showcase/assets/upload-tray-D4aE56cX.js +138 -0
- package/dist/showcase/assets/use-layout-link-DpqFiDf-.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-DSKQpAlQ.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-DL6IpVQS.js +1 -0
- package/dist/showcase/assets/useCompositeItem-jckozrpu.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-Ce0eZtsp.js +1 -0
- package/dist/showcase/assets/useLabelableId-Bs8clfkJ.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-KBhpVaur.js +1 -0
- package/dist/showcase/assets/useRender-Bn5cjIfs.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-D5Cl055z.js +1 -0
- package/dist/showcase/assets/useValueChanged-B-czUWmg.js +1 -0
- package/dist/showcase/assets/user-C7ORJkSr.js +1 -0
- package/dist/showcase/assets/user-plus-O410ITvy.js +1 -0
- package/dist/showcase/assets/users-BlcUaVEY.js +1 -0
- package/dist/showcase/assets/variant-details-BJ0OtpeL.js +50 -0
- package/dist/showcase/assets/variant-management-pTZ83MM_.js +209 -0
- package/dist/showcase/assets/vendor-profile-F2EP-AGx.js +37 -0
- package/dist/showcase/assets/video-fYZEPex_.js +1 -0
- package/dist/showcase/assets/visually-hidden-C1KAHG63.js +1 -0
- package/dist/showcase/assets/weight-input-_wl5mPGA.js +1 -0
- package/dist/showcase/assets/wrench-BzqNpztP.js +1 -0
- package/dist/showcase/assets/x-C5_SzMQM.js +1 -0
- package/dist/showcase/assets/zap-DdInHaAD.js +1 -0
- package/dist/showcase/index.html +2 -2
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/css/tokens/components.css +17 -2
- package/src/css/tokens/foundation.css +4 -2
- package/dist/_shared/accordion-8B4OFqiT.cjs +0 -2
- package/dist/_shared/accordion-8B4OFqiT.cjs.map +0 -1
- package/dist/_shared/accordion-DlpTSZ3p.js +0 -135
- package/dist/_shared/accordion-DlpTSZ3p.js.map +0 -1
- package/dist/_shared/action-menu-BYrYdpkR.cjs +0 -2
- package/dist/_shared/action-menu-BYrYdpkR.cjs.map +0 -1
- package/dist/_shared/action-menu-CYwMZX-b.js +0 -96
- package/dist/_shared/action-menu-CYwMZX-b.js.map +0 -1
- package/dist/_shared/ai-artifact-Cv8VBibf.cjs +0 -3
- package/dist/_shared/ai-artifact-Cv8VBibf.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DwfXQuh4.js +0 -1099
- package/dist/_shared/ai-artifact-DwfXQuh4.js.map +0 -1
- package/dist/_shared/auth-Cz5ci18c.cjs +0 -2
- package/dist/_shared/auth-Cz5ci18c.cjs.map +0 -1
- package/dist/_shared/auth-DDWsgFUL.js +0 -643
- package/dist/_shared/auth-DDWsgFUL.js.map +0 -1
- package/dist/_shared/badge-C65rt1M9.cjs +0 -2
- package/dist/_shared/badge-C65rt1M9.cjs.map +0 -1
- package/dist/_shared/badge-r8ae66Vd.js +0 -110
- package/dist/_shared/badge-r8ae66Vd.js.map +0 -1
- package/dist/_shared/breadcrumbs-CuT0YIfo.js +0 -105
- package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +0 -1
- package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +0 -2
- package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +0 -1
- package/dist/_shared/button-Be2ayMxF.js +0 -192
- package/dist/_shared/button-Be2ayMxF.js.map +0 -1
- package/dist/_shared/button-CfQtOuBK.cjs +0 -2
- package/dist/_shared/button-CfQtOuBK.cjs.map +0 -1
- package/dist/_shared/buttons-DABiSx6N.cjs +0 -2
- package/dist/_shared/buttons-DABiSx6N.cjs.map +0 -1
- package/dist/_shared/buttons-DYQqQPpk.js +0 -137
- package/dist/_shared/buttons-DYQqQPpk.js.map +0 -1
- package/dist/_shared/card-radio-group-DKhZhBFV.cjs +0 -2
- package/dist/_shared/card-radio-group-DKhZhBFV.cjs.map +0 -1
- package/dist/_shared/card-radio-group-DRjmLN5s.js +0 -150
- package/dist/_shared/card-radio-group-DRjmLN5s.js.map +0 -1
- package/dist/_shared/cards-BJctT9KD.js +0 -428
- package/dist/_shared/cards-BJctT9KD.js.map +0 -1
- package/dist/_shared/cards-m03XN10f.cjs +0 -2
- package/dist/_shared/cards-m03XN10f.cjs.map +0 -1
- package/dist/_shared/combobox-BdBpeD3C.cjs +0 -2
- package/dist/_shared/combobox-BdBpeD3C.cjs.map +0 -1
- package/dist/_shared/combobox-D9tU_83-.js +0 -954
- package/dist/_shared/combobox-D9tU_83-.js.map +0 -1
- package/dist/_shared/command-BbJB0pjP.cjs +0 -2
- package/dist/_shared/command-BbJB0pjP.cjs.map +0 -1
- package/dist/_shared/command-IP2wy_HN.js +0 -39
- package/dist/_shared/command-IP2wy_HN.js.map +0 -1
- package/dist/_shared/comments-DAzpeuQq.cjs +0 -2
- package/dist/_shared/comments-DAzpeuQq.cjs.map +0 -1
- package/dist/_shared/comments-DzZaKP9x.js +0 -952
- package/dist/_shared/comments-DzZaKP9x.js.map +0 -1
- package/dist/_shared/containers-CB7zaAvN.cjs +0 -2
- package/dist/_shared/containers-CB7zaAvN.cjs.map +0 -1
- package/dist/_shared/containers-CLBmhGfs.js +0 -48
- package/dist/_shared/containers-CLBmhGfs.js.map +0 -1
- package/dist/_shared/copyable-BJYx2SlN.js +0 -38
- package/dist/_shared/copyable-BJYx2SlN.js.map +0 -1
- package/dist/_shared/copyable-DiDEjp8Z.cjs +0 -2
- package/dist/_shared/copyable-DiDEjp8Z.cjs.map +0 -1
- package/dist/_shared/data-display-DQUUEzCx.cjs +0 -2
- package/dist/_shared/data-display-DQUUEzCx.cjs.map +0 -1
- package/dist/_shared/data-display-LlvMEFTK.js +0 -1878
- package/dist/_shared/data-display-LlvMEFTK.js.map +0 -1
- package/dist/_shared/date-picker-CrC-lHyF.cjs +0 -2
- package/dist/_shared/date-picker-CrC-lHyF.cjs.map +0 -1
- package/dist/_shared/date-picker-DbYBek-b.js +0 -1361
- package/dist/_shared/date-picker-DbYBek-b.js.map +0 -1
- package/dist/_shared/date-pickers-9AU8YQK2.js +0 -329
- package/dist/_shared/date-pickers-9AU8YQK2.js.map +0 -1
- package/dist/_shared/date-pickers-DUEwCWig.cjs +0 -2
- package/dist/_shared/date-pickers-DUEwCWig.cjs.map +0 -1
- package/dist/_shared/display-BqoPOdof.cjs +0 -2
- package/dist/_shared/display-BqoPOdof.cjs.map +0 -1
- package/dist/_shared/display-CQoSwU74.js +0 -986
- package/dist/_shared/display-CQoSwU74.js.map +0 -1
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +0 -2
- package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +0 -1
- package/dist/_shared/dropdown-menu-CoWmrjYX.js +0 -147
- package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +0 -1
- package/dist/_shared/form-sizing-DJus3nK3.cjs +0 -2
- package/dist/_shared/form-sizing-DJus3nK3.cjs.map +0 -1
- package/dist/_shared/form-sizing-DWjJsQSR.js +0 -42
- package/dist/_shared/form-sizing-DWjJsQSR.js.map +0 -1
- package/dist/_shared/forms-CNh-S9FK.cjs +0 -2
- package/dist/_shared/forms-CNh-S9FK.cjs.map +0 -1
- package/dist/_shared/forms-DIz3SCA9.js +0 -3534
- package/dist/_shared/forms-DIz3SCA9.js.map +0 -1
- package/dist/_shared/header-Bs61tQla.js +0 -447
- package/dist/_shared/header-Bs61tQla.js.map +0 -1
- package/dist/_shared/header-D01oOxna.cjs +0 -2
- package/dist/_shared/header-D01oOxna.cjs.map +0 -1
- package/dist/_shared/hooks-ACnpaIli.js +0 -95
- package/dist/_shared/hooks-ACnpaIli.js.map +0 -1
- package/dist/_shared/hooks-B7khuHkk.cjs +0 -2
- package/dist/_shared/hooks-B7khuHkk.cjs.map +0 -1
- package/dist/_shared/input-CzJzVyQ0.js +0 -182
- package/dist/_shared/input-CzJzVyQ0.js.map +0 -1
- package/dist/_shared/input-Dvvmn96E.cjs +0 -2
- package/dist/_shared/input-Dvvmn96E.cjs.map +0 -1
- package/dist/_shared/item-CVjjpHQd.js +0 -226
- package/dist/_shared/item-CVjjpHQd.js.map +0 -1
- package/dist/_shared/item-ChHblHhR.cjs +0 -2
- package/dist/_shared/item-ChHblHhR.cjs.map +0 -1
- package/dist/_shared/layout-CGi5w1mo.js +0 -268
- package/dist/_shared/layout-CGi5w1mo.js.map +0 -1
- package/dist/_shared/layout-ccVwjUG8.cjs +0 -2
- package/dist/_shared/layout-ccVwjUG8.cjs.map +0 -1
- package/dist/_shared/mentions-Cg_4vFxd.cjs +0 -2
- package/dist/_shared/mentions-Cg_4vFxd.cjs.map +0 -1
- package/dist/_shared/mentions-Ci9RFTfw.js +0 -506
- package/dist/_shared/mentions-Ci9RFTfw.js.map +0 -1
- package/dist/_shared/money-display-BFk9Gu21.cjs +0 -2
- package/dist/_shared/money-display-BFk9Gu21.cjs.map +0 -1
- package/dist/_shared/money-display-DpuLnsK2.js +0 -198
- package/dist/_shared/money-display-DpuLnsK2.js.map +0 -1
- package/dist/_shared/navigation-C1QN2-Vq.cjs +0 -2
- package/dist/_shared/navigation-C1QN2-Vq.cjs.map +0 -1
- package/dist/_shared/navigation-CMrLO8v5.js +0 -436
- package/dist/_shared/navigation-CMrLO8v5.js.map +0 -1
- package/dist/_shared/overlays-BJLczwpz.js +0 -735
- package/dist/_shared/overlays-BJLczwpz.js.map +0 -1
- package/dist/_shared/overlays-DbaPLT67.cjs +0 -2
- package/dist/_shared/overlays-DbaPLT67.cjs.map +0 -1
- package/dist/_shared/popover-menu-D_t6rCvN.cjs +0 -2
- package/dist/_shared/popover-menu-D_t6rCvN.cjs.map +0 -1
- package/dist/_shared/popover-menu-f2O6R_27.js +0 -93
- package/dist/_shared/popover-menu-f2O6R_27.js.map +0 -1
- package/dist/_shared/rich-text-editor-DmZHbsms.js +0 -620
- package/dist/_shared/rich-text-editor-DmZHbsms.js.map +0 -1
- package/dist/_shared/rich-text-editor-DqUU-H7i.cjs +0 -2
- package/dist/_shared/rich-text-editor-DqUU-H7i.cjs.map +0 -1
- package/dist/_shared/settings-CgtcSI8L.js +0 -143
- package/dist/_shared/settings-CgtcSI8L.js.map +0 -1
- package/dist/_shared/settings-csNmeT7b.cjs +0 -2
- package/dist/_shared/settings-csNmeT7b.cjs.map +0 -1
- package/dist/_shared/sidebar-DyGIcJd9.cjs +0 -2
- package/dist/_shared/sidebar-DyGIcJd9.cjs.map +0 -1
- package/dist/_shared/sidebar-OT-xIguQ.js +0 -548
- package/dist/_shared/sidebar-OT-xIguQ.js.map +0 -1
- package/dist/_shared/skeleton-DwF5VdMh.cjs +0 -2
- package/dist/_shared/skeleton-DwF5VdMh.cjs.map +0 -1
- package/dist/_shared/skeleton-yUXqeWzB.js +0 -256
- package/dist/_shared/skeleton-yUXqeWzB.js.map +0 -1
- package/dist/_shared/spinner-BDrUzfTo.cjs +0 -2
- package/dist/_shared/spinner-BDrUzfTo.cjs.map +0 -1
- package/dist/_shared/spinner-CuVZhJhN.js +0 -67
- package/dist/_shared/spinner-CuVZhJhN.js.map +0 -1
- package/dist/_shared/table-BVWemr79.cjs +0 -2
- package/dist/_shared/table-BVWemr79.cjs.map +0 -1
- package/dist/_shared/table-WYSjfQRr.js +0 -1377
- package/dist/_shared/table-WYSjfQRr.js.map +0 -1
- package/dist/_shared/textarea-C0iZwWdD.js +0 -118
- package/dist/_shared/textarea-C0iZwWdD.js.map +0 -1
- package/dist/_shared/textarea-bHFAtwYd.cjs +0 -2
- package/dist/_shared/textarea-bHFAtwYd.cjs.map +0 -1
- package/dist/_shared/typography-5bLhAYaK.js +0 -201
- package/dist/_shared/typography-5bLhAYaK.js.map +0 -1
- package/dist/_shared/typography-CWEobAJV.cjs +0 -2
- package/dist/_shared/typography-CWEobAJV.cjs.map +0 -1
- package/dist/_shared/workspace-BkwsqTrc.cjs +0 -2
- package/dist/_shared/workspace-BkwsqTrc.cjs.map +0 -1
- package/dist/_shared/workspace-DpU1YG1t.js +0 -357
- package/dist/_shared/workspace-DpU1YG1t.js.map +0 -1
- package/dist/showcase/assets/AreaChart-DxDBymDt.js +0 -6
- package/dist/showcase/assets/CompositeItem-owAA4Ah3.js +0 -1
- package/dist/showcase/assets/CompositeRoot-DzHTtLBs.js +0 -1
- package/dist/showcase/assets/DialogTrigger-OUBMI353.js +0 -1
- package/dist/showcase/assets/LabelableContext-Cd9Gf7TR.js +0 -1
- package/dist/showcase/assets/PreviewLayout-X_NxjYOV.js +0 -1
- package/dist/showcase/assets/RadioGroup-BzveyiIV.js +0 -1
- package/dist/showcase/assets/ScrollAreaCorner-IZFF348L.js +0 -1
- package/dist/showcase/assets/Separator-CSYYEo-X.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-BYSKM0e8.js +0 -1
- package/dist/showcase/assets/accordion-B9VkLXiy.js +0 -171
- package/dist/showcase/assets/accordion-variants-g7lk5hEX.js +0 -1
- package/dist/showcase/assets/action-menu-CWIvuiLO.js +0 -1
- package/dist/showcase/assets/actions-BuwzXYEF.js +0 -310
- package/dist/showcase/assets/activities-BTBlr1G4.js +0 -500
- package/dist/showcase/assets/activities-feed-card-C5lcwUFk.js +0 -1
- package/dist/showcase/assets/admin-kbK6nUjx.js +0 -140
- package/dist/showcase/assets/ai-CKu9EGmA.js +0 -207
- package/dist/showcase/assets/ai-artifact-Bg1MFGeF.js +0 -2
- package/dist/showcase/assets/ai-chat-DEntRhJD.js +0 -568
- package/dist/showcase/assets/ai-elements-DyKRCWiS.js +0 -387
- package/dist/showcase/assets/ai-tool-call-DFrTelEX.js +0 -1
- package/dist/showcase/assets/alert-C0wSpBYn.js +0 -93
- package/dist/showcase/assets/alert-CZ4rgwPr.js +0 -62
- package/dist/showcase/assets/alert-WTKIdE4s.js +0 -1
- package/dist/showcase/assets/api-key-list-BnrUT9Uf.js +0 -1
- package/dist/showcase/assets/api-key-list-bQ6QzFhA.js +0 -73
- package/dist/showcase/assets/app-sidebar-B3veRbac.js +0 -1
- package/dist/showcase/assets/arrow-down-CEXJx115.js +0 -1
- package/dist/showcase/assets/arrow-left-Ca6ri5q0.js +0 -1
- package/dist/showcase/assets/arrow-right-a3STqWgx.js +0 -1
- package/dist/showcase/assets/arrow-up-CCU1MaGq.js +0 -1
- package/dist/showcase/assets/arrow-up-right-BDImqvM2.js +0 -1
- package/dist/showcase/assets/avatar-Bwgai0SK.js +0 -67
- package/dist/showcase/assets/avatar-DSmL52Us.js +0 -57
- package/dist/showcase/assets/avatar-kK9n1a25.js +0 -1
- package/dist/showcase/assets/avatar-nb7MgV_x.js +0 -1
- package/dist/showcase/assets/badge-CTGPRSXm.js +0 -31
- package/dist/showcase/assets/badge-check-zqoYYrVj.js +0 -1
- package/dist/showcase/assets/bell-D7HWGStL.js +0 -1
- package/dist/showcase/assets/boolean-indicator-CqwlV0cf.js +0 -1
- package/dist/showcase/assets/bot-Owx4SMiU.js +0 -1
- package/dist/showcase/assets/box-BeeoLlMd.js +0 -1
- package/dist/showcase/assets/braces-fzrExVIx.js +0 -1
- package/dist/showcase/assets/brain-Da2fsBjd.js +0 -1
- package/dist/showcase/assets/brand-Bo6uwdGf.js +0 -36
- package/dist/showcase/assets/breadcrumb-B-K-6dtd.js +0 -1
- package/dist/showcase/assets/breadcrumb-B6lR9Cq2.js +0 -52
- package/dist/showcase/assets/breadcrumbs-Bamog6P5.js +0 -1
- package/dist/showcase/assets/briefcase-DQjbh28E.js +0 -1
- package/dist/showcase/assets/building-2-DaQW5yJa.js +0 -1
- package/dist/showcase/assets/button-D3skvyQS.js +0 -44
- package/dist/showcase/assets/button-group-BYtbrhme.js +0 -1
- package/dist/showcase/assets/buttons-B3IkMmNQ.js +0 -272
- package/dist/showcase/assets/calendar-C4fCDK3O.js +0 -1
- package/dist/showcase/assets/calendar-CcwkVxCK.js +0 -16
- package/dist/showcase/assets/calendar-DBkwxV9H.js +0 -1
- package/dist/showcase/assets/calendar-days-BWed1W3Z.js +0 -1
- package/dist/showcase/assets/camera-BUoAyoZT.js +0 -1
- package/dist/showcase/assets/card-7DBPqWuv.js +0 -1
- package/dist/showcase/assets/card-ClwyNDHJ.js +0 -188
- package/dist/showcase/assets/card-primitives-BE1YpEQW.js +0 -1
- package/dist/showcase/assets/card-radio-group-1NMbocuG.js +0 -1
- package/dist/showcase/assets/cards-Bu8uaGSU.js +0 -354
- package/dist/showcase/assets/carousel-dTTRRSQg.js +0 -449
- package/dist/showcase/assets/cell-renderers-CcyBuUsC.js +0 -1
- package/dist/showcase/assets/chart-BSboeIO6.js +0 -358
- package/dist/showcase/assets/chart-column-CCzA6B9l.js +0 -1
- package/dist/showcase/assets/checkbox-CSdEPNT5.js +0 -1
- package/dist/showcase/assets/checkbox-CqNLi9Q3.js +0 -1
- package/dist/showcase/assets/chevron-down-C91gNQdT.js +0 -1
- package/dist/showcase/assets/chevron-left-SiAoYFSo.js +0 -1
- package/dist/showcase/assets/chevron-up-Beb1_ET_.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-DaST4VKL.js +0 -1
- package/dist/showcase/assets/circle-D9KiRp8C.js +0 -1
- package/dist/showcase/assets/circle-alert-BQkAwFkl.js +0 -1
- package/dist/showcase/assets/circle-check-big-CN5YOJqq.js +0 -1
- package/dist/showcase/assets/circle-check-dqmKTiDe.js +0 -1
- package/dist/showcase/assets/circle-dot-B7LPN_0V.js +0 -1
- package/dist/showcase/assets/circle-question-mark-yTRkQO3d.js +0 -1
- package/dist/showcase/assets/circle-x-CW2dFcX-.js +0 -1
- package/dist/showcase/assets/clock-3-CXJ_JotW.js +0 -1
- package/dist/showcase/assets/clock-DUqvfazQ.js +0 -1
- package/dist/showcase/assets/code-xml-BmdQDeID.js +0 -1
- package/dist/showcase/assets/collapsible-C-WYhJxn.js +0 -1
- package/dist/showcase/assets/collapsible-CL37AlCX.js +0 -27
- package/dist/showcase/assets/collapsible-uGO5Rj8q.js +0 -1
- package/dist/showcase/assets/combobox-CFh5kUzj.js +0 -685
- package/dist/showcase/assets/command-CtpLaHjh.js +0 -1
- package/dist/showcase/assets/command-DSlK-QAE.js +0 -1
- package/dist/showcase/assets/comment-composer-Rr_a5tZQ.js +0 -1
- package/dist/showcase/assets/comment-item-Dme2o2KI.js +0 -1
- package/dist/showcase/assets/comments-CW2nz465.js +0 -357
- package/dist/showcase/assets/commerce-bwcq6oPn.js +0 -267
- package/dist/showcase/assets/composite-DMIR0vmP.js +0 -1
- package/dist/showcase/assets/conditional-rendering-Bk6AC76c.js +0 -1
- package/dist/showcase/assets/contact-card-BCXS9tWq.js +0 -65
- package/dist/showcase/assets/content-container-b1dC2caJ.js +0 -1
- package/dist/showcase/assets/copyable-BIABx-Vv.js +0 -96
- package/dist/showcase/assets/copyable-Ic9wzVaj.js +0 -1
- package/dist/showcase/assets/course-card-Bo5P3TYv.js +0 -77
- package/dist/showcase/assets/cpu-_VqU6yRO.js +0 -1
- package/dist/showcase/assets/credit-card-BbxO8xLo.js +0 -1
- package/dist/showcase/assets/css-variables-zqpBgnS1.js +0 -1205
- package/dist/showcase/assets/currency-Cjvt4F0b.js +0 -149
- package/dist/showcase/assets/dark-surfaces-CLwERt1f.js +0 -90
- package/dist/showcase/assets/data-view-AtyUp7b-.js +0 -124
- package/dist/showcase/assets/data-view-cnEmgP1C.js +0 -4
- package/dist/showcase/assets/database-TbVXEw7v.js +0 -1
- package/dist/showcase/assets/date-block-CDHemKnP.js +0 -1
- package/dist/showcase/assets/date-block-COb89Y_-.js +0 -1
- package/dist/showcase/assets/date-picker-CK8llBIN.js +0 -1
- package/dist/showcase/assets/date-pickers-DFfDnW9w.js +0 -73
- package/dist/showcase/assets/dense-info-CaFVDE90.js +0 -106
- package/dist/showcase/assets/design-system-consistency-CeSMuTuu.js +0 -264
- package/dist/showcase/assets/dialog-CRQNEK2K.js +0 -1
- package/dist/showcase/assets/dialog-CsCLDb0G.js +0 -1
- package/dist/showcase/assets/dialog-Qh3EHEKq.js +0 -1
- package/dist/showcase/assets/display-utilities-rP3hb4FK.js +0 -4
- package/dist/showcase/assets/display-utilities.examples-BwbvHOcx.js +0 -309
- package/dist/showcase/assets/dist-CbqRct9s.js +0 -1
- package/dist/showcase/assets/dist-iivamCjp.js +0 -45
- package/dist/showcase/assets/dollar-sign-COaRmdJE.js +0 -1
- package/dist/showcase/assets/download-yCcb4rfH.js +0 -1
- package/dist/showcase/assets/dropdown-menu-KoFNw-fX.js +0 -1
- package/dist/showcase/assets/dropzone-DLguWnmu.js +0 -1
- package/dist/showcase/assets/earth-TDRqTA4S.js +0 -1
- package/dist/showcase/assets/ellipsis-Q_fBbRE9.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-Bh8t3Z1g.js +0 -1
- package/dist/showcase/assets/empty-DvmDTSAj.js +0 -1
- package/dist/showcase/assets/empty-item-C3HP5nuw.js +0 -49
- package/dist/showcase/assets/empty-state-Dcin4cOt.js +0 -190
- package/dist/showcase/assets/empty-state-IV_GTNEI.js +0 -1
- package/dist/showcase/assets/enhanced-activities-BLf2gpes.js +0 -357
- package/dist/showcase/assets/enhanced-combobox-ClZcVnhv.js +0 -1
- package/dist/showcase/assets/esm-Cf6QQstQ.js +0 -2
- package/dist/showcase/assets/event-calendar-zrfI_3AM.js +0 -138
- package/dist/showcase/assets/event-log-D-_CViAw.js +0 -330
- package/dist/showcase/assets/example-6bZGEb3-.js +0 -1
- package/dist/showcase/assets/external-link-7ldgjHZM.js +0 -1
- package/dist/showcase/assets/eye-pXVkim6z.js +0 -1
- package/dist/showcase/assets/feature-announcement-CFcGj3ge.js +0 -34
- package/dist/showcase/assets/file-Bn9sAGaT.js +0 -1
- package/dist/showcase/assets/file-text-Cvxg6pjh.js +0 -1
- package/dist/showcase/assets/filter-layout-DqNRRzDU.js +0 -1
- package/dist/showcase/assets/filters-CQMI_T63.js +0 -139
- package/dist/showcase/assets/flag-vI_WJ-BU.js +0 -1
- package/dist/showcase/assets/folder-open-0AyKSRQS.js +0 -1
- package/dist/showcase/assets/form-field-BaBeXn7a.js +0 -1
- package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +0 -1
- package/dist/showcase/assets/format-DLLMyN-3.js +0 -1
- package/dist/showcase/assets/forms-gPD-Caru.js +0 -915
- package/dist/showcase/assets/funnel-Ca9nWMHm.js +0 -1
- package/dist/showcase/assets/generic-AAssz0h7.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-fbxSMOsb.js +0 -1
- package/dist/showcase/assets/gift-BC42Oxfz.js +0 -1
- package/dist/showcase/assets/giftcard-cards-CFKnYe0c.js +0 -85
- package/dist/showcase/assets/git-branch-B-nF8w-J.js +0 -1
- package/dist/showcase/assets/global-search-D6Gxw0G3.js +0 -1
- package/dist/showcase/assets/global-search-jsb_4idg.js +0 -215
- package/dist/showcase/assets/globe-C92uBSrO.js +0 -1
- package/dist/showcase/assets/gradient-card-D4ly60sD.js +0 -58
- package/dist/showcase/assets/hash-BShTbxlR.js +0 -1
- package/dist/showcase/assets/header-CSiNqg9Q.js +0 -1
- package/dist/showcase/assets/header-notifications-CpHeFPQF.js +0 -1
- package/dist/showcase/assets/heart-B3hXs7fr.js +0 -1
- package/dist/showcase/assets/hooks-CamAqFFh.js +0 -220
- package/dist/showcase/assets/house-4_CouE-Y.js +0 -1
- package/dist/showcase/assets/icon-badge-CePIZqWR.js +0 -1
- package/dist/showcase/assets/icon-badge-DSbvvnxh.js +0 -37
- package/dist/showcase/assets/image-BxbFIbVJ.js +0 -1
- package/dist/showcase/assets/inbox-BXab1SM6.js +0 -1
- package/dist/showcase/assets/index-BPUtPJjB.css +0 -2
- package/dist/showcase/assets/index-BjjNfnhP.js +0 -10
- package/dist/showcase/assets/inertValue-CZOzgsmF.js +0 -1
- package/dist/showcase/assets/info-DzqwCq93.js +0 -1
- package/dist/showcase/assets/inline-stat-D5ybpUh-.js +0 -15
- package/dist/showcase/assets/inline-stat-Dq34wv-6.js +0 -1
- package/dist/showcase/assets/input-C8OfUHCK.js +0 -1
- package/dist/showcase/assets/input-D34Ge3rh.js +0 -1
- package/dist/showcase/assets/input-group-BCPZ6Pwq.js +0 -1
- package/dist/showcase/assets/input-group-CySTANka.js +0 -47
- package/dist/showcase/assets/inputs-CnmHo_lj.js +0 -155
- package/dist/showcase/assets/installation-BPvseS46.js +0 -134
- package/dist/showcase/assets/invoice-header-C9JjJWQX.js +0 -36
- package/dist/showcase/assets/invoice-items-DB8tbCv9.js +0 -36
- package/dist/showcase/assets/invoice-mini-Q_PnimKL.js +0 -14
- package/dist/showcase/assets/invoice-table-CLDvpLib.js +0 -30
- package/dist/showcase/assets/isSameDay-D8bDebyL.js +0 -1
- package/dist/showcase/assets/isToday-XVjRuMtp.js +0 -1
- package/dist/showcase/assets/italic-Cm13b8qb.js +0 -1
- package/dist/showcase/assets/item-C07859JQ.js +0 -1
- package/dist/showcase/assets/item-LinnMxvu.js +0 -1
- package/dist/showcase/assets/item-i7ZUMs5t.js +0 -140
- package/dist/showcase/assets/kanban-CIMTpuN5.js +0 -188
- package/dist/showcase/assets/key-round-Bh7EzOyR.js +0 -1
- package/dist/showcase/assets/label-C3A4CjeG.js +0 -1
- package/dist/showcase/assets/languages-C37jhetw.js +0 -1
- package/dist/showcase/assets/layers-Lyr6p-Nt.js +0 -1
- package/dist/showcase/assets/layout-app-shell-BWAkl9gq.js +0 -608
- package/dist/showcase/assets/layout-auth-y1alnhc8.js +0 -790
- package/dist/showcase/assets/layout-containers-B6c-uvil.js +0 -101
- package/dist/showcase/assets/layout-header-DNhJHWNw.js +0 -203
- package/dist/showcase/assets/layout-page-CXU7CnQK.js +0 -315
- package/dist/showcase/assets/layout-primitives-StuFwfwh.js +0 -34
- package/dist/showcase/assets/layout-sidebar-D-QjnZPh.js +0 -224
- package/dist/showcase/assets/layout-users-D7KMzs3-.js +0 -117
- package/dist/showcase/assets/layout-workspace-Butr7CL5.js +0 -191
- package/dist/showcase/assets/lib-D5nOMXIt.js +0 -1
- package/dist/showcase/assets/list-checks-Cg9HZf4W.js +0 -1
- package/dist/showcase/assets/lock-Da21HhQx.js +0 -1
- package/dist/showcase/assets/lock-keyhole-DNTfa9e3.js +0 -1
- package/dist/showcase/assets/mail-Bamky-ti.js +0 -1
- package/dist/showcase/assets/mail-check-BfVYPC42.js +0 -1
- package/dist/showcase/assets/map-BTlWnRAQ.js +0 -124
- package/dist/showcase/assets/map-pin-BU2RBuvC.js +0 -1
- package/dist/showcase/assets/media-library-DJxgoGAF.js +0 -699
- package/dist/showcase/assets/mention-inline-suggestions-CbXVAvbK.js +0 -1
- package/dist/showcase/assets/mentions-kMT-Z3qU.js +0 -138
- package/dist/showcase/assets/menus-bhp_n9PT.js +0 -171
- package/dist/showcase/assets/message-square-DC5Bb9Zs.js +0 -1
- package/dist/showcase/assets/metadata-list-DGr729EW.js +0 -286
- package/dist/showcase/assets/metadata-list-DyjhZi6d.js +0 -1
- package/dist/showcase/assets/metric-DRDok6Ci.js +0 -1
- package/dist/showcase/assets/metric-bar-DZsH4Q3U.js +0 -1
- package/dist/showcase/assets/metric-grid-BlFXTrid.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-oEihbEK8.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-BovaXHQX.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-CeX9Skmd.js +0 -50
- package/dist/showcase/assets/metrics-comparison-DFPSmREl.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-CXzfZwe_.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-DQJaNpYH.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-BIpv8CPU.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-EOCkRI5Z.js +0 -42
- package/dist/showcase/assets/metrics-overview-BD4s9H2T.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-t7asN5nA.js +0 -54
- package/dist/showcase/assets/minus-Dr1iTc_q.js +0 -1
- package/dist/showcase/assets/money-display-B5_VqQC0.js +0 -1
- package/dist/showcase/assets/money-display-bU2_cVGX.js +0 -1
- package/dist/showcase/assets/month-year-picker-DVRuYbLm.js +0 -1
- package/dist/showcase/assets/navigation-DBKvJoe-.js +0 -231
- package/dist/showcase/assets/navigation-DOhfmtgy.js +0 -90
- package/dist/showcase/assets/navigation-extras-BkO2TZP7.js +0 -43
- package/dist/showcase/assets/notification-banner-CE1Ei_ZT.js +0 -1
- package/dist/showcase/assets/onboarding-checklist-Bf0aoBoa.js +0 -119
- package/dist/showcase/assets/overflow-tab-bar-B2RXtyMP.js +0 -1
- package/dist/showcase/assets/overlays-4E_sUgkz.js +0 -408
- package/dist/showcase/assets/overlays-ulNl-Vhr.js +0 -159
- package/dist/showcase/assets/overview-CgymfIBq.js +0 -184
- package/dist/showcase/assets/package-CADuUP1u.js +0 -1
- package/dist/showcase/assets/package-check-O7MD6XE_.js +0 -1
- package/dist/showcase/assets/page-GB6OIgID.js +0 -1
- package/dist/showcase/assets/page-action-button-Dpprot7y.js +0 -1
- package/dist/showcase/assets/page-header-2VEUPx67.js +0 -1
- package/dist/showcase/assets/pagination-BBuRtAX9.js +0 -1
- package/dist/showcase/assets/pagination-C4mt4Q4l.js +0 -42
- package/dist/showcase/assets/paperclip-Cmyh3Bhf.js +0 -1
- package/dist/showcase/assets/password-input-CgZj1niQ.js +0 -1
- package/dist/showcase/assets/pencil-CtdXjogr.js +0 -1
- package/dist/showcase/assets/phone-CAFMH1vV.js +0 -1
- package/dist/showcase/assets/placeholder-pattern-DHKm-uYV.js +0 -1
- package/dist/showcase/assets/plus-CN2dzUxL.js +0 -1
- package/dist/showcase/assets/popover-DILNXLWy.js +0 -1
- package/dist/showcase/assets/popover-menu-Bp08xxOf.js +0 -1
- package/dist/showcase/assets/popover-o1EO2yVS.js +0 -1
- package/dist/showcase/assets/products-CCLAbHBN.js +0 -423
- package/dist/showcase/assets/progress-BGna-ZmU.js +0 -18
- package/dist/showcase/assets/progress-BSYlNLIJ.js +0 -1
- package/dist/showcase/assets/progress-CZVy3LGB.js +0 -1
- package/dist/showcase/assets/props-table-X9St7Q4m.js +0 -1
- package/dist/showcase/assets/props.generated-f_jHBhPb.json +0 -41753
- package/dist/showcase/assets/qr-code-CEmKf9xU.js +0 -1
- package/dist/showcase/assets/quote-IH6r-rlY.js +0 -1
- package/dist/showcase/assets/receipt-m9rOe5lY.js +0 -1
- package/dist/showcase/assets/receipt-text-C0TobatH.js +0 -1
- package/dist/showcase/assets/refinement-guide-t9T7iAS2.js +0 -189
- package/dist/showcase/assets/refresh-cw-Dy_Nc4jA.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-DR7LgQP5.js +0 -1
- package/dist/showcase/assets/resource-BcJ8O6uj.js +0 -1
- package/dist/showcase/assets/resource-_zDXez77.js +0 -139
- package/dist/showcase/assets/resource-selector-card-CCAEF-AT.js +0 -43
- package/dist/showcase/assets/rich-text-editor-BJG_ECJp.js +0 -143
- package/dist/showcase/assets/rich-text-editor-fbgVfyEH.js +0 -124
- package/dist/showcase/assets/rotate-ccw-CGuTkHQ3.js +0 -1
- package/dist/showcase/assets/route-C7EZ2Njy.js +0 -1
- package/dist/showcase/assets/save-fKrt-yFG.js +0 -1
- package/dist/showcase/assets/schema-form-k7TXeirD.js +0 -327
- package/dist/showcase/assets/scroll-area-CqNwdlI6.js +0 -32
- package/dist/showcase/assets/scroll-area-UVtlGOgx.js +0 -1
- package/dist/showcase/assets/section-DuBNJP4P.js +0 -1
- package/dist/showcase/assets/select-CINVEIWn.js +0 -1
- package/dist/showcase/assets/select-ZLaamXrm.js +0 -1
- package/dist/showcase/assets/send-DBvt_4jT.js +0 -1
- package/dist/showcase/assets/separator-BdBXRpc3.js +0 -28
- package/dist/showcase/assets/separator-CkJjJQWW.js +0 -1
- package/dist/showcase/assets/separator-CxOeStjL.js +0 -1
- package/dist/showcase/assets/separator-O-VQMSf_.js +0 -1
- package/dist/showcase/assets/settings-2-BWjMVlyS.js +0 -1
- package/dist/showcase/assets/settings-D9Z79UcG.js +0 -1
- package/dist/showcase/assets/sheet-CK9C6r7_.js +0 -1
- package/dist/showcase/assets/shield-BboB3Zlo.js +0 -1
- package/dist/showcase/assets/shield-alert-CAAobStl.js +0 -1
- package/dist/showcase/assets/shield-check-Rfyzz9bK.js +0 -1
- package/dist/showcase/assets/shopping-bag-5hLD82YW.js +0 -1
- package/dist/showcase/assets/showcase-DhOQXB5E.js +0 -132
- package/dist/showcase/assets/sidebar-ZTUACc0t.js +0 -1
- package/dist/showcase/assets/sidebar.context-BiNOpG5W.js +0 -1
- package/dist/showcase/assets/skeleton-BZUSoHbk.js +0 -1
- package/dist/showcase/assets/skeleton-BZkYzAdq.js +0 -1
- package/dist/showcase/assets/skeleton-CrOp8tx3.js +0 -29
- package/dist/showcase/assets/skeleton-P5GXAj4U.js +0 -1
- package/dist/showcase/assets/slider-zlE7nLrp.js +0 -1
- package/dist/showcase/assets/smart-card-OExZHSsj.js +0 -1
- package/dist/showcase/assets/sonner-eMphKM9E.js +0 -22
- package/dist/showcase/assets/sortable.esm-CM9VD5N4.js +0 -5
- package/dist/showcase/assets/sparkles-CIB5irID.js +0 -1
- package/dist/showcase/assets/spinner-11-kP-Ob.js +0 -1
- package/dist/showcase/assets/spinner-D4G5TFSm.js +0 -49
- package/dist/showcase/assets/spinner-DKGukuFV.js +0 -30
- package/dist/showcase/assets/square-pen-zflKy9oX.js +0 -1
- package/dist/showcase/assets/stacked-avatars-Cve1Y6GY.js +0 -1
- package/dist/showcase/assets/star-DleXDkCp.js +0 -1
- package/dist/showcase/assets/startOfDay-TDP2erzM.js +0 -1
- package/dist/showcase/assets/styles-BKlX_Ipc.js +0 -1
- package/dist/showcase/assets/suggestions-Dt2hm1NY.js +0 -126
- package/dist/showcase/assets/switch-DAPAgJbv.js +0 -1
- package/dist/showcase/assets/switch-fQpP2tJl.js +0 -1
- package/dist/showcase/assets/sync-BRcK160D.js +0 -124
- package/dist/showcase/assets/table-Dhmbe1yN.js +0 -686
- package/dist/showcase/assets/table-actions-GGrPOQcv.js +0 -1
- package/dist/showcase/assets/table-v0Eu5yZn.js +0 -1
- package/dist/showcase/assets/tabs-DmaXB1aF.js +0 -19
- package/dist/showcase/assets/tabs-vbNIJ-eo.js +0 -1
- package/dist/showcase/assets/tags-input-Bms_Q5CE.js +0 -1
- package/dist/showcase/assets/text-button-gvJCzaXS.js +0 -1
- package/dist/showcase/assets/text-link-DkByVX4d.js +0 -1
- package/dist/showcase/assets/textarea-B6Ho29y3.js +0 -1
- package/dist/showcase/assets/textarea-JCb0yhZ1.js +0 -1
- package/dist/showcase/assets/throttle-alert-CPU-u6Rs.js +0 -1
- package/dist/showcase/assets/timelines-Bw7mvAdx.js +0 -200
- package/dist/showcase/assets/toggle-group-jlIGX1zh.js +0 -1
- package/dist/showcase/assets/toggles-DV6V9vj-.js +0 -71
- package/dist/showcase/assets/toggles-group-C-Y3dG8q.js +0 -32
- package/dist/showcase/assets/tooltip-CDtPyNOv.js +0 -31
- package/dist/showcase/assets/trash-2-CXRm3lMl.js +0 -1
- package/dist/showcase/assets/trending-up-Bcyp9cw8.js +0 -1
- package/dist/showcase/assets/truck-DVgzuKLP.js +0 -1
- package/dist/showcase/assets/typography-BKPf4j85.js +0 -223
- package/dist/showcase/assets/ui-badge-D-Ud2MES.js +0 -28
- package/dist/showcase/assets/ui-card-gGqI2cfr.js +0 -30
- package/dist/showcase/assets/ui-table-Bqcab_kq.js +0 -42
- package/dist/showcase/assets/upload-tray-BFh6twLE.js +0 -138
- package/dist/showcase/assets/use-layout-link-e9jr981L.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-ByBTPUi3.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-Bx_-SRtw.js +0 -1
- package/dist/showcase/assets/useCompositeItem-Dmih9c3W.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-C0QJgAKb.js +0 -1
- package/dist/showcase/assets/useLabelableId-COfjI9qt.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-CRefmlni.js +0 -1
- package/dist/showcase/assets/useRender-Bgu76j1u.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-B2fPZeWf.js +0 -1
- package/dist/showcase/assets/useValueChanged-CNjJ-spo.js +0 -1
- package/dist/showcase/assets/user-CmkLnMh9.js +0 -1
- package/dist/showcase/assets/user-plus-3CGFNUf0.js +0 -1
- package/dist/showcase/assets/users-CuO8W7wn.js +0 -1
- package/dist/showcase/assets/vendor-profile-HLMsE22G.js +0 -37
- package/dist/showcase/assets/video-CoHnn0fp.js +0 -1
- package/dist/showcase/assets/visually-hidden-D5bPAL7Q.js +0 -1
- package/dist/showcase/assets/wrench-C93IxaGt.js +0 -1
- package/dist/showcase/assets/x-BJDvVLAz.js +0 -1
- package/dist/showcase/assets/zap-DYD_Ljkv.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/composed/commerce/upcoming-booking/upcoming-booking.tsx","../../../../src/components/composed/commerce/loyalty-points/types.ts","../../../../src/components/composed/commerce/loyalty-points/loyalty-points.tsx","../../../../src/components/composed/commerce/discount-stack/types.ts","../../../../src/components/composed/commerce/discount-stack/discount-stack.tsx","../../../../src/components/composed/commerce/shipment-tracking/shipment-tracking.tsx","../../../../src/components/composed/commerce/tax-breakdown/types.ts","../../../../src/components/composed/commerce/tax-breakdown/tax-breakdown.tsx","../../../../src/components/composed/commerce/subscription-summary/types.ts","../../../../src/components/composed/commerce/subscription-summary/subscription-summary.tsx","../../../../src/components/composed/commerce/refund-status/types.ts","../../../../src/components/composed/commerce/refund-status/refund-status.tsx","../../../../src/components/composed/commerce/address-card/types.ts","../../../../src/components/composed/commerce/address-card/address-card.tsx","../../../../src/components/composed/commerce/voucher-entry/types.ts","../../../../src/components/composed/commerce/voucher-entry/voucher-entry.tsx","../../../../src/components/composed/commerce/cart-summary/types.ts","../../../../src/components/composed/commerce/cart-summary/cart-summary.tsx","../../../../src/components/composed/commerce/coupon-input/types.ts","../../../../src/components/composed/commerce/coupon-input/coupon-input.tsx","../../../../src/components/composed/commerce/order-status/types.ts","../../../../src/components/composed/commerce/order-status/order-status.tsx","../../../../src/components/composed/commerce/payment-method/types.ts","../../../../src/components/composed/commerce/payment-method/payment-method.tsx"],"sourcesContent":["/**\n * UpcomingBookingRow — compact booking list. Each row shows a `DateBlock`\n * (weekday / day / month / time) on the left, service + customer in the\n * middle, and trailing amount. Locale and date-tone are configurable.\n *\n * Time is placed BELOW the date block by default (matches the date block\n * vertical rhythm); pass `timePlacement=\"inline-trailing\"` to use a\n * separate trailing time column.\n */\nimport { Text } from '@/components/typography/text';\nimport { DateBlock } from '@/components/base/display/date-block';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\n\nimport type { BookingEntry, UpcomingBookingRowProps } from './types';\n\nimport { cn } from '@/lib/utils';\nfunction resolveDate(entry: BookingEntry): Date | string | number | null {\n\tif (entry.date != null) return entry.date;\n\tif (entry.day && entry.month) {\n\t\tconst year = new Date().getFullYear();\n\t\tconst synth = new Date(`${entry.month} ${entry.day}, ${year}`);\n\t\tif (!Number.isNaN(synth.getTime())) return synth;\n\t}\n\treturn null;\n}\n\nexport function UpcomingBookingRow({\n\tbookings,\n\tclassName,\n\tlocale,\n\tdateTone = 'inverse',\n\ttimePlacement = 'below',\n}: UpcomingBookingRowProps) {\n\treturn (\n\t\t<ItemGroup className={cn('upcoming-booking--component w-full gap-2', className)}>\n\t\t\t{bookings.map((b, idx) => {\n\t\t\t\tconst dateInput = resolveDate(b);\n\t\t\t\treturn (\n\t\t\t\t\t<Item key={b.id ?? `${b.service}-${b.time}-${idx}`} className=\"items-center\">\n\t\t\t\t\t\t{!!dateInput && (\n\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t<DateBlock\n\t\t\t\t\t\t\t\t\tdate={dateInput}\n\t\t\t\t\t\t\t\t\ttime={timePlacement === 'below' ? b.time : undefined}\n\t\t\t\t\t\t\t\t\ttone={dateTone}\n\t\t\t\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\t\t\t\ttimePlacement=\"below\"\n\t\t\t\t\t\t\t\t\tlayout=\"stacked\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t\t\t\t<ItemTitle>{b.service}</ItemTitle>\n\t\t\t\t\t\t\t<ItemDescription clamp={1}>{b.customer}</ItemDescription>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end\">\n\t\t\t\t\t\t\t{timePlacement === 'inline-trailing' && (\n\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t\t{b.time}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t{b.amount}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ItemGroup>\n\t);\n}\n\nUpcomingBookingRow.displayName = 'UpcomingBookingRow';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface LoyaltyHistoryEntry {\n label: string;\n points: string;\n date: string;\n positive: boolean;\n}\n\nexport interface LoyaltyPointsStrings {\n balanceLabel: string;\n pointsAvailable: string;\n redeem: string;\n}\n\nexport const defaultLoyaltyPointsStrings: LoyaltyPointsStrings = {\n balanceLabel: 'Loyalty Balance',\n pointsAvailable: 'points available',\n redeem: 'Redeem Points',\n};\n\nexport interface LoyaltyPointsCardProps {\n balance: number | string;\n tier?: string;\n tierVariant?: string;\n history?: LoyaltyHistoryEntry[];\n /** @deprecated Use `strings.redeem`. */\n redeemLabel?: string;\n onRedeem?: () => void;\n className?: string;\n strings?: StringsProp<LoyaltyPointsStrings>;\n}\n","/**\n * LoyaltyPointsCard — current balance, tier badge, recent history rows\n * (label / date / signed-points), and a redemption CTA. Strings overridable\n * for i18n.\n */\nimport { Badge } from '@/components/base/badge/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography/text';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemTitle,\n} from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport { Gift, Trophy } from 'lucide-react';\n\nimport { defaultLoyaltyPointsStrings, type LoyaltyPointsCardProps } from './types';\n\nexport function LoyaltyPointsCard({\n\tbalance,\n\ttier = 'Gold Tier',\n\ttierVariant: _tierVariant,\n\thistory = [],\n\tredeemLabel,\n\tonRedeem,\n\tclassName,\n\tstrings: stringsProp,\n}: LoyaltyPointsCardProps) {\n\tconst compatibilityStrings = useStrings(\n\t\tdefaultLoyaltyPointsStrings,\n\t\tredeemLabel !== undefined ? { redeem: redeemLabel } : undefined,\n\t);\n\tconst strings = useStrings(compatibilityStrings, stringsProp);\n\treturn (\n\t\t<SmartCard className={cn('loyalty-points--component w-full', className)}>\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.balanceLabel}\n\t\t\t\tvalue={\n\t\t\t\t\t<Badge variant=\"warning\">\n\t\t\t\t\t\t<Trophy className=\"mr-1 inline size-3\" />\n\t\t\t\t\t\t{tier}\n\t\t\t\t\t</Badge>\n\t\t\t\t}\n\t\t\t\tlabelClassName=\"text-xs font-medium uppercase tracking-wider text-muted-foreground\"\n\t\t\t/>\n\n\t\t\t<Heading tag=\"h3\" className=\"text-lg tabular-nums tracking-tight\">\n\t\t\t\t{typeof balance === 'number' ? balance.toLocaleString() : balance}\n\t\t\t</Heading>\n\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t{strings.pointsAvailable}\n\t\t\t</Text>\n\n\t\t\t<Separator className=\"my-4\" />\n\n\t\t\t<ItemGroup>\n\t\t\t\t{history.map((entry) => (\n\t\t\t\t\t<Item key={entry.date + entry.label} size=\"small\">\n\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t<ItemTitle bold={false}>{entry.label}</ItemTitle>\n\t\t\t\t\t\t\t<ItemDescription clamp={1}>{entry.date}</ItemDescription>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'tabular-nums',\n\t\t\t\t\t\t\t\t\tentry.positive ? 'text-success' : 'text-destructive',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{entry.points}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ItemGroup>\n\n\t\t\t<Button\n\t\t\t\tvariant=\"dark\"\n\t\t\t\tclassName=\"mt-5 w-full rounded-full\"\n\t\t\t\tonClick={onRedeem}\n\t\t\t>\n\t\t\t\t<Gift className=\"mr-1.5 size-3.5\" />\n\t\t\t\t{strings.redeem}\n\t\t\t</Button>\n\t\t</SmartCard>\n\t);\n}\n\nLoyaltyPointsCard.displayName = 'LoyaltyPointsCard';\n","import type { ComposedBadgeVariant as BadgeVariant } from '@/components/base/badge/badge';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface Discount {\n type: string;\n label: string;\n amount: string;\n badge: BadgeVariant;\n}\n\nexport interface DiscountStackStrings {\n title: string;\n totalSavings: string;\n}\n\nexport const defaultDiscountStackStrings: DiscountStackStrings = {\n title: 'Applied Discounts',\n totalSavings: 'Total Savings',\n};\n\nexport interface DiscountStackPreviewProps {\n discounts: Discount[];\n totalSavings: string;\n className?: string;\n strings?: StringsProp<DiscountStackStrings>;\n}\n","/**\n * DiscountStackPreview — list of applied discounts (type chip + label +\n * amount) with a total-savings summary line. Strings overridable for i18n.\n */\nimport { Badge } from '@/components/base/badge/badge';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography/text';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultDiscountStackStrings, type DiscountStackPreviewProps } from './types';\n\nimport { cn } from '@/lib/utils';\nexport function DiscountStackPreview({\n\tdiscounts,\n\ttotalSavings,\n\tclassName,\n\tstrings: stringsProp,\n}: DiscountStackPreviewProps) {\n\tconst strings = useStrings(defaultDiscountStackStrings, stringsProp);\n\treturn (\n\t\t<SmartCard title={strings.title} className={cn('discount-stack--component w-full', className)}>\n\t\t\t<ItemGroup className=\"mt-4\">\n\t\t\t\t{discounts.map((d) => (\n\t\t\t\t\t<Item key={d.type} size=\"small\">\n\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t<Badge variant={d.badge} className=\"w-16 justify-center\">\n\t\t\t\t\t\t\t\t{d.type}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t<ItemTitle bold={false}>{d.label}</ItemTitle>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums text-success\">\n\t\t\t\t\t\t\t\t{d.amount}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ItemGroup>\n\n\t\t\t<Separator className=\"my-4\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.totalSavings}\n\t\t\t\tvalue={\n\t\t\t\t\t<Heading tag=\"h4\" className=\"text-base tabular-nums tracking-tight text-success border-none pb-0\">\n\t\t\t\t\t\t{totalSavings}\n\t\t\t\t\t</Heading>\n\t\t\t\t}\n\t\t\t\tlabelClassName=\"text-sm font-semibold\"\n\t\t\t/>\n\t\t</SmartCard>\n\t);\n}\n\nDiscountStackPreview.displayName = 'DiscountStackPreview';\n","/**\n * ShipmentTrackingCard — tracking number + carrier header, current status\n * with pulse dot, horizontal step progress bar, and an optional details row\n * grid (e.g. weight, ETA, recipient). All copy is consumer-supplied via\n * `steps[].label` / `details[].label`.\n */\nimport { Badge } from '@/components/base/badge/badge';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { Text } from '@/components/typography/text';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { cn } from '@/lib/utils';\n\nimport type { ShipmentTrackingCardProps } from './types';\n\nexport function ShipmentTrackingCard({\n trackingNumber,\n carrier,\n status,\n steps,\n details = [],\n className,\n}: ShipmentTrackingCardProps) {\n return (\n <SmartCard className={cn('shipment-tracking--component w-full', className)}>\n <div className=\"flex items-center justify-between\">\n <Text size=\"xs\" weight=\"medium\" className=\"font-mono text-muted-foreground tracking-wide\">\n {trackingNumber}\n </Text>\n {!!carrier && <Badge variant=\"info\">{carrier}</Badge>}\n </div>\n\n <div className=\"mt-4 flex items-center gap-1.5\">\n <span className=\"h-2 w-2 rounded-full bg-success\" />\n <Text weight=\"semibold\">\n {status}\n </Text>\n </div>\n\n <div className=\"mt-5 flex items-center justify-between\">\n {steps.map((step, i) => (\n <div key={step.label} className=\"flex flex-1 flex-col items-center gap-2\">\n <div className=\"flex w-full items-center\">\n <div className={cn('size-3 shrink-0 rounded-full', step.done ? 'bg-success' : 'bg-muted')} />\n {i < steps.length - 1 && (\n <div className={cn('h-0.5 flex-1', step.done ? 'bg-success' : 'bg-muted')} />\n )}\n </div>\n <Text size=\"xs\" type=\"secondary\" className=\"text-center leading-tight\">\n {step.label}\n </Text>\n </div>\n ))}\n </div>\n\n {details.length > 0 && (\n <>\n <Separator className=\"my-4\" />\n <div className=\"space-y-2\">\n {details.map((detail) => (\n <InlineStat\n key={detail.label}\n label={detail.label}\n value={detail.value}\n labelClassName=\"text-xs\"\n valueClassName=\"text-sm font-medium truncate max-w-[180px]\"\n />\n ))}\n </div>\n </>\n )}\n </SmartCard>\n );\n}\n\nShipmentTrackingCard.displayName = 'ShipmentTrackingCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface TaxLineItem {\n\tid?: string;\n\tlabel: string;\n\trate?: string;\n\tamount: string;\n}\n\nexport interface TaxBreakdownStrings {\n\ttitle: string;\n\tsubtotal: string;\n\ttotalTax: string;\n\ttotal: string;\n}\n\nexport const defaultTaxBreakdownStrings: TaxBreakdownStrings = {\n\ttitle: 'Tax Breakdown',\n\tsubtotal: 'Subtotal',\n\ttotalTax: 'Total Tax',\n\ttotal: 'Total',\n};\n\nexport interface TaxBreakdownCardProps {\n\tsubtotal: string;\n\ttaxes: TaxLineItem[];\n\ttotalTax?: string;\n\ttotal: string;\n\tclassName?: string;\n\tstrings?: StringsProp<TaxBreakdownStrings>;\n}\n","/**\n * TaxBreakdownCard — itemised tax breakdown for an order or invoice. Shows a\n * subtotal, one row per tax line (with optional rate suffix), an optional\n * \"Total tax\" rollup, and a final total. Pairs with `CartSummaryCard` when\n * consumers need to expose VAT / regional tax detail. Strings overridable\n * for i18n.\n */\nimport { Receipt } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultTaxBreakdownStrings, type TaxBreakdownCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nexport function TaxBreakdownCard({\n\tsubtotal,\n\ttaxes,\n\ttotalTax,\n\ttotal,\n\tclassName,\n\tstrings: stringsProp,\n}: TaxBreakdownCardProps) {\n\tconst strings = useStrings(defaultTaxBreakdownStrings, stringsProp);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Receipt className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('tax-breakdown--component w-full', className)}\n\t\t>\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.subtotal}\n\t\t\t\tvalue={subtotal}\n\t\t\t\tmono\n\t\t\t\tlabelClassName=\"text-sm\"\n\t\t\t\tvalueClassName=\"text-sm font-medium\"\n\t\t\t/>\n\n\t\t\t<div className=\"mt-3 space-y-1.5 rounded-lg border border-border/50 bg-muted/30 px-3 py-2.5\">\n\t\t\t\t{taxes.map((tax, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={tax.id ?? `${tax.label}-${i}`}\n\t\t\t\t\t\tclassName=\"flex items-baseline justify-between gap-3\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex items-baseline gap-1.5 min-w-0\">\n\t\t\t\t\t\t\t<Text size=\"xs\" className=\"truncate\">{tax.label}</Text>\n\t\t\t\t\t\t\t{!!tax.rate && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"discrete\" className=\"shrink-0\">\n\t\t\t\t\t\t\t\t\t{tax.rate}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"tabular-nums shrink-0\">\n\t\t\t\t\t\t\t{tax.amount}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t\t{!!totalTax && taxes.length > 1 && (\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={strings.totalTax}\n\t\t\t\t\t\tvalue={totalTax}\n\t\t\t\t\t\tmono\n\t\t\t\t\t\tclassName=\"border-t border-border/50 pt-1.5 mt-0.5\"\n\t\t\t\t\t\tlabelClassName=\"text-xs font-medium\"\n\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<Separator className=\"my-3\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.total}\n\t\t\t\tvalue={total}\n\t\t\t\tmono\n\t\t\t\tlabelClassName=\"text-sm font-semibold\"\n\t\t\t\tvalueClassName=\"text-base font-bold\"\n\t\t\t/>\n\t\t</SmartCard>\n\t);\n}\n\nTaxBreakdownCard.displayName = 'TaxBreakdownCard';\n","import type { LucideIcon } from 'lucide-react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface SubscriptionPerk {\n\ticon?: LucideIcon;\n\tlabel: string;\n}\n\nexport interface SubscriptionSummaryStrings {\n\ttitle: string;\n\tplan: string;\n\tnextBilling: string;\n\tperks: string;\n\tmanage: string;\n\tupgrade: string;\n}\n\nexport const defaultSubscriptionSummaryStrings: SubscriptionSummaryStrings = {\n\ttitle: 'Subscription',\n\tplan: 'Plan',\n\tnextBilling: 'Next billing',\n\tperks: 'Included',\n\tmanage: 'Manage',\n\tupgrade: 'Upgrade',\n};\n\nexport interface SubscriptionSummaryCardProps {\n\tplanName: string;\n\tpriceLabel: string;\n\tcycleLabel: string;\n\tnextBillingDate: string;\n\tstatusLabel?: string;\n\tperks?: SubscriptionPerk[];\n\tonManage?: () => void;\n\tonUpgrade?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<SubscriptionSummaryStrings>;\n}\n","/**\n * SubscriptionSummaryCard — at-a-glance subscription card with the active\n * plan name as the hero heading, an inline price + cycle, the next billing\n * date in a meta row, an optional perks list, and trailing\n * Manage / Upgrade actions. Strings overridable for i18n.\n */\nimport {\n\tCalendar,\n\tCheck,\n\tChevronRight,\n\tRepeat } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { IconBadge,\n} from '@/components/base/display';\nimport {\n\tItem,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\n\nimport {\n\tdefaultSubscriptionSummaryStrings,\n\ttype SubscriptionSummaryCardProps,\n} from './types';\n\nimport { cn } from '@/lib/utils';\nexport function SubscriptionSummaryCard({\n\tplanName,\n\tpriceLabel,\n\tcycleLabel,\n\tnextBillingDate,\n\tstatusLabel,\n\tperks = [],\n\tonManage,\n\tonUpgrade,\n\tclassName,\n\tstrings: stringsProp,\n}: SubscriptionSummaryCardProps) {\n\tconst strings = useStrings(defaultSubscriptionSummaryStrings, stringsProp);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Repeat className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\theaderEnd={statusLabel ? <Badge variant=\"success\">{statusLabel}</Badge> : null}\n\t\t\tclassName={cn('subscription-summary--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-lg border border-border/60 bg-muted/30 p-4\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t{strings.plan}\n\t\t\t\t</Text>\n\t\t\t\t<Heading tag=\"h3\" className=\"mt-1 text-base font-semibold tracking-tight border-none pb-0\">\n\t\t\t\t\t{planName}\n\t\t\t\t</Heading>\n\t\t\t\t<div className=\"mt-1 flex items-baseline gap-1\">\n\t\t\t\t\t<Text tag=\"span\" size=\"base\" weight=\"bold\" className=\"tabular-nums\">\n\t\t\t\t\t\t{priceLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t{cycleLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className=\"mt-3 flex items-center justify-between rounded-md bg-card px-1\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Calendar className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.nextBilling}</Text>\n\t\t\t\t</div>\n\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">{nextBillingDate}</Text>\n\t\t\t</div>\n\n\t\t\t{perks.length > 0 && (\n\t\t\t\t<div className=\"mt-4 space-y-2\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t\t{strings.perks}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t{perks.map((perk, i) => {\n\t\t\t\t\t\t\tconst Icon = perk.icon ?? Check;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Item key={`${perk.label}-${i}`} size=\"small\">\n\t\t\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t\t\t<IconBadge icon={Icon} tone=\"success\" size=\"small\" />\n\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t\t\t<ItemTitle bold={false}>{perk.label}</ItemTitle>\n\t\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{(onManage || onUpgrade) && (\n\t\t\t\t<div className=\"mt-4 flex items-center gap-2\">\n\t\t\t\t\t{!!onManage && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\tonClick={onManage}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.manage}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!onUpgrade && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tonClick={onUpgrade}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.upgrade}\n\t\t\t\t\t\t\t<ChevronRight className=\"ml-1 size-3.5\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nSubscriptionSummaryCard.displayName = 'SubscriptionSummaryCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type RefundStage = 'requested' | 'approved' | 'processing' | 'completed';\n\nexport interface RefundStatusStrings {\n\ttitle: string;\n\trequested: string;\n\tapproved: string;\n\tprocessing: string;\n\tcompleted: string;\n\tamount: string;\n\treason: string;\n\teta: string;\n\tmethod: string;\n}\n\nexport const defaultRefundStatusStrings: RefundStatusStrings = {\n\ttitle: 'Refund Status',\n\trequested: 'Requested',\n\tapproved: 'Approved',\n\tprocessing: 'Processing',\n\tcompleted: 'Completed',\n\tamount: 'Refund amount',\n\treason: 'Reason',\n\teta: 'Expected by',\n\tmethod: 'Refund to',\n};\n\nexport interface RefundStatusCardProps {\n\tstage: RefundStage;\n\tamount: string;\n\treason?: string;\n\tmethod?: string;\n\teta?: string;\n\trequestedAt?: string;\n\tclassName?: string;\n\tstrings?: StringsProp<RefundStatusStrings>;\n}\n","/**\n * RefundStatusCard — refund-flow tracker. Shows the four canonical refund\n * stages (Requested → Approved → Processing → Completed) as a horizontal\n * progress bar, with refund amount as the lead figure and an optional reason\n * / method / ETA detail block. Strings overridable for i18n.\n */\nimport {\n\tCheck,\n\tRotateCcw } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport Heading from '@/components/typography/heading';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultRefundStatusStrings,\n\ttype RefundStage,\n\ttype RefundStatusCardProps,\n} from './types';\n\nconst STAGE_ORDER: RefundStage[] = ['requested', 'approved', 'processing', 'completed'];\n\nexport function RefundStatusCard({\n\tstage,\n\tamount,\n\treason,\n\tmethod,\n\teta,\n\trequestedAt,\n\tclassName,\n\tstrings: stringsProp,\n}: RefundStatusCardProps) {\n\tconst strings = useStrings(defaultRefundStatusStrings, stringsProp);\n\tconst currentIdx = STAGE_ORDER.indexOf(stage);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<RotateCcw className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('refund-status--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-lg bg-muted/40 px-4 py-3\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t{strings.amount}\n\t\t\t\t</Text>\n\t\t\t\t<Heading tag=\"h3\" className=\"text-lg tabular-nums tracking-tight\">\n\t\t\t\t\t{amount}\n\t\t\t\t</Heading>\n\t\t\t\t{!!requestedAt && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">\n\t\t\t\t\t\t{strings.requested}: {requestedAt}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Stages */}\n\t\t\t<div className=\"mt-4 flex items-center justify-between\">\n\t\t\t\t{STAGE_ORDER.map((s, i) => {\n\t\t\t\t\tconst done = i <= currentIdx;\n\t\t\t\t\tconst current = i === currentIdx;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={s} className=\"flex flex-1 flex-col items-center gap-1.5\">\n\t\t\t\t\t\t\t<div className=\"flex w-full items-center\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'relative flex size-5 shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\t\t\t\t\t\tdone\n\t\t\t\t\t\t\t\t\t\t\t? 'bg-success text-success-foreground'\n\t\t\t\t\t\t\t\t\t\t\t: 'border border-border bg-card text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\tcurrent && 'ring-2 ring-success/30 ring-offset-2 ring-offset-background',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{done ? (\n\t\t\t\t\t\t\t\t\t\t<Check className=\"size-3\" />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"tabular-nums\">{i + 1}</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{i < STAGE_ORDER.length - 1 && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-0.5 flex-1',\n\t\t\t\t\t\t\t\t\t\t\ti < currentIdx ? 'bg-success' : 'bg-border',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\tweight={current ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\t\ttype={done ? 'main' : 'secondary'}\n\t\t\t\t\t\t\t\tclassName=\"text-center leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings[s]}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{(reason || method || eta) && (\n\t\t\t\t<>\n\t\t\t\t\t<Separator className=\"my-4\" />\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t{!!reason && (\n\t\t\t\t\t\t\t<InlineStat label={strings.reason} value={reason} className=\"items-start\" valueClassName=\"text-sm font-medium text-right\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!method && (\n\t\t\t\t\t\t\t<InlineStat label={strings.method} value={method} valueClassName=\"text-sm font-medium\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!eta && (\n\t\t\t\t\t\t\t<InlineStat label={strings.eta} value={eta} mono valueClassName=\"text-sm font-medium\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nRefundStatusCard.displayName = 'RefundStatusCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type AddressKind = 'shipping' | 'billing' | 'pickup';\n\nexport interface AddressCardStrings {\n\tdefaultBadge: string;\n\tedit: string;\n\tremove: string;\n\tmakeDefault: string;\n\tshipping: string;\n\tbilling: string;\n\tpickup: string;\n}\n\nexport const defaultAddressCardStrings: AddressCardStrings = {\n\tdefaultBadge: 'Default',\n\tedit: 'Edit',\n\tremove: 'Remove',\n\tmakeDefault: 'Make default',\n\tshipping: 'Shipping address',\n\tbilling: 'Billing address',\n\tpickup: 'Pickup address',\n};\n\nexport interface AddressCardProps {\n\tkind?: AddressKind;\n\tname: string;\n\tline1: string;\n\tline2?: string;\n\tcity: string;\n\tregion?: string;\n\tpostalCode?: string;\n\tcountry: string;\n\tphone?: string;\n\tisDefault?: boolean;\n\tonEdit?: () => void;\n\tonRemove?: () => void;\n\tonMakeDefault?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AddressCardStrings>;\n}\n","/**\n * AddressCard — saved postal address surface. Title varies by `kind`\n * (shipping / billing / pickup); shows recipient name, address lines, phone,\n * and a \"Default\" badge when applicable.\n *\n * Edit / remove / make-default actions ride through SmartCard's actions menu\n * (the canonical card-actions affordance) instead of inline footer buttons —\n * keeps the surface consistent with every other card in the library.\n */\nimport { Edit2, MapPin, Star, Trash2 } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { SmartCard, type SmartCardAction } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\n\nimport {\n\tdefaultAddressCardStrings,\n\ttype AddressCardProps,\n\ttype AddressKind,\n} from './types';\n\nimport { cn } from '@/lib/utils';\nexport function AddressCard({\n\tkind = 'shipping',\n\tname,\n\tline1,\n\tline2,\n\tcity,\n\tregion,\n\tpostalCode,\n\tcountry,\n\tphone,\n\tisDefault = false,\n\tonEdit,\n\tonRemove,\n\tonMakeDefault,\n\tclassName,\n\tstrings: stringsProp,\n}: AddressCardProps) {\n\tconst strings = useStrings(defaultAddressCardStrings, stringsProp);\n\tconst titleByKind: Record<AddressKind, string> = {\n\t\tshipping: strings.shipping,\n\t\tbilling: strings.billing,\n\t\tpickup: strings.pickup,\n\t};\n\n\tconst cityLine = [city, region, postalCode].filter(Boolean).join(', ');\n\n\tconst actions: SmartCardAction[] = [];\n\tif (onEdit) {\n\t\tactions.push({\n\t\t\tid: 'edit',\n\t\t\tlabel: strings.edit,\n\t\t\ticon: <Edit2 className=\"size-3.5\" />,\n\t\t\tonClick: onEdit,\n\t\t});\n\t}\n\tif (onMakeDefault && !isDefault) {\n\t\tactions.push({\n\t\t\tid: 'make-default',\n\t\t\tlabel: strings.makeDefault,\n\t\t\ticon: <Star className=\"size-3.5\" />,\n\t\t\tonClick: onMakeDefault,\n\t\t});\n\t}\n\tif (onRemove) {\n\t\tactions.push({\n\t\t\tid: 'remove',\n\t\t\tlabel: strings.remove,\n\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\tonClick: onRemove,\n\t\t});\n\t}\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<MapPin className=\"size-4\" />}\n\t\t\ttitle={titleByKind[kind]}\n\t\t\ttitleSuffix={\n\t\t\t\tisDefault ? <Badge variant=\"primary\">{strings.defaultBadge}</Badge> : null\n\t\t\t}\n\t\t\tactions={actions.length > 0 ? actions : undefined}\n\t\t\tclassName={cn('address-card--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"space-y-0.5\">\n\t\t\t\t<Text weight=\"semibold\">{name}</Text>\n\t\t\t\t<Text>{line1}</Text>\n\t\t\t\t{!!line2 && <Text>{line2}</Text>}\n\t\t\t\t{!!cityLine && <Text>{cityLine}</Text>}\n\t\t\t\t<Text type=\"secondary\">{country}</Text>\n\t\t\t\t{!!phone && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1.5 tabular-nums\">\n\t\t\t\t\t\t{phone}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nAddressCard.displayName = 'AddressCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface VoucherEntryStrings {\n\ttitle: string;\n\tinputLabel: string;\n\tplaceholder: string;\n\thelperText: string;\n\tcheck: string;\n\tremove: string;\n\tbalance: string;\n\tapplied: string;\n\tnotFound: string;\n}\n\nexport const defaultVoucherEntryStrings: VoucherEntryStrings = {\n\ttitle: 'Redeem a gift card',\n\tinputLabel: 'Gift card code',\n\tplaceholder: 'Enter gift card code',\n\thelperText: 'Apply one gift card or voucher to this order.',\n\tcheck: 'Check balance',\n\tremove: 'Remove',\n\tbalance: 'Available balance',\n\tapplied: 'Applied',\n\tnotFound: 'That gift card code is not valid.',\n};\n\nexport interface VoucherEntryCardProps {\n\tappliedCode?: string;\n\tbalance?: string;\n\terror?: string;\n\tloading?: boolean;\n\tonCheck?: (code: string) => void;\n\tonRemove?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<VoucherEntryStrings>;\n}\n","/**\n * VoucherEntryCard — gift-card / voucher redemption entry.\n *\n * Empty state — leading gift icon input + check button, helper line surfacing\n * errors. Applied state — success-tinted row with check medallion, code,\n * balance amount, and a destructive remove icon.\n */\nimport {\n\ttype FormEvent,\n\tuseId,\n\tuseState } from 'react';\nimport { Check,\n\tGift,\n\tX } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { IconBadge,\n} from '@/components/base/display';\nimport { FormField } from '@/components/base/forms';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Input } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultVoucherEntryStrings, type VoucherEntryCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nconst normalizeCode = (value: string): string => value.toUpperCase();\n\nexport function VoucherEntryCard({\n\tappliedCode,\n\tbalance,\n\terror,\n\tloading,\n\tonCheck,\n\tonRemove,\n\tclassName,\n\tstrings: stringsProp,\n}: VoucherEntryCardProps) {\n\tconst strings = useStrings(defaultVoucherEntryStrings, stringsProp);\n\tconst inputId = useId();\n\tconst [code, setCode] = useState('');\n\tconst trimmedCode = code.trim();\n\tconst handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n\t\tevent.preventDefault();\n\t\tif (!trimmedCode) return;\n\t\tonCheck?.(trimmedCode);\n\t};\n\n\tif (appliedCode) {\n\t\treturn (\n\t\t\t<SmartCard\n\t\t\t\ticon={<Gift className=\"size-4\" />}\n\t\t\t\ttitle={strings.title}\n\t\t\t\tclassName={cn('voucher-entry--component w-full', className)}\n\t\t\t>\n\t\t\t\t<Item size=\"small\" variant=\"outline\" className=\"items-center gap-x-2.5 gap-y-1.5 border-success/30 bg-success/5\">\n\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t<IconBadge icon={Check} tone=\"success\" size=\"default\" className=\"ring-1 ring-success/20\" />\n\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t\t\t<div className=\"flex flex-wrap items-center gap-1.5\">\n\t\t\t\t\t\t\t<ItemTitle className=\"max-w-full font-mono tracking-wider\">{appliedCode}</ItemTitle>\n\t\t\t\t\t\t\t<Badge variant=\"success\" size=\"small\">{strings.applied}</Badge>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ItemDescription clamp={1}>{strings.balance}</ItemDescription>\n\t\t\t\t\t</ItemContent>\n\t\t\t\t\t<ItemFooter className=\"border-t border-success/15 pt-1\">\n\t\t\t\t\t\t<span />\n\t\t\t\t\t\t<ItemActions className=\"shrink-0 gap-1.5\">\n\t\t\t\t\t\t\t{!!balance && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"success\" className=\"tabular-nums shrink-0\">\n\t\t\t\t\t\t\t\t\t{balance}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!onRemove && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\t\t\t\taria-label={strings.remove}\n\t\t\t\t\t\t\t\t\tclassName=\"size-7 shrink-0 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<X className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t</Item>\n\t\t\t</SmartCard>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Gift className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('voucher-entry--component w-full', className)}\n\t\t>\n\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t<FormField\n\t\t\t\t\tlabel={strings.inputLabel}\n\t\t\t\t\thtmlFor={inputId}\n\t\t\t\t\terror={error}\n\t\t\t\t\thint={error ? undefined : strings.helperText}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t<div className=\"min-w-48 flex-1\">\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\tvalue={code}\n\t\t\t\t\t\t\t\tonChange={(e) => setCode(normalizeCode((e.target as HTMLInputElement).value))}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholder}\n\t\t\t\t\t\t\t\tstartIcon={Gift}\n\t\t\t\t\t\t\t\tautoCapitalize=\"characters\"\n\t\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t\t\t\tinvalid={Boolean(error)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\tdisabled={!trimmedCode}\n\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.check}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</FormField>\n\t\t\t</form>\n\t\t</SmartCard>\n\t);\n}\n\nVoucherEntryCard.displayName = 'VoucherEntryCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface CartLineItem {\n\tid: string;\n\tname?: string;\n\tproductTitle?: string;\n\ttitle?: string;\n\tvariantTitle?: string;\n\tqty: number;\n\tprice: string;\n\timageUrl?: string;\n\timageSrc?: string;\n\tsrc?: string;\n\turl?: string;\n\timageAlt?: string;\n}\n\nexport interface CartSummaryStrings {\n\ttitle: string;\n\tsubtotal: string;\n\ttax: string;\n\tshipping: string;\n\tdiscount: string;\n\ttotal: string;\n\tcheckout: string;\n}\n\nexport const defaultCartSummaryStrings: CartSummaryStrings = {\n\ttitle: 'Cart',\n\tsubtotal: 'Subtotal',\n\ttax: 'Tax',\n\tshipping: 'Shipping',\n\tdiscount: 'Discount',\n\ttotal: 'Total',\n\tcheckout: 'Checkout',\n};\n\nexport interface CartSummaryCardProps {\n\titems: CartLineItem[];\n\tsubtotal?: string;\n\ttax?: string;\n\tshipping?: string;\n\tdiscount?: string;\n\ttotal: string;\n\tonCheckout?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<CartSummaryStrings>;\n}\n","/**\n * CartSummaryCard — line-item list with optional subtotal / tax / shipping /\n * discount breakdown and a primary \"Checkout\" action. Items render through\n * `<ItemGroup>` for density consistency; the breakdown rows sit in a tight\n * summary block above the total. The discount value is shown as a signed\n * delta in success colour.\n */\nimport { ShoppingBag } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultCartSummaryStrings, type CartLineItem, type CartSummaryCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nconst stripLeadingMinus = (value: string): string => value.replace(/^[\\s−-]+/, '');\n\nconst resolveCartLineTitle = (item: CartLineItem): string => {\n\treturn [item.productTitle, item.title, item.name].find((value) => !!value?.trim()) ?? item.id;\n};\n\nconst resolveCartLineImageSrc = (item: CartLineItem): string | undefined => {\n\treturn [item.imageUrl, item.imageSrc, item.src, item.url].find((value) => !!value?.trim());\n};\n\nconst getCartLinePlaceholderLabel = (title: string): string => {\n\tconst initials = title\n\t\t.trim()\n\t\t.split(/\\s+/)\n\t\t.map((part) => part[0])\n\t\t.join('')\n\t\t.slice(0, 2)\n\t\t.toUpperCase();\n\n\treturn initials || title.trim().slice(0, 2).toUpperCase();\n};\n\nfunction CartLineImagePlaceholder({ title }: { title: string }) {\n\treturn (\n\t\t<div\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"flex size-full items-center justify-center rounded-[inherit] bg-muted text-xs font-semibold text-muted-foreground ring-1 ring-border/60\"\n\t\t>\n\t\t\t{getCartLinePlaceholderLabel(title)}\n\t\t</div>\n\t);\n}\n\nexport function CartSummaryCard({\n\titems,\n\tsubtotal,\n\ttax,\n\tshipping,\n\tdiscount,\n\ttotal,\n\tonCheckout,\n\tclassName,\n\tstrings: stringsProp,\n}: CartSummaryCardProps) {\n\tconst strings = useStrings(defaultCartSummaryStrings, stringsProp);\n\tconst hasBreakdown = !!(subtotal || tax || shipping || discount);\n\n\treturn (\n\t\t<SmartCard icon={<ShoppingBag className=\"size-4\" />} title={strings.title} className={cn('cart-summary--component w-full', className)}>\n\t\t\t<ItemGroup>\n\t\t\t\t{items.map((it) => {\n\t\t\t\t\tconst title = resolveCartLineTitle(it);\n\t\t\t\t\tconst imageSrc = resolveCartLineImageSrc(it);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Item key={it.id} className=\"cart-summary--item\">\n\t\t\t\t\t\t\t<ItemMedia variant=\"image\" className=\"cart-summary--item-media\">\n\t\t\t\t\t\t\t\t{imageSrc ? (\n\t\t\t\t\t\t\t\t\t<img src={imageSrc} alt={it.imageAlt ?? title} />\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<CartLineImagePlaceholder title={title} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t<ItemContent className=\"cart-summary--item-content\">\n\t\t\t\t\t\t\t\t<ItemTitle>{title}</ItemTitle>\n\t\t\t\t\t\t\t\t{!!it.variantTitle && (\n\t\t\t\t\t\t\t\t\t<ItemDescription clamp={1}>{it.variantTitle}</ItemDescription>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t<ItemActions className=\"cart-summary--item-actions\">\n\t\t\t\t\t\t\t\t<div className=\"flex shrink-0 flex-col items-end gap-0.5\">\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"tabular-nums\">x{it.qty}</Text>\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className=\"tabular-nums\">{it.price}</Text>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t</Item>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ItemGroup>\n\n\t\t\t{!!hasBreakdown && (\n\t\t\t\t<div className=\"mt-3 space-y-1.5 rounded-lg bg-muted/30 px-3 py-2.5\">\n\t\t\t\t\t{!!subtotal && (\n\t\t\t\t\t\t<InlineStat label={strings.subtotal} value={subtotal} mono valueClassName=\"text-xs font-medium\" labelClassName=\"text-xs\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!tax && (\n\t\t\t\t\t\t<InlineStat label={strings.tax} value={tax} mono valueClassName=\"text-xs font-medium\" labelClassName=\"text-xs\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!shipping && (\n\t\t\t\t\t\t<InlineStat label={strings.shipping} value={shipping} mono valueClassName=\"text-xs font-medium\" labelClassName=\"text-xs\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!discount && (\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tlabel={strings.discount}\n\t\t\t\t\t\t\tvalue={`−${stripLeadingMinus(discount)}`}\n\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold text-success\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<Separator className=\"my-3\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.total}\n\t\t\t\tvalue={total}\n\t\t\t\tmono\n\t\t\t\tlabelClassName=\"text-sm font-semibold\"\n\t\t\t\tvalueClassName=\"text-base font-bold\"\n\t\t\t/>\n\n\t\t\t{!!onCheckout && (\n\t\t\t\t<Button onClick={onCheckout} fullWidth className=\"mt-4\">{strings.checkout}</Button>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nCartSummaryCard.displayName = 'CartSummaryCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface CouponInputStrings {\n\ttitle: string;\n\tplaceholder: string;\n\tapply: string;\n\tremove: string;\n\tapplied: string;\n\tinvalid: string;\n}\n\nexport const defaultCouponInputStrings: CouponInputStrings = {\n\ttitle: 'Have a code?',\n\tplaceholder: 'Enter coupon code',\n\tapply: 'Apply',\n\tremove: 'Remove',\n\tapplied: 'Applied',\n\tinvalid: 'That code is not valid',\n};\n\nexport interface CouponInputCardProps {\n\tappliedCode?: string;\n\tappliedDiscount?: string;\n\terror?: string;\n\tonApply?: (code: string) => void;\n\tonRemove?: () => void;\n\tloading?: boolean;\n\tclassName?: string;\n\tstrings?: StringsProp<CouponInputStrings>;\n}\n","/**\n * CouponInputCard — promo / coupon code entry with an applied state and\n * inline error messaging.\n *\n * Empty state — leading-icon input + apply button, helper line for\n * placeholders or errors. Applied state — success-tinted row with a check\n * medallion, monospaced code, discount delta, and a destructive remove icon.\n */\nimport {\n\tuseState } from 'react';\nimport { Check,\n\tSparkles,\n\tTicketPercent,\n\tX } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Button } from '@/components/base/buttons';\nimport { IconBadge,\n} from '@/components/base/display';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { Input } from '@/components/base/forms/fields';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultCouponInputStrings, type CouponInputCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nconst stripLeadingMinus = (value: string): string => value.replace(/^[\\s−-]+/, '');\nconst normalizeCode = (value: string): string => value.toUpperCase();\n\nexport function CouponInputCard({\n\tappliedCode,\n\tappliedDiscount,\n\terror,\n\tonApply,\n\tonRemove,\n\tloading,\n\tclassName,\n\tstrings: stringsProp,\n}: CouponInputCardProps) {\n\tconst strings = useStrings(defaultCouponInputStrings, stringsProp);\n\tconst [code, setCode] = useState('');\n\tconst trimmedCode = code.trim();\n\n\tif (appliedCode) {\n\t\treturn (\n\t\t\t<SmartCard icon={<TicketPercent className=\"size-4\" />} title={strings.title} className={cn('coupon-input--component w-full', className)}>\n\t\t\t\t<Item size=\"small\" variant=\"muted\" className=\"items-center gap-x-2.5 gap-y-1.5 border border-success/30 bg-success/8\">\n\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t<IconBadge icon={Check} tone=\"success\" size=\"default\" className=\"ring-1 ring-success/20\" />\n\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t\t\t<ItemTitle className=\"max-w-full font-mono tracking-wider\">{appliedCode}</ItemTitle>\n\t\t\t\t\t\t<ItemDescription className=\"uppercase tracking-wide\" clamp={1}>\n\t\t\t\t\t\t\t{strings.applied}\n\t\t\t\t\t\t</ItemDescription>\n\t\t\t\t\t</ItemContent>\n\t\t\t\t\t<ItemFooter className=\"border-t border-success/15 pt-1\">\n\t\t\t\t\t\t<span />\n\t\t\t\t\t\t<ItemActions className=\"shrink-0 gap-1.5\">\n\t\t\t\t\t\t\t{!!appliedDiscount && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\t\ttype=\"success\"\n\t\t\t\t\t\t\t\t\tclassName=\"tabular-nums shrink-0\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t−{stripLeadingMinus(appliedDiscount)}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!onRemove && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\t\t\t\taria-label={strings.remove}\n\t\t\t\t\t\t\t\t\tclassName=\"size-7 shrink-0 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<X className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t</Item>\n\t\t\t</SmartCard>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SmartCard icon={<TicketPercent className=\"size-4\" />} title={strings.title} className={cn('coupon-input--component w-full', className)}>\n\t\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t\t<div className=\"flex flex-wrap gap-2\">\n\t\t\t\t\t<div className=\"min-w-44 flex-1\">\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvalue={code}\n\t\t\t\t\t\t\tonChange={(e) => setCode(normalizeCode((e.target as HTMLInputElement).value))}\n\t\t\t\t\t\t\tplaceholder={strings.placeholder}\n\t\t\t\t\t\t\tstartIcon={Sparkles}\n\t\t\t\t\t\t\tautoCapitalize=\"characters\"\n\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t\t\tinvalid={Boolean(error)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"default\"\n\t\t\t\t\t\tonClick={() => onApply?.(trimmedCode)}\n\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\tdisabled={!trimmedCode}\n\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.apply}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t\t{!!error && (\n\t\t\t\t\t<Text size=\"xs\" type=\"error\">{error || strings.invalid}</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nCouponInputCard.displayName = 'CouponInputCard';\n","import type { ComposedBadgeVariant } from '@/components/base/badge/badge';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type OrderStatusKind = 'pending' | 'paid' | 'fulfilled' | 'shipped' | 'delivered' | 'cancelled';\n\nexport interface OrderStatusEvent {\n\tlabel: string;\n\ttimestamp?: string;\n\tcomplete: boolean;\n}\n\nexport interface OrderStatusStrings {\n\ttitle: string;\n\tstatusLabel: string;\n\teta: string;\n\tlatestEvent: string;\n\tcurrentStep: string;\n}\n\nexport const defaultOrderStatusStrings: OrderStatusStrings = {\n\ttitle: 'Order status',\n\tstatusLabel: 'Current status',\n\teta: 'ETA',\n\tlatestEvent: 'Latest event',\n\tcurrentStep: 'Current step',\n};\n\nexport interface OrderStatusCardProps {\n\torderNumber: string;\n\tstatus: OrderStatusKind;\n\tstatusVariant?: ComposedBadgeVariant;\n\tevents: OrderStatusEvent[];\n\tcurrentEta?: string;\n\tclassName?: string;\n\tstrings?: StringsProp<OrderStatusStrings>;\n}\n","/**\n * OrderStatusCard — order number + status badge + readable event timeline.\n * Ideal for dashboards / receipt summaries. Strings overridable for i18n.\n */\nimport { CalendarClock, Check, Circle, Package } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultOrderStatusStrings,\n\ttype OrderStatusCardProps,\n\ttype OrderStatusKind,\n} from './types';\n\nconst VARIANT_BY_STATUS: Record<OrderStatusKind, 'primary' | 'success' | 'warning' | 'error' | 'info' | 'secondary'> = {\n\tpending: 'warning',\n\tpaid: 'info',\n\tfulfilled: 'info',\n\tshipped: 'primary',\n\tdelivered: 'success',\n\tcancelled: 'error',\n};\n\nexport function OrderStatusCard({\n\torderNumber,\n\tstatus,\n\tstatusVariant,\n\tevents,\n\tcurrentEta,\n\tclassName,\n\tstrings: stringsProp,\n}: OrderStatusCardProps) {\n\tconst strings = useStrings(defaultOrderStatusStrings, stringsProp);\n\tconst variant = statusVariant ?? VARIANT_BY_STATUS[status];\n\tconst lastCompleteIdx = events.reduce((acc, e, i) => (e.complete ? i : acc), -1);\n\tconst latestEvent = events[lastCompleteIdx] ?? events[0];\n\tconst nextEvent = events.find((event) => !event.complete);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Package className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={<Badge variant={variant} className=\"capitalize\">{status}</Badge>}\n\t\t\tdescription={`#${orderNumber}`}\n\t\t\tclassName={cn('order-status--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-lg border border-border bg-muted/20 p-3\">\n\t\t\t\t<div className=\"grid gap-3 sm:grid-cols-3\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t\t{strings.statusLabel}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5 capitalize\">\n\t\t\t\t\t\t\t{status}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!latestEvent && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t\t\t{latestEvent.complete ? strings.latestEvent : strings.currentStep}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5\">\n\t\t\t\t\t\t\t\t{latestEvent.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!currentEta && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t\t\t{strings.eta}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5 tabular-nums\">\n\t\t\t\t\t\t\t\t{currentEta}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{events.length > 0 && (\n\t\t\t\t<ol className=\"mt-4\">\n\t\t\t\t\t{events.map((event, index) => {\n\t\t\t\t\t\tconst isLast = index === events.length - 1;\n\t\t\t\t\t\tconst isCurrent = nextEvent ? event === nextEvent : index === lastCompleteIdx;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={`${event.label}-${index}`} className=\"relative flex gap-3\">\n\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex size-6 shrink-0 items-center justify-center rounded-full border',\n\t\t\t\t\t\t\t\t\t\t\tevent.complete\n\t\t\t\t\t\t\t\t\t\t\t\t? 'border-success bg-success text-success-foreground'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'border-border bg-card text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tisCurrent && !event.complete && 'border-primary text-primary ring-4 ring-primary/10',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{event.complete ? (\n\t\t\t\t\t\t\t\t\t\t\t<Check className=\"size-3.5\" strokeWidth={2.5} />\n\t\t\t\t\t\t\t\t\t\t) : isCurrent ? (\n\t\t\t\t\t\t\t\t\t\t\t<CalendarClock className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<Circle className=\"size-3\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'min-h-6 w-px flex-1',\n\t\t\t\t\t\t\t\t\t\t\t\tindex < lastCompleteIdx ? 'bg-success' : 'bg-border',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={cn('min-w-0 flex-1 pb-4', isLast && 'pb-0')}>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tweight={event.complete || isCurrent ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(!event.complete && !isCurrent && 'text-muted-foreground')}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{event.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!event.timestamp && (\n\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t{event.timestamp}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ol>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nOrderStatusCard.displayName = 'OrderStatusCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type PaymentBrand = 'visa' | 'mastercard' | 'amex' | 'paypal' | 'applepay' | 'googlepay' | 'unknown';\n\nexport interface PaymentMethodStrings {\n\ttitle: string;\n\tdefault: string;\n\tcardHolder: string;\n\texpires: string;\n\tchange: string;\n}\n\nexport const defaultPaymentMethodStrings: PaymentMethodStrings = {\n\ttitle: 'Payment method',\n\tdefault: 'Default',\n\tcardHolder: 'Card holder',\n\texpires: 'Expires',\n\tchange: 'Change',\n};\n\nexport interface PaymentMethodCardProps {\n\tbrand: PaymentBrand;\n\tlast4: string;\n\texpiry?: string; // MM/YY\n\tholderName?: string;\n\tisDefault?: boolean;\n\tonChange?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<PaymentMethodStrings>;\n}\n","/**\n * PaymentMethodCard — saved-card surface. The hero block is rendered as a\n * mini credit-card mock with real card proportions, brand chip top-right, masked\n * PAN center, and holder + expiry on the bottom row. Trailing actions sit\n * in a footer below the mock so the hierarchy is \"card → details → CTA\".\n */\nimport { CreditCard } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultPaymentMethodStrings, type PaymentBrand, type PaymentMethodCardProps } from './types';\n\nconst BRAND_LABEL: Record<PaymentBrand, string> = {\n\tvisa: 'VISA',\n\tmastercard: 'MasterCard',\n\tamex: 'AMEX',\n\tpaypal: 'PayPal',\n\tapplepay: 'Apple Pay',\n\tgooglepay: 'Google Pay',\n\tunknown: 'Card',\n};\n\nconst BRAND_GRADIENT: Record<PaymentBrand, string> = {\n\tvisa: 'from-info via-primary to-info',\n\tmastercard: 'from-warning via-destructive to-destructive',\n\tamex: 'from-info via-primary to-info',\n\tpaypal: 'from-info via-primary to-info',\n\tapplepay: 'from-foreground via-muted-foreground to-foreground',\n\tgooglepay: 'from-success via-primary to-success',\n\tunknown: 'from-foreground via-muted-foreground to-foreground',\n};\n\nexport function PaymentMethodCard({\n\tbrand,\n\tlast4,\n\texpiry,\n\tholderName,\n\tisDefault,\n\tonChange,\n\tclassName,\n\tstrings: stringsProp,\n}: PaymentMethodCardProps) {\n\tconst strings = useStrings(defaultPaymentMethodStrings, stringsProp);\n\tconst brandLabel = BRAND_LABEL[brand];\n\tconst gradient = BRAND_GRADIENT[brand];\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<CreditCard className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={isDefault ? <Badge variant=\"primary\">{strings.default}</Badge> : null}\n\t\t\theaderAction={onChange ? (\n\t\t\t\t<Button buttonStyle=\"ghost\" variant=\"secondary\" onClick={onChange}>\n\t\t\t\t\t{strings.change}\n\t\t\t\t</Button>\n\t\t\t) : undefined}\n\t\t\tclassName={cn('payment-method--component w-full', className)}\n\t\t>\n\t\t\t{/* Mini card mock */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative mx-auto flex aspect-[85.6/53.98] w-full max-w-[22rem] flex-col justify-between overflow-hidden rounded-lg bg-gradient-to-br p-3.5 text-inverse-foreground shadow-sm ring-1 ring-inverse-border',\n\t\t\t\t\tgradient,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"relative flex items-start justify-between\">\n\t\t\t\t\t<div className=\"flex size-7 items-center justify-center rounded-md bg-gradient-to-br from-warning/80 to-warning shadow-sm\">\n\t\t\t\t\t\t<div className=\"size-4 rounded-sm border border-warning-foreground/25 bg-warning-foreground/15\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tweight=\"bold\"\n\t\t\t\t\t\tclassName=\"rounded bg-inverse-surface px-2 py-0.5 tracking-[0.15em] text-inverse-foreground backdrop-blur-sm\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{brandLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\tclassName=\"block font-mono tracking-[0.25em] text-inverse-foreground\"\n\t\t\t\t\t>\n\t\t\t\t\t\t•••• •••• •••• {last4}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"relative flex items-end justify-between gap-3\">\n\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t{!!holderName && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Text size=\"xs\" className=\"block uppercase tracking-wider text-inverse-subtle\">{strings.cardHolder}</Text>\n\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate text-inverse-foreground\">{holderName}</Text>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!expiry && (\n\t\t\t\t\t\t<div className=\"text-right shrink-0\">\n\t\t\t\t\t\t\t<Text size=\"xs\" className=\"block uppercase tracking-wider text-inverse-subtle\">{strings.expires}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className=\"tabular-nums text-inverse-foreground\">{expiry}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</SmartCard>\n\t);\n}\n\nPaymentMethodCard.displayName = 'PaymentMethodCard';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/composed/commerce/upcoming-booking/upcoming-booking.tsx","../../../../src/components/composed/commerce/loyalty-points/types.ts","../../../../src/components/composed/commerce/loyalty-points/loyalty-points.tsx","../../../../src/components/composed/commerce/discount-stack/types.ts","../../../../src/components/composed/commerce/discount-stack/discount-stack.tsx","../../../../src/components/composed/commerce/shipment-tracking/shipment-tracking.tsx","../../../../src/components/composed/commerce/tax-breakdown/types.ts","../../../../src/components/composed/commerce/tax-breakdown/tax-breakdown.tsx","../../../../src/components/composed/commerce/subscription-summary/types.ts","../../../../src/components/composed/commerce/subscription-summary/subscription-summary.tsx","../../../../src/components/composed/commerce/refund-status/types.ts","../../../../src/components/composed/commerce/refund-status/refund-status.tsx","../../../../src/components/composed/commerce/address-card/types.ts","../../../../src/components/composed/commerce/address-card/address-card.tsx","../../../../src/components/composed/commerce/voucher-entry/types.ts","../../../../src/components/composed/commerce/voucher-entry/voucher-entry.tsx","../../../../src/components/composed/commerce/cart-summary/types.ts","../../../../src/components/composed/commerce/cart-summary/cart-summary.tsx","../../../../src/components/composed/commerce/coupon-input/types.ts","../../../../src/components/composed/commerce/coupon-input/coupon-input.tsx","../../../../src/components/composed/commerce/order-status/types.ts","../../../../src/components/composed/commerce/order-status/order-status.tsx","../../../../src/components/composed/commerce/payment-method/types.ts","../../../../src/components/composed/commerce/payment-method/payment-method.tsx","../../../../src/components/composed/commerce/seo-listing/seo-listing-score.ts","../../../../src/components/composed/commerce/seo-listing/types.ts","../../../../src/components/composed/commerce/seo-listing/seo-listing-card.tsx","../../../../src/components/composed/commerce/inventory-section/types.ts","../../../../src/components/composed/commerce/inventory-section/inventory-section.tsx"],"sourcesContent":["/**\n * UpcomingBookingRow — compact booking list. Each row shows a `DateBlock`\n * (weekday / day / month / time) on the left, service + customer in the\n * middle, and trailing amount. Locale and date-tone are configurable.\n *\n * Time is placed BELOW the date block by default (matches the date block\n * vertical rhythm); pass `timePlacement=\"inline-trailing\"` to use a\n * separate trailing time column.\n */\nimport { Text } from '@/components/typography/text';\nimport { DateBlock } from '@/components/base/display/date-block';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\n\nimport type { BookingEntry, UpcomingBookingRowProps } from './types';\n\nimport { cn } from '@/lib/utils';\nfunction resolveDate(entry: BookingEntry): Date | string | number | null {\n\tif (entry.date != null) return entry.date;\n\tif (entry.day && entry.month) {\n\t\tconst year = new Date().getFullYear();\n\t\tconst synth = new Date(`${entry.month} ${entry.day}, ${year}`);\n\t\tif (!Number.isNaN(synth.getTime())) return synth;\n\t}\n\treturn null;\n}\n\nexport function UpcomingBookingRow({\n\tbookings,\n\tclassName,\n\tlocale,\n\tdateTone = 'inverse',\n\ttimePlacement = 'below',\n}: UpcomingBookingRowProps) {\n\treturn (\n\t\t<ItemGroup className={cn('upcoming-booking--component w-full gap-2', className)}>\n\t\t\t{bookings.map((b, idx) => {\n\t\t\t\tconst dateInput = resolveDate(b);\n\t\t\t\treturn (\n\t\t\t\t\t<Item key={b.id ?? `${b.service}-${b.time}-${idx}`} className=\"items-center\">\n\t\t\t\t\t\t{!!dateInput && (\n\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t<DateBlock\n\t\t\t\t\t\t\t\t\tdate={dateInput}\n\t\t\t\t\t\t\t\t\ttime={timePlacement === 'below' ? b.time : undefined}\n\t\t\t\t\t\t\t\t\ttone={dateTone}\n\t\t\t\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\t\t\t\ttimePlacement=\"below\"\n\t\t\t\t\t\t\t\t\tlayout=\"stacked\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t\t\t\t<ItemTitle>{b.service}</ItemTitle>\n\t\t\t\t\t\t\t<ItemDescription clamp={1}>{b.customer}</ItemDescription>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end\">\n\t\t\t\t\t\t\t{timePlacement === 'inline-trailing' && (\n\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t\t{b.time}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t{b.amount}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ItemGroup>\n\t);\n}\n\nUpcomingBookingRow.displayName = 'UpcomingBookingRow';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface LoyaltyHistoryEntry {\n label: string;\n points: string;\n date: string;\n positive: boolean;\n}\n\nexport interface LoyaltyPointsStrings {\n balanceLabel: string;\n pointsAvailable: string;\n redeem: string;\n}\n\nexport const defaultLoyaltyPointsStrings: LoyaltyPointsStrings = {\n balanceLabel: 'Loyalty Balance',\n pointsAvailable: 'points available',\n redeem: 'Redeem Points',\n};\n\nexport interface LoyaltyPointsCardProps {\n balance: number | string;\n tier?: string;\n tierVariant?: string;\n history?: LoyaltyHistoryEntry[];\n /** @deprecated Use `strings.redeem`. */\n redeemLabel?: string;\n onRedeem?: () => void;\n className?: string;\n strings?: StringsProp<LoyaltyPointsStrings>;\n}\n","/**\n * LoyaltyPointsCard — current balance, tier badge, recent history rows\n * (label / date / signed-points), and a redemption CTA. Strings overridable\n * for i18n.\n */\nimport { Badge } from '@/components/base/badge/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography/text';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemTitle,\n} from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport { Gift, Trophy } from 'lucide-react';\n\nimport { defaultLoyaltyPointsStrings, type LoyaltyPointsCardProps } from './types';\n\nexport function LoyaltyPointsCard({\n\tbalance,\n\ttier = 'Gold Tier',\n\ttierVariant: _tierVariant,\n\thistory = [],\n\tredeemLabel,\n\tonRedeem,\n\tclassName,\n\tstrings: stringsProp,\n}: LoyaltyPointsCardProps) {\n\tconst compatibilityStrings = useStrings(\n\t\tdefaultLoyaltyPointsStrings,\n\t\tredeemLabel !== undefined ? { redeem: redeemLabel } : undefined,\n\t);\n\tconst strings = useStrings(compatibilityStrings, stringsProp);\n\treturn (\n\t\t<SmartCard className={cn('loyalty-points--component w-full', className)}>\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.balanceLabel}\n\t\t\t\tvalue={\n\t\t\t\t\t<Badge variant=\"warning\">\n\t\t\t\t\t\t<Trophy className=\"mr-1 inline size-3\" />\n\t\t\t\t\t\t{tier}\n\t\t\t\t\t</Badge>\n\t\t\t\t}\n\t\t\t\tlabelClassName=\"text-xs font-medium uppercase tracking-wider text-muted-foreground\"\n\t\t\t/>\n\n\t\t\t<Heading tag=\"h3\" className=\"text-base tabular-nums tracking-tight\">\n\t\t\t\t{typeof balance === 'number' ? balance.toLocaleString() : balance}\n\t\t\t</Heading>\n\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t{strings.pointsAvailable}\n\t\t\t</Text>\n\n\t\t\t<Separator className=\"my-4\" />\n\n\t\t\t<ItemGroup>\n\t\t\t\t{history.map((entry) => (\n\t\t\t\t\t<Item key={entry.date + entry.label} size=\"small\">\n\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t<ItemTitle bold={false}>{entry.label}</ItemTitle>\n\t\t\t\t\t\t\t<ItemDescription clamp={1}>{entry.date}</ItemDescription>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'tabular-nums',\n\t\t\t\t\t\t\t\t\tentry.positive ? 'text-success' : 'text-destructive',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{entry.points}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ItemGroup>\n\n\t\t\t<Button\n\t\t\t\tvariant=\"dark\"\n\t\t\t\tclassName=\"mt-5 w-full rounded-full\"\n\t\t\t\tonClick={onRedeem}\n\t\t\t>\n\t\t\t\t<Gift className=\"mr-1.5 size-3.5\" />\n\t\t\t\t{strings.redeem}\n\t\t\t</Button>\n\t\t</SmartCard>\n\t);\n}\n\nLoyaltyPointsCard.displayName = 'LoyaltyPointsCard';\n","import type { ComposedBadgeVariant as BadgeVariant } from '@/components/base/badge/badge';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface Discount {\n type: string;\n label: string;\n amount: string;\n badge: BadgeVariant;\n}\n\nexport interface DiscountStackStrings {\n title: string;\n totalSavings: string;\n}\n\nexport const defaultDiscountStackStrings: DiscountStackStrings = {\n title: 'Applied Discounts',\n totalSavings: 'Total Savings',\n};\n\nexport interface DiscountStackPreviewProps {\n discounts: Discount[];\n totalSavings: string;\n className?: string;\n strings?: StringsProp<DiscountStackStrings>;\n}\n","/**\n * DiscountStackPreview — list of applied discounts (type chip + label +\n * amount) with a total-savings summary line. Strings overridable for i18n.\n */\nimport { Badge } from '@/components/base/badge/badge';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography/text';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultDiscountStackStrings, type DiscountStackPreviewProps } from './types';\n\nimport { cn } from '@/lib/utils';\nexport function DiscountStackPreview({\n\tdiscounts,\n\ttotalSavings,\n\tclassName,\n\tstrings: stringsProp,\n}: DiscountStackPreviewProps) {\n\tconst strings = useStrings(defaultDiscountStackStrings, stringsProp);\n\treturn (\n\t\t<SmartCard title={strings.title} className={cn('discount-stack--component w-full', className)}>\n\t\t\t<ItemGroup className=\"mt-4\">\n\t\t\t\t{discounts.map((d) => (\n\t\t\t\t\t<Item key={d.type} size=\"small\">\n\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t<Badge variant={d.badge} className=\"w-16 justify-center\">\n\t\t\t\t\t\t\t\t{d.type}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t<ItemTitle bold={false}>{d.label}</ItemTitle>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums text-success\">\n\t\t\t\t\t\t\t\t{d.amount}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ItemGroup>\n\n\t\t\t<Separator className=\"my-4\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.totalSavings}\n\t\t\t\tvalue={\n\t\t\t\t\t<Heading tag=\"h4\" className=\"text-base tabular-nums tracking-tight text-success border-none pb-0\">\n\t\t\t\t\t\t{totalSavings}\n\t\t\t\t\t</Heading>\n\t\t\t\t}\n\t\t\t\tlabelClassName=\"text-sm font-semibold\"\n\t\t\t/>\n\t\t</SmartCard>\n\t);\n}\n\nDiscountStackPreview.displayName = 'DiscountStackPreview';\n","/**\n * ShipmentTrackingCard — tracking number + carrier header, current status\n * with pulse dot, horizontal step progress bar, and an optional details row\n * grid (e.g. weight, ETA, recipient). All copy is consumer-supplied via\n * `steps[].label` / `details[].label`.\n */\nimport { Badge } from '@/components/base/badge/badge';\nimport { SmartCard } from '@/components/base/cards/smart-card';\nimport { Text } from '@/components/typography/text';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { cn } from '@/lib/utils';\n\nimport type { ShipmentTrackingCardProps } from './types';\n\nexport function ShipmentTrackingCard({\n trackingNumber,\n carrier,\n status,\n steps,\n details = [],\n className,\n}: ShipmentTrackingCardProps) {\n return (\n <SmartCard className={cn('shipment-tracking--component w-full', className)}>\n <div className=\"flex items-center justify-between\">\n <Text size=\"xs\" weight=\"medium\" className=\"font-mono text-muted-foreground tracking-wide\">\n {trackingNumber}\n </Text>\n {!!carrier && <Badge variant=\"info\">{carrier}</Badge>}\n </div>\n\n <div className=\"mt-4 flex items-center gap-1.5\">\n <span className=\"h-2 w-2 rounded-full bg-success\" />\n <Text weight=\"semibold\">\n {status}\n </Text>\n </div>\n\n <div className=\"mt-5 flex items-center justify-between\">\n {steps.map((step, i) => (\n <div key={step.label} className=\"flex flex-1 flex-col items-center gap-2\">\n <div className=\"flex w-full items-center\">\n <div className={cn('size-3 shrink-0 rounded-full', step.done ? 'bg-success' : 'bg-muted')} />\n {i < steps.length - 1 && (\n <div className={cn('h-0.5 flex-1', step.done ? 'bg-success' : 'bg-muted')} />\n )}\n </div>\n <Text size=\"xs\" type=\"secondary\" className=\"text-center leading-tight\">\n {step.label}\n </Text>\n </div>\n ))}\n </div>\n\n {details.length > 0 && (\n <>\n <Separator className=\"my-4\" />\n <div className=\"space-y-2\">\n {details.map((detail) => (\n <InlineStat\n key={detail.label}\n label={detail.label}\n value={detail.value}\n labelClassName=\"text-xs\"\n valueClassName=\"text-sm font-medium truncate max-w-[180px]\"\n />\n ))}\n </div>\n </>\n )}\n </SmartCard>\n );\n}\n\nShipmentTrackingCard.displayName = 'ShipmentTrackingCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface TaxLineItem {\n\tid?: string;\n\tlabel: string;\n\trate?: string;\n\tamount: string;\n}\n\nexport interface TaxBreakdownStrings {\n\ttitle: string;\n\tsubtotal: string;\n\ttotalTax: string;\n\ttotal: string;\n}\n\nexport const defaultTaxBreakdownStrings: TaxBreakdownStrings = {\n\ttitle: 'Tax Breakdown',\n\tsubtotal: 'Subtotal',\n\ttotalTax: 'Total Tax',\n\ttotal: 'Total',\n};\n\nexport interface TaxBreakdownCardProps {\n\tsubtotal: string;\n\ttaxes: TaxLineItem[];\n\ttotalTax?: string;\n\ttotal: string;\n\tclassName?: string;\n\tstrings?: StringsProp<TaxBreakdownStrings>;\n}\n","/**\n * TaxBreakdownCard — itemised tax breakdown for an order or invoice. Shows a\n * subtotal, one row per tax line (with optional rate suffix), an optional\n * \"Total tax\" rollup, and a final total. Pairs with `CartSummaryCard` when\n * consumers need to expose VAT / regional tax detail. Strings overridable\n * for i18n.\n */\nimport { Receipt } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultTaxBreakdownStrings, type TaxBreakdownCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nexport function TaxBreakdownCard({\n\tsubtotal,\n\ttaxes,\n\ttotalTax,\n\ttotal,\n\tclassName,\n\tstrings: stringsProp,\n}: TaxBreakdownCardProps) {\n\tconst strings = useStrings(defaultTaxBreakdownStrings, stringsProp);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Receipt className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('tax-breakdown--component w-full', className)}\n\t\t>\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.subtotal}\n\t\t\t\tvalue={subtotal}\n\t\t\t\tmono\n\t\t\t\tlabelClassName=\"text-sm\"\n\t\t\t\tvalueClassName=\"text-sm font-medium\"\n\t\t\t/>\n\n\t\t\t<div className=\"mt-3 space-y-1.5 rounded-lg border border-border/50 bg-muted/30 px-3 py-2.5\">\n\t\t\t\t{taxes.map((tax, i) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={tax.id ?? `${tax.label}-${i}`}\n\t\t\t\t\t\tclassName=\"flex items-baseline justify-between gap-3\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"flex items-baseline gap-1.5 min-w-0\">\n\t\t\t\t\t\t\t<Text size=\"xs\" className=\"truncate\">{tax.label}</Text>\n\t\t\t\t\t\t\t{!!tax.rate && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"discrete\" className=\"shrink-0\">\n\t\t\t\t\t\t\t\t\t{tax.rate}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"tabular-nums shrink-0\">\n\t\t\t\t\t\t\t{tax.amount}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t\t{!!totalTax && taxes.length > 1 && (\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={strings.totalTax}\n\t\t\t\t\t\tvalue={totalTax}\n\t\t\t\t\t\tmono\n\t\t\t\t\t\tclassName=\"border-t border-border/50 pt-1.5 mt-0.5\"\n\t\t\t\t\t\tlabelClassName=\"text-xs font-medium\"\n\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<Separator className=\"my-3\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.total}\n\t\t\t\tvalue={total}\n\t\t\t\tmono\n\t\t\t\tlabelClassName=\"text-sm font-semibold\"\n\t\t\t\tvalueClassName=\"text-base font-bold\"\n\t\t\t/>\n\t\t</SmartCard>\n\t);\n}\n\nTaxBreakdownCard.displayName = 'TaxBreakdownCard';\n","import type { LucideIcon } from 'lucide-react';\nimport type { StringsProp } from '@/lib/strings';\n\nexport interface SubscriptionPerk {\n\ticon?: LucideIcon;\n\tlabel: string;\n}\n\nexport interface SubscriptionSummaryStrings {\n\ttitle: string;\n\tplan: string;\n\tnextBilling: string;\n\tperks: string;\n\tmanage: string;\n\tupgrade: string;\n}\n\nexport const defaultSubscriptionSummaryStrings: SubscriptionSummaryStrings = {\n\ttitle: 'Subscription',\n\tplan: 'Plan',\n\tnextBilling: 'Next billing',\n\tperks: 'Included',\n\tmanage: 'Manage',\n\tupgrade: 'Upgrade',\n};\n\nexport interface SubscriptionSummaryCardProps {\n\tplanName: string;\n\tpriceLabel: string;\n\tcycleLabel: string;\n\tnextBillingDate: string;\n\tstatusLabel?: string;\n\tperks?: SubscriptionPerk[];\n\tonManage?: () => void;\n\tonUpgrade?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<SubscriptionSummaryStrings>;\n}\n","/**\n * SubscriptionSummaryCard — at-a-glance subscription card with the active\n * plan name as the hero heading, an inline price + cycle, the next billing\n * date in a meta row, an optional perks list, and trailing\n * Manage / Upgrade actions. Strings overridable for i18n.\n */\nimport {\n\tCalendar,\n\tCheck,\n\tChevronRight,\n\tRepeat } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { IconBadge,\n} from '@/components/base/display';\nimport {\n\tItem,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport Heading from '@/components/typography/heading';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\n\nimport {\n\tdefaultSubscriptionSummaryStrings,\n\ttype SubscriptionSummaryCardProps,\n} from './types';\n\nimport { cn } from '@/lib/utils';\nexport function SubscriptionSummaryCard({\n\tplanName,\n\tpriceLabel,\n\tcycleLabel,\n\tnextBillingDate,\n\tstatusLabel,\n\tperks = [],\n\tonManage,\n\tonUpgrade,\n\tclassName,\n\tstrings: stringsProp,\n}: SubscriptionSummaryCardProps) {\n\tconst strings = useStrings(defaultSubscriptionSummaryStrings, stringsProp);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Repeat className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\theaderEnd={statusLabel ? <Badge variant=\"success\">{statusLabel}</Badge> : null}\n\t\t\tclassName={cn('subscription-summary--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-lg border border-border/60 bg-muted/30 p-4\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t{strings.plan}\n\t\t\t\t</Text>\n\t\t\t\t<Heading tag=\"h3\" className=\"mt-1 text-base font-semibold tracking-tight border-none pb-0\">\n\t\t\t\t\t{planName}\n\t\t\t\t</Heading>\n\t\t\t\t<div className=\"mt-1 flex items-baseline gap-1\">\n\t\t\t\t\t<Text tag=\"span\" weight=\"bold\" className=\"tabular-nums\">\n\t\t\t\t\t\t{priceLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t{cycleLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className=\"mt-3 flex items-center justify-between rounded-md bg-card px-1\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Calendar className=\"size-3.5 text-muted-foreground\" />\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.nextBilling}</Text>\n\t\t\t\t</div>\n\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">{nextBillingDate}</Text>\n\t\t\t</div>\n\n\t\t\t{perks.length > 0 && (\n\t\t\t\t<div className=\"mt-4 space-y-2\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t\t{strings.perks}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t{perks.map((perk, i) => {\n\t\t\t\t\t\t\tconst Icon = perk.icon ?? Check;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Item key={`${perk.label}-${i}`} size=\"small\">\n\t\t\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t\t\t<IconBadge icon={Icon} tone=\"success\" size=\"small\" />\n\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t\t\t<ItemTitle bold={false}>{perk.label}</ItemTitle>\n\t\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{(onManage || onUpgrade) && (\n\t\t\t\t<div className=\"mt-4 flex items-center gap-2\">\n\t\t\t\t\t{!!onManage && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\tonClick={onManage}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.manage}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!onUpgrade && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tonClick={onUpgrade}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.upgrade}\n\t\t\t\t\t\t\t<ChevronRight className=\"ml-1 size-3.5\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nSubscriptionSummaryCard.displayName = 'SubscriptionSummaryCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type RefundStage = 'requested' | 'approved' | 'processing' | 'completed';\n\nexport interface RefundStatusStrings {\n\ttitle: string;\n\trequested: string;\n\tapproved: string;\n\tprocessing: string;\n\tcompleted: string;\n\tamount: string;\n\treason: string;\n\teta: string;\n\tmethod: string;\n}\n\nexport const defaultRefundStatusStrings: RefundStatusStrings = {\n\ttitle: 'Refund Status',\n\trequested: 'Requested',\n\tapproved: 'Approved',\n\tprocessing: 'Processing',\n\tcompleted: 'Completed',\n\tamount: 'Refund amount',\n\treason: 'Reason',\n\teta: 'Expected by',\n\tmethod: 'Refund to',\n};\n\nexport interface RefundStatusCardProps {\n\tstage: RefundStage;\n\tamount: string;\n\treason?: string;\n\tmethod?: string;\n\teta?: string;\n\trequestedAt?: string;\n\tclassName?: string;\n\tstrings?: StringsProp<RefundStatusStrings>;\n}\n","/**\n * RefundStatusCard — refund-flow tracker. Shows the four canonical refund\n * stages (Requested → Approved → Processing → Completed) as a horizontal\n * progress bar, with refund amount as the lead figure and an optional reason\n * / method / ETA detail block. Strings overridable for i18n.\n */\nimport {\n\tCheck,\n\tRotateCcw } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport Heading from '@/components/typography/heading';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultRefundStatusStrings,\n\ttype RefundStage,\n\ttype RefundStatusCardProps,\n} from './types';\n\nconst STAGE_ORDER: RefundStage[] = ['requested', 'approved', 'processing', 'completed'];\n\nexport function RefundStatusCard({\n\tstage,\n\tamount,\n\treason,\n\tmethod,\n\teta,\n\trequestedAt,\n\tclassName,\n\tstrings: stringsProp,\n}: RefundStatusCardProps) {\n\tconst strings = useStrings(defaultRefundStatusStrings, stringsProp);\n\tconst currentIdx = STAGE_ORDER.indexOf(stage);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<RotateCcw className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('refund-status--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-lg bg-muted/40 px-4 py-3\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\" className=\"uppercase tracking-wider\">\n\t\t\t\t\t{strings.amount}\n\t\t\t\t</Text>\n\t\t\t\t<Heading tag=\"h3\" className=\"text-base tabular-nums tracking-tight\">\n\t\t\t\t\t{amount}\n\t\t\t\t</Heading>\n\t\t\t\t{!!requestedAt && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">\n\t\t\t\t\t\t{strings.requested}: {requestedAt}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Stages */}\n\t\t\t<div className=\"mt-4 flex items-center justify-between\">\n\t\t\t\t{STAGE_ORDER.map((s, i) => {\n\t\t\t\t\tconst done = i <= currentIdx;\n\t\t\t\t\tconst current = i === currentIdx;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={s} className=\"flex flex-1 flex-col items-center gap-1.5\">\n\t\t\t\t\t\t\t<div className=\"flex w-full items-center\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'relative flex size-5 shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\t\t\t\t\t\tdone\n\t\t\t\t\t\t\t\t\t\t\t? 'bg-success text-success-foreground'\n\t\t\t\t\t\t\t\t\t\t\t: 'border border-border bg-card text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\tcurrent && 'ring-2 ring-success/30 ring-offset-2 ring-offset-background',\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{done ? (\n\t\t\t\t\t\t\t\t\t\t<Check className=\"size-3\" />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"tabular-nums\">{i + 1}</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{i < STAGE_ORDER.length - 1 && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-0.5 flex-1',\n\t\t\t\t\t\t\t\t\t\t\ti < currentIdx ? 'bg-success' : 'bg-border',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\tweight={current ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\t\ttype={done ? 'main' : 'secondary'}\n\t\t\t\t\t\t\t\tclassName=\"text-center leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings[s]}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{(reason || method || eta) && (\n\t\t\t\t<>\n\t\t\t\t\t<Separator className=\"my-4\" />\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t{!!reason && (\n\t\t\t\t\t\t\t<InlineStat label={strings.reason} value={reason} className=\"items-start\" valueClassName=\"text-sm font-medium text-right\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!method && (\n\t\t\t\t\t\t\t<InlineStat label={strings.method} value={method} valueClassName=\"text-sm font-medium\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!eta && (\n\t\t\t\t\t\t\t<InlineStat label={strings.eta} value={eta} mono valueClassName=\"text-sm font-medium\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nRefundStatusCard.displayName = 'RefundStatusCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type AddressKind = 'shipping' | 'billing' | 'pickup';\n\nexport interface AddressCardStrings {\n\tdefaultBadge: string;\n\tedit: string;\n\tremove: string;\n\tmakeDefault: string;\n\tshipping: string;\n\tbilling: string;\n\tpickup: string;\n}\n\nexport const defaultAddressCardStrings: AddressCardStrings = {\n\tdefaultBadge: 'Default',\n\tedit: 'Edit',\n\tremove: 'Remove',\n\tmakeDefault: 'Make default',\n\tshipping: 'Shipping address',\n\tbilling: 'Billing address',\n\tpickup: 'Pickup address',\n};\n\nexport interface AddressCardProps {\n\tkind?: AddressKind;\n\tname: string;\n\tline1: string;\n\tline2?: string;\n\tcity: string;\n\tregion?: string;\n\tpostalCode?: string;\n\tcountry: string;\n\tphone?: string;\n\tisDefault?: boolean;\n\tonEdit?: () => void;\n\tonRemove?: () => void;\n\tonMakeDefault?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<AddressCardStrings>;\n}\n","/**\n * AddressCard — saved postal address surface. Title varies by `kind`\n * (shipping / billing / pickup); shows recipient name, address lines, phone,\n * and a \"Default\" badge when applicable.\n *\n * Edit / remove / make-default actions ride through SmartCard's actions menu\n * (the canonical card-actions affordance) instead of inline footer buttons —\n * keeps the surface consistent with every other card in the library.\n */\nimport { Edit2, MapPin, Star, Trash2 } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { SmartCard, type SmartCardAction } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\n\nimport {\n\tdefaultAddressCardStrings,\n\ttype AddressCardProps,\n\ttype AddressKind,\n} from './types';\n\nimport { cn } from '@/lib/utils';\nexport function AddressCard({\n\tkind = 'shipping',\n\tname,\n\tline1,\n\tline2,\n\tcity,\n\tregion,\n\tpostalCode,\n\tcountry,\n\tphone,\n\tisDefault = false,\n\tonEdit,\n\tonRemove,\n\tonMakeDefault,\n\tclassName,\n\tstrings: stringsProp,\n}: AddressCardProps) {\n\tconst strings = useStrings(defaultAddressCardStrings, stringsProp);\n\tconst titleByKind: Record<AddressKind, string> = {\n\t\tshipping: strings.shipping,\n\t\tbilling: strings.billing,\n\t\tpickup: strings.pickup,\n\t};\n\n\tconst cityLine = [city, region, postalCode].filter(Boolean).join(', ');\n\n\tconst actions: SmartCardAction[] = [];\n\tif (onEdit) {\n\t\tactions.push({\n\t\t\tid: 'edit',\n\t\t\tlabel: strings.edit,\n\t\t\ticon: <Edit2 className=\"size-3.5\" />,\n\t\t\tonClick: onEdit,\n\t\t});\n\t}\n\tif (onMakeDefault && !isDefault) {\n\t\tactions.push({\n\t\t\tid: 'make-default',\n\t\t\tlabel: strings.makeDefault,\n\t\t\ticon: <Star className=\"size-3.5\" />,\n\t\t\tonClick: onMakeDefault,\n\t\t});\n\t}\n\tif (onRemove) {\n\t\tactions.push({\n\t\t\tid: 'remove',\n\t\t\tlabel: strings.remove,\n\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\tonClick: onRemove,\n\t\t});\n\t}\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<MapPin className=\"size-4\" />}\n\t\t\ttitle={titleByKind[kind]}\n\t\t\ttitleSuffix={\n\t\t\t\tisDefault ? <Badge variant=\"primary\">{strings.defaultBadge}</Badge> : null\n\t\t\t}\n\t\t\tactions={actions.length > 0 ? actions : undefined}\n\t\t\tclassName={cn('address-card--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"space-y-0.5\">\n\t\t\t\t<Text weight=\"semibold\">{name}</Text>\n\t\t\t\t<Text>{line1}</Text>\n\t\t\t\t{!!line2 && <Text>{line2}</Text>}\n\t\t\t\t{!!cityLine && <Text>{cityLine}</Text>}\n\t\t\t\t<Text type=\"secondary\">{country}</Text>\n\t\t\t\t{!!phone && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1.5 tabular-nums\">\n\t\t\t\t\t\t{phone}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nAddressCard.displayName = 'AddressCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface VoucherEntryStrings {\n\ttitle: string;\n\tinputLabel: string;\n\tplaceholder: string;\n\thelperText: string;\n\tcheck: string;\n\tremove: string;\n\tbalance: string;\n\tapplied: string;\n\tnotFound: string;\n}\n\nexport const defaultVoucherEntryStrings: VoucherEntryStrings = {\n\ttitle: 'Redeem a gift card',\n\tinputLabel: 'Gift card code',\n\tplaceholder: 'Enter gift card code',\n\thelperText: 'Apply one gift card or voucher to this order.',\n\tcheck: 'Check balance',\n\tremove: 'Remove',\n\tbalance: 'Available balance',\n\tapplied: 'Applied',\n\tnotFound: 'That gift card code is not valid.',\n};\n\nexport interface VoucherEntryCardProps {\n\tappliedCode?: string;\n\tbalance?: string;\n\terror?: string;\n\tloading?: boolean;\n\tonCheck?: (code: string) => void;\n\tonRemove?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<VoucherEntryStrings>;\n}\n","/**\n * VoucherEntryCard — gift-card / voucher redemption entry.\n *\n * Empty state — leading gift icon input + check button, helper line surfacing\n * errors. Applied state — success-tinted row with check medallion, code,\n * balance amount, and a destructive remove icon.\n */\nimport {\n\ttype FormEvent,\n\tuseId,\n\tuseState } from 'react';\nimport { Check,\n\tGift,\n\tX } from 'lucide-react';\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { IconBadge,\n} from '@/components/base/display';\nimport { FormField } from '@/components/base/forms';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Input } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultVoucherEntryStrings, type VoucherEntryCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nconst normalizeCode = (value: string): string => value.toUpperCase();\n\nexport function VoucherEntryCard({\n\tappliedCode,\n\tbalance,\n\terror,\n\tloading,\n\tonCheck,\n\tonRemove,\n\tclassName,\n\tstrings: stringsProp,\n}: VoucherEntryCardProps) {\n\tconst strings = useStrings(defaultVoucherEntryStrings, stringsProp);\n\tconst inputId = useId();\n\tconst [code, setCode] = useState('');\n\tconst trimmedCode = code.trim();\n\tconst handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n\t\tevent.preventDefault();\n\t\tif (!trimmedCode) return;\n\t\tonCheck?.(trimmedCode);\n\t};\n\n\tif (appliedCode) {\n\t\treturn (\n\t\t\t<SmartCard\n\t\t\t\ticon={<Gift className=\"size-4\" />}\n\t\t\t\ttitle={strings.title}\n\t\t\t\tclassName={cn('voucher-entry--component w-full', className)}\n\t\t\t>\n\t\t\t\t<Item size=\"small\" variant=\"outline\" className=\"items-center gap-x-2.5 gap-y-1.5 border-success/30 bg-success/5\">\n\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t<IconBadge icon={Check} tone=\"success\" size=\"default\" className=\"ring-1 ring-success/20\" />\n\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t\t\t<div className=\"flex flex-wrap items-center gap-1.5\">\n\t\t\t\t\t\t\t<ItemTitle className=\"max-w-full font-mono tracking-wider\">{appliedCode}</ItemTitle>\n\t\t\t\t\t\t\t<Badge variant=\"success\" size=\"small\">{strings.applied}</Badge>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ItemDescription clamp={1}>{strings.balance}</ItemDescription>\n\t\t\t\t\t</ItemContent>\n\t\t\t\t\t<ItemFooter className=\"border-t border-success/15 pt-1\">\n\t\t\t\t\t\t<span />\n\t\t\t\t\t\t<ItemActions className=\"shrink-0 gap-1.5\">\n\t\t\t\t\t\t\t{!!balance && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"success\" className=\"tabular-nums shrink-0\">\n\t\t\t\t\t\t\t\t\t{balance}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!onRemove && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\t\t\t\taria-label={strings.remove}\n\t\t\t\t\t\t\t\t\tclassName=\"size-7 shrink-0 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<X className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t</Item>\n\t\t\t</SmartCard>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Gift className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('voucher-entry--component w-full', className)}\n\t\t>\n\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t<FormField\n\t\t\t\t\tlabel={strings.inputLabel}\n\t\t\t\t\thtmlFor={inputId}\n\t\t\t\t\terror={error}\n\t\t\t\t\thint={error ? undefined : strings.helperText}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t<div className=\"min-w-48 flex-1\">\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\tvalue={code}\n\t\t\t\t\t\t\t\tonChange={(e) => setCode(normalizeCode((e.target as HTMLInputElement).value))}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholder}\n\t\t\t\t\t\t\t\tstartIcon={Gift}\n\t\t\t\t\t\t\t\tautoCapitalize=\"characters\"\n\t\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t\t\t\tinvalid={Boolean(error)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\tdisabled={!trimmedCode}\n\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.check}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</FormField>\n\t\t\t</form>\n\t\t</SmartCard>\n\t);\n}\n\nVoucherEntryCard.displayName = 'VoucherEntryCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface CartLineItem {\n\tid: string;\n\tname?: string;\n\tproductTitle?: string;\n\ttitle?: string;\n\tvariantTitle?: string;\n\tqty: number;\n\tprice: string;\n\timageUrl?: string;\n\timageSrc?: string;\n\tsrc?: string;\n\turl?: string;\n\timageAlt?: string;\n}\n\nexport interface CartSummaryStrings {\n\ttitle: string;\n\tsubtotal: string;\n\ttax: string;\n\tshipping: string;\n\tdiscount: string;\n\ttotal: string;\n\tcheckout: string;\n}\n\nexport const defaultCartSummaryStrings: CartSummaryStrings = {\n\ttitle: 'Cart',\n\tsubtotal: 'Subtotal',\n\ttax: 'Tax',\n\tshipping: 'Shipping',\n\tdiscount: 'Discount',\n\ttotal: 'Total',\n\tcheckout: 'Checkout',\n};\n\nexport interface CartSummaryCardProps {\n\titems: CartLineItem[];\n\tsubtotal?: string;\n\ttax?: string;\n\tshipping?: string;\n\tdiscount?: string;\n\ttotal: string;\n\tonCheckout?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<CartSummaryStrings>;\n}\n","/**\n * CartSummaryCard — line-item list with optional subtotal / tax / shipping /\n * discount breakdown and a primary \"Checkout\" action. Items render through\n * `<ItemGroup>` for density consistency; the breakdown rows sit in a tight\n * summary block above the total. The discount value is shown as a signed\n * delta in success colour.\n */\nimport { ShoppingBag } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Separator } from '@/components/base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultCartSummaryStrings, type CartLineItem, type CartSummaryCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nconst stripLeadingMinus = (value: string): string => value.replace(/^[\\s−-]+/, '');\n\nconst resolveCartLineTitle = (item: CartLineItem): string => {\n\treturn [item.productTitle, item.title, item.name].find((value) => !!value?.trim()) ?? item.id;\n};\n\nconst resolveCartLineImageSrc = (item: CartLineItem): string | undefined => {\n\treturn [item.imageUrl, item.imageSrc, item.src, item.url].find((value) => !!value?.trim());\n};\n\nconst getCartLinePlaceholderLabel = (title: string): string => {\n\tconst initials = title\n\t\t.trim()\n\t\t.split(/\\s+/)\n\t\t.map((part) => part[0])\n\t\t.join('')\n\t\t.slice(0, 2)\n\t\t.toUpperCase();\n\n\treturn initials || title.trim().slice(0, 2).toUpperCase();\n};\n\nfunction CartLineImagePlaceholder({ title }: { title: string }) {\n\treturn (\n\t\t<div\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"flex size-full items-center justify-center rounded-[inherit] bg-muted text-xs font-semibold text-muted-foreground ring-1 ring-border/60\"\n\t\t>\n\t\t\t{getCartLinePlaceholderLabel(title)}\n\t\t</div>\n\t);\n}\n\nexport function CartSummaryCard({\n\titems,\n\tsubtotal,\n\ttax,\n\tshipping,\n\tdiscount,\n\ttotal,\n\tonCheckout,\n\tclassName,\n\tstrings: stringsProp,\n}: CartSummaryCardProps) {\n\tconst strings = useStrings(defaultCartSummaryStrings, stringsProp);\n\tconst hasBreakdown = !!(subtotal || tax || shipping || discount);\n\n\treturn (\n\t\t<SmartCard icon={<ShoppingBag className=\"size-4\" />} title={strings.title} className={cn('cart-summary--component w-full', className)}>\n\t\t\t<ItemGroup>\n\t\t\t\t{items.map((it) => {\n\t\t\t\t\tconst title = resolveCartLineTitle(it);\n\t\t\t\t\tconst imageSrc = resolveCartLineImageSrc(it);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Item key={it.id} className=\"cart-summary--item\">\n\t\t\t\t\t\t\t<ItemMedia variant=\"image\" className=\"cart-summary--item-media\">\n\t\t\t\t\t\t\t\t{imageSrc ? (\n\t\t\t\t\t\t\t\t\t<img src={imageSrc} alt={it.imageAlt ?? title} />\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<CartLineImagePlaceholder title={title} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t<ItemContent className=\"cart-summary--item-content\">\n\t\t\t\t\t\t\t\t<ItemTitle>{title}</ItemTitle>\n\t\t\t\t\t\t\t\t{!!it.variantTitle && (\n\t\t\t\t\t\t\t\t\t<ItemDescription clamp={1}>{it.variantTitle}</ItemDescription>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t<ItemActions className=\"cart-summary--item-actions\">\n\t\t\t\t\t\t\t\t<div className=\"flex shrink-0 flex-col items-end gap-0.5\">\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"tabular-nums\">x{it.qty}</Text>\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className=\"tabular-nums\">{it.price}</Text>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t</Item>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ItemGroup>\n\n\t\t\t{!!hasBreakdown && (\n\t\t\t\t<div className=\"mt-3 space-y-1.5 rounded-lg bg-muted/30 px-3 py-2.5\">\n\t\t\t\t\t{!!subtotal && (\n\t\t\t\t\t\t<InlineStat label={strings.subtotal} value={subtotal} mono valueClassName=\"text-xs font-medium\" labelClassName=\"text-xs\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!tax && (\n\t\t\t\t\t\t<InlineStat label={strings.tax} value={tax} mono valueClassName=\"text-xs font-medium\" labelClassName=\"text-xs\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!shipping && (\n\t\t\t\t\t\t<InlineStat label={strings.shipping} value={shipping} mono valueClassName=\"text-xs font-medium\" labelClassName=\"text-xs\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!discount && (\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tlabel={strings.discount}\n\t\t\t\t\t\t\tvalue={`−${stripLeadingMinus(discount)}`}\n\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\tlabelClassName=\"text-xs\"\n\t\t\t\t\t\t\tvalueClassName=\"text-xs font-semibold text-success\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<Separator className=\"my-3\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.total}\n\t\t\t\tvalue={total}\n\t\t\t\tmono\n\t\t\t\tlabelClassName=\"text-sm font-semibold\"\n\t\t\t\tvalueClassName=\"text-base font-bold\"\n\t\t\t/>\n\n\t\t\t{!!onCheckout && (\n\t\t\t\t<Button onClick={onCheckout} fullWidth className=\"mt-4\">{strings.checkout}</Button>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nCartSummaryCard.displayName = 'CartSummaryCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport interface CouponInputStrings {\n\ttitle: string;\n\tplaceholder: string;\n\tapply: string;\n\tremove: string;\n\tapplied: string;\n\tinvalid: string;\n}\n\nexport const defaultCouponInputStrings: CouponInputStrings = {\n\ttitle: 'Have a code?',\n\tplaceholder: 'Enter coupon code',\n\tapply: 'Apply',\n\tremove: 'Remove',\n\tapplied: 'Applied',\n\tinvalid: 'That code is not valid',\n};\n\nexport interface CouponInputCardProps {\n\tappliedCode?: string;\n\tappliedDiscount?: string;\n\terror?: string;\n\tonApply?: (code: string) => void;\n\tonRemove?: () => void;\n\tloading?: boolean;\n\tclassName?: string;\n\tstrings?: StringsProp<CouponInputStrings>;\n}\n","/**\n * CouponInputCard — promo / coupon code entry with an applied state and\n * inline error messaging.\n *\n * Empty state — leading-icon input + apply button, helper line for\n * placeholders or errors. Applied state — success-tinted row with a check\n * medallion, monospaced code, discount delta, and a destructive remove icon.\n */\nimport {\n\tuseState } from 'react';\nimport { Check,\n\tSparkles,\n\tTicketPercent,\n\tX } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Button } from '@/components/base/buttons';\nimport { IconBadge,\n} from '@/components/base/display';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { Input } from '@/components/base/forms/fields';\nimport { useStrings } from '@/lib/strings';\n\nimport { defaultCouponInputStrings, type CouponInputCardProps } from './types';\n\nimport { cn } from '@/lib/utils';\nconst stripLeadingMinus = (value: string): string => value.replace(/^[\\s−-]+/, '');\nconst normalizeCode = (value: string): string => value.toUpperCase();\n\nexport function CouponInputCard({\n\tappliedCode,\n\tappliedDiscount,\n\terror,\n\tonApply,\n\tonRemove,\n\tloading,\n\tclassName,\n\tstrings: stringsProp,\n}: CouponInputCardProps) {\n\tconst strings = useStrings(defaultCouponInputStrings, stringsProp);\n\tconst [code, setCode] = useState('');\n\tconst trimmedCode = code.trim();\n\n\tif (appliedCode) {\n\t\treturn (\n\t\t\t<SmartCard icon={<TicketPercent className=\"size-4\" />} title={strings.title} className={cn('coupon-input--component w-full', className)}>\n\t\t\t\t<Item size=\"small\" variant=\"muted\" className=\"items-center gap-x-2.5 gap-y-1.5 border border-success/30 bg-success/8\">\n\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t<IconBadge icon={Check} tone=\"success\" size=\"default\" className=\"ring-1 ring-success/20\" />\n\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t\t\t<ItemTitle className=\"max-w-full font-mono tracking-wider\">{appliedCode}</ItemTitle>\n\t\t\t\t\t\t<ItemDescription className=\"uppercase tracking-wide\" clamp={1}>\n\t\t\t\t\t\t\t{strings.applied}\n\t\t\t\t\t\t</ItemDescription>\n\t\t\t\t\t</ItemContent>\n\t\t\t\t\t<ItemFooter className=\"border-t border-success/15 pt-1\">\n\t\t\t\t\t\t<span />\n\t\t\t\t\t\t<ItemActions className=\"shrink-0 gap-1.5\">\n\t\t\t\t\t\t\t{!!appliedDiscount && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\t\ttype=\"success\"\n\t\t\t\t\t\t\t\t\tclassName=\"tabular-nums shrink-0\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t−{stripLeadingMinus(appliedDiscount)}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!onRemove && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\t\t\t\taria-label={strings.remove}\n\t\t\t\t\t\t\t\t\tclassName=\"size-7 shrink-0 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<X className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t</Item>\n\t\t\t</SmartCard>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SmartCard icon={<TicketPercent className=\"size-4\" />} title={strings.title} className={cn('coupon-input--component w-full', className)}>\n\t\t\t<div className=\"flex flex-col gap-2\">\n\t\t\t\t<div className=\"flex flex-wrap gap-2\">\n\t\t\t\t\t<div className=\"min-w-44 flex-1\">\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvalue={code}\n\t\t\t\t\t\t\tonChange={(e) => setCode(normalizeCode((e.target as HTMLInputElement).value))}\n\t\t\t\t\t\t\tplaceholder={strings.placeholder}\n\t\t\t\t\t\t\tstartIcon={Sparkles}\n\t\t\t\t\t\t\tautoCapitalize=\"characters\"\n\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t\t\tinvalid={Boolean(error)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"default\"\n\t\t\t\t\t\tonClick={() => onApply?.(trimmedCode)}\n\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\tdisabled={!trimmedCode}\n\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.apply}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t\t{!!error && (\n\t\t\t\t\t<Text size=\"xs\" type=\"error\">{error || strings.invalid}</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nCouponInputCard.displayName = 'CouponInputCard';\n","import type { ComposedBadgeVariant } from '@/components/base/badge/badge';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type OrderStatusKind = 'pending' | 'paid' | 'fulfilled' | 'shipped' | 'delivered' | 'cancelled';\n\nexport interface OrderStatusEvent {\n\tlabel: string;\n\ttimestamp?: string;\n\tcomplete: boolean;\n}\n\nexport interface OrderStatusStrings {\n\ttitle: string;\n\tstatusLabel: string;\n\teta: string;\n\tlatestEvent: string;\n\tcurrentStep: string;\n}\n\nexport const defaultOrderStatusStrings: OrderStatusStrings = {\n\ttitle: 'Order status',\n\tstatusLabel: 'Current status',\n\teta: 'ETA',\n\tlatestEvent: 'Latest event',\n\tcurrentStep: 'Current step',\n};\n\nexport interface OrderStatusCardProps {\n\torderNumber: string;\n\tstatus: OrderStatusKind;\n\tstatusVariant?: ComposedBadgeVariant;\n\tevents: OrderStatusEvent[];\n\tcurrentEta?: string;\n\tclassName?: string;\n\tstrings?: StringsProp<OrderStatusStrings>;\n}\n","/**\n * OrderStatusCard — order number + status badge + readable event timeline.\n * Ideal for dashboards / receipt summaries. Strings overridable for i18n.\n */\nimport { CalendarClock, Check, Circle, Package } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultOrderStatusStrings,\n\ttype OrderStatusCardProps,\n\ttype OrderStatusKind,\n} from './types';\n\nconst VARIANT_BY_STATUS: Record<OrderStatusKind, 'primary' | 'success' | 'warning' | 'error' | 'info' | 'secondary'> = {\n\tpending: 'warning',\n\tpaid: 'info',\n\tfulfilled: 'info',\n\tshipped: 'primary',\n\tdelivered: 'success',\n\tcancelled: 'error',\n};\n\nexport function OrderStatusCard({\n\torderNumber,\n\tstatus,\n\tstatusVariant,\n\tevents,\n\tcurrentEta,\n\tclassName,\n\tstrings: stringsProp,\n}: OrderStatusCardProps) {\n\tconst strings = useStrings(defaultOrderStatusStrings, stringsProp);\n\tconst variant = statusVariant ?? VARIANT_BY_STATUS[status];\n\tconst lastCompleteIdx = events.reduce((acc, e, i) => (e.complete ? i : acc), -1);\n\tconst latestEvent = events[lastCompleteIdx] ?? events[0];\n\tconst nextEvent = events.find((event) => !event.complete);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Package className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={<Badge variant={variant} className=\"capitalize\">{status}</Badge>}\n\t\t\tdescription={`#${orderNumber}`}\n\t\t\tclassName={cn('order-status--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-lg border border-border bg-muted/20 p-3\">\n\t\t\t\t<div className=\"grid gap-3 sm:grid-cols-3\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t\t{strings.statusLabel}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5 capitalize\">\n\t\t\t\t\t\t\t{status}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!latestEvent && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t\t\t{latestEvent.complete ? strings.latestEvent : strings.currentStep}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5\">\n\t\t\t\t\t\t\t\t{latestEvent.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!currentEta && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide\">\n\t\t\t\t\t\t\t\t{strings.eta}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5 tabular-nums\">\n\t\t\t\t\t\t\t\t{currentEta}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{events.length > 0 && (\n\t\t\t\t<ol className=\"mt-4\">\n\t\t\t\t\t{events.map((event, index) => {\n\t\t\t\t\t\tconst isLast = index === events.length - 1;\n\t\t\t\t\t\tconst isCurrent = nextEvent ? event === nextEvent : index === lastCompleteIdx;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={`${event.label}-${index}`} className=\"relative flex gap-3\">\n\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex size-6 shrink-0 items-center justify-center rounded-full border',\n\t\t\t\t\t\t\t\t\t\t\tevent.complete\n\t\t\t\t\t\t\t\t\t\t\t\t? 'border-success bg-success text-success-foreground'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'border-border bg-card text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tisCurrent && !event.complete && 'border-primary text-primary ring-4 ring-primary/10',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{event.complete ? (\n\t\t\t\t\t\t\t\t\t\t\t<Check className=\"size-3.5\" strokeWidth={2.5} />\n\t\t\t\t\t\t\t\t\t\t) : isCurrent ? (\n\t\t\t\t\t\t\t\t\t\t\t<CalendarClock className=\"size-3.5\" />\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<Circle className=\"size-3\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'min-h-6 w-px flex-1',\n\t\t\t\t\t\t\t\t\t\t\t\tindex < lastCompleteIdx ? 'bg-success' : 'bg-border',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={cn('min-w-0 flex-1 pb-4', isLast && 'pb-0')}>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tweight={event.complete || isCurrent ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(!event.complete && !isCurrent && 'text-muted-foreground')}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{event.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!event.timestamp && (\n\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5 tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t{event.timestamp}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ol>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nOrderStatusCard.displayName = 'OrderStatusCard';\n","import type { StringsProp } from '@/lib/strings';\n\nexport type PaymentBrand = 'visa' | 'mastercard' | 'amex' | 'paypal' | 'applepay' | 'googlepay' | 'unknown';\n\nexport interface PaymentMethodStrings {\n\ttitle: string;\n\tdefault: string;\n\tcardHolder: string;\n\texpires: string;\n\tchange: string;\n}\n\nexport const defaultPaymentMethodStrings: PaymentMethodStrings = {\n\ttitle: 'Payment method',\n\tdefault: 'Default',\n\tcardHolder: 'Card holder',\n\texpires: 'Expires',\n\tchange: 'Change',\n};\n\nexport interface PaymentMethodCardProps {\n\tbrand: PaymentBrand;\n\tlast4: string;\n\texpiry?: string; // MM/YY\n\tholderName?: string;\n\tisDefault?: boolean;\n\tonChange?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<PaymentMethodStrings>;\n}\n","/**\n * PaymentMethodCard — saved-card surface. The hero block is rendered as a\n * mini credit-card mock with real card proportions, brand chip top-right, masked\n * PAN center, and holder + expiry on the bottom row. Trailing actions sit\n * in a footer below the mock so the hierarchy is \"card → details → CTA\".\n */\nimport { CreditCard } from 'lucide-react';\nimport { SmartCard } from '@/components/base/cards';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { Badge } from '@/components/base/badge';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultPaymentMethodStrings, type PaymentBrand, type PaymentMethodCardProps } from './types';\n\nconst BRAND_LABEL: Record<PaymentBrand, string> = {\n\tvisa: 'VISA',\n\tmastercard: 'MasterCard',\n\tamex: 'AMEX',\n\tpaypal: 'PayPal',\n\tapplepay: 'Apple Pay',\n\tgooglepay: 'Google Pay',\n\tunknown: 'Card',\n};\n\nconst BRAND_GRADIENT: Record<PaymentBrand, string> = {\n\tvisa: 'from-info via-primary to-info',\n\tmastercard: 'from-warning via-destructive to-destructive',\n\tamex: 'from-info via-primary to-info',\n\tpaypal: 'from-info via-primary to-info',\n\tapplepay: 'from-foreground via-muted-foreground to-foreground',\n\tgooglepay: 'from-success via-primary to-success',\n\tunknown: 'from-foreground via-muted-foreground to-foreground',\n};\n\nexport function PaymentMethodCard({\n\tbrand,\n\tlast4,\n\texpiry,\n\tholderName,\n\tisDefault,\n\tonChange,\n\tclassName,\n\tstrings: stringsProp,\n}: PaymentMethodCardProps) {\n\tconst strings = useStrings(defaultPaymentMethodStrings, stringsProp);\n\tconst brandLabel = BRAND_LABEL[brand];\n\tconst gradient = BRAND_GRADIENT[brand];\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<CreditCard className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={isDefault ? <Badge variant=\"primary\">{strings.default}</Badge> : null}\n\t\t\theaderAction={onChange ? (\n\t\t\t\t<Button buttonStyle=\"ghost\" variant=\"secondary\" onClick={onChange}>\n\t\t\t\t\t{strings.change}\n\t\t\t\t</Button>\n\t\t\t) : undefined}\n\t\t\tclassName={cn('payment-method--component w-full', className)}\n\t\t>\n\t\t\t{/* Mini card mock */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative mx-auto flex aspect-[85.6/53.98] w-full max-w-[22rem] flex-col justify-between overflow-hidden rounded-lg bg-gradient-to-br p-3.5 text-inverse-foreground shadow-sm ring-1 ring-inverse-border',\n\t\t\t\t\tgradient,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"relative flex items-start justify-between\">\n\t\t\t\t\t<div className=\"flex size-7 items-center justify-center rounded-md bg-gradient-to-br from-warning/80 to-warning shadow-sm\">\n\t\t\t\t\t\t<div className=\"size-4 rounded-sm border border-warning-foreground/25 bg-warning-foreground/15\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tweight=\"bold\"\n\t\t\t\t\t\tclassName=\"rounded bg-inverse-surface px-2 py-0.5 tracking-[0.15em] text-inverse-foreground backdrop-blur-sm\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{brandLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\tclassName=\"block font-mono tracking-[0.25em] text-inverse-foreground\"\n\t\t\t\t\t>\n\t\t\t\t\t\t•••• •••• •••• {last4}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"relative flex items-end justify-between gap-3\">\n\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t{!!holderName && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Text size=\"xs\" className=\"block uppercase tracking-wider text-inverse-subtle\">{strings.cardHolder}</Text>\n\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate text-inverse-foreground\">{holderName}</Text>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!expiry && (\n\t\t\t\t\t\t<div className=\"text-right shrink-0\">\n\t\t\t\t\t\t\t<Text size=\"xs\" className=\"block uppercase tracking-wider text-inverse-subtle\">{strings.expires}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className=\"tabular-nums text-inverse-foreground\">{expiry}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</SmartCard>\n\t);\n}\n\nPaymentMethodCard.displayName = 'PaymentMethodCard';\n","import type {\n\tSeoListingCheckId,\n\tSeoListingCheckResult,\n\tSeoListingCheckStatus,\n\tSeoListingScoreInput,\n\tSeoListingScoreLimits,\n\tSeoListingScoreResult,\n} from './types';\n\nexport const DEFAULT_SEO_LISTING_LIMITS: Required<SeoListingScoreLimits> = {\n\ttitleMin: 35,\n\ttitleMax: 60,\n\tdescriptionMin: 120,\n\tdescriptionMax: 160,\n\tpermalinkMax: 75,\n};\n\nfunction resolveLimits(limits?: SeoListingScoreLimits): Required<SeoListingScoreLimits> {\n\treturn {\n\t\t...DEFAULT_SEO_LISTING_LIMITS,\n\t\t...limits,\n\t};\n}\n\nfunction clampScore(value: number): number {\n\tif (!Number.isFinite(value)) return 0;\n\treturn Math.max(0, Math.min(1, value));\n}\n\nfunction getCheckStatus(score: number, maxScore: number): SeoListingCheckStatus {\n\tif (maxScore <= 0) return 'missing';\n\tconst ratio = score / maxScore;\n\tif (ratio >= 0.9) return 'good';\n\tif (ratio >= 0.5) return 'review';\n\treturn 'missing';\n}\n\nfunction makeCheck(\n\tid: SeoListingCheckId,\n\tscoreRatio: number,\n\tmaxScore: number,\n\tactual: number,\n\trange?: Pick<SeoListingCheckResult, 'min' | 'max'>,\n): SeoListingCheckResult {\n\tconst score = Math.round(clampScore(scoreRatio) * maxScore);\n\treturn {\n\t\tid,\n\t\tscore,\n\t\tmaxScore,\n\t\tactual,\n\t\tstatus: getCheckStatus(score, maxScore),\n\t\t...range,\n\t};\n}\n\nfunction lengthScore(value: string, min: number, max: number): number {\n\tconst length = value.trim().length;\n\tif (length === 0) return 0;\n\tif (length >= min && length <= max) return 1;\n\tif (length < min) return Math.max(0.35, length / min);\n\tif (length > max * 2) return 0.35;\n\tconst overBy = length - max;\n\treturn Math.max(0.55, 1 - overBy / max);\n}\n\nexport function getSeoPermalinkPath(permalink?: string): string {\n\tconst value = permalink?.trim() ?? '';\n\tif (!value) return '';\n\n\tconst withoutHash = value.split('#')[0] ?? '';\n\tconst withoutQuery = withoutHash.split('?')[0] ?? '';\n\tconst withoutProtocol = withoutQuery.replace(/^https?:\\/\\/[^/]+/i, '');\n\n\treturn withoutProtocol.replace(/^\\/+|\\/+$/g, '');\n}\n\nexport function getSeoPermalinkSlug(permalink?: string): string {\n\tconst path = getSeoPermalinkPath(permalink);\n\tconst parts = path.split('/').filter(Boolean);\n\treturn parts.at(-1) ?? '';\n}\n\nfunction permalinkScore(permalink?: string, max = DEFAULT_SEO_LISTING_LIMITS.permalinkMax): number {\n\tconst path = getSeoPermalinkPath(permalink);\n\tif (!path) return 0;\n\tif (path.length <= max) return 1;\n\tif (path.length > max * 2) return 0.35;\n\treturn Math.max(0.55, 1 - (path.length - max) / max);\n}\n\nfunction slugScore(permalink?: string): number {\n\tconst slug = getSeoPermalinkSlug(permalink);\n\tif (!slug) return 0;\n\tif (/^[\\p{L}\\p{N}]+(?:-[\\p{L}\\p{N}]+)*$/u.test(slug) && slug === slug.toLowerCase()) {\n\t\treturn 1;\n\t}\n\tif (!/\\s/.test(slug) && !/[?#]/.test(slug)) return 0.65;\n\treturn 0.25;\n}\n\nfunction urlScore(baseUrl?: string): number {\n\tconst value = baseUrl?.trim() ?? '';\n\tif (!value) return 0;\n\tif (/^https:\\/\\//i.test(value)) return 1;\n\tif (/^http:\\/\\//i.test(value)) return 0.6;\n\treturn 0.45;\n}\n\nfunction keywordScore(input: SeoListingScoreInput): number | null {\n\tconst keyword = input.keyword?.trim().toLowerCase();\n\tif (!keyword) return null;\n\n\tconst haystack = [\n\t\tinput.title,\n\t\tinput.description,\n\t\tgetSeoPermalinkPath(input.permalink),\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\t\t.toLowerCase();\n\n\tif (!haystack) return 0;\n\treturn haystack.includes(keyword) ? 1 : 0.35;\n}\n\nexport function calculateSeoListingScore(input: SeoListingScoreInput): SeoListingScoreResult {\n\tconst limits = resolveLimits(input.limits);\n\tconst title = input.title?.trim() ?? '';\n\tconst description = input.description?.trim() ?? '';\n\tconst permalinkPath = getSeoPermalinkPath(input.permalink);\n\tconst slug = getSeoPermalinkSlug(input.permalink);\n\tconst checks: SeoListingCheckResult[] = [\n\t\tmakeCheck('title', lengthScore(title, limits.titleMin, limits.titleMax), 30, title.length, {\n\t\t\tmin: limits.titleMin,\n\t\t\tmax: limits.titleMax,\n\t\t}),\n\t\tmakeCheck(\n\t\t\t'description',\n\t\t\tlengthScore(description, limits.descriptionMin, limits.descriptionMax),\n\t\t\t30,\n\t\t\tdescription.length,\n\t\t\t{\n\t\t\t\tmin: limits.descriptionMin,\n\t\t\t\tmax: limits.descriptionMax,\n\t\t\t},\n\t\t),\n\t\tmakeCheck('permalink', permalinkScore(input.permalink, limits.permalinkMax), 15, permalinkPath.length, {\n\t\t\tmax: limits.permalinkMax,\n\t\t}),\n\t\tmakeCheck('slug', slugScore(input.permalink), 10, slug.length),\n\t\tmakeCheck('url', urlScore(input.baseUrl), 10, input.baseUrl?.trim().length ?? 0),\n\t];\n\n\tconst keyword = keywordScore(input);\n\tif (keyword !== null) {\n\t\tchecks.push(makeCheck('keyword', keyword, 5, input.keyword?.trim().length ?? 0));\n\t}\n\n\tconst score = Math.round(\n\t\t(checks.reduce((sum, check) => sum + check.score, 0) /\n\t\t\tchecks.reduce((sum, check) => sum + check.maxScore, 0)) *\n\t\t\t100,\n\t);\n\n\treturn {\n\t\tscore,\n\t\tstatus: getCheckStatus(score, 100),\n\t\tchecks,\n\t\tlimits,\n\t};\n}\n","import type { ReactNode } from 'react';\n\nimport type { StringsProp } from '@/lib/strings';\n\nexport type SeoListingCheckId =\n\t| 'title'\n\t| 'description'\n\t| 'permalink'\n\t| 'slug'\n\t| 'url'\n\t| 'keyword';\n\nexport type SeoListingCheckStatus = 'good' | 'review' | 'missing';\n\nexport interface SeoListingScoreLimits {\n\ttitleMin?: number;\n\ttitleMax?: number;\n\tdescriptionMin?: number;\n\tdescriptionMax?: number;\n\tpermalinkMax?: number;\n}\n\nexport interface SeoListingScoreInput {\n\ttitle?: string;\n\tdescription?: string;\n\tpermalink?: string;\n\tbaseUrl?: string;\n\tkeyword?: string;\n\tlimits?: SeoListingScoreLimits;\n}\n\nexport interface SeoListingCheckResult {\n\tid: SeoListingCheckId;\n\tstatus: SeoListingCheckStatus;\n\tscore: number;\n\tmaxScore: number;\n\tactual: number;\n\tmin?: number;\n\tmax?: number;\n}\n\nexport interface SeoListingScoreResult {\n\tscore: number;\n\tstatus: SeoListingCheckStatus;\n\tchecks: SeoListingCheckResult[];\n\tlimits: Required<SeoListingScoreLimits>;\n}\n\nexport interface SeoListingCardStrings {\n\ttitle: string;\n\teditLabel: string;\n\tscoreLabel: string;\n\tchecksLabel: string;\n\tsiteFallback: string;\n\ttitleFallback: string;\n\tdescriptionFallback: string;\n\turlFallback: string;\n\tcharacters: string;\n\tmaxLabel: string;\n\ttargetLabel: string;\n\tstatus: Record<SeoListingCheckStatus, string>;\n\tcheckLabels: Record<SeoListingCheckId, string>;\n\tcheckHints: Record<SeoListingCheckId, string>;\n}\n\nexport const defaultSeoListingCardStrings: SeoListingCardStrings = {\n\ttitle: 'Search engine listing',\n\teditLabel: 'Edit search listing',\n\tscoreLabel: 'SEO score',\n\tchecksLabel: 'SEO checks',\n\tsiteFallback: 'Website',\n\ttitleFallback: 'Add an SEO title',\n\tdescriptionFallback: 'Add a meta description to control the search snippet.',\n\turlFallback: 'https://example.com',\n\tcharacters: 'characters',\n\tmaxLabel: 'max',\n\ttargetLabel: 'target',\n\tstatus: {\n\t\tgood: 'Good',\n\t\treview: 'Review',\n\t\tmissing: 'Missing',\n\t},\n\tcheckLabels: {\n\t\ttitle: 'Title',\n\t\tdescription: 'Description',\n\t\tpermalink: 'Permalink',\n\t\tslug: 'Slug format',\n\t\turl: 'URL',\n\t\tkeyword: 'Keyword',\n\t},\n\tcheckHints: {\n\t\ttitle: 'Keep the title inside the target range.',\n\t\tdescription: 'Use a complete meta description inside the target range.',\n\t\tpermalink: 'Keep the permalink readable and below the maximum length.',\n\t\tslug: 'Use lowercase words separated by hyphens.',\n\t\turl: 'Prefer a secure canonical URL.',\n\t\tkeyword: 'Use the focus keyword in the title, description, or permalink.',\n\t},\n};\n\nexport interface SeoListingCardProps {\n\tsiteName?: string;\n\tbaseUrl?: string;\n\tpathSegments?: string[];\n\tpermalink?: string;\n\ttitle?: string;\n\tdescription?: string;\n\tprice?: ReactNode;\n\tkeyword?: string;\n\tscore?: SeoListingScoreResult;\n\tlimits?: SeoListingScoreLimits;\n\tshowChecks?: boolean;\n\tonEdit?: () => void;\n\tclassName?: string;\n\tstrings?: StringsProp<SeoListingCardStrings>;\n}\n","/**\n * SeoListingCard — search-result preview with a reusable SEO score.\n *\n * The card is render-only: consumers own form state and call `onEdit` or\n * compose their own editor around the exported `calculateSeoListingScore`\n * helper. Scoring is intentionally configurable through `limits` so apps can\n * tune their own title, description, and permalink thresholds.\n */\nimport {\n\tCheckCircle2,\n\tCircleAlert,\n\tExternalLink,\n\tGauge,\n\tPencil,\n\tSearch,\n\tTriangleAlert,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Progress } from '@/components/base/display/progress';\nimport { Text, TextLink } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tcalculateSeoListingScore,\n\tgetSeoPermalinkPath,\n} from './seo-listing-score';\nimport {\n\tdefaultSeoListingCardStrings,\n\ttype SeoListingCardProps,\n\ttype SeoListingCardStrings,\n\ttype SeoListingCheckResult,\n\ttype SeoListingCheckStatus,\n} from './types';\n\nconst SCORE_BADGE_VARIANT: Record<SeoListingCheckStatus, ComposedBadgeVariant> = {\n\tgood: 'info',\n\treview: 'warning',\n\tmissing: 'error',\n};\n\nconst SCORE_PROGRESS_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: '[&_[data-slot=progress-indicator]]:bg-info',\n\treview: '[&_[data-slot=progress-indicator]]:bg-warning',\n\tmissing: '[&_[data-slot=progress-indicator]]:bg-destructive',\n};\n\nconst SCORE_PANEL_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'border-info/20 bg-info/5',\n\treview: 'border-warning/30 bg-warning/10',\n\tmissing: 'border-destructive/20 bg-destructive/5',\n};\n\nconst SCORE_ICON_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'bg-info/10 text-info',\n\treview: 'bg-warning/20 text-warning-foreground',\n\tmissing: 'bg-destructive/10 text-destructive',\n};\n\nconst CHECK_ICON: Record<SeoListingCheckStatus, LucideIcon> = {\n\tgood: CheckCircle2,\n\treview: TriangleAlert,\n\tmissing: CircleAlert,\n};\n\nconst CHECK_ICON_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'bg-info/10 text-info',\n\treview: 'bg-warning/30 text-warning-foreground',\n\tmissing: 'bg-destructive/10 text-destructive',\n};\n\nconst CHECK_ROW_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'border-info/25 bg-info/5',\n\treview: 'border-warning/30 bg-warning/10',\n\tmissing: 'border-destructive/20 bg-destructive/5',\n};\n\nfunction trimSlashes(value: string): string {\n\treturn value.replace(/^\\/+|\\/+$/g, '');\n}\n\nfunction buildUrlParts(baseUrl: string, pathSegments: string[], permalink?: string): string[] {\n\tconst path = getSeoPermalinkPath(permalink);\n\tconst permalinkParts = path.split('/').filter(Boolean);\n\treturn [\n\t\tbaseUrl,\n\t\t...pathSegments.map(trimSlashes).filter(Boolean),\n\t\t...permalinkParts,\n\t].filter(Boolean);\n}\n\nfunction buildHref(baseUrl: string, pathSegments: string[], permalink?: string): string | undefined {\n\tif (!baseUrl.trim()) return undefined;\n\tconst base = baseUrl.replace(/\\/+$/g, '');\n\tconst path = [\n\t\t...pathSegments.map(trimSlashes).filter(Boolean),\n\t\t...getSeoPermalinkPath(permalink).split('/').filter(Boolean),\n\t].join('/');\n\n\treturn path ? `${base}/${path}` : base;\n}\n\nfunction getCheckDetail(check: SeoListingCheckResult, strings: SeoListingCardStrings): string {\n\tif (check.id === 'title' || check.id === 'description') {\n\t\treturn `${check.actual}/${check.max} ${strings.characters} · ${strings.targetLabel} ${check.min}-${check.max}`;\n\t}\n\tif (check.id === 'permalink') {\n\t\treturn `${check.actual}/${check.max} ${strings.characters} ${strings.maxLabel}`;\n\t}\n\treturn strings.checkHints[check.id];\n}\n\nfunction SeoCheckRow({\n\tcheck,\n\tdetail,\n\tstrings,\n}: {\n\tcheck: SeoListingCheckResult;\n\tdetail: ReactNode;\n\tstrings: SeoListingCardStrings;\n}) {\n\tconst Icon = CHECK_ICON[check.status];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'seo-listing-card--check min-w-0 rounded-radius-sm border px-space-lg py-space-md',\n\t\t\t\tCHECK_ROW_CLASS[check.status],\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 items-start gap-space-lg\">\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'seo-listing-card--check-icon inline-flex size-icon-lg shrink-0 items-center justify-center rounded-radius-sm',\n\t\t\t\t\t\tCHECK_ICON_CLASS[check.status],\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Icon className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t</span>\n\t\t\t\t<div className=\"min-w-0 flex-1 space-y-space-2xs\">\n\t\t\t\t\t<div className=\"flex min-w-0 items-center justify-between gap-space-sm\">\n\t\t\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t\t\t{strings.checkLabels[check.id]}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tvariant={SCORE_BADGE_VARIANT[check.status]}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.status[check.status]}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" lineHeight=\"snug\">\n\t\t\t\t\t\t{detail}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport function SeoListingCard({\n\tsiteName,\n\tbaseUrl,\n\tpathSegments = [],\n\tpermalink,\n\ttitle,\n\tdescription,\n\tprice,\n\tkeyword,\n\tscore,\n\tlimits,\n\tshowChecks = true,\n\tonEdit,\n\tclassName,\n\tstrings: stringsProp,\n}: SeoListingCardProps) {\n\tconst strings = useStrings(defaultSeoListingCardStrings, stringsProp);\n\tconst resolvedBaseUrl = baseUrl?.trim() || strings.urlFallback;\n\tconst resolvedSiteName = siteName?.trim() || strings.siteFallback;\n\tconst resolvedTitle = title?.trim() || strings.titleFallback;\n\tconst resolvedDescription = description?.trim() || strings.descriptionFallback;\n\tconst scoreResult = score ?? calculateSeoListingScore({\n\t\ttitle,\n\t\tdescription,\n\t\tpermalink,\n\t\tbaseUrl,\n\t\tkeyword,\n\t\tlimits,\n\t});\n\tconst href = buildHref(resolvedBaseUrl, pathSegments, permalink);\n\tconst urlParts = buildUrlParts(resolvedBaseUrl, pathSegments, permalink);\n\tconst statusVariant = SCORE_BADGE_VARIANT[scoreResult.status];\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Search className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={(\n\t\t\t\t<Badge variant={statusVariant} size=\"small\" inline className=\"shrink-0\">\n\t\t\t\t\t{scoreResult.score}/100 {strings.status[scoreResult.status]}\n\t\t\t\t</Badge>\n\t\t\t)}\n\t\t\tclassName={cn('seo-listing-card--component w-full', className)}\n\t\t\tcontentClassName=\"space-y-space-xl\"\n\t\t\theaderAction={\n\t\t\t\tonEdit ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\taria-label={strings.editLabel}\n\t\t\t\t\t\tonClick={onEdit}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Pencil className=\"size-icon-sm\" />\n\t\t\t\t\t</Button>\n\t\t\t\t) : undefined\n\t\t\t}\n\t\t>\n\t\t\t<div className=\"seo-listing-card--preview min-w-0 rounded-radius border border-border/60 bg-background px-control py-space-xl shadow-xs\">\n\t\t\t\t<div className=\"min-w-0 space-y-space-sm\">\n\t\t\t\t\t<div className=\"flex min-w-0 items-center gap-space-sm\">\n\t\t\t\t\t\t<Text weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t\t\t{resolvedSiteName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{!!href && <ExternalLink className=\"size-icon-sm shrink-0 text-muted-foreground\" aria-hidden=\"true\" />}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"seo-listing-card--url flex min-w-0 flex-wrap items-center gap-x-space-sm gap-y-space-2xs\">\n\t\t\t\t\t\t{urlParts.map((part, index) => (\n\t\t\t\t\t\t\t<span key={`${part}-${index}`} className=\"inline-flex min-w-0 items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t\t{part}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{index < urlParts.length - 1 && (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t›\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t{href ? (\n\t\t\t\t\t\t<TextLink\n\t\t\t\t\t\t\thref={href}\n\t\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\t\t\tunderline={false}\n\t\t\t\t\t\t\tclassName=\"seo-listing-card--snippet-title block text-info\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{resolvedTitle}\n\t\t\t\t\t\t</TextLink>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\t\t\tclassName=\"seo-listing-card--snippet-title text-info\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{resolvedTitle}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t<Text type=\"secondary\" lineHeight=\"relaxed\" className=\"seo-listing-card--description max-w-4xl\">\n\t\t\t\t\t\t{resolvedDescription}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!price && (\n\t\t\t\t\t\t<Text tag=\"div\" size=\"xs\" type=\"secondary\" className=\"seo-listing-card--price tabular-nums\">\n\t\t\t\t\t\t\t{price}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className={cn('seo-listing-card--score overflow-hidden rounded-radius border', SCORE_PANEL_CLASS[scoreResult.status])}>\n\t\t\t\t<div className=\"flex min-w-0 items-center justify-between gap-space-lg border-b border-border/60 px-control py-space-lg\">\n\t\t\t\t\t<div className=\"flex min-w-0 items-center gap-space-sm\">\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'seo-listing-card--score-icon inline-flex size-icon-lg shrink-0 items-center justify-center rounded-radius-sm',\n\t\t\t\t\t\t\t\tSCORE_ICON_CLASS[scoreResult.status],\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Gauge className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.scoreLabel}</Text>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t{scoreResult.checks.length} {strings.checksLabel}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"flex shrink-0 items-center gap-space-sm\">\n\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t{scoreResult.score}/100\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Badge variant={statusVariant} size=\"small\" inline>\n\t\t\t\t\t\t\t{strings.status[scoreResult.status]}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"space-y-space-lg px-control py-space-lg\">\n\t\t\t\t\t<Progress\n\t\t\t\t\t\tvalue={scoreResult.score}\n\t\t\t\t\t\taria-label={strings.scoreLabel}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'seo-listing-card--score-progress',\n\t\t\t\t\t\t\t'[&_[data-slot=progress-track]]:h-space-md',\n\t\t\t\t\t\t\tSCORE_PROGRESS_CLASS[scoreResult.status],\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t{!!showChecks && (\n\t\t\t\t\t\t<div className=\"seo-listing-card--checks grid gap-x-space-lg gap-y-space-lg lg:grid-cols-2\">\n\t\t\t\t\t\t\t{scoreResult.checks.map((check) => (\n\t\t\t\t\t\t\t\t<SeoCheckRow\n\t\t\t\t\t\t\t\t\tkey={check.id}\n\t\t\t\t\t\t\t\t\tcheck={check}\n\t\t\t\t\t\t\t\t\tdetail={getCheckDetail(check, strings)}\n\t\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nSeoListingCard.displayName = 'SeoListingCard';\n","import type { SelectOption, WeightUnit } from '@/components/base/forms';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type InventoryPolicy = 'deny' | 'continue';\nexport type InventoryStatus = 'in_stock' | 'low_stock' | 'out_of_stock' | 'untracked';\n\nexport interface InventorySectionValue {\n\tsku?: string;\n\tbarcode?: string;\n\ttrackQuantity?: boolean;\n\tavailable?: string;\n\tcommitted?: string;\n\tincoming?: string;\n\tlowStockThreshold?: string;\n\tinventoryPolicy?: InventoryPolicy;\n\tlocationId?: string;\n\tbinLocation?: string;\n\trequiresShipping?: boolean;\n\tweight?: string;\n\tweightUnit?: WeightUnit;\n\tcountryOfOrigin?: string;\n\thsCode?: string;\n\ttags?: string[];\n}\n\nexport type InventorySectionField = keyof InventorySectionValue;\n\nexport type InventorySectionName =\n\t| 'summary'\n\t| 'identity'\n\t| 'tracking'\n\t| 'location'\n\t| 'shipping'\n\t| 'customs'\n\t| 'tags';\n\nexport interface InventorySectionChange {\n\tfield: InventorySectionField;\n\tvalue: InventorySectionValue[InventorySectionField];\n\tpreviousValue: InventorySectionValue[InventorySectionField];\n}\n\nexport interface InventorySectionMetric {\n\tid: string;\n\tlabel: string;\n\tvalue: string;\n\tdescription?: string;\n\ttone?: 'default' | 'success' | 'warning' | 'error' | 'info';\n}\n\nexport interface InventorySectionStrings {\n\ttitle: string;\n\tdescription: string;\n\tstatus: Record<InventoryStatus, string>;\n\tsections: Record<Exclude<InventorySectionName, 'summary'>, string>;\n\tfields: Record<InventorySectionField, string>;\n\tplaceholders: Partial<Record<InventorySectionField, string>>;\n\thints: Partial<Record<InventorySectionField, string>>;\n\tactions: {\n\t\tgenerateSku: string;\n\t\trestock: string;\n\t};\n\tpolicyOptions: Record<InventoryPolicy, {\n\t\tlabel: string;\n\t\tdescription: string;\n\t}>;\n\tsummary: {\n\t\tavailable: string;\n\t\tcommitted: string;\n\t\tincoming: string;\n\t\tthreshold: string;\n\t\tuntracked: string;\n\t};\n\ttagInput: {\n\t\tplaceholder: string;\n\t\temptyRecommendations: string;\n\t\tclearAll: string;\n\t\tsummary: (current: number, max: number) => string;\n\t};\n}\n\nexport const defaultInventorySectionStrings: InventorySectionStrings = {\n\ttitle: 'Inventory',\n\tdescription: 'Manage stock tracking, availability, fulfillment, and compliance details.',\n\tstatus: {\n\t\tin_stock: 'In stock',\n\t\tlow_stock: 'Low stock',\n\t\tout_of_stock: 'Out of stock',\n\t\tuntracked: 'Not tracked',\n\t},\n\tsections: {\n\t\tidentity: 'Identifiers',\n\t\ttracking: 'Stock tracking',\n\t\tlocation: 'Location',\n\t\tshipping: 'Shipping',\n\t\tcustoms: 'Customs',\n\t\ttags: 'Tags',\n\t},\n\tfields: {\n\t\tsku: 'SKU',\n\t\tbarcode: 'Barcode',\n\t\ttrackQuantity: 'Track quantity',\n\t\tavailable: 'Available',\n\t\tcommitted: 'Committed',\n\t\tincoming: 'Incoming',\n\t\tlowStockThreshold: 'Low-stock threshold',\n\t\tinventoryPolicy: 'When sold out',\n\t\tlocationId: 'Stock location',\n\t\tbinLocation: 'Bin / shelf',\n\t\trequiresShipping: 'Requires shipping',\n\t\tweight: 'Weight',\n\t\tweightUnit: 'Weight unit',\n\t\tcountryOfOrigin: 'Country of origin',\n\t\thsCode: 'HS code',\n\t\ttags: 'Inventory tags',\n\t},\n\tplaceholders: {\n\t\tsku: 'BAL-750-CL',\n\t\tbarcode: 'Scan or enter barcode',\n\t\tavailable: '0',\n\t\tcommitted: '0',\n\t\tincoming: '0',\n\t\tlowStockThreshold: '5',\n\t\tlocationId: 'Select location',\n\t\tbinLocation: 'Aisle / shelf / bin',\n\t\tweight: '0.00',\n\t\tcountryOfOrigin: 'Country code or name',\n\t\thsCode: 'e.g. 2204.21',\n\t\ttags: 'Add tag...',\n\t},\n\thints: {\n\t\tsku: 'Internal stock keeping unit.',\n\t\tbarcode: 'GTIN, UPC, EAN, ISBN, or internal scan code.',\n\t\tavailable: 'Units currently sellable at this location.',\n\t\tcommitted: 'Units already reserved by open orders.',\n\t\tincoming: 'Units expected from transfers, suppliers, or production.',\n\t\tlowStockThreshold: 'Used for low-stock warnings.',\n\t\tinventoryPolicy: 'Choose whether checkout should block when inventory reaches zero.',\n\t\tlocationId: 'Where this inventory is stocked or fulfilled from.',\n\t\tbinLocation: 'Optional warehouse shelf, bay, or bin reference.',\n\t\tweight: 'Used for shipping rates and fulfillment labels.',\n\t\tcountryOfOrigin: 'Required for international customs in many markets.',\n\t\thsCode: 'Harmonized System tariff code for customs.',\n\t\ttags: 'Optional operational labels such as preorder, seasonal, or batch codes.',\n\t},\n\tactions: {\n\t\tgenerateSku: 'Generate SKU',\n\t\trestock: 'Restock',\n\t},\n\tpolicyOptions: {\n\t\tdeny: {\n\t\t\tlabel: 'Stop selling',\n\t\t\tdescription: 'Block checkout when available inventory reaches zero.',\n\t\t},\n\t\tcontinue: {\n\t\t\tlabel: 'Continue selling',\n\t\t\tdescription: 'Allow backorders or made-to-order fulfillment.',\n\t\t},\n\t},\n\tsummary: {\n\t\tavailable: 'Available',\n\t\tcommitted: 'Committed',\n\t\tincoming: 'Incoming',\n\t\tthreshold: 'Low-stock at',\n\t\tuntracked: 'Inventory is not tracked for this product.',\n\t},\n\ttagInput: {\n\t\tplaceholder: 'Add inventory tag...',\n\t\temptyRecommendations: 'No matching tags.',\n\t\tclearAll: 'Clear tags',\n\t\tsummary: (current, max) => `${current} / ${max} tags`,\n\t},\n};\n\nexport interface InventorySectionCardProps {\n\tvalue: InventorySectionValue;\n\tonChange?: (value: InventorySectionValue, change: InventorySectionChange) => void;\n\terrors?: Partial<Record<InventorySectionField, string>>;\n\tdisabled?: boolean;\n\treadOnly?: boolean;\n\tvisibleSections?: Partial<Record<InventorySectionName, boolean>>;\n\tvisibleFields?: Partial<Record<InventorySectionField, boolean>>;\n\tlocationOptions?: SelectOption[];\n\tcountryOptions?: SelectOption[];\n\ttagRecommendations?: string[];\n\tmaxTags?: number;\n\tonGenerateSku?: (value: InventorySectionValue) => string | void;\n\tonRestock?: (value: InventorySectionValue) => void;\n\tclassName?: string;\n\tstrings?: StringsProp<InventorySectionStrings>;\n}\n","/**\n * InventorySectionCard — controlled commerce inventory form card.\n *\n * The component owns no persistence and performs no routing. Consumers pass a\n * `value` object, receive field-level `onChange` updates, and decide how to\n * submit or validate. Section and field visibility props let apps reuse the\n * same surface for physical products, digital products, variants, and location\n * level inventory without forking the component.\n */\nimport {\n\tBarcode,\n\tPackageCheck,\n\tRefreshCw,\n\tSparkles,\n} from 'lucide-react';\n\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport {\n\tCardRadioGroup,\n\tDecimalInput,\n\tFormField,\n\tInput,\n\tSelect,\n\tTagsInput,\n\tToggleField,\n\tWeightInput,\n} from '@/components/base/forms';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultInventorySectionStrings,\n\ttype InventoryPolicy,\n\ttype InventorySectionCardProps,\n\ttype InventorySectionField,\n\ttype InventorySectionMetric,\n\ttype InventorySectionName,\n\ttype InventorySectionValue,\n\ttype InventoryStatus,\n} from './types';\n\nconst STATUS_VARIANT: Record<InventoryStatus, ComposedBadgeVariant> = {\n\tin_stock: 'success',\n\tlow_stock: 'warning',\n\tout_of_stock: 'error',\n\tuntracked: 'secondary',\n};\n\nconst METRIC_TONE_CLASS: Record<NonNullable<InventorySectionMetric['tone']>, string> = {\n\tdefault: 'border-border/60 bg-muted/20',\n\tsuccess: 'border-success/20 bg-success/5',\n\twarning: 'border-warning/30 bg-warning/10',\n\terror: 'border-destructive/20 bg-destructive/5',\n\tinfo: 'border-info/20 bg-info/5',\n};\n\nfunction parseQuantity(value?: string): number | undefined {\n\tif (value === undefined || value.trim() === '') return undefined;\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction getInventoryStatus(value: InventorySectionValue): InventoryStatus {\n\tconst isTracked = value.trackQuantity ?? true;\n\tif (!isTracked) return 'untracked';\n\n\tconst available = parseQuantity(value.available) ?? 0;\n\tif (available <= 0) return 'out_of_stock';\n\n\tconst threshold = parseQuantity(value.lowStockThreshold);\n\tif (threshold !== undefined && available <= threshold) return 'low_stock';\n\n\treturn 'in_stock';\n}\n\nfunction getMetricTone(metricId: string, status: InventoryStatus): InventorySectionMetric['tone'] {\n\tif (metricId === 'available') {\n\t\tif (status === 'in_stock') return 'success';\n\t\tif (status === 'low_stock') return 'warning';\n\t\tif (status === 'out_of_stock') return 'error';\n\t\treturn 'default';\n\t}\n\tif (metricId === 'incoming') return 'info';\n\treturn 'default';\n}\n\nfunction SectionHeading({\n\tchildren,\n\tclassName,\n}: {\n\tchildren: string;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<Text\n\t\t\tweight=\"semibold\"\n\t\t\tclassName={cn('inventory-section-card--section-title', className)}\n\t\t>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nfunction SummaryMetric({ metric }: { metric: InventorySectionMetric }) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'inventory-section-card--metric min-w-0 rounded-radius-sm border px-space-lg py-space-md',\n\t\t\t\tMETRIC_TONE_CLASS[metric.tone ?? 'default'],\n\t\t\t)}\n\t\t>\n\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t{metric.label}\n\t\t\t</Text>\n\t\t\t<Text weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t{metric.value}\n\t\t\t</Text>\n\t\t\t{!!metric.description && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" lineHeight=\"snug\">\n\t\t\t\t\t{metric.description}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function InventorySectionCard({\n\tvalue,\n\tonChange,\n\terrors,\n\tdisabled = false,\n\treadOnly = false,\n\tvisibleSections,\n\tvisibleFields,\n\tlocationOptions = [],\n\tcountryOptions = [],\n\ttagRecommendations,\n\tmaxTags,\n\tonGenerateSku,\n\tonRestock,\n\tclassName,\n\tstrings: stringsProp,\n}: InventorySectionCardProps) {\n\tconst strings = useStrings(defaultInventorySectionStrings, stringsProp);\n\tconst status = getInventoryStatus(value);\n\tconst isDisabled = disabled || readOnly;\n\tconst isTracked = value.trackQuantity ?? true;\n\tconst requiresShipping = value.requiresShipping ?? true;\n\tconst shippingFieldsDisabled = isDisabled || !requiresShipping;\n\n\tconst isSectionVisible = (section: InventorySectionName) => visibleSections?.[section] !== false;\n\tconst isFieldVisible = (field: InventorySectionField) => visibleFields?.[field] !== false;\n\n\tconst updateField = <TField extends InventorySectionField>(\n\t\tfield: TField,\n\t\tnextValue: InventorySectionValue[TField],\n\t) => {\n\t\tconst previousValue = value[field];\n\t\tconst next = {\n\t\t\t...value,\n\t\t\t[field]: nextValue,\n\t\t};\n\n\t\tonChange?.(next, {\n\t\t\tfield,\n\t\t\tvalue: nextValue,\n\t\t\tpreviousValue,\n\t\t});\n\t};\n\n\tconst handleGenerateSku = () => {\n\t\tif (!onGenerateSku || isDisabled) return;\n\t\tconst generatedSku = onGenerateSku(value);\n\t\tif (typeof generatedSku === 'string') {\n\t\t\tupdateField('sku', generatedSku);\n\t\t}\n\t};\n\n\tconst metrics: InventorySectionMetric[] = [\n\t\t{\n\t\t\tid: 'available',\n\t\t\tlabel: strings.summary.available,\n\t\t\tvalue: isTracked ? (value.available || '0') : '-',\n\t\t\tdescription: isTracked ? strings.summary.threshold : strings.summary.untracked,\n\t\t\ttone: getMetricTone('available', status),\n\t\t},\n\t\t{\n\t\t\tid: 'committed',\n\t\t\tlabel: strings.summary.committed,\n\t\t\tvalue: value.committed || '0',\n\t\t\ttone: getMetricTone('committed', status),\n\t\t},\n\t\t{\n\t\t\tid: 'incoming',\n\t\t\tlabel: strings.summary.incoming,\n\t\t\tvalue: value.incoming || '0',\n\t\t\ttone: getMetricTone('incoming', status),\n\t\t},\n\t\t{\n\t\t\tid: 'threshold',\n\t\t\tlabel: strings.summary.threshold,\n\t\t\tvalue: value.lowStockThreshold || '-',\n\t\t\ttone: getMetricTone('threshold', status),\n\t\t},\n\t];\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<PackageCheck className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\ttitleSuffix={<Badge variant={STATUS_VARIANT[status]}>{strings.status[status]}</Badge>}\n\t\t\theaderAction={(\n\t\t\t\t<div className=\"flex w-full flex-wrap items-center gap-space-sm sm:w-auto sm:justify-end\">\n\t\t\t\t\t{!!onGenerateSku && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tonClick={handleGenerateSku}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Sparkles className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{strings.actions.generateSku}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!onRestock && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tonClick={() => onRestock(value)}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RefreshCw className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{strings.actions.restock}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\theaderDivider\n\t\t\tclassName={cn('inventory-section-card--component w-full', className)}\n\t\t\theaderClassName=\"max-sm:flex-col max-sm:items-stretch\"\n\t\t\tcontentClassName=\"space-y-space-xl\"\n\t\t>\n\t\t\t{!!isSectionVisible('summary') && (\n\t\t\t\t<div className=\"inventory-section-card--summary grid gap-space-md sm:grid-cols-2 xl:grid-cols-4\">\n\t\t\t\t\t{metrics.map((metric) => (\n\t\t\t\t\t\t<SummaryMetric key={metric.id} metric={metric} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('identity') && (\n\t\t\t\t<section className=\"inventory-section-card--identity space-y-space-md\">\n\t\t\t\t\t<SectionHeading>{strings.sections.identity}</SectionHeading>\n\t\t\t\t\t<div className=\"grid gap-space-lg md:grid-cols-2\">\n\t\t\t\t\t\t{!!isFieldVisible('sku') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.sku}\n\t\t\t\t\t\t\t\terror={errors?.sku}\n\t\t\t\t\t\t\t\thint={strings.hints.sku}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.sku ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('sku', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.sku}\n\t\t\t\t\t\t\t\t\tstartIcon={PackageCheck}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.sku}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('barcode') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.barcode}\n\t\t\t\t\t\t\t\terror={errors?.barcode}\n\t\t\t\t\t\t\t\thint={strings.hints.barcode}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.barcode ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('barcode', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.barcode}\n\t\t\t\t\t\t\t\t\tstartIcon={Barcode}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.barcode}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('tracking') && (\n\t\t\t\t<section className=\"inventory-section-card--tracking space-y-space-md border-t border-border/60 pt-space-xl\">\n\t\t\t\t\t<SectionHeading>{strings.sections.tracking}</SectionHeading>\n\t\t\t\t\t{!!isFieldVisible('trackQuantity') && (\n\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\tlabel={strings.fields.trackQuantity}\n\t\t\t\t\t\t\tdescription={strings.hints.available}\n\t\t\t\t\t\t\tvalue={isTracked}\n\t\t\t\t\t\t\tonChange={(checked) => updateField('trackQuantity', checked)}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"grid gap-space-lg md:grid-cols-2 xl:grid-cols-4\">\n\t\t\t\t\t\t{!!isFieldVisible('available') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.available}\n\t\t\t\t\t\t\t\terror={errors?.available}\n\t\t\t\t\t\t\t\thint={strings.hints.available}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.available ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('available', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.available}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.available}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('committed') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.committed}\n\t\t\t\t\t\t\t\terror={errors?.committed}\n\t\t\t\t\t\t\t\thint={strings.hints.committed}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.committed ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('committed', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.committed}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.committed}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('incoming') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.incoming}\n\t\t\t\t\t\t\t\terror={errors?.incoming}\n\t\t\t\t\t\t\t\thint={strings.hints.incoming}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.incoming ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('incoming', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.incoming}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.incoming}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('lowStockThreshold') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.lowStockThreshold}\n\t\t\t\t\t\t\t\terror={errors?.lowStockThreshold}\n\t\t\t\t\t\t\t\thint={strings.hints.lowStockThreshold}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.lowStockThreshold ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('lowStockThreshold', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.lowStockThreshold}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.lowStockThreshold}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!isFieldVisible('inventoryPolicy') && (\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tlabel={strings.fields.inventoryPolicy}\n\t\t\t\t\t\t\terror={errors?.inventoryPolicy}\n\t\t\t\t\t\t\thint={strings.hints.inventoryPolicy}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CardRadioGroup\n\t\t\t\t\t\t\t\tcolumns={2}\n\t\t\t\t\t\t\t\tvalue={value.inventoryPolicy ?? 'deny'}\n\t\t\t\t\t\t\t\tonChange={(nextValue) => updateField('inventoryPolicy', nextValue as InventoryPolicy)}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\tinvalid={!!errors?.inventoryPolicy}\n\t\t\t\t\t\t\t\toptions={[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvalue: 'deny',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.policyOptions.deny.label,\n\t\t\t\t\t\t\t\t\t\tdescription: strings.policyOptions.deny.description,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvalue: 'continue',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.policyOptions.continue.label,\n\t\t\t\t\t\t\t\t\t\tdescription: strings.policyOptions.continue.description,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t)}\n\t\t\t\t</section>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('location') && (\n\t\t\t\t<section className=\"inventory-section-card--location space-y-space-md border-t border-border/60 pt-space-xl\">\n\t\t\t\t\t<SectionHeading>{strings.sections.location}</SectionHeading>\n\t\t\t\t\t<div className=\"grid gap-space-lg md:grid-cols-2\">\n\t\t\t\t\t\t{!!isFieldVisible('locationId') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.locationId}\n\t\t\t\t\t\t\t\terror={errors?.locationId}\n\t\t\t\t\t\t\t\thint={strings.hints.locationId}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{locationOptions.length > 0 ? (\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={value.locationId ?? null}\n\t\t\t\t\t\t\t\t\t\tonChange={(nextValue) => updateField('locationId', nextValue)}\n\t\t\t\t\t\t\t\t\t\toptions={locationOptions}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.locationId}\n\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.locationId}\n\t\t\t\t\t\t\t\t\t\tallowClear\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={value.locationId ?? ''}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('locationId', event.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.locationId}\n\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.locationId}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('binLocation') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.binLocation}\n\t\t\t\t\t\t\t\terror={errors?.binLocation}\n\t\t\t\t\t\t\t\thint={strings.hints.binLocation}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.binLocation ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('binLocation', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.binLocation}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.binLocation}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('shipping') && (\n\t\t\t\t<section className=\"inventory-section-card--shipping space-y-space-md border-t border-border/60 pt-space-xl\">\n\t\t\t\t\t<SectionHeading>{strings.sections.shipping}</SectionHeading>\n\t\t\t\t\t{!!isFieldVisible('requiresShipping') && (\n\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\tlabel={strings.fields.requiresShipping}\n\t\t\t\t\t\t\tdescription={strings.hints.weight}\n\t\t\t\t\t\t\tvalue={requiresShipping}\n\t\t\t\t\t\t\tonChange={(checked) => updateField('requiresShipping', checked)}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!isFieldVisible('weight') && (\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tlabel={strings.fields.weight}\n\t\t\t\t\t\t\terror={errors?.weight ?? errors?.weightUnit}\n\t\t\t\t\t\t\thint={strings.hints.weight}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WeightInput\n\t\t\t\t\t\t\t\tvalue={value.weight ?? ''}\n\t\t\t\t\t\t\t\tunit={value.weightUnit ?? 'kg'}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('weight', event.target.value)}\n\t\t\t\t\t\t\t\tonUnitChange={(unit) => updateField('weightUnit', unit)}\n\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\tinvalid={!!errors?.weight || !!errors?.weightUnit}\n\t\t\t\t\t\t\t\tdecimalPlaces={2}\n\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t)}\n\t\t\t\t</section>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('customs') && (\n\t\t\t\t<section className=\"inventory-section-card--customs space-y-space-md border-t border-border/60 pt-space-xl\">\n\t\t\t\t\t<SectionHeading>{strings.sections.customs}</SectionHeading>\n\t\t\t\t\t<div className=\"grid gap-space-lg md:grid-cols-2\">\n\t\t\t\t\t\t{!!isFieldVisible('countryOfOrigin') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.countryOfOrigin}\n\t\t\t\t\t\t\t\terror={errors?.countryOfOrigin}\n\t\t\t\t\t\t\t\thint={strings.hints.countryOfOrigin}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{countryOptions.length > 0 ? (\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={value.countryOfOrigin ?? null}\n\t\t\t\t\t\t\t\t\t\tonChange={(nextValue) => updateField('countryOfOrigin', nextValue)}\n\t\t\t\t\t\t\t\t\t\toptions={countryOptions}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.countryOfOrigin}\n\t\t\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.countryOfOrigin}\n\t\t\t\t\t\t\t\t\t\tallowClear\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={value.countryOfOrigin ?? ''}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('countryOfOrigin', event.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.countryOfOrigin}\n\t\t\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.countryOfOrigin}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('hsCode') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.hsCode}\n\t\t\t\t\t\t\t\terror={errors?.hsCode}\n\t\t\t\t\t\t\t\thint={strings.hints.hsCode}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.hsCode ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('hsCode', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.hsCode}\n\t\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.hsCode}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('tags') && !!isFieldVisible('tags') && (\n\t\t\t\t<section className=\"inventory-section-card--tags space-y-space-md border-t border-border/60 pt-space-xl\">\n\t\t\t\t\t<SectionHeading>{strings.sections.tags}</SectionHeading>\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tlabel={strings.fields.tags}\n\t\t\t\t\t\terror={errors?.tags}\n\t\t\t\t\t\thint={strings.hints.tags}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TagsInput\n\t\t\t\t\t\t\tvalue={value.tags ?? []}\n\t\t\t\t\t\t\tonChange={(nextTags) => updateField('tags', nextTags)}\n\t\t\t\t\t\t\trecommendations={tagRecommendations}\n\t\t\t\t\t\t\tmaxTags={maxTags}\n\t\t\t\t\t\t\tshowMaxTags={maxTags !== undefined}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\tinvalid={!!errors?.tags}\n\t\t\t\t\t\t\tstrings={strings.tagInput}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t</section>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nInventorySectionCard.displayName = 'InventorySectionCard';\n"],"mappings":"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"}
|