@anker-in/headless-ui 1.3.56 → 1.3.58

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.
Files changed (324) hide show
  1. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.d.ts +11 -0
  2. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js +2 -0
  3. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js.map +7 -0
  4. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.d.ts +23 -0
  5. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js +2 -0
  6. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js.map +7 -0
  7. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/index.d.ts +40 -0
  8. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js +2 -0
  9. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js.map +7 -0
  10. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/types.d.ts +107 -0
  11. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js +2 -0
  12. package/dist/cjs/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js.map +7 -0
  13. package/dist/cjs/biz-components/AccessoriesShelf/components/AddToCartSuccessPopover/index.d.ts +82 -0
  14. package/dist/cjs/biz-components/AccessoriesShelf/components/AddToCartSuccessPopover/index.js +2 -0
  15. package/dist/cjs/biz-components/AccessoriesShelf/components/AddToCartSuccessPopover/index.js.map +7 -0
  16. package/dist/cjs/biz-components/AccessoriesShelf/components/MainProductArea/index.d.ts +22 -0
  17. package/dist/cjs/biz-components/AccessoriesShelf/components/MainProductArea/index.js +2 -0
  18. package/dist/cjs/biz-components/AccessoriesShelf/components/MainProductArea/index.js.map +7 -0
  19. package/dist/cjs/biz-components/AccessoriesShelf/components/PromoBanner/index.d.ts +10 -0
  20. package/dist/cjs/biz-components/AccessoriesShelf/components/PromoBanner/index.js +2 -0
  21. package/dist/cjs/biz-components/AccessoriesShelf/components/PromoBanner/index.js.map +7 -0
  22. package/dist/cjs/biz-components/AccessoriesShelf/components/SectionHeader/index.d.ts +9 -0
  23. package/dist/cjs/biz-components/AccessoriesShelf/components/SectionHeader/index.js +2 -0
  24. package/dist/cjs/biz-components/AccessoriesShelf/components/SectionHeader/index.js.map +7 -0
  25. package/dist/cjs/biz-components/AccessoriesShelf/index.d.ts +9 -0
  26. package/dist/cjs/biz-components/AccessoriesShelf/index.js +2 -0
  27. package/dist/cjs/biz-components/AccessoriesShelf/index.js.map +7 -0
  28. package/dist/cjs/biz-components/AccessoriesShelf/types.d.ts +16 -0
  29. package/dist/cjs/biz-components/AccessoriesShelf/types.js +2 -0
  30. package/dist/cjs/biz-components/AccessoriesShelf/types.js.map +7 -0
  31. package/dist/cjs/biz-components/ActiveShelf/ProductCard.js +1 -1
  32. package/dist/cjs/biz-components/ActiveShelf/ProductCard.js.map +2 -2
  33. package/dist/cjs/biz-components/BuyOneGetOneShelf/PriceAndActions.js +1 -1
  34. package/dist/cjs/biz-components/BuyOneGetOneShelf/PriceAndActions.js.map +2 -2
  35. package/dist/cjs/biz-components/CartDetail/CartGiftSection/CartGiftSection.d.ts +15 -0
  36. package/dist/cjs/biz-components/CartDetail/CartGiftSection/CartGiftSection.js +2 -0
  37. package/dist/cjs/biz-components/CartDetail/CartGiftSection/CartGiftSection.js.map +7 -0
  38. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.d.ts +11 -0
  39. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js +2 -0
  40. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js.map +7 -0
  41. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.d.ts +2 -0
  42. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js +2 -0
  43. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js.map +7 -0
  44. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.d.ts +14 -0
  45. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js +2 -0
  46. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js.map +7 -0
  47. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.d.ts +2 -0
  48. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js +2 -0
  49. package/dist/cjs/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js.map +7 -0
  50. package/dist/cjs/biz-components/CartDetail/CartGiftSection/index.d.ts +2 -0
  51. package/dist/cjs/biz-components/CartDetail/CartGiftSection/index.js +2 -0
  52. package/dist/cjs/biz-components/CartDetail/CartGiftSection/index.js.map +7 -0
  53. package/dist/cjs/biz-components/CartDetail/CartItemRow/CartItemRow.d.ts +56 -0
  54. package/dist/cjs/biz-components/CartDetail/CartItemRow/CartItemRow.js +2 -0
  55. package/dist/cjs/biz-components/CartDetail/CartItemRow/CartItemRow.js.map +7 -0
  56. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.d.ts +4 -0
  57. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js +2 -0
  58. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js.map +7 -0
  59. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.d.ts +2 -0
  60. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js +2 -0
  61. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js.map +7 -0
  62. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.d.ts +10 -0
  63. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js +2 -0
  64. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js.map +7 -0
  65. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.d.ts +11 -0
  66. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js +2 -0
  67. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js.map +7 -0
  68. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.d.ts +2 -0
  69. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js +2 -0
  70. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js.map +7 -0
  71. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.d.ts +13 -0
  72. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js +2 -0
  73. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js.map +7 -0
  74. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.d.ts +2 -0
  75. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js +2 -0
  76. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js.map +7 -0
  77. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.d.ts +4 -0
  78. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js +2 -0
  79. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js.map +7 -0
  80. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.d.ts +2 -0
  81. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js +2 -0
  82. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js.map +7 -0
  83. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.d.ts +11 -0
  84. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js +2 -0
  85. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js.map +7 -0
  86. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.d.ts +8 -0
  87. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js +2 -0
  88. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js.map +7 -0
  89. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.d.ts +2 -0
  90. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js +2 -0
  91. package/dist/cjs/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js.map +7 -0
  92. package/dist/cjs/biz-components/CartDetail/CartItemRow/index.d.ts +2 -0
  93. package/dist/cjs/biz-components/CartDetail/CartItemRow/index.js +2 -0
  94. package/dist/cjs/biz-components/CartDetail/CartItemRow/index.js.map +7 -0
  95. package/dist/cjs/biz-components/CartDetail/CartPerksSection/CartPerksSection.d.ts +34 -0
  96. package/dist/cjs/biz-components/CartDetail/CartPerksSection/CartPerksSection.js +2 -0
  97. package/dist/cjs/biz-components/CartDetail/CartPerksSection/CartPerksSection.js.map +7 -0
  98. package/dist/cjs/biz-components/CartDetail/CartPerksSection/index.d.ts +2 -0
  99. package/dist/cjs/biz-components/CartDetail/CartPerksSection/index.js +2 -0
  100. package/dist/cjs/biz-components/CartDetail/CartPerksSection/index.js.map +7 -0
  101. package/dist/cjs/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.d.ts +49 -0
  102. package/dist/cjs/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js +2 -0
  103. package/dist/cjs/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js.map +7 -0
  104. package/dist/cjs/biz-components/CartDetail/CartPriceSummary/index.d.ts +2 -0
  105. package/dist/cjs/biz-components/CartDetail/CartPriceSummary/index.js +2 -0
  106. package/dist/cjs/biz-components/CartDetail/CartPriceSummary/index.js.map +7 -0
  107. package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.d.ts +26 -0
  108. package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js +2 -0
  109. package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js.map +7 -0
  110. package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/index.d.ts +2 -0
  111. package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/index.js +2 -0
  112. package/dist/cjs/biz-components/CartDetail/CartSummaryHeader/index.js.map +7 -0
  113. package/dist/cjs/biz-components/CartDetail/CartThirdParty/CartThirdParty.d.ts +10 -0
  114. package/dist/cjs/biz-components/CartDetail/CartThirdParty/CartThirdParty.js +2 -0
  115. package/dist/cjs/biz-components/CartDetail/CartThirdParty/CartThirdParty.js.map +7 -0
  116. package/dist/cjs/biz-components/CartDetail/CartThirdParty/index.d.ts +2 -0
  117. package/dist/cjs/biz-components/CartDetail/CartThirdParty/index.js +2 -0
  118. package/dist/cjs/biz-components/CartDetail/CartThirdParty/index.js.map +7 -0
  119. package/dist/cjs/biz-components/CartDetail/index.d.ts +16 -0
  120. package/dist/cjs/biz-components/CartDetail/index.js +2 -0
  121. package/dist/cjs/biz-components/CartDetail/index.js.map +7 -0
  122. package/dist/cjs/biz-components/CartDetail/types.d.ts +132 -0
  123. package/dist/cjs/biz-components/CartDetail/types.js +2 -0
  124. package/dist/cjs/biz-components/CartDetail/types.js.map +7 -0
  125. package/dist/cjs/biz-components/CreditsShelf/ProductCard.js +1 -1
  126. package/dist/cjs/biz-components/CreditsShelf/ProductCard.js.map +2 -2
  127. package/dist/cjs/biz-components/HeaderNavigation/index.js +1 -1
  128. package/dist/cjs/biz-components/HeaderNavigation/index.js.map +2 -2
  129. package/dist/cjs/biz-components/ImageOverlayShelf/ProductCard.js +1 -1
  130. package/dist/cjs/biz-components/ImageOverlayShelf/ProductCard.js.map +2 -2
  131. package/dist/cjs/biz-components/MediaShelf/ProductCard.js +1 -1
  132. package/dist/cjs/biz-components/MediaShelf/ProductCard.js.map +2 -2
  133. package/dist/cjs/biz-components/SceneShelf/ProductsPanel.js +1 -1
  134. package/dist/cjs/biz-components/SceneShelf/ProductsPanel.js.map +2 -2
  135. package/dist/cjs/biz-components/SceneShelfV2/index.js +1 -1
  136. package/dist/cjs/biz-components/SceneShelfV2/index.js.map +2 -2
  137. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js +1 -1
  138. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js.map +2 -2
  139. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  140. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
  141. package/dist/cjs/biz-components/index.d.ts +6 -0
  142. package/dist/cjs/biz-components/index.js +1 -1
  143. package/dist/cjs/biz-components/index.js.map +3 -3
  144. package/dist/cjs/components/breadcrumb.d.ts +12 -0
  145. package/dist/cjs/components/breadcrumb.js +2 -0
  146. package/dist/cjs/components/breadcrumb.js.map +7 -0
  147. package/dist/cjs/components/index.d.ts +3 -1
  148. package/dist/cjs/components/index.js +1 -1
  149. package/dist/cjs/components/index.js.map +3 -3
  150. package/dist/cjs/components/input-number.d.ts +22 -0
  151. package/dist/cjs/components/input-number.js +1 -1
  152. package/dist/cjs/components/input-number.js.map +3 -3
  153. package/dist/cjs/components/input.d.ts +5 -0
  154. package/dist/cjs/components/input.js +1 -1
  155. package/dist/cjs/components/input.js.map +3 -3
  156. package/dist/cjs/components/popover.d.ts +17 -2
  157. package/dist/cjs/components/popover.js +1 -1
  158. package/dist/cjs/components/popover.js.map +3 -3
  159. package/dist/cjs/components/toast.d.ts +25 -0
  160. package/dist/cjs/components/toast.js +2 -0
  161. package/dist/cjs/components/toast.js.map +7 -0
  162. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.d.ts +11 -0
  163. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js +2 -0
  164. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoriesProductGrid/index.js.map +7 -0
  165. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.d.ts +23 -0
  166. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js +2 -0
  167. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/ProductCard.js.map +7 -0
  168. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/index.d.ts +40 -0
  169. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js +2 -0
  170. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/index.js.map +7 -0
  171. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/types.d.ts +107 -0
  172. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js +1 -0
  173. package/dist/esm/biz-components/AccessoriesShelf/components/AccessoryShelf/types.js.map +7 -0
  174. package/dist/esm/biz-components/AccessoriesShelf/components/AddToCartSuccessPopover/index.d.ts +82 -0
  175. package/dist/esm/biz-components/AccessoriesShelf/components/AddToCartSuccessPopover/index.js +2 -0
  176. package/dist/esm/biz-components/AccessoriesShelf/components/AddToCartSuccessPopover/index.js.map +7 -0
  177. package/dist/esm/biz-components/AccessoriesShelf/components/MainProductArea/index.d.ts +22 -0
  178. package/dist/esm/biz-components/AccessoriesShelf/components/MainProductArea/index.js +2 -0
  179. package/dist/esm/biz-components/AccessoriesShelf/components/MainProductArea/index.js.map +7 -0
  180. package/dist/esm/biz-components/AccessoriesShelf/components/PromoBanner/index.d.ts +10 -0
  181. package/dist/esm/biz-components/AccessoriesShelf/components/PromoBanner/index.js +2 -0
  182. package/dist/esm/biz-components/AccessoriesShelf/components/PromoBanner/index.js.map +7 -0
  183. package/dist/esm/biz-components/AccessoriesShelf/components/SectionHeader/index.d.ts +9 -0
  184. package/dist/esm/biz-components/AccessoriesShelf/components/SectionHeader/index.js +2 -0
  185. package/dist/esm/biz-components/AccessoriesShelf/components/SectionHeader/index.js.map +7 -0
  186. package/dist/esm/biz-components/AccessoriesShelf/index.d.ts +9 -0
  187. package/dist/esm/biz-components/AccessoriesShelf/index.js +2 -0
  188. package/dist/esm/biz-components/AccessoriesShelf/index.js.map +7 -0
  189. package/dist/esm/biz-components/AccessoriesShelf/types.d.ts +16 -0
  190. package/dist/esm/biz-components/AccessoriesShelf/types.js +1 -0
  191. package/dist/esm/biz-components/AccessoriesShelf/types.js.map +7 -0
  192. package/dist/esm/biz-components/ActiveShelf/ProductCard.js +1 -1
  193. package/dist/esm/biz-components/ActiveShelf/ProductCard.js.map +2 -2
  194. package/dist/esm/biz-components/BuyOneGetOneShelf/PriceAndActions.js +1 -1
  195. package/dist/esm/biz-components/BuyOneGetOneShelf/PriceAndActions.js.map +2 -2
  196. package/dist/esm/biz-components/CartDetail/CartGiftSection/CartGiftSection.d.ts +15 -0
  197. package/dist/esm/biz-components/CartDetail/CartGiftSection/CartGiftSection.js +2 -0
  198. package/dist/esm/biz-components/CartDetail/CartGiftSection/CartGiftSection.js.map +7 -0
  199. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.d.ts +11 -0
  200. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js +2 -0
  201. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.js.map +7 -0
  202. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.d.ts +2 -0
  203. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js +2 -0
  204. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.js.map +7 -0
  205. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.d.ts +14 -0
  206. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js +2 -0
  207. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.js.map +7 -0
  208. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.d.ts +2 -0
  209. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js +2 -0
  210. package/dist/esm/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.js.map +7 -0
  211. package/dist/esm/biz-components/CartDetail/CartGiftSection/index.d.ts +2 -0
  212. package/dist/esm/biz-components/CartDetail/CartGiftSection/index.js +2 -0
  213. package/dist/esm/biz-components/CartDetail/CartGiftSection/index.js.map +7 -0
  214. package/dist/esm/biz-components/CartDetail/CartItemRow/CartItemRow.d.ts +56 -0
  215. package/dist/esm/biz-components/CartDetail/CartItemRow/CartItemRow.js +2 -0
  216. package/dist/esm/biz-components/CartDetail/CartItemRow/CartItemRow.js.map +7 -0
  217. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.d.ts +4 -0
  218. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js +2 -0
  219. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.js.map +7 -0
  220. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.d.ts +2 -0
  221. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js +2 -0
  222. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.js.map +7 -0
  223. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.d.ts +10 -0
  224. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js +1 -0
  225. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/types.js.map +7 -0
  226. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.d.ts +11 -0
  227. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js +2 -0
  228. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/CartItemInfo.js.map +7 -0
  229. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.d.ts +2 -0
  230. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js +2 -0
  231. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemInfo/index.js.map +7 -0
  232. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.d.ts +13 -0
  233. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js +2 -0
  234. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/CartItemKsp.js.map +7 -0
  235. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.d.ts +2 -0
  236. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js +2 -0
  237. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemKsp/index.js.map +7 -0
  238. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.d.ts +4 -0
  239. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js +2 -0
  240. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/CartItemRemoveConfirm.js.map +7 -0
  241. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.d.ts +2 -0
  242. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js +2 -0
  243. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/index.js.map +7 -0
  244. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.d.ts +11 -0
  245. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js +1 -0
  246. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemRemoveConfirm/types.js.map +7 -0
  247. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.d.ts +8 -0
  248. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js +2 -0
  249. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/CartItemShipping.js.map +7 -0
  250. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.d.ts +2 -0
  251. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js +2 -0
  252. package/dist/esm/biz-components/CartDetail/CartItemRow/components/CartItemShipping/index.js.map +7 -0
  253. package/dist/esm/biz-components/CartDetail/CartItemRow/index.d.ts +2 -0
  254. package/dist/esm/biz-components/CartDetail/CartItemRow/index.js +2 -0
  255. package/dist/esm/biz-components/CartDetail/CartItemRow/index.js.map +7 -0
  256. package/dist/esm/biz-components/CartDetail/CartPerksSection/CartPerksSection.d.ts +34 -0
  257. package/dist/esm/biz-components/CartDetail/CartPerksSection/CartPerksSection.js +2 -0
  258. package/dist/esm/biz-components/CartDetail/CartPerksSection/CartPerksSection.js.map +7 -0
  259. package/dist/esm/biz-components/CartDetail/CartPerksSection/index.d.ts +2 -0
  260. package/dist/esm/biz-components/CartDetail/CartPerksSection/index.js +2 -0
  261. package/dist/esm/biz-components/CartDetail/CartPerksSection/index.js.map +7 -0
  262. package/dist/esm/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.d.ts +49 -0
  263. package/dist/esm/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js +2 -0
  264. package/dist/esm/biz-components/CartDetail/CartPriceSummary/CartPriceSummary.js.map +7 -0
  265. package/dist/esm/biz-components/CartDetail/CartPriceSummary/index.d.ts +2 -0
  266. package/dist/esm/biz-components/CartDetail/CartPriceSummary/index.js +2 -0
  267. package/dist/esm/biz-components/CartDetail/CartPriceSummary/index.js.map +7 -0
  268. package/dist/esm/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.d.ts +26 -0
  269. package/dist/esm/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js +2 -0
  270. package/dist/esm/biz-components/CartDetail/CartSummaryHeader/CartSummaryHeader.js.map +7 -0
  271. package/dist/esm/biz-components/CartDetail/CartSummaryHeader/index.d.ts +2 -0
  272. package/dist/esm/biz-components/CartDetail/CartSummaryHeader/index.js +2 -0
  273. package/dist/esm/biz-components/CartDetail/CartSummaryHeader/index.js.map +7 -0
  274. package/dist/esm/biz-components/CartDetail/CartThirdParty/CartThirdParty.d.ts +10 -0
  275. package/dist/esm/biz-components/CartDetail/CartThirdParty/CartThirdParty.js +2 -0
  276. package/dist/esm/biz-components/CartDetail/CartThirdParty/CartThirdParty.js.map +7 -0
  277. package/dist/esm/biz-components/CartDetail/CartThirdParty/index.d.ts +2 -0
  278. package/dist/esm/biz-components/CartDetail/CartThirdParty/index.js +2 -0
  279. package/dist/esm/biz-components/CartDetail/CartThirdParty/index.js.map +7 -0
  280. package/dist/esm/biz-components/CartDetail/index.d.ts +16 -0
  281. package/dist/esm/biz-components/CartDetail/index.js +2 -0
  282. package/dist/esm/biz-components/CartDetail/index.js.map +7 -0
  283. package/dist/esm/biz-components/CartDetail/types.d.ts +132 -0
  284. package/dist/esm/biz-components/CartDetail/types.js +1 -0
  285. package/dist/esm/biz-components/CartDetail/types.js.map +7 -0
  286. package/dist/esm/biz-components/CreditsShelf/ProductCard.js +1 -1
  287. package/dist/esm/biz-components/CreditsShelf/ProductCard.js.map +2 -2
  288. package/dist/esm/biz-components/HeaderNavigation/index.js +1 -1
  289. package/dist/esm/biz-components/HeaderNavigation/index.js.map +2 -2
  290. package/dist/esm/biz-components/ImageOverlayShelf/ProductCard.js +1 -1
  291. package/dist/esm/biz-components/ImageOverlayShelf/ProductCard.js.map +2 -2
  292. package/dist/esm/biz-components/MediaShelf/ProductCard.js +1 -1
  293. package/dist/esm/biz-components/MediaShelf/ProductCard.js.map +2 -2
  294. package/dist/esm/biz-components/SceneShelf/ProductsPanel.js +1 -1
  295. package/dist/esm/biz-components/SceneShelf/ProductsPanel.js.map +2 -2
  296. package/dist/esm/biz-components/SceneShelfV2/index.js +1 -1
  297. package/dist/esm/biz-components/SceneShelfV2/index.js.map +2 -2
  298. package/dist/esm/biz-components/SceneShelfV3/ProductCard.js +1 -1
  299. package/dist/esm/biz-components/SceneShelfV3/ProductCard.js.map +2 -2
  300. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  301. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
  302. package/dist/esm/biz-components/index.d.ts +6 -0
  303. package/dist/esm/biz-components/index.js +1 -1
  304. package/dist/esm/biz-components/index.js.map +3 -3
  305. package/dist/esm/components/breadcrumb.d.ts +12 -0
  306. package/dist/esm/components/breadcrumb.js +2 -0
  307. package/dist/esm/components/breadcrumb.js.map +7 -0
  308. package/dist/esm/components/index.d.ts +3 -1
  309. package/dist/esm/components/index.js +1 -1
  310. package/dist/esm/components/index.js.map +3 -3
  311. package/dist/esm/components/input-number.d.ts +22 -0
  312. package/dist/esm/components/input-number.js +1 -1
  313. package/dist/esm/components/input-number.js.map +3 -3
  314. package/dist/esm/components/input.d.ts +5 -0
  315. package/dist/esm/components/input.js +1 -1
  316. package/dist/esm/components/input.js.map +3 -3
  317. package/dist/esm/components/popover.d.ts +17 -2
  318. package/dist/esm/components/popover.js +1 -1
  319. package/dist/esm/components/popover.js.map +3 -3
  320. package/dist/esm/components/toast.d.ts +25 -0
  321. package/dist/esm/components/toast.js +2 -0
  322. package/dist/esm/components/toast.js.map +7 -0
  323. package/package.json +1 -1
  324. package/style.css +285 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/ActiveShelf/ProductCard.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Button, Badge, Card, CardContent, Picture, Text, Heading, Progress } from '../../components/index.js'\n\nimport type { ButtonFunctionType, CopyConfig } from './types.js'\nimport type { BadgeProps } from '../../components/badge.js'\n\n/**\n * \u8D85\u5356\u65F6\u5E93\u5B58\u6761\u663E\u793A\u7684\u6700\u5C0F\u767E\u5206\u6BD4\n * \u9632\u6B62\u8D85\u5356\u65F6\u5E93\u5B58\u6761\u663E\u793A\u4E3A\u6EE1\u683C\uFF08100%\uFF09\u6216\u5B8C\u5168\u7A7A\uFF080%\uFF09\n */\nconst OVERSELLING_STOCK_PERCENTAGE = 5\n\n/**\n * \u8BED\u4E49\u5316\u7C7B\u540D\n */\nexport type ActiveShelfSemanticName =\n | 'root'\n | 'title'\n | 'description'\n | 'productCard'\n | 'productTitle'\n | 'productDescription'\n | 'productPriceLabel'\n | 'productPrice'\n | 'originalPrice'\n | 'buttonGroup'\n | 'secondaryButton'\n | 'primaryButton'\n | 'stockTrack'\n | 'stockBar'\n\n/**\n * \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F\n */\nexport type StockDisplayMode = 'always' | 'never' | 'below-quantity' | 'below-percentage'\n\n/**\n * \u57FA\u7840\u4EA7\u54C1\u6570\u636E\u63A5\u53E3\uFF08\u6765\u81EA\u5916\u90E8\u6570\u636E\u6E90\uFF09\n */\nexport interface BaseProductData {\n sku: string\n name: string\n image: string\n value: string\n handle: string\n shopify_id: string\n custom_name?: string\n custom_description?: string\n}\n\n/**\n * Shopify \u53D8\u4F53\u6570\u636E\u63A5\u53E3\n */\nexport interface VariantData {\n /**\n * \u4EA7\u54C1\u63CF\u8FF0\n */\n description?: string\n /**\n * \u53D8\u4F53id\n */\n variantId: string\n\n /**\n * \u4EA7\u54C1\u94FE\u63A5, \u70B9\u51FB\u56FE\u7247\u7684\u65F6\u5019\u8DF3\u8F6C\u5230\u8BE5\u94FE\u63A5\n */\n listingLink: string\n /**\n * \u539F\u4EF7\n */\n originalPrice: string\n /**\n * \u73B0\u4EF7\n */\n price: string\n /**\n * \u4EF7\u683C\u4E0A\u9762\u5C55\u793A\u7684\u6807\u7B7E\u6587\u672C\n */\n priceLabel?: string\n /**\n * \u603B\u5E93\u5B58\n */\n totalInventory: number\n /**\n * \u53EF\u7528\u5E93\u5B58\u6570\u91CF\n */\n quantityAvailable: number\n /**\n * \u662F\u5426\u53EF\u552E\n */\n availableForSale: boolean\n\n /**\n * tags \u5217\u8868(\u4F1A\u5458\u4EF7\uFF0C\u6298\u6263\uFF0Cnew, hot\u7B49\u6807\u7B7E\u4FE1\u606F)\n */\n tags: Array<\n | {\n label: string\n variant: BadgeProps['variant']\n promotionalType?: BadgeProps['promotionalType']\n }\n | React.ReactNode\n >\n /**\n * \u901A\u7528\u6298\u6263\u6570\u636E\uFF0C\u5305\u62EC\u6298\u6263title, \u7C7B\u578B\u548C\u503C\n */\n coupon: any\n}\n\n/**\n * \u5B8C\u6574\u7684\u4EA7\u54C1\u5361\u7247\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductCardData extends BaseProductData, VariantData {}\n\n/**\n * \u4EA7\u54C1\u5361\u7247\u7EC4\u4EF6 Props\n */\nexport interface ProductCardProps {\n /** \u4EA7\u54C1\u6570\u636E */\n product: ProductCardData\n /** \u6837\u5F0F\u7C7B\u540D */\n className?: string\n /** \u662F\u5426\u5C55\u793A\u6807\u7B7E\u7CFB\u7EDF */\n showTags?: boolean\n /** \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F */\n stockDisplayMode?: StockDisplayMode\n /** \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09 */\n stockThresholdValue?: number\n /** \u70B9\u51FB\u4E86\u89E3\u66F4\u591A\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u52A0\u5165\u8D2D\u7269\u8F66\u56DE\u8C03 */\n onAddToCart?: (product: ProductCardData) => void\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u529F\u80FD */\n secondaryButtonFun?: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u529F\u80FD */\n primaryButtonFun?: ButtonFunctionType\n /** \u662F\u5426\u5C55\u793A\u539F\u4EF7\uFF08\u5220\u9664\u7EBF\u4EF7\u683C\uFF09 */\n showOriginalPrice?: boolean\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n onProductImageClick?: (product: ProductCardData) => void\n}\n\n/**\n * \u5224\u65AD\u662F\u5426\u5E94\u8BE5\u663E\u793A\u5E93\u5B58\u4FE1\u606F\n * @param stockDisplayMode \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F\n * @param stockThresholdValue \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09\n * @param quantityAvailable \u53EF\u7528\u5E93\u5B58\u6570\u91CF\n * @param totalInventory \u603B\u5E93\u5B58\n * @returns \u662F\u5426\u663E\u793A\u5E93\u5B58\u4FE1\u606F\n */\nfunction shouldShowStock(\n stockDisplayMode: StockDisplayMode | undefined,\n stockThresholdValue: number | undefined,\n quantityAvailable: number,\n totalInventory: number\n): boolean {\n // \u672A\u914D\u7F6E\u65F6\u9ED8\u8BA4\u663E\u793A\n if (stockDisplayMode === undefined) {\n return true\n }\n\n // \u6839\u636E\u5C55\u793A\u6A21\u5F0F\u5224\u65AD\n switch (stockDisplayMode) {\n case 'always':\n // \u603B\u662F\u663E\u793A\n return true\n\n case 'never':\n // \u6C38\u4E0D\u663E\u793A\n return false\n\n case 'below-quantity':\n // \u5F53\u5E93\u5B58\u6570\u91CF\u4F4E\u4E8E\u9608\u503C\u65F6\u663E\u793A\n if (stockThresholdValue === undefined) {\n return true // \u6CA1\u6709\u8BBE\u7F6E\u9608\u503C\u65F6\u9ED8\u8BA4\u663E\u793A\n }\n\n return quantityAvailable <= stockThresholdValue\n\n case 'below-percentage':\n // \u5F53\u5E93\u5B58\u767E\u5206\u6BD4\u4F4E\u4E8E\u9608\u503C\u65F6\u663E\u793A\n if (stockThresholdValue === undefined) {\n return true // \u6CA1\u6709\u8BBE\u7F6E\u9608\u503C\u65F6\u9ED8\u8BA4\u663E\u793A\n }\n return (quantityAvailable / totalInventory) * 100 <= stockThresholdValue\n\n default:\n // \u672A\u77E5\u6A21\u5F0F\u65F6\u9ED8\u8BA4\u663E\u793A\n return true\n }\n}\n\n/**\n * \u4EA7\u54C1\u5361\u7247\u7EC4\u4EF6\n */\nconst ProductCard = React.forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n product,\n className,\n showTags = true,\n stockDisplayMode,\n stockThresholdValue,\n onLearnMore,\n onShopNow,\n onAddToCart,\n classNames,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n showOriginalPrice,\n copy,\n onProductImageClick,\n },\n ref\n ) => {\n const [primaryLoading, setPrimaryLoading] = React.useState(false)\n const [secondaryLoading, setSecondaryLoading] = React.useState(false)\n\n const stockPercentage = React.useMemo(() => {\n if (product?.availableForSale && product?.quantityAvailable <= 0) {\n return OVERSELLING_STOCK_PERCENTAGE\n }\n // \u4E0D\u53EF\u552E\u65F6\u663E\u793A0%\n if (!product?.availableForSale) {\n return 0\n }\n return ((product?.quantityAvailable ?? 0) / (product?.totalInventory ?? 1)) * 100\n }, [product?.availableForSale, product?.quantityAvailable, product?.totalInventory])\n\n // \u6839\u636E\u6309\u94AE\u529F\u80FD\u7C7B\u578B\u8C03\u7528\u76F8\u5E94\u7684\u56DE\u8C03\u51FD\u6570\n const handleButtonClick = async (buttonFun?: ButtonFunctionType, buttonType?: 'primary' | 'secondary') => {\n if (!buttonFun) return\n\n const setLoading = buttonType === 'primary' ? setPrimaryLoading : setSecondaryLoading\n setLoading(true)\n\n try {\n switch (buttonFun) {\n case 'buyNow':\n await onShopNow?.(product)\n break\n case 'addCart':\n await onAddToCart?.(product)\n break\n case 'learnMore':\n await onLearnMore?.(product)\n break\n default:\n break\n }\n } finally {\n setLoading(false)\n }\n }\n\n const overselling = product.availableForSale && product.quantityAvailable <= 0\n\n return (\n <Card\n ref={ref}\n className={cn(\n 'bg-container-primary hover:bg-container-secondary-0 flex h-full flex-col overflow-hidden border-none',\n className,\n classNames?.productCard\n )}\n >\n <CardContent className=\"desktop:p-6 relative flex flex-1 flex-col justify-between p-4\">\n {/* \u6807\u7B7E */}\n <div className=\"lg-desktop:h-[28px] flex h-[24px] gap-1\">\n {showTags &&\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 className={cn(tag.variant === 'promotional' ? 'ml-2' : '')}\n promotionalType={tag.promotionalType}\n >\n {tag.label}\n </Badge>\n ) : (\n <React.Fragment key={index}>{tag}</React.Fragment>\n )\n )}\n </div>\n\n {/* \u4EA7\u54C1\u56FE\u533A\u57DF */}\n <div className=\"product-image-wrapper lg-desktop:size-[196px] mx-auto size-[138px] cursor-pointer overflow-hidden\">\n <a\n onClick={() => onProductImageClick?.(product)}\n {...(!onProductImageClick && {\n href: product?.listingLink,\n })}\n rel=\"noreferrer\"\n >\n <Picture\n source={product.image}\n alt={product.name}\n className=\"aspect-square size-full object-contain\"\n imgClassName=\"w-full h-full object-contain\"\n />\n </a>\n </div>\n\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"flex h-full flex-1 grow flex-col justify-between\">\n {/* \u4EA7\u54C1\u4FE1\u606F */}\n <div className=\"mb-4\">\n <Heading\n as=\"h3\"\n size={2}\n className={cn('text-info-primary mb-2 line-clamp-2 min-h-[2.4em]', classNames?.productTitle)}\n html={product.custom_name || product.name}\n />\n {product?.description && (\n <Text\n size={2}\n className={cn(\n 'text-info-secondary desktop:line-clamp-2 desktop:min-h-[2.4em] desktop:text-[16px] lg-desktop:text-[18px] line-clamp-2 min-h-[2.4em] text-[14px]',\n classNames?.productDescription\n )}\n html={product.custom_description || product.description}\n />\n )}\n </div>\n\n {/* \u4EF7\u683C\u533A\u57DF */}\n <div>\n <div className={cn('mb-2', classNames?.productPrice)}>\n <div className=\"flex items-baseline gap-2\">\n {product.availableForSale ? (\n <>\n <Heading size={2} className=\"text-info-primary\" as=\"h6\">\n {product.price}\n </Heading>\n {showOriginalPrice && product.originalPrice && (\n <Heading\n size={2}\n className={cn('text-info-tertiary line-through', classNames?.originalPrice)}\n as=\"h6\"\n >\n {product.originalPrice}\n </Heading>\n )}\n </>\n ) : (\n <Heading size={2} className=\"text-info-tertiary\">\n {copy?.outOfStockLabel ?? 'Sold Out'}\n </Heading>\n )}\n </div>\n </div>\n\n {product?.priceLabel && product?.availableForSale && (\n <Text\n size={4}\n className={cn(\n 'text-marketing-1 desktop:text-[16px] lg-desktop:text-[18px] mt-2 text-[14px]',\n classNames?.productPriceLabel\n )}\n >\n {product.priceLabel}\n </Text>\n )}\n\n {/* \u6309\u94AE\u533A\u57DF */}\n <div className={cn('lg-desktop:gap-3 tablet:flex-nowrap flex flex-wrap gap-2', classNames?.buttonGroup)}>\n {secondaryButtonText && (\n <Button\n variant=\"secondary\"\n size=\"base\"\n className={cn('tablet:w-fit w-full', classNames?.secondaryButton)}\n onClick={() => handleButtonClick(secondaryButtonFun, 'secondary')}\n disabled={!product.availableForSale && secondaryButtonFun !== 'learnMore'}\n loading={secondaryLoading}\n data-headless-type-name=\"ActiveShelf#ProductCard\"\n data-headless-title-desc-button={`${product.custom_name || product.name}#${product.description || ''}#${secondaryButtonText}`}\n data-headless-sku={product.sku}\n >\n {secondaryButtonText}\n </Button>\n )}\n {primaryButtonText && (\n <Button\n variant=\"primary\"\n size=\"base\"\n className={cn('tablet:w-fit w-full', classNames?.primaryButton)}\n onClick={() => handleButtonClick(primaryButtonFun, 'primary')}\n disabled={!product.availableForSale && primaryButtonFun !== 'learnMore'}\n loading={primaryLoading}\n data-headless-type-name=\"ActiveShelf#ProductCard\"\n data-headless-title-desc-button={`${product.custom_name || product.name}#${product.description || ''}#${primaryButtonText}`}\n data-headless-sku={product.sku}\n >\n {primaryButtonText}\n </Button>\n )}\n </div>\n\n {/* \u5E93\u5B58\u4FE1\u606F */}\n {shouldShowStock(\n stockDisplayMode,\n stockThresholdValue,\n product?.quantityAvailable ?? 0,\n product?.totalInventory ?? 0\n ) && (\n <div className=\"mt-4 space-y-2\">\n <Progress\n value={stockPercentage}\n max={100}\n min={0}\n size=\"base\"\n variant=\"default\"\n aria-label=\"stock progress\"\n classNames={{\n root: cn('bg-[var(--progress-track-bg,rgba(0,0,0,0.2))]', classNames?.stockTrack),\n progressBar: cn('bg-brand-0 transition-all duration-300 ease-in-out', classNames?.stockBar),\n }}\n />\n <Text size={3} className=\"text-info-tertiary text-[14px]\">\n {overselling\n ? copy?.limitedStock\n : copy?.stockDisplayText?.replace(\n '{count}',\n `${product.availableForSale ? product.quantityAvailable : 0}`\n )}\n </Text>\n </div>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n )\n }\n)\n\nProductCard.displayName = 'ActiveShelf.ProductCard'\n\nexport { ProductCard }\nexport default ProductCard\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Button, Badge, Card, CardContent, Picture, Text, Heading, Progress } from '../../components/index.js'\n\nimport type { ButtonFunctionType, CopyConfig } from './types.js'\nimport type { BadgeProps } from '../../components/badge.js'\n\n/**\n * \u8D85\u5356\u65F6\u5E93\u5B58\u6761\u663E\u793A\u7684\u6700\u5C0F\u767E\u5206\u6BD4\n * \u9632\u6B62\u8D85\u5356\u65F6\u5E93\u5B58\u6761\u663E\u793A\u4E3A\u6EE1\u683C\uFF08100%\uFF09\u6216\u5B8C\u5168\u7A7A\uFF080%\uFF09\n */\nconst OVERSELLING_STOCK_PERCENTAGE = 5\n\n/**\n * \u8BED\u4E49\u5316\u7C7B\u540D\n */\nexport type ActiveShelfSemanticName =\n | 'root'\n | 'title'\n | 'description'\n | 'productCard'\n | 'productTitle'\n | 'productDescription'\n | 'productPriceLabel'\n | 'productPrice'\n | 'originalPrice'\n | 'buttonGroup'\n | 'secondaryButton'\n | 'primaryButton'\n | 'stockTrack'\n | 'stockBar'\n\n/**\n * \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F\n */\nexport type StockDisplayMode = 'always' | 'never' | 'below-quantity' | 'below-percentage'\n\n/**\n * \u57FA\u7840\u4EA7\u54C1\u6570\u636E\u63A5\u53E3\uFF08\u6765\u81EA\u5916\u90E8\u6570\u636E\u6E90\uFF09\n */\nexport interface BaseProductData {\n sku: string\n name: string\n image: string\n value: string\n handle: string\n shopify_id: string\n custom_name?: string\n custom_description?: string\n}\n\n/**\n * Shopify \u53D8\u4F53\u6570\u636E\u63A5\u53E3\n */\nexport interface VariantData {\n /**\n * \u4EA7\u54C1\u63CF\u8FF0\n */\n description?: string\n /**\n * \u53D8\u4F53id\n */\n variantId: string\n\n /**\n * \u4EA7\u54C1\u94FE\u63A5, \u70B9\u51FB\u56FE\u7247\u7684\u65F6\u5019\u8DF3\u8F6C\u5230\u8BE5\u94FE\u63A5\n */\n listingLink: string\n /**\n * \u539F\u4EF7\n */\n originalPrice: string\n /**\n * \u73B0\u4EF7\n */\n price: string\n /**\n * \u4EF7\u683C\u4E0A\u9762\u5C55\u793A\u7684\u6807\u7B7E\u6587\u672C\n */\n priceLabel?: string\n /**\n * \u603B\u5E93\u5B58\n */\n totalInventory: number\n /**\n * \u53EF\u7528\u5E93\u5B58\u6570\u91CF\n */\n quantityAvailable: number\n /**\n * \u662F\u5426\u53EF\u552E\n */\n availableForSale: boolean\n\n /**\n * tags \u5217\u8868(\u4F1A\u5458\u4EF7\uFF0C\u6298\u6263\uFF0Cnew, hot\u7B49\u6807\u7B7E\u4FE1\u606F)\n */\n tags: Array<\n | {\n label: string\n variant: BadgeProps['variant']\n promotionalType?: BadgeProps['promotionalType']\n }\n | React.ReactNode\n >\n /**\n * \u901A\u7528\u6298\u6263\u6570\u636E\uFF0C\u5305\u62EC\u6298\u6263title, \u7C7B\u578B\u548C\u503C\n */\n coupon: any\n}\n\n/**\n * \u5B8C\u6574\u7684\u4EA7\u54C1\u5361\u7247\u6570\u636E\u63A5\u53E3\n */\nexport interface ProductCardData extends BaseProductData, VariantData {}\n\n/**\n * \u4EA7\u54C1\u5361\u7247\u7EC4\u4EF6 Props\n */\nexport interface ProductCardProps {\n /** \u4EA7\u54C1\u6570\u636E */\n product: ProductCardData\n /** \u6837\u5F0F\u7C7B\u540D */\n className?: string\n /** \u662F\u5426\u5C55\u793A\u6807\u7B7E\u7CFB\u7EDF */\n showTags?: boolean\n /** \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F */\n stockDisplayMode?: StockDisplayMode\n /** \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09 */\n stockThresholdValue?: number\n /** \u70B9\u51FB\u4E86\u89E3\u66F4\u591A\u56DE\u8C03 */\n onLearnMore?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u7ACB\u5373\u8D2D\u4E70\u56DE\u8C03 */\n onShopNow?: (product: ProductCardData) => void\n /** \u70B9\u51FB\u52A0\u5165\u8D2D\u7269\u8F66\u56DE\u8C03 */\n onAddToCart?: (product: ProductCardData) => void\n /** \u8BED\u4E49\u5316\u7C7B\u540D */\n classNames?: Partial<Record<ActiveShelfSemanticName, string>>\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u6587\u672C */\n secondaryButtonText?: string\n /** \u4E86\u89E3\u66F4\u591A\u6309\u94AE\u529F\u80FD */\n secondaryButtonFun?: ButtonFunctionType\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u6587\u672C */\n primaryButtonText?: string\n /** \u7ACB\u5373\u8D2D\u4E70\u6309\u94AE\u529F\u80FD */\n primaryButtonFun?: ButtonFunctionType\n /** \u662F\u5426\u5C55\u793A\u539F\u4EF7\uFF08\u5220\u9664\u7EBF\u4EF7\u683C\uFF09 */\n showOriginalPrice?: boolean\n /** \u6587\u6848\u914D\u7F6E */\n copy?: CopyConfig\n onProductImageClick?: (product: ProductCardData) => void\n}\n\n/**\n * \u5224\u65AD\u662F\u5426\u5E94\u8BE5\u663E\u793A\u5E93\u5B58\u4FE1\u606F\n * @param stockDisplayMode \u5E93\u5B58\u5C55\u793A\u6A21\u5F0F\n * @param stockThresholdValue \u5E93\u5B58\u9608\u503C\uFF08\u5F53\u6A21\u5F0F\u4E3A below-quantity \u6216 below-percentage \u65F6\u4F7F\u7528\uFF09\n * @param quantityAvailable \u53EF\u7528\u5E93\u5B58\u6570\u91CF\n * @param totalInventory \u603B\u5E93\u5B58\n * @returns \u662F\u5426\u663E\u793A\u5E93\u5B58\u4FE1\u606F\n */\nfunction shouldShowStock(\n stockDisplayMode: StockDisplayMode | undefined,\n stockThresholdValue: number | undefined,\n quantityAvailable: number,\n totalInventory: number\n): boolean {\n // \u672A\u914D\u7F6E\u65F6\u9ED8\u8BA4\u663E\u793A\n if (stockDisplayMode === undefined) {\n return true\n }\n\n // \u6839\u636E\u5C55\u793A\u6A21\u5F0F\u5224\u65AD\n switch (stockDisplayMode) {\n case 'always':\n // \u603B\u662F\u663E\u793A\n return true\n\n case 'never':\n // \u6C38\u4E0D\u663E\u793A\n return false\n\n case 'below-quantity':\n // \u5F53\u5E93\u5B58\u6570\u91CF\u4F4E\u4E8E\u9608\u503C\u65F6\u663E\u793A\n if (stockThresholdValue === undefined) {\n return true // \u6CA1\u6709\u8BBE\u7F6E\u9608\u503C\u65F6\u9ED8\u8BA4\u663E\u793A\n }\n\n return quantityAvailable <= stockThresholdValue\n\n case 'below-percentage':\n // \u5F53\u5E93\u5B58\u767E\u5206\u6BD4\u4F4E\u4E8E\u9608\u503C\u65F6\u663E\u793A\n if (stockThresholdValue === undefined) {\n return true // \u6CA1\u6709\u8BBE\u7F6E\u9608\u503C\u65F6\u9ED8\u8BA4\u663E\u793A\n }\n return (quantityAvailable / totalInventory) * 100 <= stockThresholdValue\n\n default:\n // \u672A\u77E5\u6A21\u5F0F\u65F6\u9ED8\u8BA4\u663E\u793A\n return true\n }\n}\n\n/**\n * \u4EA7\u54C1\u5361\u7247\u7EC4\u4EF6\n */\nconst ProductCard = React.forwardRef<HTMLDivElement, ProductCardProps>(\n (\n {\n product,\n className,\n showTags = true,\n stockDisplayMode,\n stockThresholdValue,\n onLearnMore,\n onShopNow,\n onAddToCart,\n classNames,\n secondaryButtonText,\n secondaryButtonFun,\n primaryButtonText,\n primaryButtonFun,\n showOriginalPrice,\n copy,\n onProductImageClick,\n },\n ref\n ) => {\n const [primaryLoading, setPrimaryLoading] = React.useState(false)\n const [secondaryLoading, setSecondaryLoading] = React.useState(false)\n\n const stockPercentage = React.useMemo(() => {\n if (product?.availableForSale && product?.quantityAvailable <= 0) {\n return OVERSELLING_STOCK_PERCENTAGE\n }\n // \u4E0D\u53EF\u552E\u65F6\u663E\u793A0%\n if (!product?.availableForSale) {\n return 0\n }\n return ((product?.quantityAvailable ?? 0) / (product?.totalInventory ?? 1)) * 100\n }, [product?.availableForSale, product?.quantityAvailable, product?.totalInventory])\n\n // \u6839\u636E\u6309\u94AE\u529F\u80FD\u7C7B\u578B\u8C03\u7528\u76F8\u5E94\u7684\u56DE\u8C03\u51FD\u6570\n const handleButtonClick = async (buttonFun?: ButtonFunctionType, buttonType?: 'primary' | 'secondary') => {\n if (!buttonFun) return\n\n const setLoading = buttonType === 'primary' ? setPrimaryLoading : setSecondaryLoading\n setLoading(true)\n\n try {\n switch (buttonFun) {\n case 'buyNow':\n await onShopNow?.(product)\n break\n case 'addCart':\n await onAddToCart?.(product)\n break\n case 'learnMore':\n await onLearnMore?.(product)\n break\n default:\n break\n }\n } finally {\n setLoading(false)\n }\n }\n\n const overselling = product.availableForSale && product.quantityAvailable <= 0\n\n return (\n <Card\n ref={ref}\n className={cn(\n 'bg-container-primary hover:bg-container-secondary-0 flex h-full flex-col overflow-hidden border-none',\n className,\n classNames?.productCard\n )}\n >\n <CardContent className=\"desktop:p-6 relative flex flex-1 flex-col justify-between p-4\">\n {/* \u6807\u7B7E */}\n <div className=\"lg-desktop:h-[28px] flex h-[24px] gap-1\">\n {showTags &&\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 className={cn(tag.variant === 'promotional' ? 'ml-2' : '')}\n promotionalType={tag.promotionalType}\n >\n {tag.label}\n </Badge>\n ) : (\n <React.Fragment key={index}>{tag}</React.Fragment>\n )\n )}\n </div>\n\n {/* \u4EA7\u54C1\u56FE\u533A\u57DF */}\n <div className=\"product-image-wrapper lg-desktop:size-[196px] mx-auto size-[138px] cursor-pointer overflow-hidden\">\n <a\n onClick={() => onProductImageClick?.(product)}\n {...(!onProductImageClick && {\n href: product?.listingLink,\n })}\n rel=\"noreferrer\"\n >\n <Picture\n source={product.image}\n alt={product.name}\n className=\"aspect-square size-full object-contain\"\n imgClassName=\"w-full h-full object-contain\"\n />\n </a>\n </div>\n\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"flex h-full flex-1 grow flex-col justify-between\">\n {/* \u4EA7\u54C1\u4FE1\u606F */}\n <div className=\"mb-4\">\n <Heading\n as=\"h3\"\n size={2}\n className={cn('text-info-primary mb-2 line-clamp-2 min-h-[2.4em]', classNames?.productTitle)}\n html={product.custom_name || product.name}\n />\n {product?.description && (\n <Text\n size={2}\n className={cn(\n 'text-info-secondary desktop:line-clamp-2 desktop:min-h-[2.4em] desktop:text-[16px] lg-desktop:text-[18px] line-clamp-2 min-h-[2.4em] text-[14px]',\n classNames?.productDescription\n )}\n html={product.custom_description || product.description}\n />\n )}\n </div>\n\n {/* \u4EF7\u683C\u533A\u57DF */}\n <div>\n <div className={cn('mb-2', classNames?.productPrice)}>\n <div className=\"flex items-baseline gap-2\">\n {product.availableForSale ? (\n <>\n <Heading size={2} className=\"text-info-primary\" as=\"h6\">\n {product.price}\n </Heading>\n {showOriginalPrice && product.originalPrice && (\n <Heading\n size={2}\n className={cn('text-info-tertiary line-through', classNames?.originalPrice)}\n as=\"h6\"\n >\n {product.originalPrice}\n </Heading>\n )}\n </>\n ) : (\n <Heading size={2} className=\"text-info-tertiary\">\n {copy?.outOfStockLabel ?? 'Sold Out'}\n </Heading>\n )}\n </div>\n </div>\n\n {product?.priceLabel && product?.availableForSale && (\n <Text\n size={4}\n className={cn(\n 'text-marketing-1 desktop:text-[16px] lg-desktop:text-[18px] mt-2 text-[14px]',\n classNames?.productPriceLabel\n )}\n >\n {product.priceLabel}\n </Text>\n )}\n\n {/* \u6309\u94AE\u533A\u57DF */}\n <div className={cn('lg-desktop:gap-3 tablet:flex-nowrap flex flex-wrap gap-2', classNames?.buttonGroup)}>\n {secondaryButtonText && (\n <Button\n variant=\"secondary\"\n size=\"base\"\n className={cn(\n 'tablet:w-fit tablet:min-w-0 tablet:whitespace-normal tablet:text-center w-full whitespace-nowrap',\n classNames?.secondaryButton\n )}\n onClick={() => handleButtonClick(secondaryButtonFun, 'secondary')}\n disabled={!product.availableForSale && secondaryButtonFun !== 'learnMore'}\n loading={secondaryLoading}\n data-headless-type-name=\"ActiveShelf#ProductCard\"\n data-headless-title-desc-button={`${product.custom_name || product.name}#${product.description || ''}#${secondaryButtonText}`}\n data-headless-sku={product.sku}\n >\n {secondaryButtonText}\n </Button>\n )}\n {primaryButtonText && (\n <Button\n variant=\"primary\"\n size=\"base\"\n className={cn(\n 'tablet:w-fit tablet:min-w-0 tablet:whitespace-normal tablet:text-center w-full whitespace-nowrap',\n classNames?.primaryButton\n )}\n onClick={() => handleButtonClick(primaryButtonFun, 'primary')}\n disabled={!product.availableForSale && primaryButtonFun !== 'learnMore'}\n loading={primaryLoading}\n data-headless-type-name=\"ActiveShelf#ProductCard\"\n data-headless-title-desc-button={`${product.custom_name || product.name}#${product.description || ''}#${primaryButtonText}`}\n data-headless-sku={product.sku}\n >\n {primaryButtonText}\n </Button>\n )}\n </div>\n\n {/* \u5E93\u5B58\u4FE1\u606F */}\n {shouldShowStock(\n stockDisplayMode,\n stockThresholdValue,\n product?.quantityAvailable ?? 0,\n product?.totalInventory ?? 0\n ) && (\n <div className=\"mt-4 space-y-2\">\n <Progress\n value={stockPercentage}\n max={100}\n min={0}\n size=\"base\"\n variant=\"default\"\n aria-label=\"stock progress\"\n classNames={{\n root: cn('bg-[var(--progress-track-bg,rgba(0,0,0,0.2))]', classNames?.stockTrack),\n progressBar: cn('bg-brand-0 transition-all duration-300 ease-in-out', classNames?.stockBar),\n }}\n />\n <Text size={3} className=\"text-info-tertiary text-[14px]\">\n {overselling\n ? copy?.limitedStock\n : copy?.stockDisplayText?.replace(\n '{count}',\n `${product.availableForSale ? product.quantityAvailable : 0}`\n )}\n </Text>\n </div>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n )\n }\n)\n\nProductCard.displayName = 'ActiveShelf.ProductCard'\n\nexport { ProductCard }\nexport default ProductCard\n"],
5
+ "mappings": "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",
6
6
  "names": ["Fragment", "jsx", "jsxs", "React", "cn", "Button", "Badge", "Card", "CardContent", "Picture", "Text", "Heading", "Progress", "OVERSELLING_STOCK_PERCENTAGE", "shouldShowStock", "stockDisplayMode", "stockThresholdValue", "quantityAvailable", "totalInventory", "ProductCard", "product", "className", "showTags", "onLearnMore", "onShopNow", "onAddToCart", "classNames", "secondaryButtonText", "secondaryButtonFun", "primaryButtonText", "primaryButtonFun", "showOriginalPrice", "copy", "onProductImageClick", "ref", "primaryLoading", "setPrimaryLoading", "secondaryLoading", "setSecondaryLoading", "stockPercentage", "handleButtonClick", "buttonFun", "buttonType", "setLoading", "overselling", "tag", "index", "ProductCard_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{Fragment as A,jsx as e,jsxs as a}from"react/jsx-runtime";import*as k from"react";import{cn as t}from"../../helpers/index.js";import m from"../../components/button.js";import{Text as g}from"../../components/text.js";import{Heading as u}from"../../components/index.js";const f=k.forwardRef(({currentPrice:x,originalPrice:i,priceLabel:r,learnMoreText:n="Learn More",shopNowText:o="Shop Now",soldOutText:h="Sold out",onLearnMore:y,onShopNow:P,availableForSale:s,learnMoreLoading:N,shopNowLoading:v,className:b,trackingTitle:l,trackingDescription:d,trackingSku:c,classNames:p},O)=>a("div",{ref:O,className:t("flex w-full flex-col justify-center gap-2",b),children:[e("div",{className:"flex w-full items-center gap-2",children:s?a(A,{children:[e(u,{size:2,className:t("text-info-primary"),children:x}),i&&e(u,{size:2,className:t("text-info-tertiary line-through",p?.productCardOriginalPrice),children:i})]}):e(g,{size:4,className:t("text-info-primary text-2xl leading-[1.2] tracking-[-0.48px]","tablet:text-xl tablet:tracking-[-0.4px]"),children:h})}),r&&e(g,{size:4,className:t("text-marketing-1 desktop:text-[16px] lg-desktop:text-[18px] text-[14px]",p?.productCardPriceLabel),children:r}),a("div",{className:t("flex w-full items-center gap-3","tablet:gap-2"),children:[e(m,{variant:"secondary",size:"lg",onClick:y,loading:N,"data-headless-type-name":"BuyOneGetOneShelf#ProductCard","data-headless-title-desc-button":`${l||""}#${d||""}#${n}`,"data-headless-sku":c,children:n}),e(m,{variant:"primary",size:"lg",onClick:P,disabled:!s,loading:v,"data-headless-type-name":"BuyOneGetOneShelf#ProductCard","data-headless-title-desc-button":`${l||""}#${d||""}#${o}`,"data-headless-sku":c,children:o})]})]}));f.displayName="PriceAndActions";var B=f;export{B as default};
1
+ "use client";import{Fragment as O,jsx as t,jsxs as r}from"react/jsx-runtime";import*as C from"react";import{cn as e}from"../../helpers/index.js";import m from"../../components/button.js";import{Text as u}from"../../components/text.js";import{Heading as g}from"../../components/index.js";const x=C.forwardRef(({currentPrice:f,originalPrice:i,priceLabel:n,learnMoreText:o="Learn More",shopNowText:s="Shop Now",soldOutText:h="Sold out",onLearnMore:y,onShopNow:P,availableForSale:l,learnMoreLoading:N,shopNowLoading:v,className:b,trackingTitle:d,trackingDescription:c,trackingSku:p,classNames:a},w)=>r("div",{ref:w,className:e("flex w-full flex-col justify-center gap-2",b),children:[t("div",{className:"flex w-full items-center gap-2",children:l?r(O,{children:[t(g,{size:2,className:e("text-info-primary"),children:f}),i&&t(g,{size:2,className:e("text-info-tertiary line-through",a?.productCardOriginalPrice),children:i})]}):t(u,{size:4,className:e("text-info-primary text-2xl leading-[1.2] tracking-[-0.48px]","tablet:text-xl tablet:tracking-[-0.4px]"),children:h})}),n&&t(u,{size:4,className:e("text-marketing-1 desktop:text-[16px] lg-desktop:text-[18px] text-[14px]",a?.productCardPriceLabel),children:n}),r("div",{className:e("flex w-full items-stretch gap-3","tablet:gap-2"),children:[t(m,{variant:"secondary",size:"lg",onClick:y,loading:N,className:e("min-w-0 flex-1 whitespace-normal text-center",a?.productCardBtnGroup),"data-headless-type-name":"BuyOneGetOneShelf#ProductCard","data-headless-title-desc-button":`${d||""}#${c||""}#${o}`,"data-headless-sku":p,children:o}),t(m,{variant:"primary",size:"lg",onClick:P,disabled:!l,loading:v,className:e("min-w-0 flex-1 whitespace-normal text-center",a?.productCardBtnGroup),"data-headless-type-name":"BuyOneGetOneShelf#ProductCard","data-headless-title-desc-button":`${d||""}#${c||""}#${s}`,"data-headless-sku":p,children:s})]})]}));x.displayName="PriceAndActions";var L=x;export{L as default};
2
2
  //# sourceMappingURL=PriceAndActions.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/BuyOneGetOneShelf/PriceAndActions.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport Button from '../../components/button.js'\nimport { Text } from '../../components/text.js'\nimport { Heading } from '../../components/index.js'\nimport type { BuyOneGetOneShelfProductCardSemanticName } from './types.js'\n\nexport interface PriceAndActionsProps extends React.HTMLAttributes<HTMLDivElement> {\n currentPrice: string\n originalPrice?: string\n priceLabel?: string\n learnMoreText?: string\n shopNowText?: string\n soldOutText?: string\n onLearnMore?: () => void\n onShopNow?: () => void\n availableForSale: boolean\n learnMoreLoading?: boolean\n shopNowLoading?: boolean\n trackingTitle?: string\n trackingDescription?: string\n trackingSku?: string\n classNames?: Partial<Record<BuyOneGetOneShelfProductCardSemanticName, string>>\n}\n\nconst PriceAndActions = React.forwardRef<HTMLDivElement, PriceAndActionsProps>(\n (\n {\n currentPrice,\n originalPrice,\n priceLabel,\n learnMoreText = 'Learn More',\n shopNowText = 'Shop Now',\n soldOutText = 'Sold out',\n onLearnMore,\n onShopNow,\n availableForSale,\n learnMoreLoading,\n shopNowLoading,\n className,\n trackingTitle,\n trackingDescription,\n trackingSku,\n classNames,\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('flex w-full flex-col justify-center gap-2', className)}>\n <div className=\"flex w-full items-center gap-2\">\n {availableForSale ? (\n <>\n <Heading size={2} className={cn('text-info-primary')}>\n {currentPrice}\n </Heading>\n {originalPrice && (\n <Heading\n size={2}\n className={cn('text-info-tertiary line-through', classNames?.productCardOriginalPrice)}\n >\n {originalPrice}\n </Heading>\n )}\n </>\n ) : (\n <Text\n size={4}\n className={cn(\n 'text-info-primary text-2xl leading-[1.2] tracking-[-0.48px]',\n 'tablet:text-xl tablet:tracking-[-0.4px]'\n )}\n >\n {soldOutText}\n </Text>\n )}\n </div>\n\n {priceLabel && (\n <Text\n size={4}\n className={cn(\n 'text-marketing-1 desktop:text-[16px] lg-desktop:text-[18px] text-[14px]',\n classNames?.productCardPriceLabel\n )}\n >\n {priceLabel}\n </Text>\n )}\n\n {/* \u6309\u94AE\u7EC4 */}\n <div className={cn('flex w-full items-center gap-3', 'tablet:gap-2')}>\n <Button\n variant=\"secondary\"\n size=\"lg\"\n onClick={onLearnMore}\n loading={learnMoreLoading}\n data-headless-type-name=\"BuyOneGetOneShelf#ProductCard\"\n data-headless-title-desc-button={`${trackingTitle || ''}#${trackingDescription || ''}#${learnMoreText}`}\n data-headless-sku={trackingSku}\n >\n {learnMoreText}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n onClick={onShopNow}\n disabled={!availableForSale}\n loading={shopNowLoading}\n data-headless-type-name=\"BuyOneGetOneShelf#ProductCard\"\n data-headless-title-desc-button={`${trackingTitle || ''}#${trackingDescription || ''}#${shopNowText}`}\n data-headless-sku={trackingSku}\n >\n {shopNowText}\n </Button>\n </div>\n </div>\n )\n }\n)\n\nPriceAndActions.displayName = 'PriceAndActions'\n\nexport default PriceAndActions\n"],
5
- "mappings": "aAqDY,mBAAAA,EACE,OAAAC,EADF,QAAAC,MAAA,oBAnDZ,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAOC,MAAY,6BACnB,OAAS,QAAAC,MAAY,2BACrB,OAAS,WAAAC,MAAe,4BAqBxB,MAAMC,EAAkBL,EAAM,WAC5B,CACE,CACE,aAAAM,EACA,cAAAC,EACA,WAAAC,EACA,cAAAC,EAAgB,aAChB,YAAAC,EAAc,WACd,YAAAC,EAAc,WACd,YAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,UAAAC,EACA,cAAAC,EACA,oBAAAC,EACA,YAAAC,EACA,WAAAC,CACF,EACAC,IAGEvB,EAAC,OAAI,IAAKuB,EAAK,UAAWrB,EAAG,4CAA6CgB,CAAS,EACjF,UAAAnB,EAAC,OAAI,UAAU,iCACZ,SAAAgB,EACCf,EAAAF,EAAA,CACE,UAAAC,EAACM,EAAA,CAAQ,KAAM,EAAG,UAAWH,EAAG,mBAAmB,EAChD,SAAAK,EACH,EACCC,GACCT,EAACM,EAAA,CACC,KAAM,EACN,UAAWH,EAAG,kCAAmCoB,GAAY,wBAAwB,EAEpF,SAAAd,EACH,GAEJ,EAEAT,EAACK,EAAA,CACC,KAAM,EACN,UAAWF,EACT,8DACA,yCACF,EAEC,SAAAU,EACH,EAEJ,EAECH,GACCV,EAACK,EAAA,CACC,KAAM,EACN,UAAWF,EACT,0EACAoB,GAAY,qBACd,EAEC,SAAAb,EACH,EAIFT,EAAC,OAAI,UAAWE,EAAG,iCAAkC,cAAc,EACjE,UAAAH,EAACI,EAAA,CACC,QAAQ,YACR,KAAK,KACL,QAASU,EACT,QAASG,EACT,0BAAwB,gCACxB,kCAAiC,GAAGG,GAAiB,EAAE,IAAIC,GAAuB,EAAE,IAAIV,CAAa,GACrG,oBAAmBW,EAElB,SAAAX,EACH,EACAX,EAACI,EAAA,CACC,QAAQ,UACR,KAAK,KACL,QAASW,EACT,SAAU,CAACC,EACX,QAASE,EACT,0BAAwB,gCACxB,kCAAiC,GAAGE,GAAiB,EAAE,IAAIC,GAAuB,EAAE,IAAIT,CAAW,GACnG,oBAAmBU,EAElB,SAAAV,EACH,GACF,GACF,CAGN,EAEAL,EAAgB,YAAc,kBAE9B,IAAOkB,EAAQlB",
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport Button from '../../components/button.js'\nimport { Text } from '../../components/text.js'\nimport { Heading } from '../../components/index.js'\nimport type { BuyOneGetOneShelfProductCardSemanticName } from './types.js'\n\nexport interface PriceAndActionsProps extends React.HTMLAttributes<HTMLDivElement> {\n currentPrice: string\n originalPrice?: string\n priceLabel?: string\n learnMoreText?: string\n shopNowText?: string\n soldOutText?: string\n onLearnMore?: () => void\n onShopNow?: () => void\n availableForSale: boolean\n learnMoreLoading?: boolean\n shopNowLoading?: boolean\n trackingTitle?: string\n trackingDescription?: string\n trackingSku?: string\n classNames?: Partial<Record<BuyOneGetOneShelfProductCardSemanticName, string>>\n}\n\nconst PriceAndActions = React.forwardRef<HTMLDivElement, PriceAndActionsProps>(\n (\n {\n currentPrice,\n originalPrice,\n priceLabel,\n learnMoreText = 'Learn More',\n shopNowText = 'Shop Now',\n soldOutText = 'Sold out',\n onLearnMore,\n onShopNow,\n availableForSale,\n learnMoreLoading,\n shopNowLoading,\n className,\n trackingTitle,\n trackingDescription,\n trackingSku,\n classNames,\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('flex w-full flex-col justify-center gap-2', className)}>\n <div className=\"flex w-full items-center gap-2\">\n {availableForSale ? (\n <>\n <Heading size={2} className={cn('text-info-primary')}>\n {currentPrice}\n </Heading>\n {originalPrice && (\n <Heading\n size={2}\n className={cn('text-info-tertiary line-through', classNames?.productCardOriginalPrice)}\n >\n {originalPrice}\n </Heading>\n )}\n </>\n ) : (\n <Text\n size={4}\n className={cn(\n 'text-info-primary text-2xl leading-[1.2] tracking-[-0.48px]',\n 'tablet:text-xl tablet:tracking-[-0.4px]'\n )}\n >\n {soldOutText}\n </Text>\n )}\n </div>\n\n {priceLabel && (\n <Text\n size={4}\n className={cn(\n 'text-marketing-1 desktop:text-[16px] lg-desktop:text-[18px] text-[14px]',\n classNames?.productCardPriceLabel\n )}\n >\n {priceLabel}\n </Text>\n )}\n\n {/* \u6309\u94AE\u7EC4 */}\n <div className={cn('flex w-full items-stretch gap-3', 'tablet:gap-2')}>\n <Button\n variant=\"secondary\"\n size=\"lg\"\n onClick={onLearnMore}\n loading={learnMoreLoading}\n className={cn('min-w-0 flex-1 whitespace-normal text-center', classNames?.productCardBtnGroup)}\n data-headless-type-name=\"BuyOneGetOneShelf#ProductCard\"\n data-headless-title-desc-button={`${trackingTitle || ''}#${trackingDescription || ''}#${learnMoreText}`}\n data-headless-sku={trackingSku}\n >\n {learnMoreText}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n onClick={onShopNow}\n disabled={!availableForSale}\n loading={shopNowLoading}\n className={cn('min-w-0 flex-1 whitespace-normal text-center', classNames?.productCardBtnGroup)}\n data-headless-type-name=\"BuyOneGetOneShelf#ProductCard\"\n data-headless-title-desc-button={`${trackingTitle || ''}#${trackingDescription || ''}#${shopNowText}`}\n data-headless-sku={trackingSku}\n >\n {shopNowText}\n </Button>\n </div>\n </div>\n )\n }\n)\n\nPriceAndActions.displayName = 'PriceAndActions'\n\nexport default PriceAndActions\n"],
5
+ "mappings": "aAqDY,mBAAAA,EACE,OAAAC,EADF,QAAAC,MAAA,oBAnDZ,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAOC,MAAY,6BACnB,OAAS,QAAAC,MAAY,2BACrB,OAAS,WAAAC,MAAe,4BAqBxB,MAAMC,EAAkBL,EAAM,WAC5B,CACE,CACE,aAAAM,EACA,cAAAC,EACA,WAAAC,EACA,cAAAC,EAAgB,aAChB,YAAAC,EAAc,WACd,YAAAC,EAAc,WACd,YAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,UAAAC,EACA,cAAAC,EACA,oBAAAC,EACA,YAAAC,EACA,WAAAC,CACF,EACAC,IAGEvB,EAAC,OAAI,IAAKuB,EAAK,UAAWrB,EAAG,4CAA6CgB,CAAS,EACjF,UAAAnB,EAAC,OAAI,UAAU,iCACZ,SAAAgB,EACCf,EAAAF,EAAA,CACE,UAAAC,EAACM,EAAA,CAAQ,KAAM,EAAG,UAAWH,EAAG,mBAAmB,EAChD,SAAAK,EACH,EACCC,GACCT,EAACM,EAAA,CACC,KAAM,EACN,UAAWH,EAAG,kCAAmCoB,GAAY,wBAAwB,EAEpF,SAAAd,EACH,GAEJ,EAEAT,EAACK,EAAA,CACC,KAAM,EACN,UAAWF,EACT,8DACA,yCACF,EAEC,SAAAU,EACH,EAEJ,EAECH,GACCV,EAACK,EAAA,CACC,KAAM,EACN,UAAWF,EACT,0EACAoB,GAAY,qBACd,EAEC,SAAAb,EACH,EAIFT,EAAC,OAAI,UAAWE,EAAG,kCAAmC,cAAc,EAClE,UAAAH,EAACI,EAAA,CACC,QAAQ,YACR,KAAK,KACL,QAASU,EACT,QAASG,EACT,UAAWd,EAAG,+CAAgDoB,GAAY,mBAAmB,EAC7F,0BAAwB,gCACxB,kCAAiC,GAAGH,GAAiB,EAAE,IAAIC,GAAuB,EAAE,IAAIV,CAAa,GACrG,oBAAmBW,EAElB,SAAAX,EACH,EACAX,EAACI,EAAA,CACC,QAAQ,UACR,KAAK,KACL,QAASW,EACT,SAAU,CAACC,EACX,QAASE,EACT,UAAWf,EAAG,+CAAgDoB,GAAY,mBAAmB,EAC7F,0BAAwB,gCACxB,kCAAiC,GAAGH,GAAiB,EAAE,IAAIC,GAAuB,EAAE,IAAIT,CAAW,GACnG,oBAAmBU,EAElB,SAAAV,EACH,GACF,GACF,CAGN,EAEAL,EAAgB,YAAc,kBAE9B,IAAOkB,EAAQlB",
6
6
  "names": ["Fragment", "jsx", "jsxs", "React", "cn", "Button", "Text", "Heading", "PriceAndActions", "currentPrice", "originalPrice", "priceLabel", "learnMoreText", "shopNowText", "soldOutText", "onLearnMore", "onShopNow", "availableForSale", "learnMoreLoading", "shopNowLoading", "className", "trackingTitle", "trackingDescription", "trackingSku", "classNames", "ref", "PriceAndActions_default"]
7
7
  }
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import type { GiftSlotConfig, GiftConfirmDialogCopy, GiftOptionRowCopy } from '../types.js';
3
+ export interface CartGiftSectionProps {
4
+ slots: GiftSlotConfig[];
5
+ selectedGiftSkus: string[];
6
+ disabled?: boolean;
7
+ onChange?: (newSkus: string[]) => void;
8
+ onGiftRemoveSku?: (sku: string) => void;
9
+ onNavigate?: (type: 'image' | 'title', source: 'main' | 'gift') => void;
10
+ copy?: GiftConfirmDialogCopy & GiftOptionRowCopy;
11
+ className?: string;
12
+ classNames?: Partial<Record<'root' | 'slotWrap' | 'slotTitle' | 'slotSubtitle' | 'reminder' | 'optionList', string>>;
13
+ }
14
+ declare const CartGiftSection: React.ForwardRefExoticComponent<CartGiftSectionProps & React.RefAttributes<HTMLDivElement>>;
15
+ export default CartGiftSection;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as C,jsxs as F}from"react/jsx-runtime";import*as l from"react";import{cn as G}from"../../../helpers/index.js";import{DEFAULT_CART_COPY as A}from"../index.js";import W from"./components/GiftOptionRow/index.js";import _ from"../CartItemRow/components/CartItemRemoveConfirm/index.js";const h=l.forwardRef(({slots:d,selectedGiftSkus:g,disabled:k=!1,onChange:s,onGiftRemoveSku:y,onNavigate:N,copy:R,className:O,classNames:v={}},P)=>{const[u,p]=l.useState(null),[c,w]=l.useState(null),[n,m]=l.useState(g);l.useEffect(()=>{m(g)},[g]);const T=l.useCallback((e,i,a)=>{if(k)return;const r=a.mode??"radio",t=a.options.map(o=>o.sku);if(r==="radio"){if(!i){p(e);return}const o=n.find(f=>t.includes(f));if(o){w({oldSku:o,newSku:e});return}const S=[...n.filter(f=>!t.includes(f)),e];m(S),s?.(S);return}if(i){const o=a.maxSelectable,S=n.filter(E=>t.includes(E));if(o!=null&&S.length>=o)return;const f=[...n,e];m(f),s?.(f)}else p(e)},[k,n,s]),L=l.useCallback(()=>{if(!u)return;const e=n.filter(i=>i!==u);m(e),s?.(e),y?.(u),p(null)},[u,n,s,y]),b=l.useCallback(()=>{p(null)},[]),D=l.useCallback(()=>{if(!c)return;const{newSku:e}=c,i=d.find(t=>t.options.some(o=>o.sku===e));if(!i)return;const a=i.options.map(t=>t.sku),r=[...n.filter(t=>!a.includes(t)),e];m(r),s?.(r),w(null)},[c,n,d,s]),x=l.useCallback(()=>{w(null)},[]);return d.length===0?null:F("div",{ref:P,className:G("cart-gift-section-root flex flex-col gap-4",k&&"pointer-events-none opacity-50",O,v.root),children:[d.map((e,i)=>{const a=e.mode??"radio";return C("div",{className:G("cart-gift-section-slot flex flex-col gap-3 rounded-md",v.slotWrap),children:C("div",{className:G("cart-gift-section-option-list flex flex-col gap-2",v.optionList),role:"group","aria-label":`Gift slot ${i+1}`,children:e.options.map(r=>{const t=n.includes(r.sku);return C(W,{option:r,selected:t,mode:a,copy:R,onNavigate:N,onCheckedChange:o=>T(r.sku,o,e)},r.sku)})})},i)}),C(_,{open:u!==null||c!==null,copy:{removeConfirmText:R?.removeGiftConfirm??A.removeConfirmText},onConfirm:c?D:L,onCancel:c?x:b,onClose:c?x:b})]})});h.displayName="CartGiftSection";var $=h;export{$ as default};
2
+ //# sourceMappingURL=CartGiftSection.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/biz-components/CartDetail/CartGiftSection/CartGiftSection.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../helpers/index.js'\nimport type { GiftSlotConfig, GiftOption, GiftConfirmDialogCopy, GiftOptionRowCopy } from '../types.js'\nimport { DEFAULT_CART_COPY } from '../index.js'\nimport GiftOptionRow from './components/GiftOptionRow/index.js'\n// import GiftConfirmDialog from './components/GiftConfirmDialog/index.js'\nimport CartItemRemoveConfirm from '../CartItemRow/components/CartItemRemoveConfirm/index.js'\n\nexport interface CartGiftSectionProps {\n slots: GiftSlotConfig[]\n selectedGiftSkus: string[]\n disabled?: boolean\n onChange?: (newSkus: string[]) => void\n onGiftRemoveSku?: (sku: string) => void\n onNavigate?: (type: 'image' | 'title', source: 'main' | 'gift') => void\n copy?: GiftConfirmDialogCopy & GiftOptionRowCopy\n className?: string\n classNames?: Partial<Record<'root' | 'slotWrap' | 'slotTitle' | 'slotSubtitle' | 'reminder' | 'optionList', string>>\n}\n\n// interface PendingAction {\n// newIds: string[]\n// message: string\n// }\n\nconst CartGiftSection = React.forwardRef<HTMLDivElement, CartGiftSectionProps>(\n (\n {\n slots,\n selectedGiftSkus,\n disabled = false,\n onChange,\n onGiftRemoveSku,\n onNavigate,\n copy,\n className,\n classNames = {},\n },\n ref\n ) => {\n // const [pendingAction, setPendingAction] = React.useState<PendingAction | null>(null)\n const [pendingRemoveSku, setPendingRemoveSku] = React.useState<string | null>(null)\n const [pendingSwitch, setPendingSwitch] = React.useState<{ oldSku: string; newSku: string } | null>(null)\n\n const [localSkus, setLocalSkus] = React.useState<string[]>(selectedGiftSkus)\n\n React.useEffect(() => {\n setLocalSkus(selectedGiftSkus)\n }, [selectedGiftSkus])\n\n const handleCheckedChange = React.useCallback(\n (optionSku: string, checked: boolean, slot: GiftSlotConfig) => {\n if (disabled) return\n\n const mode = slot.mode ?? 'radio'\n const slotSkus = slot.options.map(o => o.sku)\n\n if (mode === 'radio') {\n if (!checked) {\n setPendingRemoveSku(optionSku)\n return\n }\n const currentSlotSelected = localSkus.find(s => slotSkus.includes(s))\n if (currentSlotSelected) {\n setPendingSwitch({ oldSku: currentSlotSelected, newSku: optionSku })\n return\n }\n const newSkus = [...localSkus.filter(s => !slotSkus.includes(s)), optionSku]\n setLocalSkus(newSkus)\n onChange?.(newSkus)\n return\n }\n\n if (checked) {\n const maxSelectable = slot.maxSelectable\n const currentSlotSelected = localSkus.filter(s => slotSkus.includes(s))\n if (maxSelectable != null && currentSlotSelected.length >= maxSelectable) {\n return\n }\n const newSkus = [...localSkus, optionSku]\n setLocalSkus(newSkus)\n onChange?.(newSkus)\n } else {\n setPendingRemoveSku(optionSku)\n }\n },\n [disabled, localSkus, onChange]\n )\n\n const handleRemoveConfirm = React.useCallback(() => {\n if (!pendingRemoveSku) return\n const newSkus = localSkus.filter(s => s !== pendingRemoveSku)\n setLocalSkus(newSkus)\n onChange?.(newSkus)\n onGiftRemoveSku?.(pendingRemoveSku)\n setPendingRemoveSku(null)\n }, [pendingRemoveSku, localSkus, onChange, onGiftRemoveSku])\n\n const handleRemoveCancel = React.useCallback(() => {\n setPendingRemoveSku(null)\n }, [])\n\n const handleSwitchConfirm = React.useCallback(() => {\n if (!pendingSwitch) return\n const { newSku } = pendingSwitch\n const slot = slots.find(s => s.options.some(o => o.sku === newSku))\n if (!slot) return\n const slotSkus = slot.options.map(o => o.sku)\n const newSkus = [...localSkus.filter(s => !slotSkus.includes(s)), newSku]\n setLocalSkus(newSkus)\n onChange?.(newSkus)\n setPendingSwitch(null)\n }, [pendingSwitch, localSkus, slots, onChange])\n\n const handleSwitchCancel = React.useCallback(() => {\n setPendingSwitch(null)\n }, [])\n\n // const handleDialogConfirm = React.useCallback(() => {\n // if (!pendingAction) return\n // onChange?.(pendingAction.newIds)\n // setPendingAction(null)\n // }, [pendingAction, onChange])\n\n // const handleDialogCancel = React.useCallback(() => {\n // setPendingAction(null)\n // }, [])\n\n if (slots.length === 0) {\n return null\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'cart-gift-section-root flex flex-col gap-4',\n disabled && 'pointer-events-none opacity-50',\n className,\n classNames.root\n )}\n >\n {slots.map((slot, slotIndex) => {\n const mode = slot.mode ?? 'radio'\n\n return (\n <div\n key={slotIndex}\n className={cn('cart-gift-section-slot flex flex-col gap-3 rounded-md', classNames.slotWrap)}\n >\n <div\n className={cn('cart-gift-section-option-list flex flex-col gap-2', classNames.optionList)}\n role=\"group\"\n aria-label={`Gift slot ${slotIndex + 1}`}\n >\n {slot.options.map((option: GiftOption) => {\n const optionSelected = localSkus.includes(option.sku)\n\n return (\n <GiftOptionRow\n key={option.sku}\n option={option}\n selected={optionSelected}\n mode={mode}\n copy={copy}\n onNavigate={onNavigate}\n onCheckedChange={checked => handleCheckedChange(option.sku, checked, slot)}\n />\n )\n })}\n </div>\n </div>\n )\n })}\n\n {/* <GiftConfirmDialog\n open={pendingAction !== null}\n message={pendingAction?.message ?? ''}\n copy={copy}\n onConfirm={handleDialogConfirm}\n onCancel={handleDialogCancel}\n /> */}\n\n <CartItemRemoveConfirm\n open={pendingRemoveSku !== null || pendingSwitch !== null}\n copy={{\n removeConfirmText: copy?.removeGiftConfirm ?? DEFAULT_CART_COPY.removeConfirmText,\n }}\n onConfirm={pendingSwitch ? handleSwitchConfirm : handleRemoveConfirm}\n onCancel={pendingSwitch ? handleSwitchCancel : handleRemoveCancel}\n onClose={pendingSwitch ? handleSwitchCancel : handleRemoveCancel}\n />\n </div>\n )\n }\n)\n\nCartGiftSection.displayName = 'CartGiftSection'\n\nexport default CartGiftSection\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "cn", "DEFAULT_CART_COPY", "GiftOptionRow", "CartItemRemoveConfirm", "CartGiftSection", "slots", "selectedGiftSkus", "disabled", "onChange", "onGiftRemoveSku", "onNavigate", "copy", "className", "classNames", "ref", "pendingRemoveSku", "setPendingRemoveSku", "pendingSwitch", "setPendingSwitch", "localSkus", "setLocalSkus", "handleCheckedChange", "optionSku", "checked", "slot", "mode", "slotSkus", "currentSlotSelected", "s", "newSkus", "maxSelectable", "handleRemoveConfirm", "handleRemoveCancel", "handleSwitchConfirm", "newSku", "o", "handleSwitchCancel", "slotIndex", "option", "optionSelected", "CartGiftSection_default"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import type { GiftConfirmDialogCopy } from '../../../types.js';
3
+ export interface GiftConfirmDialogProps {
4
+ open: boolean;
5
+ message: string;
6
+ copy?: GiftConfirmDialogCopy;
7
+ onConfirm?: () => void;
8
+ onCancel?: () => void;
9
+ }
10
+ declare const GiftConfirmDialog: React.ForwardRefExoticComponent<GiftConfirmDialogProps & React.RefAttributes<HTMLDivElement>>;
11
+ export default GiftConfirmDialog;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import*as y from"react";import{cn as n}from"../../../../../helpers/index.js";import{DEFAULT_CART_COPY as r}from"../../../index.js";const i=y.forwardRef(({open:s,message:m,copy:o,onConfirm:c,onCancel:a},d)=>{const f=o?.confirm??r.confirm,p=o?.cancel??r.cancel,b=o?.ariaLabel??r.ariaLabel;return s?t("div",{ref:d,className:"fixed inset-0 z-[100] flex items-center justify-center bg-black/40",onClick:e=>{e.target===e.currentTarget&&a?.()},onKeyDown:e=>{e.key==="Escape"&&a?.()},role:"dialog","aria-modal":"true","aria-label":b,children:l("div",{className:"rounded-card bg-container-primary mx-auto w-full max-w-sm p-6 shadow-lg",children:[t("p",{className:"text-info-primary laptop:text-base text-sm leading-relaxed",children:m}),l("div",{className:"mt-5 flex items-center justify-end gap-3",children:[t("button",{type:"button",onClick:a,className:n("rounded-btn border-lines-primary text-info-secondary laptop:text-base border bg-transparent px-4 py-2 text-sm font-medium transition-colors","hover:bg-container-secondary"),children:p}),t("button",{type:"button",onClick:c,className:n("rounded-btn bg-btn-primary text-btn-primary-foreground laptop:text-base px-4 py-2 text-sm font-medium transition-colors","hover:opacity-80"),children:f})]})]})}):null});i.displayName="GiftConfirmDialog";var C=i;export{C as default};
2
+ //# sourceMappingURL=GiftConfirmDialog.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/GiftConfirmDialog.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../../helpers/index.js'\nimport type { GiftConfirmDialogCopy } from '../../../types.js'\nimport { DEFAULT_CART_COPY } from '../../../index.js'\n\nexport interface GiftConfirmDialogProps {\n open: boolean\n message: string\n copy?: GiftConfirmDialogCopy\n onConfirm?: () => void\n onCancel?: () => void\n}\n\nconst GiftConfirmDialog = React.forwardRef<HTMLDivElement, GiftConfirmDialogProps>(\n ({ open, message, copy, onConfirm, onCancel }, ref) => {\n const resolvedConfirm = copy?.confirm ?? DEFAULT_CART_COPY.confirm\n const resolvedCancel = copy?.cancel ?? DEFAULT_CART_COPY.cancel\n const resolvedAriaLabel = copy?.ariaLabel ?? DEFAULT_CART_COPY.ariaLabel\n if (!open) {\n return null\n }\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget) {\n onCancel?.()\n }\n }\n\n const handleOverlayKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n onCancel?.()\n }\n }\n\n return (\n <div\n ref={ref}\n className=\"fixed inset-0 z-[100] flex items-center justify-center bg-black/40\"\n onClick={handleOverlayClick}\n onKeyDown={handleOverlayKeyDown}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={resolvedAriaLabel}\n >\n <div className=\"rounded-card bg-container-primary mx-auto w-full max-w-sm p-6 shadow-lg\">\n <p className=\"text-info-primary laptop:text-base text-sm leading-relaxed\">{message}</p>\n <div className=\"mt-5 flex items-center justify-end gap-3\">\n <button\n type=\"button\"\n onClick={onCancel}\n className={cn(\n 'rounded-btn border-lines-primary text-info-secondary laptop:text-base border bg-transparent px-4 py-2 text-sm font-medium transition-colors',\n 'hover:bg-container-secondary'\n )}\n >\n {resolvedCancel}\n </button>\n <button\n type=\"button\"\n onClick={onConfirm}\n className={cn(\n 'rounded-btn bg-btn-primary text-btn-primary-foreground laptop:text-base px-4 py-2 text-sm font-medium transition-colors',\n 'hover:opacity-80'\n )}\n >\n {resolvedConfirm}\n </button>\n </div>\n </div>\n </div>\n )\n }\n)\n\nGiftConfirmDialog.displayName = 'GiftConfirmDialog'\n\nexport default GiftConfirmDialog\n"],
5
+ "mappings": "aA+CU,cAAAA,EACA,QAAAC,MADA,oBA7CV,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,kCAEnB,OAAS,qBAAAC,MAAyB,oBAUlC,MAAMC,EAAoBH,EAAM,WAC9B,CAAC,CAAE,KAAAI,EAAM,QAAAC,EAAS,KAAAC,EAAM,UAAAC,EAAW,SAAAC,CAAS,EAAGC,IAAQ,CACrD,MAAMC,EAAkBJ,GAAM,SAAWJ,EAAkB,QACrDS,EAAiBL,GAAM,QAAUJ,EAAkB,OACnDU,EAAoBN,GAAM,WAAaJ,EAAkB,UAC/D,OAAKE,EAiBHN,EAAC,OACC,IAAKW,EACL,UAAU,qEACV,QAhBwB,GAAwB,CAC9C,EAAE,SAAW,EAAE,eACjBD,IAAW,CAEf,EAaI,UAX0B,GAA2B,CACnD,EAAE,MAAQ,UACZA,IAAW,CAEf,EAQI,KAAK,SACL,aAAW,OACX,aAAYI,EAEZ,SAAAb,EAAC,OAAI,UAAU,0EACb,UAAAD,EAAC,KAAE,UAAU,6DAA8D,SAAAO,EAAQ,EACnFN,EAAC,OAAI,UAAU,2CACb,UAAAD,EAAC,UACC,KAAK,SACL,QAASU,EACT,UAAWP,EACT,8IACA,8BACF,EAEC,SAAAU,EACH,EACAb,EAAC,UACC,KAAK,SACL,QAASS,EACT,UAAWN,EACT,0HACA,kBACF,EAEC,SAAAS,EACH,GACF,GACF,EACF,EAlDO,IAoDX,CACF,EAEAP,EAAkB,YAAc,oBAEhC,IAAOU,EAAQV",
6
+ "names": ["jsx", "jsxs", "React", "cn", "DEFAULT_CART_COPY", "GiftConfirmDialog", "open", "message", "copy", "onConfirm", "onCancel", "ref", "resolvedConfirm", "resolvedCancel", "resolvedAriaLabel", "GiftConfirmDialog_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './GiftConfirmDialog.js';
2
+ export type { GiftConfirmDialogProps } from './GiftConfirmDialog.js';
@@ -0,0 +1,2 @@
1
+ import{default as r}from"./GiftConfirmDialog.js";export{r as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/biz-components/CartDetail/CartGiftSection/components/GiftConfirmDialog/index.ts"],
4
+ "sourcesContent": ["export { default } from './GiftConfirmDialog.js'\nexport type { GiftConfirmDialogProps } from './GiftConfirmDialog.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import type { GiftOption, GiftOptionRowCopy } from '../../../types.js';
3
+ export interface GiftOptionRowProps {
4
+ option: GiftOption;
5
+ selected: boolean;
6
+ mode: 'radio' | 'checkbox';
7
+ onCheckedChange?: (checked: boolean) => void;
8
+ onNavigate?: (type: 'image' | 'title', source: 'main' | 'gift') => void;
9
+ copy?: GiftOptionRowCopy;
10
+ className?: string;
11
+ classNames?: Partial<Record<'root' | 'control' | 'image' | 'name' | 'variant' | 'quantity' | 'priceWrap' | 'freeText' | 'originalPrice' | 'giftBadge', string>>;
12
+ }
13
+ declare const GiftOptionRow: React.ForwardRefExoticComponent<GiftOptionRowProps & React.RefAttributes<HTMLLabelElement>>;
14
+ export default GiftOptionRow;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as a,jsxs as o}from"react/jsx-runtime";import*as b from"react";import{cn as i}from"../../../../../helpers/index.js";import{DEFAULT_CART_COPY as n}from"../../../index.js";import{Picture as w,Checkbox as y}from"../../../../../components/index.js";import{LocalizedLink as v}from"../../../../../shared/LocalizedLink.js";const f=b.forwardRef(({option:e,selected:l,mode:d,onCheckedChange:c,onNavigate:s,copy:r,className:g,classNames:t={},...m},x)=>{const p=e.disabled===!0;return o("label",{ref:x,className:i("gift-option-row-root bg-container-secondary laptop:flex-row laptop:items-center laptop:gap-4 laptop:pb-4 laptop:pt-5 rounded-box-small relative flex items-center gap-2 p-4 transition-opacity",p&&"pointer-events-none opacity-50",!p&&"cursor-pointer",g,t.root),...m,children:[a("span",{className:i("gift-option-row-badge rounded-br-box-small rounded-tl-box-small laptop:px-2 laptop:pb-1 laptop:pt-[5px] laptop:text-base bg-brand-0 absolute left-0 top-0 px-[6px] pb-1 pt-[3px] text-sm font-bold leading-[1.2] text-white",t.giftBadge),children:r?.badge??n.badge}),a(y,{checked:l,onCheckedChange:c,disabled:p,size:"lg",className:i("gift-option-row-control laptop:size-5 data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary laptop:mt-0 mt-1 size-4 shrink-0",t.control,d==="radio"&&"rounded-full",!l&&"border-lines-primary bg-transparent")}),a("div",{className:i("gift-option-row-image shrink-0",t.image),children:a(v,{href:e.listingHref,className:"block",onClick:()=>s?.("image","gift"),children:a(w,{source:e.image.src,alt:e.image.alt??e.name,className:"size-16 object-cover",loading:"lazy"})})}),o("div",{className:"laptop:flex-row laptop:items-center laptop:gap-4 flex min-w-0 flex-1 flex-col gap-2",children:[o("div",{className:"laptop:flex-[2] flex min-w-0 flex-col gap-1",children:[a("span",{className:i("gift-option-row-name text-info-primary laptop:text-base line-clamp-2 text-sm font-bold leading-[1.4]",e.listingHref&&"cursor-pointer hover:underline",t.name),onClick:()=>s?.("title","gift"),children:e.name}),e.variantText&&a("span",{className:i("gift-option-row-variant text-info-tertiary laptop:text-base text-sm font-bold leading-[1.4]",t.variant),children:e.variantText})]}),o("div",{className:"laptop:shrink-0 laptop:justify-start flex items-center justify-between",children:[o("span",{className:i("gift-option-row-quantity text-info-primary laptop:text-base text-sm font-bold leading-[1.4]",t.quantity),children:["x",e.displayQuantity]}),o("div",{className:i("gift-option-row-price-wrap laptop:hidden flex items-end gap-1",t.priceWrap),children:[a("span",{className:i("gift-option-row-free text-info-primary text-sm font-bold leading-[1.4]",t.freeText),children:r?.free??n.free}),e.originalPriceText&&a("span",{className:i("gift-option-row-original-price text-info-tertiary text-sm font-bold leading-[1.4] line-through",t.originalPrice),children:e.originalPriceText})]})]}),a("div",{className:i("gift-option-row-price-wrap laptop:flex-1 laptop:flex laptop:shrink-0 laptop:flex-col laptop:items-end laptop:gap-1 hidden",t.priceWrap),children:o("div",{className:"flex items-center justify-end gap-1",children:[a("span",{className:i("gift-option-row-free text-info-primary laptop:text-base text-sm font-bold leading-[1.4]",t.freeText),children:r?.free??n.free}),e.originalPriceText&&a("span",{className:i("gift-option-row-original-price text-info-tertiary laptop:text-base text-sm font-bold leading-[1.4] line-through",t.originalPrice),children:e.originalPriceText})]})})]})]})});f.displayName="GiftOptionRow";var T=f;export{T as default};
2
+ //# sourceMappingURL=GiftOptionRow.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/GiftOptionRow.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../../helpers/index.js'\nimport type { GiftOption, GiftOptionRowCopy } from '../../../types.js'\nimport { DEFAULT_CART_COPY } from '../../../index.js'\nimport { Picture, Checkbox } from '../../../../../components/index.js'\nimport { LocalizedLink } from '../../../../../shared/LocalizedLink.js'\n\nexport interface GiftOptionRowProps {\n option: GiftOption\n selected: boolean\n mode: 'radio' | 'checkbox'\n onCheckedChange?: (checked: boolean) => void\n onNavigate?: (type: 'image' | 'title', source: 'main' | 'gift') => void\n copy?: GiftOptionRowCopy\n className?: string\n classNames?: Partial<\n Record<\n | 'root'\n | 'control'\n | 'image'\n | 'name'\n | 'variant'\n | 'quantity'\n | 'priceWrap'\n | 'freeText'\n | 'originalPrice'\n | 'giftBadge',\n string\n >\n >\n}\n\nconst GiftOptionRow = React.forwardRef<HTMLLabelElement, GiftOptionRowProps>(\n ({ option, selected, mode, onCheckedChange, onNavigate, copy, className, classNames = {}, ...props }, ref) => {\n const isDisabled = option.disabled === true\n\n return (\n <label\n ref={ref}\n className={cn(\n 'gift-option-row-root bg-container-secondary laptop:flex-row laptop:items-center laptop:gap-4 laptop:pb-4 laptop:pt-5 rounded-box-small relative flex items-center gap-2 p-4 transition-opacity',\n isDisabled && 'pointer-events-none opacity-50',\n !isDisabled && 'cursor-pointer',\n className,\n classNames.root\n )}\n {...props}\n >\n <span\n className={cn(\n 'gift-option-row-badge rounded-br-box-small rounded-tl-box-small laptop:px-2 laptop:pb-1 laptop:pt-[5px] laptop:text-base bg-brand-0 absolute left-0 top-0 px-[6px] pb-1 pt-[3px] text-sm font-bold leading-[1.2] text-white',\n classNames.giftBadge\n )}\n >\n {copy?.badge ?? DEFAULT_CART_COPY.badge}\n </span>\n\n <Checkbox\n checked={selected}\n onCheckedChange={onCheckedChange}\n disabled={isDisabled}\n size=\"lg\"\n className={cn(\n 'gift-option-row-control laptop:size-5 data-[state=checked]:border-info-primary data-[state=checked]:bg-info-primary laptop:mt-0 mt-1 size-4 shrink-0',\n classNames.control,\n mode === 'radio' && 'rounded-full',\n !selected && 'border-lines-primary bg-transparent'\n )}\n />\n\n <div className={cn('gift-option-row-image shrink-0', classNames.image)}>\n <LocalizedLink href={option.listingHref} className=\"block\" onClick={() => onNavigate?.('image', 'gift')}>\n <Picture\n source={option.image.src}\n alt={option.image.alt ?? option.name}\n className=\"size-16 object-cover\"\n loading=\"lazy\"\n />\n </LocalizedLink>\n </div>\n\n <div className=\"laptop:flex-row laptop:items-center laptop:gap-4 flex min-w-0 flex-1 flex-col gap-2\">\n <div className=\"laptop:flex-[2] flex min-w-0 flex-col gap-1\">\n <span\n className={cn(\n 'gift-option-row-name text-info-primary laptop:text-base line-clamp-2 text-sm font-bold leading-[1.4]',\n option.listingHref && 'cursor-pointer hover:underline',\n classNames.name\n )}\n onClick={() => onNavigate?.('title', 'gift')}\n >\n {option.name}\n </span>\n {option.variantText && (\n <span\n className={cn(\n 'gift-option-row-variant text-info-tertiary laptop:text-base text-sm font-bold leading-[1.4]',\n classNames.variant\n )}\n >\n {option.variantText}\n </span>\n )}\n </div>\n\n <div className=\"laptop:shrink-0 laptop:justify-start flex items-center justify-between\">\n <span\n className={cn(\n 'gift-option-row-quantity text-info-primary laptop:text-base text-sm font-bold leading-[1.4]',\n classNames.quantity\n )}\n >\n x{option.displayQuantity}\n </span>\n\n <div className={cn('gift-option-row-price-wrap laptop:hidden flex items-end gap-1', classNames.priceWrap)}>\n <span\n className={cn(\n 'gift-option-row-free text-info-primary text-sm font-bold leading-[1.4]',\n classNames.freeText\n )}\n >\n {copy?.free ?? DEFAULT_CART_COPY.free}\n </span>\n {option.originalPriceText && (\n <span\n className={cn(\n 'gift-option-row-original-price text-info-tertiary text-sm font-bold leading-[1.4] line-through',\n classNames.originalPrice\n )}\n >\n {option.originalPriceText}\n </span>\n )}\n </div>\n </div>\n\n <div\n className={cn(\n 'gift-option-row-price-wrap laptop:flex-1 laptop:flex laptop:shrink-0 laptop:flex-col laptop:items-end laptop:gap-1 hidden',\n classNames.priceWrap\n )}\n >\n <div className=\"flex items-center justify-end gap-1\">\n <span\n className={cn(\n 'gift-option-row-free text-info-primary laptop:text-base text-sm font-bold leading-[1.4]',\n classNames.freeText\n )}\n >\n {copy?.free ?? DEFAULT_CART_COPY.free}\n </span>\n {option.originalPriceText && (\n <span\n className={cn(\n 'gift-option-row-original-price text-info-tertiary laptop:text-base text-sm font-bold leading-[1.4] line-through',\n classNames.originalPrice\n )}\n >\n {option.originalPriceText}\n </span>\n )}\n </div>\n </div>\n </div>\n </label>\n )\n }\n)\n\nGiftOptionRow.displayName = 'GiftOptionRow'\n\nexport default GiftOptionRow\n"],
5
+ "mappings": "aAkDQ,cAAAA,EAkCE,QAAAC,MAlCF,oBAhDR,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,kCAEnB,OAAS,qBAAAC,MAAyB,oBAClC,OAAS,WAAAC,EAAS,YAAAC,MAAgB,qCAClC,OAAS,iBAAAC,MAAqB,yCA2B9B,MAAMC,EAAgBN,EAAM,WAC1B,CAAC,CAAE,OAAAO,EAAQ,SAAAC,EAAU,KAAAC,EAAM,gBAAAC,EAAiB,WAAAC,EAAY,KAAAC,EAAM,UAAAC,EAAW,WAAAC,EAAa,CAAC,EAAG,GAAGC,CAAM,EAAGC,IAAQ,CAC5G,MAAMC,EAAaV,EAAO,WAAa,GAEvC,OACER,EAAC,SACC,IAAKiB,EACL,UAAWf,EACT,iMACAgB,GAAc,iCACd,CAACA,GAAc,iBACfJ,EACAC,EAAW,IACb,EACC,GAAGC,EAEJ,UAAAjB,EAAC,QACC,UAAWG,EACT,8NACAa,EAAW,SACb,EAEC,SAAAF,GAAM,OAASV,EAAkB,MACpC,EAEAJ,EAACM,EAAA,CACC,QAASI,EACT,gBAAiBE,EACjB,SAAUO,EACV,KAAK,KACL,UAAWhB,EACT,uJACAa,EAAW,QACXL,IAAS,SAAW,eACpB,CAACD,GAAY,qCACf,EACF,EAEAV,EAAC,OAAI,UAAWG,EAAG,iCAAkCa,EAAW,KAAK,EACnE,SAAAhB,EAACO,EAAA,CAAc,KAAME,EAAO,YAAa,UAAU,QAAQ,QAAS,IAAMI,IAAa,QAAS,MAAM,EACpG,SAAAb,EAACK,EAAA,CACC,OAAQI,EAAO,MAAM,IACrB,IAAKA,EAAO,MAAM,KAAOA,EAAO,KAChC,UAAU,uBACV,QAAQ,OACV,EACF,EACF,EAEAR,EAAC,OAAI,UAAU,sFACb,UAAAA,EAAC,OAAI,UAAU,8CACb,UAAAD,EAAC,QACC,UAAWG,EACT,uGACAM,EAAO,aAAe,iCACtBO,EAAW,IACb,EACA,QAAS,IAAMH,IAAa,QAAS,MAAM,EAE1C,SAAAJ,EAAO,KACV,EACCA,EAAO,aACNT,EAAC,QACC,UAAWG,EACT,8FACAa,EAAW,OACb,EAEC,SAAAP,EAAO,YACV,GAEJ,EAEAR,EAAC,OAAI,UAAU,yEACb,UAAAA,EAAC,QACC,UAAWE,EACT,8FACAa,EAAW,QACb,EACD,cACGP,EAAO,iBACX,EAEAR,EAAC,OAAI,UAAWE,EAAG,gEAAiEa,EAAW,SAAS,EACtG,UAAAhB,EAAC,QACC,UAAWG,EACT,yEACAa,EAAW,QACb,EAEC,SAAAF,GAAM,MAAQV,EAAkB,KACnC,EACCK,EAAO,mBACNT,EAAC,QACC,UAAWG,EACT,iGACAa,EAAW,aACb,EAEC,SAAAP,EAAO,kBACV,GAEJ,GACF,EAEAT,EAAC,OACC,UAAWG,EACT,4HACAa,EAAW,SACb,EAEA,SAAAf,EAAC,OAAI,UAAU,sCACb,UAAAD,EAAC,QACC,UAAWG,EACT,0FACAa,EAAW,QACb,EAEC,SAAAF,GAAM,MAAQV,EAAkB,KACnC,EACCK,EAAO,mBACNT,EAAC,QACC,UAAWG,EACT,kHACAa,EAAW,aACb,EAEC,SAAAP,EAAO,kBACV,GAEJ,EACF,GACF,GACF,CAEJ,CACF,EAEAD,EAAc,YAAc,gBAE5B,IAAOY,EAAQZ",
6
+ "names": ["jsx", "jsxs", "React", "cn", "DEFAULT_CART_COPY", "Picture", "Checkbox", "LocalizedLink", "GiftOptionRow", "option", "selected", "mode", "onCheckedChange", "onNavigate", "copy", "className", "classNames", "props", "ref", "isDisabled", "GiftOptionRow_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './GiftOptionRow.js';
2
+ export type { GiftOptionRowProps } from './GiftOptionRow.js';
@@ -0,0 +1,2 @@
1
+ import{default as p}from"./GiftOptionRow.js";export{p as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/biz-components/CartDetail/CartGiftSection/components/GiftOptionRow/index.ts"],
4
+ "sourcesContent": ["export { default } from './GiftOptionRow.js'\nexport type { GiftOptionRowProps } from './GiftOptionRow.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './CartGiftSection.js';
2
+ export type { CartGiftSectionProps } from './CartGiftSection.js';
@@ -0,0 +1,2 @@
1
+ import{default as r}from"./CartGiftSection.js";export{r as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/biz-components/CartDetail/CartGiftSection/index.ts"],
4
+ "sourcesContent": ["export { default } from './CartGiftSection.js'\nexport type { CartGiftSectionProps } from './CartGiftSection.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+ import type { GiftSlotConfig, CartItemRowCopy, CartKspCopy } from '../types.js';
3
+ export type CartItemRowUserType = 'gift' | 'member' | 'plus-member';
4
+ export interface CartItemRowProps {
5
+ /** 商品图片,url + altText */
6
+ rowImage: {
7
+ url: string;
8
+ altText?: string;
9
+ };
10
+ /** 商品标题 */
11
+ title: string;
12
+ /** 商品描述 */
13
+ description?: string;
14
+ /** KSP 卖点列表 */
15
+ kspList?: string[];
16
+ /** 购买数量 */
17
+ quantity: number;
18
+ /** 最小购买数量,默认 1 */
19
+ minQuantity?: number;
20
+ /** 最大购买数量 */
21
+ maxQuantity?: number;
22
+ /** 是否售罄 */
23
+ soldOut?: boolean;
24
+ /** 商品详情页跳转链接(非售罄状态下图片和标题可点击跳转) */
25
+ listingHref?: string;
26
+ /** 是否预售 */
27
+ isPresale?: boolean;
28
+ /** 自定义价格渲染函数,优先级高于 price */
29
+ renderPrice?: () => React.ReactNode;
30
+ /** 赠品 slot 配置列表 */
31
+ giftSlots?: GiftSlotConfig[];
32
+ /** 已选 SKU 列表 */
33
+ selectedGiftSkus?: string[];
34
+ /** 数量变更回调 */
35
+ onQuantityChange?: (quantity: number) => void;
36
+ /** 移除商品回调 */
37
+ onRemove?: () => void;
38
+ /** 赠品变更回调 */
39
+ onGiftChange?: (newSkus: string[]) => void;
40
+ /** 赠品移除确认弹窗出现时回调,告知业务端被移除的 SKU */
41
+ onGiftRemoveSku?: (sku: string) => void;
42
+ /** 商品类型标识,控制顶部 badge 展示 */
43
+ userType?: CartItemRowUserType;
44
+ /** 分区标题 例如:订单赠品区文案 */
45
+ sectionTitle?: string;
46
+ /** 文案集中管理,覆盖本组件及子组件 KSP 的所有文案 */
47
+ copy?: CartItemRowCopy & CartKspCopy;
48
+ /** 根容器 className */
49
+ className?: string;
50
+ /** 图片/标题点击回调,供埋点等使用。type 区分内容类型,source 区分主商品/赠品 */
51
+ onNavigate?: (type: 'image' | 'title', source: 'main' | 'gift') => void;
52
+ /** 语义化样式覆盖 */
53
+ classNames?: Partial<Record<'root' | 'imageWrap' | 'contentWrap' | 'badge' | 'infoWrap' | 'title' | 'description' | 'attributes' | 'kspLink' | 'kspExpanded' | 'mobileInfoBlock' | 'mobileKspWrap' | 'mobileShippingWrap' | 'quantityWrap' | 'priceWrap' | 'removeBtn' | 'giftWrap' | 'shippingWrap' | 'soldOutOverlay' | 'sectionTitle', string>>;
54
+ }
55
+ declare const CartItemRow: React.ForwardRefExoticComponent<CartItemRowProps & React.RefAttributes<HTMLDivElement>>;
56
+ export default CartItemRow;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as e,jsxs as p}from"react/jsx-runtime";import*as r from"react";import{cn as i}from"../../../helpers/index.js";import{Heading as P,Text as $,InputNumber as M,Picture as O,Badge as ee}from"../../../components/index.js";import V from"./components/CartItemKsp/index.js";import te from"./components/CartItemShipping/index.js";import K from"./components/CartItemGiftShipping/index.js";import ie from"./components/CartItemRemoveConfirm/index.js";import{LocalizedLink as A}from"../../../shared/LocalizedLink.js";import{DEFAULT_CART_COPY as Z}from"../index.js";const w={gift:"gift",member:"regular-member","plus-member":"plus-member"},oe=()=>e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:e("path",{d:"M9.4668 1.33333C9.83045 1.33333 10.1782 1.48213 10.4297 1.74479L11.9512 3.33333H14.6667C15.0349 3.33333 15.3333 3.63181 15.3333 3.99999C15.3333 4.36818 15.0349 4.66666 14.6667 4.66666H13.6667V13.3333C13.6667 14.4379 12.7712 15.3333 11.6667 15.3333H4.33334C3.22877 15.3333 2.33334 14.4379 2.33334 13.3333V4.66666H1.33334C0.965149 4.66666 0.666672 4.36818 0.666672 3.99999C0.666672 3.63181 0.965149 3.33333 1.33334 3.33333H4.05144L5.59766 1.73828C5.84875 1.47941 6.19406 1.33336 6.55469 1.33333H9.4668ZM3.66667 13.3333C3.66667 13.7015 3.96515 14 4.33334 14H11.6667C12.0349 14 12.3333 13.7015 12.3333 13.3333V4.66666H3.66667V13.3333ZM6.66667 6.66666C7.03486 6.66666 7.33334 6.96514 7.33334 7.33333V11.6667C7.33334 12.0349 7.03486 12.3333 6.66667 12.3333C6.29848 12.3333 6.00001 12.0349 6.00001 11.6667V7.33333C6.00001 6.96514 6.29848 6.66666 6.66667 6.66666ZM9.33334 6.66666C9.70153 6.66666 10 6.96514 10 7.33333V11.6667C10 12.0349 9.70153 12.3333 9.33334 12.3333C8.96515 12.3333 8.66667 12.0349 8.66667 11.6667V7.33333C8.66667 6.96514 8.96515 6.66666 9.33334 6.66666ZM5.90821 3.33333H10.1055L9.4668 2.66666H6.55469L5.90821 3.33333Z",fill:"#4A4C56"})}),_=r.forwardRef(({rowImage:k,title:j,description:y,kspList:s,quantity:u,minQuantity:m,maxQuantity:W,soldOut:o=!1,isPresale:q=!1,listingHref:d,renderPrice:c,giftSlots:f,selectedGiftSkus:N,onQuantityChange:R,onRemove:x,onGiftChange:T,onGiftRemoveSku:I,onNavigate:g,userType:n,sectionTitle:L,copy:C,className:D,classNames:t={},...U},Y)=>{const a={...Z,...C},h=s&&s.length>0,S=f&&f.length>0||!!a.shippingText,[l,B]=r.useState(u),[F,b]=r.useState(!1),G=r.useRef(l);r.useEffect(()=>{B(u)},[u]),r.useEffect(()=>{G.current=l},[l]);const z=r.useCallback(v=>{const X=m??1;if(v<G.current&&v<X){b(!0);return}B(v),R?.(v)},[R,m]),J=a.soldOutText??Z.soldOutText,H=r.useCallback(()=>{b(!0)},[]),Q=r.useCallback(()=>{b(!1),x?.()},[x]),E=r.useCallback(()=>{b(!1)},[]);return p("div",{className:"flex flex-col gap-4",children:[L&&e(P,{size:2,className:i("cart-item-row-section-title [&_span]:text-brand-0 text-info-primary font-bold",t.sectionTitle),html:L}),p("div",{ref:Y,className:i("cart-item-row-root laptop:rounded-none flex flex-col gap-4 bg-white",o&&"pointer-events-none",D,t.root),...U,children:[p("div",{className:"cart-item-row-main laptop:gap-4 laptop:items-center flex gap-2",children:[p("div",{className:i("cart-item-row-image-wrap laptop:size-[264px] relative size-20 shrink-0",t.imageWrap),children:[e(A,{href:d&&!o?d:void 0,className:"block size-full",onClick:()=>g?.("image","main"),children:e(O,{source:k.url,alt:k.altText??"",className:i("size-full object-cover",o&&"opacity-50")})}),o&&e("div",{className:i("cart-item-row-sold-out-overlay laptop:text-base absolute left-1/2 top-1/2 z-10 h-[24px] w-max -translate-x-1/2 -translate-y-1/2 rounded-full bg-black/60 px-[3px] text-sm font-bold leading-[24px] text-white",t.soldOutOverlay),children:J}),q&&!o&&e("div",{className:"absolute left-1/2 top-1/2 w-max -translate-x-1/2 -translate-y-1/2 rounded-full bg-black/60",children:e("span",{className:"laptop:text-base laptop:px-2 h-[24px] px-[6px] text-center text-sm font-bold leading-[24px] text-white",children:a.presaleBadgeText})})]}),p("div",{className:i("cart-item-row-content flex flex-1 flex-col gap-4",t.contentWrap),children:[n&&e("div",{className:i("cart-item-row-badge",o&&"opacity-50",t.badge),children:e(ee,{variant:w[n]==="gift"?"fill":"promotional",promotionalType:w[n]==="gift"?void 0:w[n],children:n==="gift"?a.giftBadgeText:n==="member"?a.memberBadgeText:a.plusMemberBadgeText})}),p("div",{className:"laptop:flex-row laptop:justify-between laptop:gap-4 flex flex-1 flex-col gap-4",children:[p("div",{className:i("cart-item-row-info laptop:gap-2 laptop:flex-[792] flex flex-col gap-4",t.infoWrap),children:[p("div",{className:i("laptop:gap-2 flex flex-col gap-1",o&&"opacity-50"),children:[e(A,{href:d&&!o?d:void 0,onClick:()=>g?.("title","main"),children:e(P,{size:2,className:i("cart-item-row-title text-info-primary font-bold",t.title),html:j})}),y&&e($,{html:y,className:i("cart-item-row-description text-info-primary laptop:text-base text-sm",t.description)})]}),p("div",{className:"laptop:hidden flex items-center justify-between gap-4",children:[e(M,{classNames:{root:"border-lines rounded-md border-[1px]",inputWrapper:"w-[28px] h-[32px]",input:"border-none",button:"border-none size-[28px]"},value:l,min:m??1,max:W,disabled:o,onChange:z}),x&&e("button",{type:"button",onClick:H,className:i("cart-item-row-remove pointer-events-auto shrink-0",t.removeBtn),children:e(oe,{})})]}),c&&e("div",{className:"laptop:hidden w-full",children:e("div",{className:i("cart-item-row-price flex flex-col items-start gap-1 font-bold",o&&"opacity-50",t.priceWrap),children:c()})}),h&&e("div",{className:i("laptop:block hidden",o&&"opacity-50"),children:e(V,{items:s,variant:"inline-link",copy:C,className:t.kspLink,classNames:{toggle:i("cart-item-row-ksp-link text-brand-0 p-0 font-bold leading-[1.2]",t.kspLink),item:i("cart-item-row-ksp-expanded text-base font-bold",t.kspExpanded)}})})]}),e("div",{className:i("cart-item-row-quantity laptop:flex laptop:flex-col laptop:items-start hidden",t.quantityWrap),children:e(M,{classNames:{root:"border-lines border-[1px] rounded-lg w-[96px]",inputWrapper:"w-[32px] h-[32px]",input:"border-none",button:"border-none size-8"},value:l,min:m??1,max:W,disabled:o,onChange:z})}),p("div",{className:"laptop:flex laptop:flex-[404] hidden flex-col items-end gap-2",children:[c&&e("div",{className:i("cart-item-row-price laptop:flex laptop:flex-col laptop:items-end laptop:gap-2 hidden font-bold",o&&"opacity-50",t.priceWrap),children:c()}),x&&e("button",{type:"button",onClick:H,className:i("cart-item-row-remove hover:text-brand-0 text-info-tertiary laptop:text-base pointer-events-auto text-sm font-bold underline",t.removeBtn),children:a.remove})]})]}),S&&e("div",{className:i("laptop:block hidden",o&&"opacity-50"),children:e(K,{giftSlots:f,selectedGiftSkus:N,copy:a,onGiftChange:T,onGiftRemoveSku:I,onNavigate:g,classNames:{giftWrap:t.giftWrap,shippingWrap:t.shippingWrap}})})]})]}),(h||a.shippingText)&&p("div",{className:i("cart-item-row-mobile-info laptop:hidden bg-container-secondary flex flex-col rounded-md",o&&"opacity-50",t.mobileInfoBlock),children:[h&&e("div",{className:i("cart-item-row-mobile-ksp border-lines px-4 py-3",a.shippingText&&"border-b",t.mobileKspWrap),children:e(V,{items:s,variant:"verified",copy:C,className:t.kspLink,classNames:{toggle:"cart-item-row-ksp-link text-sm font-semibold",item:i("cart-item-row-ksp-expanded",t.kspExpanded)}})}),a.shippingText&&e("div",{className:i("cart-item-row-mobile-shipping px-4 py-3",t.mobileShippingWrap),children:e(te,{text:a.shippingText})})]}),S&&e("div",{className:i("laptop:hidden",o&&"opacity-50"),children:e(K,{giftSlots:f,selectedGiftSkus:N,copy:a,onGiftChange:T,onGiftRemoveSku:I,onNavigate:g,classNames:{giftWrap:t.giftWrap,shippingWrap:t.shippingWrap}})}),e(ie,{open:F,copy:a,onConfirm:Q,onCancel:E,onClose:E})]})]})});_.displayName="CartItemRow";var fe=_;export{fe as default};
2
+ //# sourceMappingURL=CartItemRow.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/biz-components/CartDetail/CartItemRow/CartItemRow.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../helpers/index.js'\nimport { Heading, Text, InputNumber, type InputNumberProps, Picture, Badge } from '../../../components/index.js'\nimport CartItemKsp from './components/CartItemKsp/index.js'\nimport CartItemShipping from './components/CartItemShipping/index.js'\nimport CartItemGiftShipping from './components/CartItemGiftShipping/index.js'\nimport CartItemRemoveConfirm from './components/CartItemRemoveConfirm/index.js'\nimport { LocalizedLink } from '../../../shared/LocalizedLink.js'\nimport type { GiftSlotConfig, CartItemRowCopy, CartKspCopy } from '../types.js'\nimport { DEFAULT_CART_COPY } from '../index.js'\n\nexport type CartItemRowUserType = 'gift' | 'member' | 'plus-member'\n\nconst BADGE_PROMOTIONAL_TYPE = {\n gift: 'gift',\n member: 'regular-member',\n 'plus-member': 'plus-member',\n} as const\n\nexport interface CartItemRowProps {\n /** \u5546\u54C1\u56FE\u7247\uFF0Curl + altText */\n rowImage: { url: string; altText?: string }\n /** \u5546\u54C1\u6807\u9898 */\n title: string\n /** \u5546\u54C1\u63CF\u8FF0 */\n description?: string\n // /** \u5546\u54C1\u5C5E\u6027\u5217\u8868\uFF0C\u5982 [\"Color: Black\"] */\n // attributes?: string[]\n /** KSP \u5356\u70B9\u5217\u8868 */\n kspList?: string[]\n /** \u8D2D\u4E70\u6570\u91CF */\n quantity: number\n /** \u6700\u5C0F\u8D2D\u4E70\u6570\u91CF\uFF0C\u9ED8\u8BA4 1 */\n minQuantity?: number\n /** \u6700\u5927\u8D2D\u4E70\u6570\u91CF */\n maxQuantity?: number\n /** \u662F\u5426\u552E\u7F44 */\n soldOut?: boolean\n /** \u5546\u54C1\u8BE6\u60C5\u9875\u8DF3\u8F6C\u94FE\u63A5\uFF08\u975E\u552E\u7F44\u72B6\u6001\u4E0B\u56FE\u7247\u548C\u6807\u9898\u53EF\u70B9\u51FB\u8DF3\u8F6C\uFF09 */\n listingHref?: string\n /** \u662F\u5426\u9884\u552E */\n isPresale?: boolean\n /** \u81EA\u5B9A\u4E49\u4EF7\u683C\u6E32\u67D3\u51FD\u6570\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E price */\n renderPrice?: () => React.ReactNode\n /** \u8D60\u54C1 slot \u914D\u7F6E\u5217\u8868 */\n giftSlots?: GiftSlotConfig[]\n /** \u5DF2\u9009 SKU \u5217\u8868 */\n selectedGiftSkus?: string[]\n /** \u6570\u91CF\u53D8\u66F4\u56DE\u8C03 */\n onQuantityChange?: (quantity: number) => void\n /** \u79FB\u9664\u5546\u54C1\u56DE\u8C03 */\n onRemove?: () => void\n /** \u8D60\u54C1\u53D8\u66F4\u56DE\u8C03 */\n onGiftChange?: (newSkus: string[]) => void\n /** \u8D60\u54C1\u79FB\u9664\u786E\u8BA4\u5F39\u7A97\u51FA\u73B0\u65F6\u56DE\u8C03\uFF0C\u544A\u77E5\u4E1A\u52A1\u7AEF\u88AB\u79FB\u9664\u7684 SKU */\n onGiftRemoveSku?: (sku: string) => void\n /** \u5546\u54C1\u7C7B\u578B\u6807\u8BC6\uFF0C\u63A7\u5236\u9876\u90E8 badge \u5C55\u793A */\n userType?: CartItemRowUserType\n /** \u5206\u533A\u6807\u9898 \u4F8B\u5982\uFF1A\u8BA2\u5355\u8D60\u54C1\u533A\u6587\u6848 */\n sectionTitle?: string\n /** \u6587\u6848\u96C6\u4E2D\u7BA1\u7406\uFF0C\u8986\u76D6\u672C\u7EC4\u4EF6\u53CA\u5B50\u7EC4\u4EF6 KSP \u7684\u6240\u6709\u6587\u6848 */\n copy?: CartItemRowCopy & CartKspCopy\n /** \u6839\u5BB9\u5668 className */\n className?: string\n /** \u56FE\u7247/\u6807\u9898\u70B9\u51FB\u56DE\u8C03\uFF0C\u4F9B\u57CB\u70B9\u7B49\u4F7F\u7528\u3002type \u533A\u5206\u5185\u5BB9\u7C7B\u578B\uFF0Csource \u533A\u5206\u4E3B\u5546\u54C1/\u8D60\u54C1 */\n onNavigate?: (type: 'image' | 'title', source: 'main' | 'gift') => void\n /** \u8BED\u4E49\u5316\u6837\u5F0F\u8986\u76D6 */\n classNames?: Partial<\n Record<\n | 'root'\n | 'imageWrap'\n | 'contentWrap'\n | 'badge'\n | 'infoWrap'\n | 'title'\n | 'description'\n | 'attributes'\n | 'kspLink'\n | 'kspExpanded'\n | 'mobileInfoBlock'\n | 'mobileKspWrap'\n | 'mobileShippingWrap'\n | 'quantityWrap'\n | 'priceWrap'\n | 'removeBtn'\n | 'giftWrap'\n | 'shippingWrap'\n | 'soldOutOverlay'\n | 'sectionTitle',\n string\n >\n >\n}\n\nconst TrashIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M9.4668 1.33333C9.83045 1.33333 10.1782 1.48213 10.4297 1.74479L11.9512 3.33333H14.6667C15.0349 3.33333 15.3333 3.63181 15.3333 3.99999C15.3333 4.36818 15.0349 4.66666 14.6667 4.66666H13.6667V13.3333C13.6667 14.4379 12.7712 15.3333 11.6667 15.3333H4.33334C3.22877 15.3333 2.33334 14.4379 2.33334 13.3333V4.66666H1.33334C0.965149 4.66666 0.666672 4.36818 0.666672 3.99999C0.666672 3.63181 0.965149 3.33333 1.33334 3.33333H4.05144L5.59766 1.73828C5.84875 1.47941 6.19406 1.33336 6.55469 1.33333H9.4668ZM3.66667 13.3333C3.66667 13.7015 3.96515 14 4.33334 14H11.6667C12.0349 14 12.3333 13.7015 12.3333 13.3333V4.66666H3.66667V13.3333ZM6.66667 6.66666C7.03486 6.66666 7.33334 6.96514 7.33334 7.33333V11.6667C7.33334 12.0349 7.03486 12.3333 6.66667 12.3333C6.29848 12.3333 6.00001 12.0349 6.00001 11.6667V7.33333C6.00001 6.96514 6.29848 6.66666 6.66667 6.66666ZM9.33334 6.66666C9.70153 6.66666 10 6.96514 10 7.33333V11.6667C10 12.0349 9.70153 12.3333 9.33334 12.3333C8.96515 12.3333 8.66667 12.0349 8.66667 11.6667V7.33333C8.66667 6.96514 8.96515 6.66666 9.33334 6.66666ZM5.90821 3.33333H10.1055L9.4668 2.66666H6.55469L5.90821 3.33333Z\"\n fill=\"#4A4C56\"\n />\n </svg>\n)\n\nconst CartItemRow = React.forwardRef<HTMLDivElement, CartItemRowProps>(\n (\n {\n rowImage,\n title,\n description,\n // attributes,\n kspList,\n quantity,\n minQuantity,\n maxQuantity,\n soldOut = false,\n isPresale = false,\n listingHref,\n renderPrice,\n giftSlots,\n selectedGiftSkus,\n onQuantityChange,\n onRemove,\n onGiftChange,\n onGiftRemoveSku,\n onNavigate,\n userType,\n sectionTitle,\n copy,\n className,\n classNames = {},\n ...props\n },\n ref\n ) => {\n const c = { ...DEFAULT_CART_COPY, ...copy }\n const hasKsp = kspList && kspList.length > 0\n const hasGifts = giftSlots && giftSlots.length > 0\n const hasGiftOrShipping = hasGifts || !!c.shippingText\n\n const [localQuantity, setLocalQuantity] = React.useState(quantity)\n const [showRemoveConfirm, setShowRemoveConfirm] = React.useState(false)\n const localQuantityRef = React.useRef(localQuantity)\n\n React.useEffect(() => {\n setLocalQuantity(quantity)\n }, [quantity])\n\n React.useEffect(() => {\n localQuantityRef.current = localQuantity\n }, [localQuantity])\n\n const handleQuantityChange = React.useCallback(\n (newQty: number) => {\n const minQty = minQuantity ?? 1\n if (newQty < localQuantityRef.current && newQty < minQty) {\n setShowRemoveConfirm(true)\n return\n }\n setLocalQuantity(newQty)\n onQuantityChange?.(newQty)\n },\n [onQuantityChange, minQuantity]\n )\n\n const resolvedSoldOutText = c.soldOutText ?? DEFAULT_CART_COPY.soldOutText\n\n const handleRemoveClick = React.useCallback(() => {\n setShowRemoveConfirm(true)\n }, [])\n\n const handleConfirmRemove = React.useCallback(() => {\n setShowRemoveConfirm(false)\n onRemove?.()\n }, [onRemove])\n\n const handleCloseRemoveConfirm = React.useCallback(() => {\n setShowRemoveConfirm(false)\n }, [])\n\n return (\n <div className=\"flex flex-col gap-4\">\n {sectionTitle && (\n <Heading\n size={2}\n className={cn(\n 'cart-item-row-section-title [&_span]:text-brand-0 text-info-primary font-bold',\n classNames.sectionTitle\n )}\n html={sectionTitle}\n />\n )}\n <div\n ref={ref}\n className={cn(\n 'cart-item-row-root laptop:rounded-none flex flex-col gap-4 bg-white',\n soldOut && 'pointer-events-none',\n className,\n classNames.root\n )}\n {...props}\n >\n <div className=\"cart-item-row-main laptop:gap-4 laptop:items-center flex gap-2\">\n <div\n className={cn(\n 'cart-item-row-image-wrap laptop:size-[264px] relative size-20 shrink-0',\n classNames.imageWrap\n )}\n >\n <LocalizedLink\n href={listingHref && !soldOut ? listingHref : undefined}\n className=\"block size-full\"\n onClick={() => onNavigate?.('image', 'main')}\n >\n <Picture\n source={rowImage.url}\n alt={rowImage.altText ?? ''}\n className={cn('size-full object-cover', soldOut && 'opacity-50')}\n />\n </LocalizedLink>\n {soldOut && (\n <div\n className={cn(\n 'cart-item-row-sold-out-overlay laptop:text-base absolute left-1/2 top-1/2 z-10 h-[24px] w-max -translate-x-1/2 -translate-y-1/2 rounded-full bg-black/60 px-[3px] text-sm font-bold leading-[24px] text-white',\n classNames.soldOutOverlay\n )}\n >\n {resolvedSoldOutText}\n </div>\n )}\n {isPresale && !soldOut && (\n <div className=\"absolute left-1/2 top-1/2 w-max -translate-x-1/2 -translate-y-1/2 rounded-full bg-black/60\">\n <span className=\"laptop:text-base laptop:px-2 h-[24px] px-[6px] text-center text-sm font-bold leading-[24px] text-white\">\n {c.presaleBadgeText}\n </span>\n </div>\n )}\n </div>\n\n <div className={cn('cart-item-row-content flex flex-1 flex-col gap-4', classNames.contentWrap)}>\n {userType && (\n <div className={cn('cart-item-row-badge', soldOut && 'opacity-50', classNames.badge)}>\n <Badge\n variant={BADGE_PROMOTIONAL_TYPE[userType] === 'gift' ? 'fill' : 'promotional'}\n promotionalType={\n BADGE_PROMOTIONAL_TYPE[userType] === 'gift' ? undefined : BADGE_PROMOTIONAL_TYPE[userType]\n }\n >\n {userType === 'gift'\n ? c.giftBadgeText\n : userType === 'member'\n ? c.memberBadgeText\n : c.plusMemberBadgeText}\n </Badge>\n </div>\n )}\n <div className=\"laptop:flex-row laptop:justify-between laptop:gap-4 flex flex-1 flex-col gap-4\">\n <div\n className={cn(\n 'cart-item-row-info laptop:gap-2 laptop:flex-[792] flex flex-col gap-4',\n classNames.infoWrap\n )}\n >\n <div className={cn('laptop:gap-2 flex flex-col gap-1', soldOut && 'opacity-50')}>\n <LocalizedLink\n href={listingHref && !soldOut ? listingHref : undefined}\n onClick={() => onNavigate?.('title', 'main')}\n >\n <Heading\n size={2}\n className={cn('cart-item-row-title text-info-primary font-bold', classNames.title)}\n html={title}\n />\n </LocalizedLink>\n {description && (\n <Text\n html={description}\n className={cn(\n 'cart-item-row-description text-info-primary laptop:text-base text-sm',\n classNames.description\n )}\n />\n )}\n </div>\n {/* {attributes && attributes.length > 0 && (\n <Text\n className={cn(\n 'cart-item-row-attributes text-info-tertiary laptop:text-base text-sm',\n classNames.attributes\n )}\n >\n {attributes.join(' \u2022 ')}\n </Text>\n )} */}\n\n <div className=\"laptop:hidden flex items-center justify-between gap-4\">\n <InputNumber\n classNames={{\n root: 'border-lines rounded-md border-[1px]',\n inputWrapper: 'w-[28px] h-[32px]',\n input: 'border-none',\n button: 'border-none size-[28px]',\n }}\n value={localQuantity}\n min={minQuantity ?? 1}\n max={maxQuantity}\n disabled={soldOut}\n onChange={handleQuantityChange as InputNumberProps['onChange']}\n />\n {onRemove && (\n <button\n type=\"button\"\n onClick={handleRemoveClick}\n className={cn('cart-item-row-remove pointer-events-auto shrink-0', classNames.removeBtn)}\n >\n <TrashIcon />\n </button>\n )}\n </div>\n\n {renderPrice && (\n <div className=\"laptop:hidden w-full\">\n <div\n className={cn(\n 'cart-item-row-price flex flex-col items-start gap-1 font-bold',\n soldOut && 'opacity-50',\n classNames.priceWrap\n )}\n >\n {renderPrice()}\n </div>\n </div>\n )}\n\n {hasKsp && (\n <div className={cn('laptop:block hidden', soldOut && 'opacity-50')}>\n <CartItemKsp\n items={kspList!}\n variant=\"inline-link\"\n copy={copy}\n className={classNames.kspLink}\n classNames={{\n toggle: cn(\n 'cart-item-row-ksp-link text-brand-0 p-0 font-bold leading-[1.2]',\n classNames.kspLink\n ),\n item: cn('cart-item-row-ksp-expanded text-base font-bold', classNames.kspExpanded),\n }}\n />\n </div>\n )}\n </div>\n\n <div\n className={cn(\n 'cart-item-row-quantity laptop:flex laptop:flex-col laptop:items-start hidden',\n classNames.quantityWrap\n )}\n >\n <InputNumber\n classNames={{\n root: 'border-lines border-[1px] rounded-lg w-[96px]',\n inputWrapper: 'w-[32px] h-[32px]',\n input: 'border-none',\n button: 'border-none size-8',\n }}\n value={localQuantity}\n min={minQuantity ?? 1}\n max={maxQuantity}\n disabled={soldOut}\n onChange={handleQuantityChange as InputNumberProps['onChange']}\n />\n </div>\n <div className=\"laptop:flex laptop:flex-[404] hidden flex-col items-end gap-2\">\n {renderPrice && (\n <div\n className={cn(\n 'cart-item-row-price laptop:flex laptop:flex-col laptop:items-end laptop:gap-2 hidden font-bold',\n soldOut && 'opacity-50',\n classNames.priceWrap\n )}\n >\n {renderPrice()}\n </div>\n )}\n {onRemove && (\n <button\n type=\"button\"\n onClick={handleRemoveClick}\n className={cn(\n 'cart-item-row-remove hover:text-brand-0 text-info-tertiary laptop:text-base pointer-events-auto text-sm font-bold underline',\n classNames.removeBtn\n )}\n >\n {c.remove}\n </button>\n )}\n </div>\n </div>\n\n {hasGiftOrShipping && (\n <div className={cn('laptop:block hidden', soldOut && 'opacity-50')}>\n <CartItemGiftShipping\n giftSlots={giftSlots}\n selectedGiftSkus={selectedGiftSkus}\n copy={c}\n onGiftChange={onGiftChange}\n onGiftRemoveSku={onGiftRemoveSku}\n onNavigate={onNavigate}\n classNames={{\n giftWrap: classNames.giftWrap,\n shippingWrap: classNames.shippingWrap,\n }}\n />\n </div>\n )}\n </div>\n </div>\n\n {(hasKsp || c.shippingText) && (\n <div\n className={cn(\n 'cart-item-row-mobile-info laptop:hidden bg-container-secondary flex flex-col rounded-md',\n soldOut && 'opacity-50',\n classNames.mobileInfoBlock\n )}\n >\n {hasKsp && (\n <div\n className={cn(\n 'cart-item-row-mobile-ksp border-lines px-4 py-3',\n c.shippingText && 'border-b',\n classNames.mobileKspWrap\n )}\n >\n <CartItemKsp\n items={kspList!}\n variant=\"verified\"\n copy={copy}\n className={classNames.kspLink}\n classNames={{\n toggle: 'cart-item-row-ksp-link text-sm font-semibold',\n item: cn('cart-item-row-ksp-expanded', classNames.kspExpanded),\n }}\n />\n </div>\n )}\n {c.shippingText && (\n <div className={cn('cart-item-row-mobile-shipping px-4 py-3', classNames.mobileShippingWrap)}>\n <CartItemShipping text={c.shippingText} />\n </div>\n )}\n </div>\n )}\n\n {hasGiftOrShipping && (\n <div className={cn('laptop:hidden', soldOut && 'opacity-50')}>\n <CartItemGiftShipping\n giftSlots={giftSlots}\n selectedGiftSkus={selectedGiftSkus}\n copy={c}\n onGiftChange={onGiftChange}\n onGiftRemoveSku={onGiftRemoveSku}\n onNavigate={onNavigate}\n classNames={{\n giftWrap: classNames.giftWrap,\n shippingWrap: classNames.shippingWrap,\n }}\n />\n </div>\n )}\n <CartItemRemoveConfirm\n open={showRemoveConfirm}\n copy={c}\n onConfirm={handleConfirmRemove}\n onCancel={handleCloseRemoveConfirm}\n onClose={handleCloseRemoveConfirm}\n />\n </div>\n </div>\n )\n }\n)\n\nCartItemRow.displayName = 'CartItemRow'\n\nexport default CartItemRow\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "cn", "Heading", "Text", "InputNumber", "Picture", "Badge", "CartItemKsp", "CartItemShipping", "CartItemGiftShipping", "CartItemRemoveConfirm", "LocalizedLink", "DEFAULT_CART_COPY", "BADGE_PROMOTIONAL_TYPE", "TrashIcon", "CartItemRow", "rowImage", "title", "description", "kspList", "quantity", "minQuantity", "maxQuantity", "soldOut", "isPresale", "listingHref", "renderPrice", "giftSlots", "selectedGiftSkus", "onQuantityChange", "onRemove", "onGiftChange", "onGiftRemoveSku", "onNavigate", "userType", "sectionTitle", "copy", "className", "classNames", "props", "ref", "c", "hasKsp", "hasGiftOrShipping", "localQuantity", "setLocalQuantity", "showRemoveConfirm", "setShowRemoveConfirm", "localQuantityRef", "handleQuantityChange", "newQty", "minQty", "resolvedSoldOutText", "handleRemoveClick", "handleConfirmRemove", "handleCloseRemoveConfirm", "CartItemRow_default"]
7
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { CartItemGiftShippingProps } from './types.js';
3
+ declare const CartItemGiftShipping: React.FC<CartItemGiftShippingProps>;
4
+ export default CartItemGiftShipping;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as t,jsxs as l}from"react/jsx-runtime";import"react";import{cn as a}from"../../../../../helpers/index.js";import g from"../CartItemShipping/index.js";import h from"../../../CartGiftSection/index.js";const r=({giftSlots:i,selectedGiftSkus:o,onGiftChange:m,onGiftRemoveSku:n,onNavigate:s,copy:p,classNames:e={}})=>{const f=i&&i.length>0;return l("div",{className:"flex flex-col gap-4",children:[f&&t("div",{className:a("cart-item-row-gift-wrap",e.giftWrap),children:t(h,{slots:i,selectedGiftSkus:o??[],onChange:m,onGiftRemoveSku:n,onNavigate:s})}),p?.shippingText&&t("div",{className:a("cart-item-row-shipping laptop:flex laptop:items-center laptop:gap-1 hidden",e.shippingWrap),children:t(g,{text:p.shippingText})})]})};r.displayName="CartItemGiftShipping";var G=r;export{G as default};
2
+ //# sourceMappingURL=CartItemGiftShipping.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/CartItemGiftShipping.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../../../../helpers/index.js'\nimport CartItemShipping from '../CartItemShipping/index.js'\nimport CartGiftSection from '../../../CartGiftSection/index.js'\nimport type { CartItemGiftShippingProps } from './types.js'\n\nconst CartItemGiftShipping: React.FC<CartItemGiftShippingProps> = ({\n giftSlots,\n selectedGiftSkus,\n onGiftChange,\n onGiftRemoveSku,\n onNavigate,\n copy,\n classNames = {},\n}) => {\n const hasGifts = giftSlots && giftSlots.length > 0\n\n return (\n <div className=\"flex flex-col gap-4\">\n {hasGifts && (\n <div className={cn('cart-item-row-gift-wrap', classNames.giftWrap)}>\n <CartGiftSection\n slots={giftSlots!}\n selectedGiftSkus={selectedGiftSkus ?? []}\n onChange={onGiftChange}\n onGiftRemoveSku={onGiftRemoveSku}\n onNavigate={onNavigate}\n />\n </div>\n )}\n {copy?.shippingText && (\n <div\n className={cn(\n 'cart-item-row-shipping laptop:flex laptop:items-center laptop:gap-1 hidden',\n classNames.shippingWrap\n )}\n >\n <CartItemShipping text={copy.shippingText} />\n </div>\n )}\n </div>\n )\n}\n\nCartItemGiftShipping.displayName = 'CartItemGiftShipping'\n\nexport default CartItemGiftShipping\n"],
5
+ "mappings": "aAoBI,OAGM,OAAAA,EAHN,QAAAC,MAAA,oBAlBJ,MAAuB,QACvB,OAAS,MAAAC,MAAU,kCACnB,OAAOC,MAAsB,+BAC7B,OAAOC,MAAqB,oCAG5B,MAAMC,EAA4D,CAAC,CACjE,UAAAC,EACA,iBAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,WAAAC,EACA,KAAAC,EACA,WAAAC,EAAa,CAAC,CAChB,IAAM,CACJ,MAAMC,EAAWP,GAAaA,EAAU,OAAS,EAEjD,OACEL,EAAC,OAAI,UAAU,sBACZ,UAAAY,GACCb,EAAC,OAAI,UAAWE,EAAG,0BAA2BU,EAAW,QAAQ,EAC/D,SAAAZ,EAACI,EAAA,CACC,MAAOE,EACP,iBAAkBC,GAAoB,CAAC,EACvC,SAAUC,EACV,gBAAiBC,EACjB,WAAYC,EACd,EACF,EAEDC,GAAM,cACLX,EAAC,OACC,UAAWE,EACT,6EACAU,EAAW,YACb,EAEA,SAAAZ,EAACG,EAAA,CAAiB,KAAMQ,EAAK,aAAc,EAC7C,GAEJ,CAEJ,EAEAN,EAAqB,YAAc,uBAEnC,IAAOS,EAAQT",
6
+ "names": ["jsx", "jsxs", "cn", "CartItemShipping", "CartGiftSection", "CartItemGiftShipping", "giftSlots", "selectedGiftSkus", "onGiftChange", "onGiftRemoveSku", "onNavigate", "copy", "classNames", "hasGifts", "CartItemGiftShipping_default"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './CartItemGiftShipping.js';
2
+ export type { CartItemGiftShippingProps } from './types.js';
@@ -0,0 +1,2 @@
1
+ import{default as e}from"./CartItemGiftShipping.js";export{e as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/biz-components/CartDetail/CartItemRow/components/CartItemGiftShipping/index.ts"],
4
+ "sourcesContent": ["export { default } from './CartItemGiftShipping.js'\nexport type { CartItemGiftShippingProps } from './types.js'\n"],
5
+ "mappings": "AAAA,OAAS,WAAAA,MAAe",
6
+ "names": ["default"]
7
+ }