@anker-in/headless-ui 1.3.38 → 1.3.39-alpha.1784616869310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.d.ts +11 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.d.ts +23 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/index.d.ts +40 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/types.d.ts +107 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/MainProductArea/index.d.ts +22 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/MainProductArea/index.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/MainProductArea/index.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/PromoBanner/index.d.ts +10 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/PromoBanner/index.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/PromoBanner/index.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/SectionHeader/index.d.ts +9 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/SectionHeader/index.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/components/SectionHeader/index.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/index.d.ts +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/index.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/index.js.map +7 -0
- package/dist/cjs/biz-components/AccessoriesShelf/types.d.ts +16 -0
- package/dist/cjs/biz-components/AccessoriesShelf/types.js +2 -0
- package/dist/cjs/biz-components/AccessoriesShelf/types.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/CartGiftSection.d.ts +14 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/CartGiftSection.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/CartGiftSection.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.d.ts +11 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.d.ts +13 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartGiftSection/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/CartItemRow.d.ts +54 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/CartItemRow.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/CartItemRow.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.d.ts +4 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.d.ts +9 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.d.ts +11 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.d.ts +12 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.d.ts +4 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.d.ts +11 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.d.ts +8 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartItemRow/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartPerksSection/CartPerksSection.d.ts +36 -0
- package/dist/cjs/biz-components/CartDetail/CartPerksSection/CartPerksSection.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartPerksSection/CartPerksSection.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartPerksSection/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartPerksSection/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartPerksSection/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.d.ts +47 -0
- package/dist/cjs/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartPriceSummary/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartPriceSummary/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartPriceSummary/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.d.ts +26 -0
- package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartThirdParty/CartThirdParty.d.ts +10 -0
- package/dist/cjs/biz-components/CartDetail/CartThirdParty/CartThirdParty.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartThirdParty/CartThirdParty.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/CartThirdParty/index.d.ts +2 -0
- package/dist/cjs/biz-components/CartDetail/CartThirdParty/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/CartThirdParty/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/index.d.ts +16 -0
- package/dist/cjs/biz-components/CartDetail/index.js +2 -0
- package/dist/cjs/biz-components/CartDetail/index.js.map +7 -0
- package/dist/cjs/biz-components/CartDetail/types.d.ts +132 -0
- package/dist/cjs/biz-components/CartDetail/types.js +2 -0
- package/dist/cjs/biz-components/CartDetail/types.js.map +7 -0
- package/dist/cjs/biz-components/Listing/BizProductProvider.d.ts +13 -9
- package/dist/cjs/biz-components/Listing/BizProductProvider.js +1 -1
- package/dist/cjs/biz-components/Listing/BizProductProvider.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/CartActionButtons/index.d.ts +9 -1
- package/dist/cjs/biz-components/Listing/components/CartActionButtons/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/CartActionButtons/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +4 -4
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +1 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/types.d.ts +48 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/types.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/types.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.d.ts +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +0 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js.map +4 -4
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.d.ts +3 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/types.d.ts +115 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/types.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/types.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/index.d.ts +0 -1
- package/dist/cjs/biz-components/Listing/components/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/hooks/useBenefits.d.ts +8 -2
- package/dist/cjs/biz-components/Listing/hooks/useBenefits.js +1 -1
- package/dist/cjs/biz-components/Listing/hooks/useBenefits.js.map +3 -3
- package/dist/cjs/biz-components/Listing/types/product.d.ts +0 -21
- package/dist/cjs/biz-components/Listing/types/product.js +1 -1
- package/dist/cjs/biz-components/Listing/types/product.js.map +1 -1
- package/dist/cjs/biz-components/NotifyMeDialog/NotifyMeDialog.d.ts +7 -0
- package/dist/cjs/biz-components/NotifyMeDialog/NotifyMeDialog.js +2 -0
- package/dist/cjs/biz-components/NotifyMeDialog/NotifyMeDialog.js.map +7 -0
- package/dist/cjs/biz-components/NotifyMeDialog/index.d.ts +2 -0
- package/dist/cjs/biz-components/NotifyMeDialog/index.js +2 -0
- package/dist/cjs/biz-components/NotifyMeDialog/index.js.map +7 -0
- package/dist/cjs/biz-components/NotifyMeDialog/types.d.ts +111 -0
- package/dist/cjs/biz-components/NotifyMeDialog/types.js +2 -0
- package/dist/cjs/biz-components/NotifyMeDialog/types.js.map +7 -0
- package/dist/cjs/biz-components/ShelfDisplay/index.js +1 -1
- package/dist/cjs/biz-components/ShelfDisplay/index.js.map +3 -3
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
- package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
- package/dist/cjs/biz-components/index.d.ts +11 -3
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/biz-components/index.js.map +3 -3
- package/dist/cjs/components/breadcrumb.d.ts +12 -0
- package/dist/cjs/components/breadcrumb.js +2 -0
- package/dist/cjs/components/breadcrumb.js.map +7 -0
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/components/input-number.d.ts +22 -0
- package/dist/cjs/components/input-number.js +1 -1
- package/dist/cjs/components/input-number.js.map +3 -3
- package/dist/cjs/components/input.d.ts +5 -0
- package/dist/cjs/components/input.js +1 -1
- package/dist/cjs/components/input.js.map +3 -3
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +3 -3
- package/dist/cjs/components/toast.d.ts +25 -0
- package/dist/cjs/components/toast.js +2 -0
- package/dist/cjs/components/toast.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.d.ts +11 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js +2 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.d.ts +23 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js +2 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/index.d.ts +40 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js +2 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/types.d.ts +107 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js +1 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/MainProductArea/index.d.ts +22 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/MainProductArea/index.js +2 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/MainProductArea/index.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/PromoBanner/index.d.ts +10 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/PromoBanner/index.js +2 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/PromoBanner/index.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/SectionHeader/index.d.ts +9 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/SectionHeader/index.js +2 -0
- package/dist/esm/biz-components/AccessoriesShelf/components/SectionHeader/index.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/index.d.ts +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/index.js +2 -0
- package/dist/esm/biz-components/AccessoriesShelf/index.js.map +7 -0
- package/dist/esm/biz-components/AccessoriesShelf/types.d.ts +16 -0
- package/dist/esm/biz-components/AccessoriesShelf/types.js +1 -0
- package/dist/esm/biz-components/AccessoriesShelf/types.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/CartGiftSection.d.ts +14 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/CartGiftSection.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/CartGiftSection.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.d.ts +11 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.d.ts +13 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartGiftSection/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/CartItemRow.d.ts +54 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/CartItemRow.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/CartItemRow.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.d.ts +4 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.d.ts +9 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js +1 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.d.ts +11 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.d.ts +12 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.d.ts +4 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.d.ts +11 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js +1 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.d.ts +8 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartItemRow/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartPerksSection/CartPerksSection.d.ts +36 -0
- package/dist/esm/biz-components/CartDetail/CartPerksSection/CartPerksSection.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartPerksSection/CartPerksSection.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartPerksSection/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartPerksSection/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartPerksSection/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.d.ts +47 -0
- package/dist/esm/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartPriceSummary/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartPriceSummary/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartPriceSummary/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.d.ts +26 -0
- package/dist/esm/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartSummaryHeader/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartSummaryHeader/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartSummaryHeader/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartThirdParty/CartThirdParty.d.ts +10 -0
- package/dist/esm/biz-components/CartDetail/CartThirdParty/CartThirdParty.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartThirdParty/CartThirdParty.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/CartThirdParty/index.d.ts +2 -0
- package/dist/esm/biz-components/CartDetail/CartThirdParty/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/CartThirdParty/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/index.d.ts +16 -0
- package/dist/esm/biz-components/CartDetail/index.js +2 -0
- package/dist/esm/biz-components/CartDetail/index.js.map +7 -0
- package/dist/esm/biz-components/CartDetail/types.d.ts +132 -0
- package/dist/esm/biz-components/CartDetail/types.js +1 -0
- package/dist/esm/biz-components/CartDetail/types.js.map +7 -0
- package/dist/esm/biz-components/Listing/BizProductProvider.d.ts +13 -9
- package/dist/esm/biz-components/Listing/BizProductProvider.js +1 -1
- package/dist/esm/biz-components/Listing/BizProductProvider.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/CartActionButtons/index.d.ts +9 -1
- package/dist/esm/biz-components/Listing/components/CartActionButtons/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/CartActionButtons/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +4 -4
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.d.ts +1 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/types.d.ts +48 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/types.js +1 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/types.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.d.ts +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.d.ts +0 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.d.ts +3 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/index.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/types.d.ts +115 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/types.js +1 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFunctionFreeGift/types.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/index.d.ts +0 -1
- package/dist/esm/biz-components/Listing/components/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/index.js.map +2 -2
- package/dist/esm/biz-components/Listing/hooks/useBenefits.d.ts +8 -2
- package/dist/esm/biz-components/Listing/hooks/useBenefits.js +1 -1
- package/dist/esm/biz-components/Listing/hooks/useBenefits.js.map +3 -3
- package/dist/esm/biz-components/Listing/types/product.d.ts +0 -21
- package/dist/esm/biz-components/Listing/types/product.js.map +1 -1
- package/dist/esm/biz-components/NotifyMeDialog/NotifyMeDialog.d.ts +7 -0
- package/dist/esm/biz-components/NotifyMeDialog/NotifyMeDialog.js +2 -0
- package/dist/esm/biz-components/NotifyMeDialog/NotifyMeDialog.js.map +7 -0
- package/dist/esm/biz-components/NotifyMeDialog/index.d.ts +2 -0
- package/dist/esm/biz-components/NotifyMeDialog/index.js +2 -0
- package/dist/esm/biz-components/NotifyMeDialog/index.js.map +7 -0
- package/dist/esm/biz-components/NotifyMeDialog/types.d.ts +111 -0
- package/dist/esm/biz-components/NotifyMeDialog/types.js +1 -0
- package/dist/esm/biz-components/NotifyMeDialog/types.js.map +7 -0
- package/dist/esm/biz-components/ShelfDisplay/index.js +1 -1
- package/dist/esm/biz-components/ShelfDisplay/index.js.map +3 -3
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
- package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
- package/dist/esm/biz-components/index.d.ts +11 -3
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/biz-components/index.js.map +3 -3
- package/dist/esm/components/breadcrumb.d.ts +12 -0
- package/dist/esm/components/breadcrumb.js +2 -0
- package/dist/esm/components/breadcrumb.js.map +7 -0
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +3 -3
- package/dist/esm/components/input-number.d.ts +22 -0
- package/dist/esm/components/input-number.js +1 -1
- package/dist/esm/components/input-number.js.map +3 -3
- package/dist/esm/components/input.d.ts +5 -0
- package/dist/esm/components/input.js +1 -1
- package/dist/esm/components/input.js.map +3 -3
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/tabs.js.map +3 -3
- package/dist/esm/components/toast.d.ts +25 -0
- package/dist/esm/components/toast.js +2 -0
- package/dist/esm/components/toast.js.map +7 -0
- package/package.json +1 -1
- package/style.css +275 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/index.d.ts +0 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/index.js +0 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/index.js.map +0 -7
- package/dist/cjs/biz-components/Listing/components/ProductCard/index.d.ts +0 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/index.js +0 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/index.js.map +0 -7
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/index.d.ts +0 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/index.js +0 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/index.js.map +0 -7
- package/dist/esm/biz-components/Listing/components/ProductCard/index.d.ts +0 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/index.js +0 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/index.js.map +0 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";"use client";var W=Object.create;var
|
|
1
|
+
"use strict";"use client";var W=Object.create;var d=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var a in e)d(t,a,{get:e[a],enumerable:!0})},y=(t,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of S(e))!V.call(t,o)&&o!==a&&d(t,o,{get:()=>e[o],enumerable:!(s=E(e,o))||s.enumerable});return t};var P=(t,e,a)=>(a=t!=null?W(k(t)):{},y(e||!t||!t.__esModule?d(a,"default",{value:t,enumerable:!0}):a,t)),F=t=>y(d({},"__esModule",{value:!0}),t);var M={};A(M,{Tabs:()=>T,TabsContent:()=>x,TabsList:()=>R,TabsTrigger:()=>v});module.exports=F(M);var r=require("react/jsx-runtime"),n=P(require("react")),c=require("../helpers/index.js"),i=P(require("@radix-ui/react-tabs")),h=require("class-variance-authority");function f(t){return t.trim().replace(/\s+/g,"-")}const g=n.createContext({align:"left",shape:"square"}),T=n.forwardRef(({children:t,align:e="left",shape:a="default",value:s,defaultValue:o,...l},p)=>(0,r.jsx)(i.Root,{ref:p,value:s!=null?f(String(s)):void 0,defaultValue:o!=null?f(String(o)):void 0,...l,children:(0,r.jsx)(g.Provider,{value:{align:e,shape:a},children:t})}));T.displayName="Tabs";const q=(0,h.cva)("rounded-tabs",{variants:{shape:{default:"",rounded:"rounded-[28px]",square:"rounded-none"}},defaultVariants:{shape:"default"}}),j=(0,h.cva)("rounded-tabs",{variants:{shape:{default:"",rounded:"rounded-[28px]",square:"rounded-none"}},defaultVariants:{shape:"default"}}),R=n.forwardRef(({className:t,...e},a)=>{const{align:s,shape:o}=n.useContext(g),l=s==="center"?"flex w-full justify-center":s==="right"?"flex w-full justify-end":null,p=(0,r.jsx)(i.List,{ref:a,className:(0,c.cn)("bg-tabs-list-bg flex w-fit max-w-full overflow-x-auto p-1",q({shape:o}),t),style:{scrollbarWidth:"none",msOverflowStyle:"none"},...e});return l?(0,r.jsx)("div",{className:l,children:p}):p});R.displayName=i.List.displayName;const v=n.forwardRef(({className:t,onClick:e,value:a,...s},o)=>{const{shape:l}=n.useContext(g),p=m=>{e?.(m);const u=m?.currentTarget,b=m?.currentTarget?.parentElement;if(u&&b){const C=u.offsetLeft,w=u.offsetWidth,L=b.offsetWidth,N=C-L/2+w/2;b.scrollTo({left:N,behavior:"smooth"})}};return(0,r.jsx)(i.Trigger,{ref:o,className:(0,c.cn)("text-info-primary lg-desktop:text-base disabled:text-btn-secondary-disabled lg-desktop:px-[28px] lg-desktop:pt-[15px] lg-desktop:pb-[14px] shrink-0 px-5 pb-2.5 pt-[11px] text-sm font-bold data-[state=active]:bg-white data-[state=active]:text-[#080A0F]",t,j({shape:l})),onClick:p,value:f(a),"data-radix-collection-item":f(a),...s})});v.displayName=i.Trigger.displayName;const x=n.forwardRef(({className:t,value:e,...a},s)=>(0,r.jsx)(i.Content,{ref:s,className:(0,c.cn)(t),value:f(e),...a}));x.displayName=i.Content.displayName;
|
|
2
2
|
//# sourceMappingURL=tabs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/tabs.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../helpers/index.js'\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cva } from 'class-variance-authority'\nimport type { Align, Shape } from '../types/props.js'\n\ntype tabShape = Shape | 'default'\n\n/**\n * Sanitize a tab value so it is safe to use as part of an HTML id attribute.\n *\n * HTML ids must not contain whitespace characters. Radix UI uses the value\n * directly in generated ids (e.g. `radix-:r0:-trigger-{value}`), so an\n * unsanitized value like \"best seller\" would produce an invalid id.\n *\n * This function replaces any sequence of whitespace with a single hyphen and\n * trims leading/trailing whitespace, leaving all other characters intact.\n */\nfunction sanitizeTabValue(value: string): string {\n return value.trim().replace(/\\s+/g, '-')\n}\n\nconst TabListContext = React.createContext<{\n align?: Align\n shape: tabShape\n}>({\n align: 'left',\n shape: 'square',\n})\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & {\n align?: Align\n shape?: tabShape\n }\n>(({ children, align = 'left', shape = 'default', ...props }, ref) => (\n <TabsPrimitive.Root
|
|
5
|
-
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,gBAAAC,EAAA,aAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAN,
|
|
6
|
-
"names": ["tabs_exports", "__export", "Tabs", "TabsContent", "TabsList", "TabsTrigger", "__toCommonJS", "import_jsx_runtime", "React", "import_helpers", "TabsPrimitive", "import_class_variance_authority", "sanitizeTabValue", "value", "TabListContext", "children", "align", "shape", "props", "ref", "tabsListVariants", "tabsTriggerVariants", "className", "alignFromParent", "shapeFromParent", "wrapperClass", "list", "onClick", "handleClick", "e", "tabElement", "container", "tabLeft", "tabWidth", "containerWidth", "scrollTo"]
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../helpers/index.js'\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs'\nimport { cva } from 'class-variance-authority'\nimport type { Align, Shape } from '../types/props.js'\n\ntype tabShape = Shape | 'default'\n\n/**\n * Sanitize a tab value so it is safe to use as part of an HTML id attribute.\n *\n * HTML ids must not contain whitespace characters. Radix UI uses the value\n * directly in generated ids (e.g. `radix-:r0:-trigger-{value}`), so an\n * unsanitized value like \"best seller\" would produce an invalid id.\n *\n * This function replaces any sequence of whitespace with a single hyphen and\n * trims leading/trailing whitespace, leaving all other characters intact.\n */\nfunction sanitizeTabValue(value: string): string {\n return value.trim().replace(/\\s+/g, '-')\n}\n\nconst TabListContext = React.createContext<{\n align?: Align\n shape: tabShape\n}>({\n align: 'left',\n shape: 'square',\n})\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> & {\n align?: Align\n shape?: tabShape\n }\n>(({ children, align = 'left', shape = 'default', value, defaultValue, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n value={value != null ? sanitizeTabValue(String(value)) : undefined}\n defaultValue={defaultValue != null ? sanitizeTabValue(String(defaultValue)) : undefined}\n {...props}\n >\n <TabListContext.Provider value={{ align, shape }}>{children}</TabListContext.Provider>\n </TabsPrimitive.Root>\n))\nTabs.displayName = 'Tabs'\n\nconst tabsListVariants = cva('rounded-tabs', {\n variants: {\n shape: {\n default: '',\n rounded: 'rounded-[28px]',\n square: 'rounded-none',\n },\n },\n defaultVariants: {\n shape: 'default',\n },\n})\n\nconst tabsTriggerVariants = cva('rounded-tabs', {\n variants: {\n shape: {\n default: '',\n rounded: 'rounded-[28px]',\n square: 'rounded-none',\n },\n },\n defaultVariants: {\n shape: 'default',\n },\n})\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => {\n const { align: alignFromParent, shape: shapeFromParent } = React.useContext(TabListContext)\n\n const wrapperClass =\n alignFromParent === 'center'\n ? 'flex w-full justify-center'\n : alignFromParent === 'right'\n ? 'flex w-full justify-end'\n : null\n\n const list = (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'bg-tabs-list-bg flex w-fit max-w-full overflow-x-auto p-1',\n tabsListVariants({ shape: shapeFromParent }),\n className\n )}\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n {...props}\n />\n )\n\n return wrapperClass ? <div className={wrapperClass}>{list}</div> : list\n})\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, onClick, value, ...props }, ref) => {\n const { shape: shapeFromParent } = React.useContext(TabListContext)\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e)\n const tabElement = e?.currentTarget\n const container = e?.currentTarget?.parentElement\n if (tabElement && container) {\n const tabLeft = tabElement.offsetLeft\n const tabWidth = tabElement.offsetWidth\n const containerWidth = container.offsetWidth\n const scrollTo = tabLeft - containerWidth / 2 + tabWidth / 2\n container.scrollTo({\n left: scrollTo,\n behavior: 'smooth',\n })\n }\n }\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'text-info-primary lg-desktop:text-base disabled:text-btn-secondary-disabled lg-desktop:px-[28px] lg-desktop:pt-[15px] lg-desktop:pb-[14px] shrink-0 px-5 pb-2.5 pt-[11px] text-sm font-bold data-[state=active]:bg-white data-[state=active]:text-[#080A0F]',\n className,\n tabsTriggerVariants({\n shape: shapeFromParent,\n })\n )}\n onClick={handleClick}\n value={sanitizeTabValue(value)}\n data-radix-collection-item={sanitizeTabValue(value)}\n {...props}\n />\n )\n})\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, value, ...props }, ref) => (\n <TabsPrimitive.Content ref={ref} className={cn(className)} value={sanitizeTabValue(value)} {...props} />\n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n"],
|
|
5
|
+
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,gBAAAC,EAAA,aAAAC,EAAA,gBAAAC,IAAA,eAAAC,EAAAN,GA8CI,IAAAO,EAAA,6BA5CJC,EAAuB,oBACvBC,EAAmB,+BAEnBC,EAA+B,mCAC/BC,EAAoB,oCAepB,SAASC,EAAiBC,EAAuB,CAC/C,OAAOA,EAAM,KAAK,EAAE,QAAQ,OAAQ,GAAG,CACzC,CAEA,MAAMC,EAAiBN,EAAM,cAG1B,CACD,MAAO,OACP,MAAO,QACT,CAAC,EAEKN,EAAOM,EAAM,WAMjB,CAAC,CAAE,SAAAO,EAAU,MAAAC,EAAQ,OAAQ,MAAAC,EAAQ,UAAW,MAAAJ,EAAO,aAAAK,EAAc,GAAGC,CAAM,EAAGC,OACjF,OAACV,EAAc,KAAd,CACC,IAAKU,EACL,MAAOP,GAAS,KAAOD,EAAiB,OAAOC,CAAK,CAAC,EAAI,OACzD,aAAcK,GAAgB,KAAON,EAAiB,OAAOM,CAAY,CAAC,EAAI,OAC7E,GAAGC,EAEJ,mBAACL,EAAe,SAAf,CAAwB,MAAO,CAAE,MAAAE,EAAO,MAAAC,CAAM,EAAI,SAAAF,EAAS,EAC9D,CACD,EACDb,EAAK,YAAc,OAEnB,MAAMmB,KAAmB,OAAI,eAAgB,CAC3C,SAAU,CACR,MAAO,CACL,QAAS,GACT,QAAS,iBACT,OAAQ,cACV,CACF,EACA,gBAAiB,CACf,MAAO,SACT,CACF,CAAC,EAEKC,KAAsB,OAAI,eAAgB,CAC9C,SAAU,CACR,MAAO,CACL,QAAS,GACT,QAAS,iBACT,OAAQ,cACV,CACF,EACA,gBAAiB,CACf,MAAO,SACT,CACF,CAAC,EACKlB,EAAWI,EAAM,WAGrB,CAAC,CAAE,UAAAe,EAAW,GAAGJ,CAAM,EAAGC,IAAQ,CAClC,KAAM,CAAE,MAAOI,EAAiB,MAAOC,CAAgB,EAAIjB,EAAM,WAAWM,CAAc,EAEpFY,EACJF,IAAoB,SAChB,6BACAA,IAAoB,QAClB,0BACA,KAEFG,KACJ,OAACjB,EAAc,KAAd,CACC,IAAKU,EACL,aAAW,MACT,4DACAC,EAAiB,CAAE,MAAOI,CAAgB,CAAC,EAC3CF,CACF,EACA,MAAO,CACL,eAAgB,OAChB,gBAAiB,MACnB,EACC,GAAGJ,EACN,EAGF,OAAOO,KAAe,OAAC,OAAI,UAAWA,EAAe,SAAAC,EAAK,EAASA,CACrE,CAAC,EACDvB,EAAS,YAAcM,EAAc,KAAK,YAE1C,MAAML,EAAcG,EAAM,WAGxB,CAAC,CAAE,UAAAe,EAAW,QAAAK,EAAS,MAAAf,EAAO,GAAGM,CAAM,EAAGC,IAAQ,CAClD,KAAM,CAAE,MAAOK,CAAgB,EAAIjB,EAAM,WAAWM,CAAc,EAE5De,EAAeC,GAA2C,CAC9DF,IAAUE,CAAC,EACX,MAAMC,EAAaD,GAAG,cAChBE,EAAYF,GAAG,eAAe,cACpC,GAAIC,GAAcC,EAAW,CAC3B,MAAMC,EAAUF,EAAW,WACrBG,EAAWH,EAAW,YACtBI,EAAiBH,EAAU,YAC3BI,EAAWH,EAAUE,EAAiB,EAAID,EAAW,EAC3DF,EAAU,SAAS,CACjB,KAAMI,EACN,SAAU,QACZ,CAAC,CACH,CACF,EACA,SACE,OAAC1B,EAAc,QAAd,CACC,IAAKU,EACL,aAAW,MACT,8PACAG,EACAD,EAAoB,CAClB,MAAOG,CACT,CAAC,CACH,EACA,QAASI,EACT,MAAOjB,EAAiBC,CAAK,EAC7B,6BAA4BD,EAAiBC,CAAK,EACjD,GAAGM,EACN,CAEJ,CAAC,EACDd,EAAY,YAAcK,EAAc,QAAQ,YAEhD,MAAMP,EAAcK,EAAM,WAGxB,CAAC,CAAE,UAAAe,EAAW,MAAAV,EAAO,GAAGM,CAAM,EAAGC,OACjC,OAACV,EAAc,QAAd,CAAsB,IAAKU,EAAK,aAAW,MAAGG,CAAS,EAAG,MAAOX,EAAiBC,CAAK,EAAI,GAAGM,EAAO,CACvG,EACDhB,EAAY,YAAcO,EAAc,QAAQ",
|
|
6
|
+
"names": ["tabs_exports", "__export", "Tabs", "TabsContent", "TabsList", "TabsTrigger", "__toCommonJS", "import_jsx_runtime", "React", "import_helpers", "TabsPrimitive", "import_class_variance_authority", "sanitizeTabValue", "value", "TabListContext", "children", "align", "shape", "defaultValue", "props", "ref", "tabsListVariants", "tabsTriggerVariants", "className", "alignFromParent", "shapeFromParent", "wrapperClass", "list", "onClick", "handleClick", "e", "tabElement", "container", "tabLeft", "tabWidth", "containerWidth", "scrollTo"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
declare const toastVariants: (props?: ({
|
|
4
|
+
variant?: "success" | "warning" | "countdown" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export interface ToastProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof toastVariants> {
|
|
7
|
+
open?: boolean;
|
|
8
|
+
message: string;
|
|
9
|
+
duration?: number;
|
|
10
|
+
seconds?: number;
|
|
11
|
+
onClose?: () => void;
|
|
12
|
+
}
|
|
13
|
+
declare const Toast: React.ForwardRefExoticComponent<ToastProps & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
export interface UseToastOptions {
|
|
15
|
+
variant?: ToastProps['variant'];
|
|
16
|
+
message: string;
|
|
17
|
+
duration?: number;
|
|
18
|
+
seconds?: number;
|
|
19
|
+
}
|
|
20
|
+
declare function useToast(): {
|
|
21
|
+
toastProps: ToastProps;
|
|
22
|
+
showToast: (opts: UseToastOptions) => void;
|
|
23
|
+
};
|
|
24
|
+
export { Toast, toastVariants, useToast };
|
|
25
|
+
export default Toast;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";"use client";var P=Object.create;var l=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var E=(a,t)=>{for(var e in t)l(a,e,{get:t[e],enumerable:!0})},x=(a,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of N(t))!S.call(a,o)&&o!==e&&l(a,o,{get:()=>t[o],enumerable:!(r=V(t,o))||r.enumerable});return a};var R=(a,t,e)=>(e=a!=null?P(O(a)):{},x(t||!a||!a.__esModule?l(e,"default",{value:a,enumerable:!0}):e,a)),B=a=>x(l({},"__esModule",{value:!0}),a);var _={};E(_,{Toast:()=>d,default:()=>W,toastVariants:()=>g,useToast:()=>k});module.exports=B(_);var s=require("react/jsx-runtime"),n=R(require("react")),v=require("class-variance-authority"),T=require("../helpers/index.js");const g=(0,v.cva)("bg-container-secondary-1 text-info-primary pointer-events-none fixed left-1/2 top-1/2 z-[9999] flex w-max -translate-x-1/2 select-none items-center gap-[4px] rounded-[8px] p-[16px] text-[18px] font-bold leading-[1.4] tracking-[-0.36px] drop-shadow-[0px_8px_12px_rgba(0,0,0,0.2)] transition-all duration-300 ease-in-out data-[state=closed]:-translate-y-2 data-[state=open]:translate-y-0 data-[state=closed]:opacity-0 data-[state=open]:opacity-100",{variants:{variant:{success:"",warning:"",countdown:""}},defaultVariants:{variant:"success"}}),H=()=>(0,s.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"10.5",className:"fill-success-0"}),(0,s.jsx)("g",{transform:"translate(6, 8)",children:(0,s.jsx)("path",{d:"M1 3.5L5 7L11 1",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]}),I=()=>(0,s.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"10.5",className:"fill-error-0"}),(0,s.jsx)("g",{transform:"translate(10.65, 6)",children:(0,s.jsx)("path",{d:"M1.35 9.28C2.1 9.28 2.7 9.88 2.7 10.63C2.7 11.37 2.1 11.98 1.35 11.98C0.6 11.98 0 11.37 0 10.63C0 9.88 0.6 9.28 1.35 9.28ZM1.35 0C1.97 0 2.47 0.5 2.47 1.13V7.13C2.47 7.75 1.97 8.25 1.35 8.25C0.73 8.25 0.22 7.75 0.22 7.13V1.13C0.22 0.5 0.73 0 1.35 0Z",fill:"white"})})]}),U=()=>(0,s.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":!0,children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"10.5",className:"fill-warning-0"}),(0,s.jsx)("g",{transform:"translate(8, 7)",children:(0,s.jsx)("path",{d:"M4 0V5L7 8",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]}),d=n.forwardRef(({className:a,variant:t,open:e=!1,message:r,duration:o=2500,seconds:i,onClose:c,...u},y)=>{const[p,w]=n.useState(!1),[f,h]=n.useState(i??0);if(n.useEffect(()=>{if(e)w(!0),t==="countdown"&&i!=null&&h(i);else{const m=setTimeout(()=>w(!1),300);return()=>clearTimeout(m)}},[e,t,i]),n.useEffect(()=>{if(!e||!p)return;if(t==="countdown"){if(f<=0){c?.();return}const L=setTimeout(()=>h(M=>M-1),1e3);return()=>clearTimeout(L)}const m=setTimeout(()=>c?.(),o);return()=>clearTimeout(m)},[e,p,t,o,f,c]),!p)return null;const C=t==="warning"?(0,s.jsx)(I,{}):t==="countdown"?(0,s.jsx)(U,{}):(0,s.jsx)(H,{}),b=t==="countdown"?r.replace(/\{seconds\}/g,String(f)):r;return(0,s.jsxs)("div",{ref:y,className:(0,T.cn)(g({variant:t}),a),"data-state":e?"open":"closed",role:"alert","aria-live":"assertive","aria-atomic":"true",...u,children:[C,(0,s.jsx)("span",{children:b})]})});d.displayName="Toast";function k(){const[a,t]=n.useState(!1),[e,r]=n.useState({message:""}),o=n.useCallback(u=>{r(u),t(!0)},[]),i=n.useCallback(()=>{t(!1)},[]);return{toastProps:{open:a,variant:e.variant,message:e.message,duration:e.duration,seconds:e.seconds,onClose:i},showToast:o}}var W=d;
|
|
2
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/toast.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../helpers/index.js'\n\nconst toastVariants = cva(\n 'bg-container-secondary-1 text-info-primary pointer-events-none fixed left-1/2 top-1/2 z-[9999] flex w-max -translate-x-1/2 select-none items-center gap-[4px] rounded-[8px] p-[16px] text-[18px] font-bold leading-[1.4] tracking-[-0.36px] drop-shadow-[0px_8px_12px_rgba(0,0,0,0.2)] transition-all duration-300 ease-in-out data-[state=closed]:-translate-y-2 data-[state=open]:translate-y-0 data-[state=closed]:opacity-0 data-[state=open]:opacity-100',\n {\n variants: {\n variant: {\n success: '',\n warning: '',\n countdown: '',\n },\n },\n defaultVariants: {\n variant: 'success',\n },\n }\n)\n\nconst CheckIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <circle cx=\"12\" cy=\"12\" r=\"10.5\" className=\"fill-success-0\" />\n <g transform=\"translate(6, 8)\">\n <path d=\"M1 3.5L5 7L11 1\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </g>\n </svg>\n)\n\nconst WarningIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <circle cx=\"12\" cy=\"12\" r=\"10.5\" className=\"fill-error-0\" />\n <g transform=\"translate(10.65, 6)\">\n <path\n d=\"M1.35 9.28C2.1 9.28 2.7 9.88 2.7 10.63C2.7 11.37 2.1 11.98 1.35 11.98C0.6 11.98 0 11.37 0 10.63C0 9.88 0.6 9.28 1.35 9.28ZM1.35 0C1.97 0 2.47 0.5 2.47 1.13V7.13C2.47 7.75 1.97 8.25 1.35 8.25C0.73 8.25 0.22 7.75 0.22 7.13V1.13C0.22 0.5 0.73 0 1.35 0Z\"\n fill=\"white\"\n />\n </g>\n </svg>\n)\n\nconst ClockIcon = () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <circle cx=\"12\" cy=\"12\" r=\"10.5\" className=\"fill-warning-0\" />\n <g transform=\"translate(8, 7)\">\n <path d=\"M4 0V5L7 8\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </g>\n </svg>\n)\n\nexport interface ToastProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof toastVariants> {\n open?: boolean\n message: string\n duration?: number\n seconds?: number\n onClose?: () => void\n}\n\nconst Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n ({ className, variant, open = false, message, duration = 2500, seconds, onClose, ...props }, ref) => {\n const [mounted, setMounted] = React.useState(false)\n const [remaining, setRemaining] = React.useState(seconds ?? 0)\n\n React.useEffect(() => {\n if (open) {\n setMounted(true)\n if (variant === 'countdown' && seconds != null) {\n setRemaining(seconds)\n }\n } else {\n const timer = setTimeout(() => setMounted(false), 300)\n return () => clearTimeout(timer)\n }\n }, [open, variant, seconds])\n\n React.useEffect(() => {\n if (!open || !mounted) return\n if (variant === 'countdown') {\n if (remaining <= 0) {\n onClose?.()\n return\n }\n const timer = setTimeout(() => setRemaining(r => r - 1), 1000)\n return () => clearTimeout(timer)\n }\n const timer = setTimeout(() => onClose?.(), duration)\n return () => clearTimeout(timer)\n }, [open, mounted, variant, duration, remaining, onClose])\n\n if (!mounted) return null\n\n const icon = variant === 'warning' ? <WarningIcon /> : variant === 'countdown' ? <ClockIcon /> : <CheckIcon />\n\n const displayMessage = variant === 'countdown' ? message.replace(/\\{seconds\\}/g, String(remaining)) : message\n\n return (\n <div\n ref={ref}\n className={cn(toastVariants({ variant }), className)}\n data-state={open ? 'open' : 'closed'}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n {...props}\n >\n {icon}\n <span>{displayMessage}</span>\n </div>\n )\n }\n)\nToast.displayName = 'Toast'\n\nexport interface UseToastOptions {\n variant?: ToastProps['variant']\n message: string\n duration?: number\n seconds?: number\n}\n\nfunction useToast() {\n const [open, setOpen] = React.useState(false)\n const [options, setOptions] = React.useState<UseToastOptions>({ message: '' })\n\n const showToast = React.useCallback((opts: UseToastOptions) => {\n setOptions(opts)\n setOpen(true)\n }, [])\n\n const handleClose = React.useCallback(() => {\n setOpen(false)\n }, [])\n\n const toastProps: ToastProps = {\n open,\n variant: options.variant,\n message: options.message,\n duration: options.duration,\n seconds: options.seconds,\n onClose: handleClose,\n }\n\n return { toastProps, showToast }\n}\n\nexport { Toast, toastVariants, useToast }\nexport default Toast\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["toast_exports", "__export", "Toast", "toast_default", "toastVariants", "useToast", "__toCommonJS", "import_jsx_runtime", "React", "import_class_variance_authority", "import_helpers", "CheckIcon", "WarningIcon", "ClockIcon", "className", "variant", "open", "message", "duration", "seconds", "onClose", "props", "ref", "mounted", "setMounted", "remaining", "setRemaining", "timer", "r", "icon", "displayMessage", "setOpen", "options", "setOptions", "showToast", "opts", "handleClose"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface ProductGridProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
maxVisible?: number;
|
|
5
|
+
showMoreText?: string;
|
|
6
|
+
showLessText?: string;
|
|
7
|
+
animated?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const AccessoriesProductGrid: React.ForwardRefExoticComponent<ProductGridProps & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
export default AccessoriesProductGrid;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as c}from"react/jsx-runtime";import*as r from"react";import{cn as i}from"../../../../helpers/index.js";const v=({className:t})=>e("svg",{xmlns:"http://www.w3.org/2000/svg",className:t,width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",children:e("path",{d:"M17.2929 8.29302C17.6834 7.90249 18.3164 7.90249 18.707 8.29302C19.0975 8.68354 19.0975 9.31655 18.707 9.70708L12.707 15.7071C12.3164 16.0976 11.6834 16.0976 11.2929 15.7071L5.29289 9.70708C4.90237 9.31655 4.90237 8.68354 5.29289 8.29302C5.68342 7.90249 6.31643 7.90249 6.70696 8.29302L11.9999 13.586L17.2929 8.29302Z",fill:"currentColor"})}),n=r.forwardRef(({children:t,maxVisible:a=8,showMoreText:d="Show more",showLessText:m="Show less",animated:g=!0,className:p},f)=>{const[s,u]=r.useState(!1),o=r.Children.toArray(t),l=o.length>a,h=l&&!s?o.slice(0,a):o;return c("div",{ref:f,className:i("flex flex-col gap-6",p),children:[e("div",{className:i("tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 grid grid-cols-1 gap-4",g&&"transition-all duration-500 ease-in-out"),children:h}),l&&c("div",{className:"hover:text-brand-0 text-info-primary flex items-center justify-center",children:[e("button",{className:"tablet:text-base text-sm font-bold",onClick:()=>u(x=>!x),children:s?m:d}),e(v,{className:i("tablet:size-5 size-4",s&&"rotate-180")})]})]})});n.displayName="AccessoriesProductGrid";var b=n;export{b as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
package/dist/esm/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../helpers/index.js'\n\nexport interface ProductGridProps {\n children: React.ReactNode\n maxVisible?: number\n showMoreText?: string\n showLessText?: string\n animated?: boolean\n className?: string\n}\n\nconst DownIcon = ({ className }: { className?: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M17.2929 8.29302C17.6834 7.90249 18.3164 7.90249 18.707 8.29302C19.0975 8.68354 19.0975 9.31655 18.707 9.70708L12.707 15.7071C12.3164 16.0976 11.6834 16.0976 11.2929 15.7071L5.29289 9.70708C4.90237 9.31655 4.90237 8.68354 5.29289 8.29302C5.68342 7.90249 6.31643 7.90249 6.70696 8.29302L11.9999 13.586L17.2929 8.29302Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nconst AccessoriesProductGrid = React.forwardRef<HTMLDivElement, ProductGridProps>(\n (\n { children, maxVisible = 8, showMoreText = 'Show more', showLessText = 'Show less', animated = true, className },\n ref\n ) => {\n const [expanded, setExpanded] = React.useState(false)\n const items = React.Children.toArray(children)\n const hasMore = items.length > maxVisible\n const visibleItems = hasMore && !expanded ? items.slice(0, maxVisible) : items\n\n return (\n <div ref={ref} className={cn('flex flex-col gap-6', className)}>\n <div\n className={cn(\n 'tablet:grid-cols-2 laptop:grid-cols-3 desktop:grid-cols-4 grid grid-cols-1 gap-4',\n animated && 'transition-all duration-500 ease-in-out'\n )}\n >\n {visibleItems}\n </div>\n {hasMore && (\n <div className=\"hover:text-brand-0 text-info-primary flex items-center justify-center\">\n <button className=\"tablet:text-base text-sm font-bold\" onClick={() => setExpanded(prev => !prev)}>\n {expanded ? showLessText : showMoreText}\n </button>\n <DownIcon className={cn('tablet:size-5 size-4', expanded && 'rotate-180')} />\n </div>\n )}\n </div>\n )\n }\n)\n\nAccessoriesProductGrid.displayName = 'AccessoriesProductGrid'\n\nexport default AccessoriesProductGrid\n"],
|
|
5
|
+
"mappings": "aAwBM,cAAAA,EA6BI,QAAAC,MA7BJ,oBAtBN,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,+BAWnB,MAAMC,EAAW,CAAC,CAAE,UAAAC,CAAU,IAE1BL,EAAC,OACC,MAAM,6BACN,UAAWK,EACX,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OAEL,SAAAL,EAAC,QACC,EAAE,gUACF,KAAK,eACP,EACF,EAIEM,EAAyBJ,EAAM,WACnC,CACE,CAAE,SAAAK,EAAU,WAAAC,EAAa,EAAG,aAAAC,EAAe,YAAa,aAAAC,EAAe,YAAa,SAAAC,EAAW,GAAM,UAAAN,CAAU,EAC/GO,IACG,CACH,KAAM,CAACC,EAAUC,CAAW,EAAIZ,EAAM,SAAS,EAAK,EAC9Ca,EAAQb,EAAM,SAAS,QAAQK,CAAQ,EACvCS,EAAUD,EAAM,OAASP,EACzBS,EAAeD,GAAW,CAACH,EAAWE,EAAM,MAAM,EAAGP,CAAU,EAAIO,EAEzE,OACEd,EAAC,OAAI,IAAKW,EAAK,UAAWT,EAAG,sBAAuBE,CAAS,EAC3D,UAAAL,EAAC,OACC,UAAWG,EACT,mFACAQ,GAAY,yCACd,EAEC,SAAAM,EACH,EACCD,GACCf,EAAC,OAAI,UAAU,wEACb,UAAAD,EAAC,UAAO,UAAU,qCAAqC,QAAS,IAAMc,EAAYI,GAAQ,CAACA,CAAI,EAC5F,SAAAL,EAAWH,EAAeD,EAC7B,EACAT,EAACI,EAAA,CAAS,UAAWD,EAAG,uBAAwBU,GAAY,YAAY,EAAG,GAC7E,GAEJ,CAEJ,CACF,EAEAP,EAAuB,YAAc,yBAErC,IAAOa,EAAQb",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "DownIcon", "className", "AccessoriesProductGrid", "children", "maxVisible", "showMoreText", "showLessText", "animated", "ref", "expanded", "setExpanded", "items", "hasMore", "visibleItems", "prev", "AccessoriesProductGrid_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AccessoryProductCardProps, AccessoryProductData, AccessoryCardSemanticName, AccessoryCopyConfig } from './types.js';
|
|
3
|
+
export type { AccessoryProductCardProps, AccessoryProductData, AccessoryCardSemanticName, AccessoryCopyConfig };
|
|
4
|
+
/**
|
|
5
|
+
* AccessoryProductCard - 配件卡片(UI 组件)
|
|
6
|
+
*
|
|
7
|
+
* 组件职责(UI 层):
|
|
8
|
+
* - 渲染产品图(1:1 object-contain)
|
|
9
|
+
* - 渲染标题、描述、tags
|
|
10
|
+
* - 渲染现价 + 原价(删除线)+ 会员价(下方小字)
|
|
11
|
+
* - 渲染加购按钮及 Add / Added(n) / Unavailable 状态
|
|
12
|
+
* - Hover 效果(卡片背景变白 + 阴影,PC 端)
|
|
13
|
+
* - Loading 状态展示
|
|
14
|
+
*
|
|
15
|
+
* 业务职责(业务端负责):
|
|
16
|
+
* - 获取产品数据、计算价格
|
|
17
|
+
* - 维护 addedQuantity、isLoading 状态
|
|
18
|
+
* - 实现 onAddToCart 逻辑(调用购物车 API)
|
|
19
|
+
* - 库存检查后将 quantityAvailable 传入
|
|
20
|
+
*/
|
|
21
|
+
declare const AccessoryProductCard: React.ForwardRefExoticComponent<AccessoryProductCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
export { AccessoryProductCard };
|
|
23
|
+
export default AccessoryProductCard;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{Fragment as j,jsx as a,jsxs as l}from"react/jsx-runtime";import*as p from"react";import{cn as i}from"../../../../helpers/index.js";import{Badge as R,Card as q,CardContent as E,Picture as O,Text as s,Heading as U,Button as _}from"../../../../components/index.js";const b=p.forwardRef(({product:e,addedQuantity:m=0,maxQuantity:k,isLoading:g=!1,showTags:C=!0,showOriginalPrice:h=!1,showDiscountPrice:f=!0,showMemberPrice:A=!0,onProductClick:c,onAddToCart:L,className:N,classNames:t,copy:r},T)=>{const u=k??e.quantityAvailable??void 0,o=!e.availableForSale,w=!o&&u!=null&&m>=u,S=o||w,y=m>0,B=r?.addLabel??"Add",M=r?.addedLabel??"in Cart",$=r?.unavailableLabel??"Unavailable",z=r?.memberPriceLabel??"Member price",D=r?.plusMemberPriceLabel??"Plus member price",v=o?$:y?`${m} ${M}`:B,F=e.memberPriceType==="plus-member"?D:z,d=e.custom_name||e.name,x=e.custom_description||e.description,H=e.image;return a(q,{ref:T,className:i("rounded-card desktop:p-6 group flex flex-col border-none p-4","bg-container-primary transition-colors duration-200","hover:bg-white",y&&"bg-white",N,t?.root),children:l(E,{className:"flex flex-1 flex-col gap-3 p-0",children:[a("a",{onClick:c?()=>c(e):void 0,href:!c&&e.listingLink?e.listingLink:void 0,rel:"noreferrer",className:i("tablet:size-[196px] mx-auto block size-[138px] overflow-hidden",c||e.listingLink?"cursor-pointer":"cursor-default",t?.image),"aria-label":d,children:a(O,{source:H,alt:d,className:"aspect-square w-full mix-blend-multiply",imgClassName:"w-full h-full object-contain"})}),l("div",{className:"flex flex-1 flex-col gap-4",children:[C&&e.tags&&e.tags.length>0&&a("div",{className:i("flex flex-wrap items-center gap-1",t?.tags),children:e.tags.map((n,P)=>n?.label?a(R,{size:"sm",variant:n.variant||"outline",promotionalType:n.promotionalType,children:n.label},P):p.isValidElement(n)&&a(p.Fragment,{children:n},P))}),l("div",{className:"flex flex-col gap-1",children:[a(U,{as:"h2",className:i("lg-desktop:text-[18px] text-info-primary line-clamp-3 text-[16px] font-bold leading-[1.2] tracking-[-0.64px]",t?.title),children:d}),x&&a(s,{as:"p",className:i("lg-desktop:text-[18px] text-info-bold line-clamp-2 text-[14px] font-bold leading-[1.4] tracking-[-0.28px]",t?.description),children:x})]}),l("div",{className:i("mt-auto flex flex-col gap-2",t?.priceArea),children:[l("div",{children:[a("div",{className:"flex flex-wrap items-baseline gap-1",children:o?a(s,{as:"p",className:i("lg-desktop:text-[24px] text-info-tertiary text-[20px] font-bold leading-[1.2] tracking-[-0.8px]",t?.currentPrice),children:r?.outOfStockLabel??"Sold Out"}):l(j,{children:[a(s,{as:"p",className:i("lg-desktop:text-[24px] text-info-primary text-[20px] font-bold leading-[1.2] tracking-[-0.8px]",t?.currentPrice),children:e.price}),f&&e.discountPrice&&a(s,{as:"p",className:i("text-brand-0 lg-desktop:text-[24px] text-[20px] font-bold leading-tight tracking-[-0.32px]",t?.discountPrice),children:e.discountPrice}),(!f||!e.discountPrice)&&h&&e.originalPrice&&a(s,{as:"p",className:i("text-info-tertiary lg-desktop:text-[24px] text-[20px] font-bold leading-tight tracking-[-0.32px] line-through",t?.originalPrice),children:e.originalPrice})]})}),A&&!o&&e.memberPriceNote&&l(s,{as:"p",className:i("lg-desktop:text-[18px] text-marketing-1 text-[14px] font-bold leading-tight tracking-[-0.24px]",t?.memberPriceNote),children:[F," ",a("span",{className:"text-marketing-1",children:e.memberPriceNote})]})]}),a("div",{className:i(t?.buttonGroup),children:a(_,{variant:"primary",size:"lg",loading:g,disabled:S&&!g,onClick:()=>L?.(e),className:i("w-full",t?.addButton),"data-headless-type-name":"AccessoryShelf#ProductCard","data-headless-sku":e.sku,"data-headless-title-desc-button":`${d}#${x??""}#${v}`,children:v})})]})]})]})})});b.displayName="AccessoryShelf.ProductCard";var V=b;export{b as AccessoryProductCard,V as default};
|
|
2
|
+
//# sourceMappingURL=ProductCard.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../helpers/index.js'\nimport { Badge, Card, CardContent, Picture, Text, Heading, Button } from '../../../../components/index.js'\nimport type {\n AccessoryProductCardProps,\n AccessoryProductData,\n AccessoryCardSemanticName,\n AccessoryCopyConfig,\n} from './types.js'\n\nexport type { AccessoryProductCardProps, AccessoryProductData, AccessoryCardSemanticName, AccessoryCopyConfig }\n\n/**\n * AccessoryProductCard - \u914D\u4EF6\u5361\u7247\uFF08UI \u7EC4\u4EF6\uFF09\n *\n * \u7EC4\u4EF6\u804C\u8D23\uFF08UI \u5C42\uFF09\uFF1A\n * - \u6E32\u67D3\u4EA7\u54C1\u56FE\uFF081:1 object-contain\uFF09\n * - \u6E32\u67D3\u6807\u9898\u3001\u63CF\u8FF0\u3001tags\n * - \u6E32\u67D3\u73B0\u4EF7 + \u539F\u4EF7\uFF08\u5220\u9664\u7EBF\uFF09+ \u4F1A\u5458\u4EF7\uFF08\u4E0B\u65B9\u5C0F\u5B57\uFF09\n * - \u6E32\u67D3\u52A0\u8D2D\u6309\u94AE\u53CA Add / Added(n) / Unavailable \u72B6\u6001\n * - Hover \u6548\u679C\uFF08\u5361\u7247\u80CC\u666F\u53D8\u767D + \u9634\u5F71\uFF0CPC \u7AEF\uFF09\n * - Loading \u72B6\u6001\u5C55\u793A\n *\n * \u4E1A\u52A1\u804C\u8D23\uFF08\u4E1A\u52A1\u7AEF\u8D1F\u8D23\uFF09\uFF1A\n * - \u83B7\u53D6\u4EA7\u54C1\u6570\u636E\u3001\u8BA1\u7B97\u4EF7\u683C\n * - \u7EF4\u62A4 addedQuantity\u3001isLoading \u72B6\u6001\n * - \u5B9E\u73B0 onAddToCart \u903B\u8F91\uFF08\u8C03\u7528\u8D2D\u7269\u8F66 API\uFF09\n * - \u5E93\u5B58\u68C0\u67E5\u540E\u5C06 quantityAvailable \u4F20\u5165\n */\nconst AccessoryProductCard = React.forwardRef<HTMLDivElement, AccessoryProductCardProps>(\n (\n {\n product,\n addedQuantity = 0,\n maxQuantity,\n isLoading = false,\n showTags = true,\n showOriginalPrice = false,\n showDiscountPrice = true,\n showMemberPrice = true,\n onProductClick,\n onAddToCart,\n className,\n classNames,\n copy,\n },\n ref\n ) => {\n // \u5E93\u5B58\u9650\u5236\uFF1A\u4F18\u5148\u53D6 maxQuantity\uFF0C\u5176\u6B21\u53D6 product.quantityAvailable\n const resolvedMax = maxQuantity ?? product.quantityAvailable ?? undefined\n const isUnavailable = !product.availableForSale\n const isAtLimit = !isUnavailable && resolvedMax != null && addedQuantity >= resolvedMax\n const isDisabled = isUnavailable || isAtLimit\n const isAdded = addedQuantity > 0\n\n // \u6587\u6848\n const addLabel = copy?.addLabel ?? 'Add'\n const addedLabel = copy?.addedLabel ?? 'in Cart'\n const unavailableLabel = copy?.unavailableLabel ?? 'Unavailable'\n const memberPriceLabel = copy?.memberPriceLabel ?? 'Member price'\n const plusMemberPriceLabel = copy?.plusMemberPriceLabel ?? 'Plus member price'\n\n const buttonLabel = isUnavailable ? unavailableLabel : isAdded ? `${addedQuantity} ${addedLabel}` : addLabel\n\n const memberLabel = product.memberPriceType === 'plus-member' ? plusMemberPriceLabel : memberPriceLabel\n\n const displayTitle = product.custom_name || product.name\n const displayDescription = product.custom_description || product.description\n const displayImage = product.image\n\n return (\n <Card\n ref={ref}\n className={cn(\n 'rounded-card desktop:p-6 group flex flex-col border-none p-4',\n 'bg-container-primary transition-colors duration-200',\n 'hover:bg-white',\n isAdded && 'bg-white',\n className,\n classNames?.root\n )}\n >\n <CardContent className=\"flex flex-1 flex-col gap-3 p-0\">\n {/* \u4EA7\u54C1\u56FE 1:1 */}\n <a\n onClick={onProductClick ? () => onProductClick(product) : undefined}\n href={!onProductClick && product.listingLink ? product.listingLink : undefined}\n rel=\"noreferrer\"\n className={cn(\n 'tablet:size-[196px] mx-auto block size-[138px] overflow-hidden',\n onProductClick || product.listingLink ? 'cursor-pointer' : 'cursor-default',\n classNames?.image\n )}\n aria-label={displayTitle}\n >\n <Picture\n source={displayImage}\n alt={displayTitle}\n className=\"aspect-square w-full mix-blend-multiply\"\n imgClassName=\"w-full h-full object-contain\"\n />\n </a>\n\n {/* \u5185\u5BB9\u533A */}\n <div className=\"flex flex-1 flex-col gap-4\">\n {/* Tags */}\n {showTags && product.tags && product.tags.length > 0 && (\n <div className={cn('flex flex-wrap items-center gap-1', classNames?.tags)}>\n {product.tags.map((tag: any, index) =>\n (tag as any)?.label ? (\n <Badge\n key={index}\n size=\"sm\"\n variant={(tag.variant as any) || 'outline'}\n promotionalType={tag.promotionalType}\n >\n {tag.label}\n </Badge>\n ) : (\n React.isValidElement(tag) && <React.Fragment key={index}>{tag}</React.Fragment>\n )\n )}\n </div>\n )}\n\n {/* \u6807\u9898 + \u63CF\u8FF0 */}\n <div className=\"flex flex-col gap-1\">\n <Heading\n as=\"h2\"\n className={cn(\n 'lg-desktop:text-[18px] text-info-primary line-clamp-3 text-[16px] font-bold leading-[1.2] tracking-[-0.64px]',\n classNames?.title\n )}\n >\n {displayTitle}\n </Heading>\n {displayDescription && (\n <Text\n as=\"p\"\n className={cn(\n 'lg-desktop:text-[18px] text-info-bold line-clamp-2 text-[14px] font-bold leading-[1.4] tracking-[-0.28px]',\n classNames?.description\n )}\n >\n {displayDescription}\n </Text>\n )}\n </div>\n\n {/* \u4EF7\u683C + \u6309\u94AE */}\n <div className={cn('mt-auto flex flex-col gap-2', classNames?.priceArea)}>\n <div>\n {/* \u73B0\u4EF7 + \u539F\u4EF7\uFF08\u5220\u9664\u7EBF\uFF09 */}\n <div className=\"flex flex-wrap items-baseline gap-1\">\n {isUnavailable ? (\n <Text\n as=\"p\"\n className={cn(\n 'lg-desktop:text-[24px] text-info-tertiary text-[20px] font-bold leading-[1.2] tracking-[-0.8px]',\n classNames?.currentPrice\n )}\n >\n {copy?.outOfStockLabel ?? 'Sold Out'}\n </Text>\n ) : (\n <>\n <Text\n as=\"p\"\n className={cn(\n 'lg-desktop:text-[24px] text-info-primary text-[20px] font-bold leading-[1.2] tracking-[-0.8px]',\n classNames?.currentPrice\n )}\n >\n {product.price}\n </Text>\n {showDiscountPrice && product.discountPrice && (\n <Text\n as=\"p\"\n className={cn(\n 'text-brand-0 lg-desktop:text-[24px] text-[20px] font-bold leading-tight tracking-[-0.32px]',\n classNames?.discountPrice\n )}\n >\n {product.discountPrice}\n </Text>\n )}\n {(!showDiscountPrice || !product.discountPrice) && showOriginalPrice && product.originalPrice && (\n <Text\n as=\"p\"\n className={cn(\n 'text-info-tertiary lg-desktop:text-[24px] text-[20px] font-bold leading-tight tracking-[-0.32px] line-through',\n classNames?.originalPrice\n )}\n >\n {product.originalPrice}\n </Text>\n )}\n </>\n )}\n </div>\n\n {/* \u4F1A\u5458\u4EF7\u5C0F\u5B57 */}\n {showMemberPrice && !isUnavailable && product.memberPriceNote && (\n <Text\n as=\"p\"\n className={cn(\n 'lg-desktop:text-[18px] text-marketing-1 text-[14px] font-bold leading-tight tracking-[-0.24px]',\n classNames?.memberPriceNote\n )}\n >\n {memberLabel} <span className=\"text-marketing-1\">{product.memberPriceNote}</span>\n </Text>\n )}\n </div>\n\n {/* \u52A0\u8D2D\u6309\u94AE\uFF08\u5355\u4E00\uFF09 */}\n <div className={cn(classNames?.buttonGroup)}>\n <Button\n variant=\"primary\"\n size=\"lg\"\n loading={isLoading}\n disabled={isDisabled && !isLoading}\n onClick={() => onAddToCart?.(product)}\n className={cn('w-full', classNames?.addButton)}\n data-headless-type-name=\"AccessoryShelf#ProductCard\"\n data-headless-sku={product.sku}\n data-headless-title-desc-button={`${displayTitle}#${displayDescription ?? ''}#${buttonLabel}`}\n >\n {buttonLabel}\n </Button>\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n )\n }\n)\n\nAccessoryProductCard.displayName = 'AccessoryShelf.ProductCard'\n\nexport { AccessoryProductCard }\nexport default AccessoryProductCard\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Fragment", "jsx", "jsxs", "React", "cn", "Badge", "Card", "CardContent", "Picture", "Text", "Heading", "Button", "AccessoryProductCard", "product", "addedQuantity", "maxQuantity", "isLoading", "showTags", "showOriginalPrice", "showDiscountPrice", "showMemberPrice", "onProductClick", "onAddToCart", "className", "classNames", "copy", "ref", "resolvedMax", "isUnavailable", "isAtLimit", "isDisabled", "isAdded", "addLabel", "addedLabel", "unavailableLabel", "memberPriceLabel", "plusMemberPriceLabel", "buttonLabel", "memberLabel", "displayTitle", "displayDescription", "displayImage", "tag", "index", "ProductCard_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import AccessoryProductCard from './ProductCard.js';
|
|
3
|
+
import type { AccessoryProductData, AccessoryCardSemanticName, AccessoryCopyConfig } from './types.js';
|
|
4
|
+
export type { AccessoryProductData, AccessoryCardSemanticName, AccessoryCopyConfig };
|
|
5
|
+
export type { AccessoryProductCardProps } from './ProductCard.js';
|
|
6
|
+
export interface AccessoryShelfProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
/**
|
|
8
|
+
* 产品卡片区域 — 业务端自行组合布局容器 + AccessoryShelf.ProductCard
|
|
9
|
+
*
|
|
10
|
+
* @example 搭配 AccessoriesProductGrid
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <AccessoryShelf data={{ title: 'Add-ons' }}>
|
|
13
|
+
* <AccessoriesProductGrid maxVisible={8} showMoreText="Show more" showLessText="Show less">
|
|
14
|
+
* {products.map(p => (
|
|
15
|
+
* <AccessoryShelf.ProductCard
|
|
16
|
+
* key={p.sku}
|
|
17
|
+
* product={p}
|
|
18
|
+
* addedQuantity={quantities[p.sku]}
|
|
19
|
+
* isLoading={loadingSkus.has(p.sku)}
|
|
20
|
+
* onAddToCart={handleAddToCart}
|
|
21
|
+
* />
|
|
22
|
+
* ))}
|
|
23
|
+
* </AccessoriesProductGrid>
|
|
24
|
+
* </AccessoryShelf>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
children: React.ReactNode;
|
|
28
|
+
/** 语义化类名覆盖(仅 root/title/description 有效) */
|
|
29
|
+
classNames?: Partial<Record<'root' | 'title' | 'description', string>>;
|
|
30
|
+
}
|
|
31
|
+
export interface AccessoryShelfComponent extends React.ForwardRefExoticComponent<AccessoryShelfProps & React.RefAttributes<HTMLDivElement>> {
|
|
32
|
+
/** 配件卡片子组件,业务端在 children 中直接使用 */
|
|
33
|
+
ProductCard: typeof AccessoryProductCard;
|
|
34
|
+
}
|
|
35
|
+
export { AccessoryProductCard };
|
|
36
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<AccessoryShelfProps & React.RefAttributes<HTMLDivElement>, "container" | keyof import("../../../../shared/Styles.js").StylesProps> & import("../../../../shared/Styles.js").StylesProps & import("../../../index.js").ContainerProps & React.RefAttributes<unknown>> & {
|
|
37
|
+
readonly $$typeof: symbol;
|
|
38
|
+
ProductCard: typeof AccessoryProductCard;
|
|
39
|
+
};
|
|
40
|
+
export default _default;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as l}from"react/jsx-runtime";import*as e from"react";import{cn as f}from"../../../../helpers/index.js";import{withLayout as p}from"../../../../shared/Styles.js";import o from"./ProductCard.js";const t=e.forwardRef(({className:s,children:a,classNames:d,...i},n)=>{const r=e.useRef(null);return e.useImperativeHandle(n,()=>r.current),l("div",{ref:r,className:f("w-full",s,d?.root),...i,children:a})});t.displayName="AccessoryShelf";const c=t;c.ProductCard=o;var A=p(c);export{o as AccessoryProductCard,A as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/AccessoriesShelf/components/AccessoryShelf/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../helpers/index.js'\nimport { withLayout } from '../../../../shared/Styles.js'\nimport AccessoryProductCard from './ProductCard.js'\nimport type { AccessoryProductData, AccessoryCardSemanticName, AccessoryCopyConfig } from './types.js'\n\nexport type { AccessoryProductData, AccessoryCardSemanticName, AccessoryCopyConfig }\nexport type { AccessoryProductCardProps } from './ProductCard.js'\n\nexport interface AccessoryShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * \u4EA7\u54C1\u5361\u7247\u533A\u57DF \u2014 \u4E1A\u52A1\u7AEF\u81EA\u884C\u7EC4\u5408\u5E03\u5C40\u5BB9\u5668 + AccessoryShelf.ProductCard\n *\n * @example \u642D\u914D AccessoriesProductGrid\n * ```tsx\n * <AccessoryShelf data={{ title: 'Add-ons' }}>\n * <AccessoriesProductGrid maxVisible={8} showMoreText=\"Show more\" showLessText=\"Show less\">\n * {products.map(p => (\n * <AccessoryShelf.ProductCard\n * key={p.sku}\n * product={p}\n * addedQuantity={quantities[p.sku]}\n * isLoading={loadingSkus.has(p.sku)}\n * onAddToCart={handleAddToCart}\n * />\n * ))}\n * </AccessoriesProductGrid>\n * </AccessoryShelf>\n * ```\n */\n children: React.ReactNode\n /** \u8BED\u4E49\u5316\u7C7B\u540D\u8986\u76D6\uFF08\u4EC5 root/title/description \u6709\u6548\uFF09 */\n classNames?: Partial<Record<'root' | 'title' | 'description', string>>\n}\n\nexport interface AccessoryShelfComponent extends React.ForwardRefExoticComponent<\n AccessoryShelfProps & React.RefAttributes<HTMLDivElement>\n> {\n /** \u914D\u4EF6\u5361\u7247\u5B50\u7EC4\u4EF6\uFF0C\u4E1A\u52A1\u7AEF\u5728 children \u4E2D\u76F4\u63A5\u4F7F\u7528 */\n ProductCard: typeof AccessoryProductCard\n}\n\nconst AccessoryShelf = React.forwardRef<HTMLDivElement, AccessoryShelfProps>(\n ({ className, children, classNames, ...props }, ref) => {\n const boxRef = React.useRef<HTMLDivElement>(null)\n\n React.useImperativeHandle(ref, () => boxRef.current as HTMLDivElement)\n\n return (\n <div ref={boxRef} className={cn('w-full', className, classNames?.root)} {...props}>\n {children}\n </div>\n )\n }\n)\n\nAccessoryShelf.displayName = 'AccessoryShelf'\n\n// \u590D\u5408\u7EC4\u4EF6\uFF1AAccessoryShelf.ProductCard \u53EF\u76F4\u63A5\u4F7F\u7528\nconst AccessoryShelfWithProductCard = AccessoryShelf as AccessoryShelfComponent\nAccessoryShelfWithProductCard.ProductCard = AccessoryProductCard\n\nexport { AccessoryProductCard }\nexport default withLayout(AccessoryShelfWithProductCard)\n"],
|
|
5
|
+
"mappings": "aAmDM,cAAAA,MAAA,oBAjDN,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,+BACnB,OAAS,cAAAC,MAAkB,+BAC3B,OAAOC,MAA0B,mBAuCjC,MAAMC,EAAiBJ,EAAM,WAC3B,CAAC,CAAE,UAAAK,EAAW,SAAAC,EAAU,WAAAC,EAAY,GAAGC,CAAM,EAAGC,IAAQ,CACtD,MAAMC,EAASV,EAAM,OAAuB,IAAI,EAEhD,OAAAA,EAAM,oBAAoBS,EAAK,IAAMC,EAAO,OAAyB,EAGnEX,EAAC,OAAI,IAAKW,EAAQ,UAAWT,EAAG,SAAUI,EAAWE,GAAY,IAAI,EAAI,GAAGC,EACzE,SAAAF,EACH,CAEJ,CACF,EAEAF,EAAe,YAAc,iBAG7B,MAAMO,EAAgCP,EACtCO,EAA8B,YAAcR,EAG5C,IAAOS,EAAQV,EAAWS,CAA6B",
|
|
6
|
+
"names": ["jsx", "React", "cn", "withLayout", "AccessoryProductCard", "AccessoryShelf", "className", "children", "classNames", "props", "ref", "boxRef", "AccessoryShelfWithProductCard", "AccessoryShelf_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { BadgeProps } from '../../../../components/badge.js';
|
|
3
|
+
/**
|
|
4
|
+
* 语义化类名
|
|
5
|
+
*/
|
|
6
|
+
export type AccessoryCardSemanticName = 'root' | 'image' | 'tags' | 'title' | 'description' | 'priceArea' | 'currentPrice' | 'originalPrice' | 'discountPrice' | 'memberPriceNote' | 'buttonGroup' | 'addButton';
|
|
7
|
+
/**
|
|
8
|
+
* 文案配置
|
|
9
|
+
*/
|
|
10
|
+
export interface AccessoryCopyConfig {
|
|
11
|
+
/** 售罄文案,默认 "Sold Out" */
|
|
12
|
+
outOfStockLabel?: string;
|
|
13
|
+
/** 加购按钮文案,默认 "Add" */
|
|
14
|
+
addLabel?: string;
|
|
15
|
+
/** 已加购按钮文案前缀,默认 "Added",最终显示为 "Added (n)" */
|
|
16
|
+
addedLabel?: string;
|
|
17
|
+
/** 不可用按钮文案,默认 "Unavailable" */
|
|
18
|
+
unavailableLabel?: string;
|
|
19
|
+
/** 会员价标签文本,默认 "Member price" */
|
|
20
|
+
memberPriceLabel?: string;
|
|
21
|
+
/** Plus 会员价标签文本,默认 "Plus member price" */
|
|
22
|
+
plusMemberPriceLabel?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 产品数据接口(UI 层,价格已格式化为字符串)
|
|
26
|
+
* 业务端负责从 API 获取并转换后传入
|
|
27
|
+
*/
|
|
28
|
+
export interface AccessoryProductData {
|
|
29
|
+
/** SKU 唯一标识 */
|
|
30
|
+
sku: string;
|
|
31
|
+
/** 产品名称 */
|
|
32
|
+
name: string;
|
|
33
|
+
/** 产品主图 URL */
|
|
34
|
+
image: string;
|
|
35
|
+
/** 自定义图片 URL(覆盖 image) */
|
|
36
|
+
custom_image?: string;
|
|
37
|
+
/** 产品 handle */
|
|
38
|
+
handle: string;
|
|
39
|
+
/** Shopify ID */
|
|
40
|
+
shopify_id?: string;
|
|
41
|
+
/** 产品链接 */
|
|
42
|
+
listingLink?: string;
|
|
43
|
+
/** 自定义名称(覆盖 name) */
|
|
44
|
+
custom_name?: string;
|
|
45
|
+
/** 自定义描述(覆盖 description) */
|
|
46
|
+
custom_description?: string;
|
|
47
|
+
/** 产品描述 */
|
|
48
|
+
description?: string;
|
|
49
|
+
/** 现价(已格式化,如 "$49.99") */
|
|
50
|
+
price: string;
|
|
51
|
+
/** 原价(已格式化,有则显示删除线),优先级低于 discountPrice */
|
|
52
|
+
originalPrice?: string;
|
|
53
|
+
/** 折扣金额(已格式化,如 "-$10.00"),显示在现价旁边,品牌色、无删除线 */
|
|
54
|
+
discountPrice?: string;
|
|
55
|
+
/**
|
|
56
|
+
* 会员价提示(已格式化,如 "$42.49")
|
|
57
|
+
* 显示在现价下方小字,配合 memberPriceType 决定标签颜色
|
|
58
|
+
*/
|
|
59
|
+
memberPriceNote?: string;
|
|
60
|
+
/** 会员价类型,决定标签文案和颜色 */
|
|
61
|
+
memberPriceType?: 'member' | 'plus-member';
|
|
62
|
+
/** 是否可售 */
|
|
63
|
+
availableForSale: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* 可用库存上限(用于限制加购数量)
|
|
66
|
+
* 业务端从库存 API 获取后传入,组件只用于判断是否达到上限
|
|
67
|
+
*/
|
|
68
|
+
quantityAvailable?: number | null;
|
|
69
|
+
/** tags 列表 */
|
|
70
|
+
tags?: Array<{
|
|
71
|
+
label: string;
|
|
72
|
+
variant: BadgeProps['variant'];
|
|
73
|
+
promotionalType?: BadgeProps['promotionalType'];
|
|
74
|
+
} | React.ReactNode>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* AccessoryProductCard Props
|
|
78
|
+
* 所有业务状态(addedQuantity、isLoading 等)由业务端维护并传入
|
|
79
|
+
*/
|
|
80
|
+
export interface AccessoryProductCardProps {
|
|
81
|
+
/** 产品数据 */
|
|
82
|
+
product: AccessoryProductData;
|
|
83
|
+
/** 已加购数量(业务端维护) */
|
|
84
|
+
addedQuantity?: number;
|
|
85
|
+
/** 最大可加购数量(undefined 则不限制) */
|
|
86
|
+
maxQuantity?: number;
|
|
87
|
+
/** 加购 loading 状态(业务端维护) */
|
|
88
|
+
isLoading?: boolean;
|
|
89
|
+
/** 是否显示 tags */
|
|
90
|
+
showTags?: boolean;
|
|
91
|
+
/** 是否显示原价(删除线) */
|
|
92
|
+
showOriginalPrice?: boolean;
|
|
93
|
+
/** 是否显示折扣金额(品牌色,无删除线,优先级高于 showOriginalPrice) */
|
|
94
|
+
showDiscountPrice?: boolean;
|
|
95
|
+
/** 是否显示会员价小字 */
|
|
96
|
+
showMemberPrice?: boolean;
|
|
97
|
+
/** 点击产品图/标题回调(不传则降级为 listingLink href) */
|
|
98
|
+
onProductClick?: (product: AccessoryProductData) => void;
|
|
99
|
+
/** 点击加购按钮回调 */
|
|
100
|
+
onAddToCart?: (product: AccessoryProductData) => void;
|
|
101
|
+
/** 样式类名 */
|
|
102
|
+
className?: string;
|
|
103
|
+
/** 语义化类名覆盖 */
|
|
104
|
+
classNames?: Partial<Record<AccessoryCardSemanticName, string>>;
|
|
105
|
+
/** 文案配置 */
|
|
106
|
+
copy?: AccessoryCopyConfig;
|
|
107
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { AccessoryProductData } from '../AccessoryShelf/types.js';
|
|
3
|
+
export interface MainProductAreaProps {
|
|
4
|
+
productTitle: string;
|
|
5
|
+
variantImage?: {
|
|
6
|
+
url: string;
|
|
7
|
+
altText?: string | null;
|
|
8
|
+
} | null;
|
|
9
|
+
paramList?: {
|
|
10
|
+
label: string;
|
|
11
|
+
value: string;
|
|
12
|
+
}[];
|
|
13
|
+
addedItems?: AccessoryProductData[];
|
|
14
|
+
priceSlot?: React.ReactNode;
|
|
15
|
+
actionSlot?: React.ReactNode;
|
|
16
|
+
onItemQuantityChange?: (item: AccessoryProductData, qty: number) => void;
|
|
17
|
+
onItemRemove?: (item: AccessoryProductData) => void;
|
|
18
|
+
addedItemQuantities?: Record<string, number>;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
declare const MainProductArea: React.ForwardRefExoticComponent<MainProductAreaProps & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
export default MainProductArea;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{cn as z}from"../../../../helpers/index.js";import T from"../../../../components/input-number.js";import{Dialog as j,DialogContent as S,DialogHeader as H,DialogTitle as M,DialogFooter as F}from"../../../../components/dialog.js";import b from"../../../../components/button.js";import{Text as x,Heading as y,Picture as Q}from"../../../../components/index.js";const q=({item:n,quantity:r,onQuantityChange:s,onRemoveClick:i})=>{const c=m=>{m<1?i():s(m)};return t("div",{className:"flex items-center gap-3",children:[e("div",{className:"size-[80px] shrink-0 overflow-hidden rounded-md mix-blend-multiply",children:e("img",{src:n.image??"",alt:n.name,className:"size-full object-contain"})}),t("div",{className:"tablet:gap-2 flex w-full flex-col gap-2",children:[t("div",{className:"tablet:flex-row tablet:justify-between flex w-full min-w-0 flex-1 flex-col gap-1",children:[e(y,{size:2,className:"text-info-primary tablet:text-base line-clamp-2 text-[14px] font-bold leading-[1.2] tracking-[-0.28px]",children:n.name}),t("div",{className:"flex items-center gap-1",children:[e(x,{as:"span",className:"text-info-primary tablet:text-base text-[14px] font-bold leading-tight tracking-[-0.28px]",children:n.price}),e(x,{as:"span",className:"text-info-tertiary text-[14px] font-bold leading-tight tracking-[-0.28px] line-through",children:n.originalPrice})]})]}),t("div",{className:"flex shrink-0 flex-row justify-between",children:[e(T,{classNames:{root:"border-lines border-[1px] rounded-lg",inputWrapper:"mx-0 tablet:w-[40px] size-[28px] tablet:h-[32px]",input:"border-none",button:"border-none size-[28px] tablet:size-8"},value:r,min:0,onChange:c}),e("button",{onClick:i,className:"text-info-tertiary tablet:text-base text-[14px] font-bold leading-tight tracking-[-0.28px] underline",children:"Remove"})]})]})]})},N=o.forwardRef(({productTitle:n,variantImage:r,paramList:s,addedItems:i=[],priceSlot:c,actionSlot:m,onItemQuantityChange:h,onItemRemove:k,addedItemQuantities:d,className:w},R)=>{const[D,g]=o.useState(()=>d??{}),[u,p]=o.useState(null);o.useEffect(()=>{d&&g(d)},[d]);const P=(a,l)=>{g(f=>({...f,[a.sku]:l})),h?.(a,l)},C=()=>{if(!u)return;const a=i.find(l=>l.sku===u);p(null),a&&k?.(a)},A=i.find(a=>a.sku===u),v=a=>a.map(l=>e(q,{item:l,quantity:D[l.sku]??1,onQuantityChange:f=>P(l,f),onRemoveClick:()=>p(l.sku)},l.sku));return t("div",{ref:R,className:z("rounded-card",w),children:[t("div",{className:"tablet:gap-16 tablet:items-center flex items-start gap-2",children:[e("div",{className:"tablet:size-[216px] size-[80px] shrink-0 overflow-hidden mix-blend-multiply",children:e(Q,{source:r?.url,alt:r?.altText??n,className:"size-full",imgClassName:"object-cover h-full"})}),t("div",{className:"flex-1",children:[t("div",{className:"tablet:flex-row flex min-w-0 flex-col items-center justify-between gap-4",children:[t("div",{className:"flex w-full min-w-0 flex-1 flex-col gap-1",children:[e(y,{as:"h1",size:2,className:"text-info-primary tracking-[-0.8px]",html:n}),s&&s.length>0&&e(x,{as:"p",className:"lg-desktop:text-[16px] text-info-tertiary text-[14px] font-bold leading-[1.4] tracking-[-0.28px]",children:s.map((a,l)=>t(o.Fragment,{children:[l>0&&" \xB7 ",a.label,": ",a.value]},l))})]}),t("div",{className:"tablet:justify-end tablet:flex-row tablet:items-center flex w-full flex-1 shrink-0 flex-col items-start gap-2",children:[c&&e("div",{className:"flex flex-col gap-1",children:c}),m]})]}),i.length>0&&t("div",{className:"tablet:block hidden",children:[e("div",{className:"bg-lines-1 my-6 h-px"}),e("div",{className:"flex flex-col gap-4",children:v(i)})]})]})]}),i.length>0&&t("div",{className:"tablet:hidden",children:[e("div",{className:"bg-lines-1 my-8 h-px"}),e("div",{className:"flex flex-col gap-4",children:v(i)})]}),e(j,{open:!!u,onOpenChange:a=>!a&&p(null),children:t(S,{className:"max-w-sm",children:[e(H,{children:e(M,{children:"Remove item?"})}),t(x,{as:"p",className:"text-info-tertiary text-[14px] leading-[1.4]",children:["Are you sure you want to remove ",e("span",{className:"text-info-primary",children:A?.name})," from your cart?"]}),t(F,{className:"gap-2",children:[e(b,{variant:"secondary",size:"base",onClick:()=>p(null),children:"Cancel"}),e(b,{variant:"primary",size:"base",onClick:C,children:"Remove"})]})]})})]})});N.displayName="MainProductArea";var G=N;export{G as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/AccessoriesShelf/components/MainProductArea/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../helpers/index.js'\nimport InputNumber, { type InputNumberProps } from '../../../../components/input-number.js'\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from '../../../../components/dialog.js'\nimport Button from '../../../../components/button.js'\nimport { Text, Heading, Picture } from '../../../../components/index.js'\nimport type { AccessoryProductData } from '../AccessoryShelf/types.js'\n\nexport interface MainProductAreaProps {\n productTitle: string\n variantImage?: { url: string; altText?: string | null } | null\n paramList?: { label: string; value: string }[]\n addedItems?: AccessoryProductData[]\n priceSlot?: React.ReactNode\n actionSlot?: React.ReactNode\n onItemQuantityChange?: (item: AccessoryProductData, qty: number) => void\n onItemRemove?: (item: AccessoryProductData) => void\n addedItemQuantities?: Record<string, number>\n className?: string\n}\n\nconst AddedItemRow = ({\n item,\n quantity,\n onQuantityChange,\n onRemoveClick,\n}: {\n item: AccessoryProductData\n quantity: number\n onQuantityChange: (qty: number) => void\n onRemoveClick: () => void\n}) => {\n const handleQuantityChange = (qty: number) => {\n if (qty < 1) {\n onRemoveClick()\n } else {\n onQuantityChange(qty)\n }\n }\n\n return (\n <div className=\"flex items-center gap-3\">\n <div className=\"size-[80px] shrink-0 overflow-hidden rounded-md mix-blend-multiply\">\n <img src={item.image ?? ''} alt={item.name} className=\"size-full object-contain\" />\n </div>\n <div className=\"tablet:gap-2 flex w-full flex-col gap-2\">\n <div className=\"tablet:flex-row tablet:justify-between flex w-full min-w-0 flex-1 flex-col gap-1\">\n <Heading\n size={2}\n className=\"text-info-primary tablet:text-base line-clamp-2 text-[14px] font-bold leading-[1.2] tracking-[-0.28px]\"\n >\n {item.name}\n </Heading>\n <div className=\"flex items-center gap-1\">\n <Text\n as=\"span\"\n className=\"text-info-primary tablet:text-base text-[14px] font-bold leading-tight tracking-[-0.28px]\"\n >\n {item.price}\n </Text>\n <Text\n as=\"span\"\n className=\"text-info-tertiary text-[14px] font-bold leading-tight tracking-[-0.28px] line-through\"\n >\n {item.originalPrice}\n </Text>\n </div>\n </div>\n <div className=\"flex shrink-0 flex-row justify-between\">\n <InputNumber\n classNames={{\n root: 'border-lines border-[1px] rounded-lg',\n inputWrapper: 'mx-0 tablet:w-[40px] size-[28px] tablet:h-[32px]',\n input: 'border-none',\n button: 'border-none size-[28px] tablet:size-8',\n }}\n value={quantity}\n min={0}\n onChange={handleQuantityChange as InputNumberProps['onChange']}\n />\n <button\n onClick={onRemoveClick}\n className=\"text-info-tertiary tablet:text-base text-[14px] font-bold leading-tight tracking-[-0.28px] underline\"\n >\n Remove\n </button>\n </div>\n </div>\n </div>\n )\n}\n\nconst MainProductArea = React.forwardRef<HTMLDivElement, MainProductAreaProps>(\n (\n {\n productTitle,\n variantImage,\n paramList,\n addedItems = [],\n priceSlot,\n actionSlot,\n onItemQuantityChange,\n onItemRemove,\n addedItemQuantities,\n className,\n },\n ref\n ) => {\n const [quantities, setQuantities] = React.useState<Record<string, number>>(() => addedItemQuantities ?? {})\n const [pendingRemoveSku, setPendingRemoveSku] = React.useState<string | null>(null)\n\n React.useEffect(() => {\n if (addedItemQuantities) {\n setQuantities(addedItemQuantities)\n }\n }, [addedItemQuantities])\n\n const handleQuantityChange = (item: AccessoryProductData, qty: number) => {\n setQuantities(prev => ({ ...prev, [item.sku]: qty }))\n onItemQuantityChange?.(item, qty)\n }\n\n const handleRemoveConfirm = () => {\n if (!pendingRemoveSku) return\n const item = addedItems.find(i => i.sku === pendingRemoveSku)\n setPendingRemoveSku(null)\n if (item) onItemRemove?.(item)\n }\n\n const pendingRemoveItem = addedItems.find(i => i.sku === pendingRemoveSku)\n\n const renderItems = (items: AccessoryProductData[]) =>\n items.map(item => (\n <AddedItemRow\n key={item.sku}\n item={item}\n quantity={quantities[item.sku] ?? 1}\n onQuantityChange={qty => handleQuantityChange(item, qty)}\n onRemoveClick={() => setPendingRemoveSku(item.sku)}\n />\n ))\n\n return (\n <div ref={ref} className={cn('rounded-card', className)}>\n <div className=\"tablet:gap-16 tablet:items-center flex items-start gap-2\">\n <div className=\"tablet:size-[216px] size-[80px] shrink-0 overflow-hidden mix-blend-multiply\">\n <Picture\n source={variantImage?.url}\n alt={variantImage?.altText ?? productTitle}\n className=\"size-full\"\n imgClassName=\"object-cover h-full\"\n />\n </div>\n\n <div className=\"flex-1\">\n <div className=\"tablet:flex-row flex min-w-0 flex-col items-center justify-between gap-4\">\n <div className=\"flex w-full min-w-0 flex-1 flex-col gap-1\">\n <Heading as=\"h1\" size={2} className=\"text-info-primary tracking-[-0.8px]\" html={productTitle} />\n {paramList && paramList.length > 0 && (\n <Text\n as=\"p\"\n className=\"lg-desktop:text-[16px] text-info-tertiary text-[14px] font-bold leading-[1.4] tracking-[-0.28px]\"\n >\n {paramList.map((p, i) => (\n <React.Fragment key={i}>\n {i > 0 && ' \u00B7 '}\n {p.label}: {p.value}\n </React.Fragment>\n ))}\n </Text>\n )}\n </div>\n <div className=\"tablet:justify-end tablet:flex-row tablet:items-center flex w-full flex-1 shrink-0 flex-col items-start gap-2\">\n {priceSlot && <div className=\"flex flex-col gap-1\">{priceSlot}</div>}\n {actionSlot}\n </div>\n </div>\n\n {addedItems.length > 0 && (\n <div className=\"tablet:block hidden\">\n <div className=\"bg-lines-1 my-6 h-px\" />\n <div className=\"flex flex-col gap-4\">{renderItems(addedItems)}</div>\n </div>\n )}\n </div>\n </div>\n\n {addedItems.length > 0 && (\n <div className=\"tablet:hidden\">\n <div className=\"bg-lines-1 my-8 h-px\" />\n <div className=\"flex flex-col gap-4\">{renderItems(addedItems)}</div>\n </div>\n )}\n\n <Dialog open={!!pendingRemoveSku} onOpenChange={open => !open && setPendingRemoveSku(null)}>\n <DialogContent className=\"max-w-sm\">\n <DialogHeader>\n <DialogTitle>Remove item?</DialogTitle>\n </DialogHeader>\n <Text as=\"p\" className=\"text-info-tertiary text-[14px] leading-[1.4]\">\n Are you sure you want to remove <span className=\"text-info-primary\">{pendingRemoveItem?.name}</span> from\n your cart?\n </Text>\n <DialogFooter className=\"gap-2\">\n <Button variant=\"secondary\" size=\"base\" onClick={() => setPendingRemoveSku(null)}>\n Cancel\n </Button>\n <Button variant=\"primary\" size=\"base\" onClick={handleRemoveConfirm}>\n Remove\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n )\n }\n)\n\nMainProductArea.displayName = 'MainProductArea'\n\nexport default MainProductArea\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "InputNumber", "Dialog", "DialogContent", "DialogHeader", "DialogTitle", "DialogFooter", "Button", "Text", "Heading", "Picture", "AddedItemRow", "item", "quantity", "onQuantityChange", "onRemoveClick", "handleQuantityChange", "qty", "MainProductArea", "productTitle", "variantImage", "paramList", "addedItems", "priceSlot", "actionSlot", "onItemQuantityChange", "onItemRemove", "addedItemQuantities", "className", "ref", "quantities", "setQuantities", "pendingRemoveSku", "setPendingRemoveSku", "prev", "handleRemoveConfirm", "i", "pendingRemoveItem", "renderItems", "items", "p", "open", "MainProductArea_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { UserType, BannerConfig, BannerAction } from '../../types.js';
|
|
3
|
+
export interface PromoBannerProps {
|
|
4
|
+
userType: UserType;
|
|
5
|
+
configs: Partial<Record<UserType, BannerConfig | null>>;
|
|
6
|
+
onAction?: (action: BannerAction) => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const PromoBanner: React.ForwardRefExoticComponent<PromoBannerProps & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
export default PromoBanner;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as C from"react";import{cn as g}from"../../../../helpers/index.js";import{Text as m}from"../../../../components/index.js";const u=()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"28",height:"24",viewBox:"0 0 28 24",fill:"none",children:[e("path",{d:"M20.3194 0C21.1834 0 21.9923 0.429768 22.479 1.14948L27.5462 8.64391C28.2476 9.68126 28.125 11.0736 27.254 11.9707L16.6544 22.8856C15.2122 24.3702 12.8426 24.3716 11.3981 22.8891L0.748688 11.9602C-0.114133 11.0747 -0.24628 9.7017 0.430898 8.66496L5.31604 1.18456C5.79941 0.444636 6.62004 0 7.49882 0H20.3194Z",fill:"#005D8E"}),e("path",{d:"M19.0076 8.33664C19.4627 7.88876 20.2013 7.88756 20.6574 8.3344C21.1132 8.78154 21.1144 9.50728 20.6596 9.95535L14.8762 15.6466C14.3983 16.1168 13.6232 16.118 13.1443 15.6488L7.34264 9.95759C6.88678 9.51045 6.88556 8.78471 7.34036 8.33664C7.79546 7.88876 8.53413 7.88756 8.99017 8.3344L14.008 13.2555L19.0076 8.33664Z",fill:"white"})]}),x=()=>t("svg",{xmlns:"http://www.w3.org/2000/svg",width:"28",height:"24",viewBox:"0 0 28 24",fill:"none",children:[e("path",{d:"M20.3194 0C21.1834 0 21.9923 0.429768 22.479 1.14948L27.5462 8.64391C28.2476 9.68126 28.125 11.0736 27.254 11.9707L16.6544 22.8856C15.2122 24.3702 12.8426 24.3716 11.3981 22.8891L0.748688 11.9602C-0.114133 11.0747 -0.24628 9.7017 0.430898 8.66496L5.31604 1.18456C5.79941 0.444636 6.62004 0 7.49882 0H20.3194Z",fill:"url(#paint0_linear_5861_8479)"}),e("path",{d:"M19.0076 8.33664C19.4627 7.88876 20.2013 7.88756 20.6574 8.3344C21.1132 8.78154 21.1144 9.50728 20.6596 9.95535L14.8762 15.6466C14.3983 16.1168 13.6232 16.118 13.1443 15.6488L7.34264 9.95759C6.88678 9.51045 6.88556 8.78471 7.34036 8.33664C7.79546 7.88876 8.53413 7.88756 8.99017 8.3344L14.008 13.2555L19.0076 8.33664Z",fill:"url(#paint1_linear_5861_8479)"}),t("defs",{children:[t("linearGradient",{id:"paint0_linear_5861_8479",x1:"-0.341464",y1:"1.07126e-06",x2:"30.68",y2:"4.66513",gradientUnits:"userSpaceOnUse",children:[e("stop",{stopColor:"#6E6754"}),e("stop",{offset:"1",stopColor:"#070708"})]}),t("linearGradient",{id:"paint1_linear_5861_8479",x1:"6.82927",y1:"8",x2:"21.9228",y2:"11.4047",gradientUnits:"userSpaceOnUse",children:[e("stop",{stopColor:"#FFF5E0"}),e("stop",{offset:"1",stopColor:"#E8C08A"})]})]})]}),h={guest:"bg-[#E1F8FE]",member:"bg-[#FFF1E1]","plus-member":"bg-[#FFF1E1]"},s=C.forwardRef(({userType:r,configs:l,onAction:d,className:p},c)=>{const n=l[r];if(!n?.text)return null;const a=()=>{n.action&&d?.(n.action)},o=!!n.action,f=n.backgroundColor?void 0:h[r];return e("div",{ref:c,role:o?"button":void 0,tabIndex:o?0:void 0,onClick:o?a:void 0,onKeyDown:o?i=>{(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),a())}:void 0,className:g("rounded-card flex items-center justify-center px-6 py-4","lg-desktop:text-[16px] text-[14px] font-bold leading-[1.4] tracking-[-0.28px]",f,o&&"cursor-pointer",p),style:n.backgroundColor?{backgroundColor:n.backgroundColor}:void 0,children:t("div",{className:"flex items-center gap-1",children:[r==="guest"?e(u,{}):e(x,{}),e(m,{html:n.text,as:"div",className:"[&_a]:text-brand-0 flex items-center gap-1 [&_a]:underline"})]})})});s.displayName="PromoBanner";var y=s;export{y as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/AccessoriesShelf/components/PromoBanner/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../helpers/index.js'\nimport type { UserType, BannerConfig, BannerAction } from '../../types.js'\nimport { Text } from '../../../../components/index.js'\n\nexport interface PromoBannerProps {\n userType: UserType\n configs: Partial<Record<UserType, BannerConfig | null>>\n onAction?: (action: BannerAction) => void\n className?: string\n}\n\nconst GuestPromotionalIcon = () => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"24\" viewBox=\"0 0 28 24\" fill=\"none\">\n <path\n d=\"M20.3194 0C21.1834 0 21.9923 0.429768 22.479 1.14948L27.5462 8.64391C28.2476 9.68126 28.125 11.0736 27.254 11.9707L16.6544 22.8856C15.2122 24.3702 12.8426 24.3716 11.3981 22.8891L0.748688 11.9602C-0.114133 11.0747 -0.24628 9.7017 0.430898 8.66496L5.31604 1.18456C5.79941 0.444636 6.62004 0 7.49882 0H20.3194Z\"\n fill=\"#005D8E\"\n />\n <path\n d=\"M19.0076 8.33664C19.4627 7.88876 20.2013 7.88756 20.6574 8.3344C21.1132 8.78154 21.1144 9.50728 20.6596 9.95535L14.8762 15.6466C14.3983 16.1168 13.6232 16.118 13.1443 15.6488L7.34264 9.95759C6.88678 9.51045 6.88556 8.78471 7.34036 8.33664C7.79546 7.88876 8.53413 7.88756 8.99017 8.3344L14.008 13.2555L19.0076 8.33664Z\"\n fill=\"white\"\n />\n </svg>\n )\n}\n\nconst MemberPromotionalIcon = () => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"28\" height=\"24\" viewBox=\"0 0 28 24\" fill=\"none\">\n <path\n d=\"M20.3194 0C21.1834 0 21.9923 0.429768 22.479 1.14948L27.5462 8.64391C28.2476 9.68126 28.125 11.0736 27.254 11.9707L16.6544 22.8856C15.2122 24.3702 12.8426 24.3716 11.3981 22.8891L0.748688 11.9602C-0.114133 11.0747 -0.24628 9.7017 0.430898 8.66496L5.31604 1.18456C5.79941 0.444636 6.62004 0 7.49882 0H20.3194Z\"\n fill=\"url(#paint0_linear_5861_8479)\"\n />\n <path\n d=\"M19.0076 8.33664C19.4627 7.88876 20.2013 7.88756 20.6574 8.3344C21.1132 8.78154 21.1144 9.50728 20.6596 9.95535L14.8762 15.6466C14.3983 16.1168 13.6232 16.118 13.1443 15.6488L7.34264 9.95759C6.88678 9.51045 6.88556 8.78471 7.34036 8.33664C7.79546 7.88876 8.53413 7.88756 8.99017 8.3344L14.008 13.2555L19.0076 8.33664Z\"\n fill=\"url(#paint1_linear_5861_8479)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_5861_8479\"\n x1=\"-0.341464\"\n y1=\"1.07126e-06\"\n x2=\"30.68\"\n y2=\"4.66513\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#6E6754\" />\n <stop offset=\"1\" stopColor=\"#070708\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_5861_8479\"\n x1=\"6.82927\"\n y1=\"8\"\n x2=\"21.9228\"\n y2=\"11.4047\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FFF5E0\" />\n <stop offset=\"1\" stopColor=\"#E8C08A\" />\n </linearGradient>\n </defs>\n </svg>\n )\n}\n\nconst BANNER_BG: Record<UserType, string> = {\n guest: 'bg-[#E1F8FE]',\n member: 'bg-[#FFF1E1]',\n 'plus-member': 'bg-[#FFF1E1]',\n}\n\nconst PromoBanner = React.forwardRef<HTMLDivElement, PromoBannerProps>(\n ({ userType, configs, onAction, className }, ref) => {\n const config = configs[userType]\n if (!config?.text) return null\n\n const handleClick = () => {\n if (config.action) onAction?.(config.action)\n }\n\n const hasClickBehavior = !!config.action\n const bgColor = config.backgroundColor ? undefined : BANNER_BG[userType]\n\n return (\n <div\n ref={ref}\n role={hasClickBehavior ? 'button' : undefined}\n tabIndex={hasClickBehavior ? 0 : undefined}\n onClick={hasClickBehavior ? handleClick : undefined}\n onKeyDown={\n hasClickBehavior\n ? e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }\n : undefined\n }\n className={cn(\n 'rounded-card flex items-center justify-center px-6 py-4',\n 'lg-desktop:text-[16px] text-[14px] font-bold leading-[1.4] tracking-[-0.28px]',\n bgColor,\n hasClickBehavior && 'cursor-pointer',\n className\n )}\n style={config.backgroundColor ? { backgroundColor: config.backgroundColor } : undefined}\n >\n <div className=\"flex items-center gap-1\">\n {userType === 'guest' ? <GuestPromotionalIcon /> : <MemberPromotionalIcon />}\n <Text html={config.text} as=\"div\" className=\"[&_a]:text-brand-0 flex items-center gap-1 [&_a]:underline\" />\n </div>\n </div>\n )\n }\n)\n\nPromoBanner.displayName = 'PromoBanner'\n\nexport default PromoBanner\n"],
|
|
5
|
+
"mappings": "aAgBI,OACE,OAAAA,EADF,QAAAC,MAAA,oBAdJ,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,+BAEnB,OAAS,QAAAC,MAAY,kCASrB,MAAMC,EAAuB,IAEzBJ,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,UAAAD,EAAC,QACC,EAAE,uTACF,KAAK,UACP,EACAA,EAAC,QACC,EAAE,gUACF,KAAK,QACP,GACF,EAIEM,EAAwB,IAE1BL,EAAC,OAAI,MAAM,6BAA6B,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACtF,UAAAD,EAAC,QACC,EAAE,uTACF,KAAK,gCACP,EACAA,EAAC,QACC,EAAE,gUACF,KAAK,gCACP,EACAC,EAAC,QACC,UAAAA,EAAC,kBACC,GAAG,0BACH,GAAG,YACH,GAAG,cACH,GAAG,QACH,GAAG,UACH,cAAc,iBAEd,UAAAD,EAAC,QAAK,UAAU,UAAU,EAC1BA,EAAC,QAAK,OAAO,IAAI,UAAU,UAAU,GACvC,EACAC,EAAC,kBACC,GAAG,0BACH,GAAG,UACH,GAAG,IACH,GAAG,UACH,GAAG,UACH,cAAc,iBAEd,UAAAD,EAAC,QAAK,UAAU,UAAU,EAC1BA,EAAC,QAAK,OAAO,IAAI,UAAU,UAAU,GACvC,GACF,GACF,EAIEO,EAAsC,CAC1C,MAAO,eACP,OAAQ,eACR,cAAe,cACjB,EAEMC,EAAcN,EAAM,WACxB,CAAC,CAAE,SAAAO,EAAU,QAAAC,EAAS,SAAAC,EAAU,UAAAC,CAAU,EAAGC,IAAQ,CACnD,MAAMC,EAASJ,EAAQD,CAAQ,EAC/B,GAAI,CAACK,GAAQ,KAAM,OAAO,KAE1B,MAAMC,EAAc,IAAM,CACpBD,EAAO,QAAQH,IAAWG,EAAO,MAAM,CAC7C,EAEME,EAAmB,CAAC,CAACF,EAAO,OAC5BG,EAAUH,EAAO,gBAAkB,OAAYP,EAAUE,CAAQ,EAEvE,OACET,EAAC,OACC,IAAKa,EACL,KAAMG,EAAmB,SAAW,OACpC,SAAUA,EAAmB,EAAI,OACjC,QAASA,EAAmBD,EAAc,OAC1C,UACEC,EACIE,GAAK,EACCA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,OACjCA,EAAE,eAAe,EACjBH,EAAY,EAEhB,EACA,OAEN,UAAWZ,EACT,0DACA,gFACAc,EACAD,GAAoB,iBACpBJ,CACF,EACA,MAAOE,EAAO,gBAAkB,CAAE,gBAAiBA,EAAO,eAAgB,EAAI,OAE9E,SAAAb,EAAC,OAAI,UAAU,0BACZ,UAAAQ,IAAa,QAAUT,EAACK,EAAA,EAAqB,EAAKL,EAACM,EAAA,EAAsB,EAC1EN,EAACI,EAAA,CAAK,KAAMU,EAAO,KAAM,GAAG,MAAM,UAAU,6DAA6D,GAC3G,EACF,CAEJ,CACF,EAEAN,EAAY,YAAc,cAE1B,IAAOW,EAAQX",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "Text", "GuestPromotionalIcon", "MemberPromotionalIcon", "BANNER_BG", "PromoBanner", "userType", "configs", "onAction", "className", "ref", "config", "handleClick", "hasClickBehavior", "bgColor", "e", "PromoBanner_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface SectionHeaderProps {
|
|
3
|
+
title: string;
|
|
4
|
+
subtitle?: string;
|
|
5
|
+
selectionNote?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
declare const SectionHeader: React.ForwardRefExoticComponent<SectionHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
export default SectionHeader;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as s}from"react/jsx-runtime";import*as p from"react";import{cn as x}from"../../../../helpers/index.js";import{Text as i,Heading as m}from"../../../../components/index.js";const r=p.forwardRef(({title:l,subtitle:t,selectionNote:a,className:n},o)=>s("div",{ref:o,className:x("tablet:flex-row tablet:items-end flex flex-col justify-between gap-6",n),children:[s("div",{className:"flex min-w-0 flex-1 flex-col gap-2",children:[e(m,{html:l,size:4,className:"text-info-primary"}),t&&e(i,{as:"p",html:t,className:"lg-desktop:text-[16px] text-info-primary text-[14px] font-bold leading-[1.4] tracking-[-0.28px]"})]}),a&&e(i,{as:"p",html:a,className:"lg-desktop:text-[16px] [&_span]:text-brand-0 text-info-primary shrink-0 whitespace-nowrap text-[14px] font-bold leading-[1.4] tracking-[-0.28px]"})]}));r.displayName="SectionHeader";var c=r;export{c as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/AccessoriesShelf/components/SectionHeader/index.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../helpers/index.js'\nimport { Text, Heading } from '../../../../components/index.js'\n\nexport interface SectionHeaderProps {\n title: string\n subtitle?: string\n selectionNote?: string\n className?: string\n}\n\nconst SectionHeader = React.forwardRef<HTMLDivElement, SectionHeaderProps>(\n ({ title, subtitle, selectionNote, className }, ref) => {\n return (\n <div ref={ref} className={cn('tablet:flex-row tablet:items-end flex flex-col justify-between gap-6', className)}>\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <Heading html={title} size={4} className=\"text-info-primary\" />\n {subtitle && (\n <Text\n as=\"p\"\n html={subtitle}\n className=\"lg-desktop:text-[16px] text-info-primary text-[14px] font-bold leading-[1.4] tracking-[-0.28px]\"\n />\n )}\n </div>\n {selectionNote && (\n <Text\n as=\"p\"\n html={selectionNote}\n className=\"lg-desktop:text-[16px] [&_span]:text-brand-0 text-info-primary shrink-0 whitespace-nowrap text-[14px] font-bold leading-[1.4] tracking-[-0.28px]\"\n />\n )}\n </div>\n )\n }\n)\n\nSectionHeader.displayName = 'SectionHeader'\n\nexport default SectionHeader\n"],
|
|
5
|
+
"mappings": "aAiBQ,OACE,OAAAA,EADF,QAAAC,MAAA,oBAfR,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,+BACnB,OAAS,QAAAC,EAAM,WAAAC,MAAe,kCAS9B,MAAMC,EAAgBJ,EAAM,WAC1B,CAAC,CAAE,MAAAK,EAAO,SAAAC,EAAU,cAAAC,EAAe,UAAAC,CAAU,EAAGC,IAE5CV,EAAC,OAAI,IAAKU,EAAK,UAAWR,EAAG,uEAAwEO,CAAS,EAC5G,UAAAT,EAAC,OAAI,UAAU,qCACb,UAAAD,EAACK,EAAA,CAAQ,KAAME,EAAO,KAAM,EAAG,UAAU,oBAAoB,EAC5DC,GACCR,EAACI,EAAA,CACC,GAAG,IACH,KAAMI,EACN,UAAU,kGACZ,GAEJ,EACCC,GACCT,EAACI,EAAA,CACC,GAAG,IACH,KAAMK,EACN,UAAU,mJACZ,GAEJ,CAGN,EAEAH,EAAc,YAAc,gBAE5B,IAAOM,EAAQN",
|
|
6
|
+
"names": ["jsx", "jsxs", "React", "cn", "Text", "Heading", "SectionHeader", "title", "subtitle", "selectionNote", "className", "ref", "SectionHeader_default"]
|
|
7
|
+
}
|