@anker-in/headless-ui 1.3.77 → 1.3.78-alpha.1792675541810

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 (209) hide show
  1. package/CONTRIBUTING.md +57 -0
  2. package/dist/cjs/biz-components/ActiveShelf/ProductCard.d.ts +2 -0
  3. package/dist/cjs/biz-components/ActiveShelf/ProductCard.js +1 -1
  4. package/dist/cjs/biz-components/ActiveShelf/index.d.ts +2 -0
  5. package/dist/cjs/biz-components/ActiveShelf/index.js +1 -1
  6. package/dist/cjs/biz-components/ActiveShelf/styles.js +1 -1
  7. package/dist/cjs/biz-components/ActivitySchedule/index.js +1 -1
  8. package/dist/cjs/biz-components/AiuiProvider/index.js +1 -1
  9. package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +2 -0
  10. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
  11. package/dist/cjs/biz-components/BrandEquity/types.d.ts +2 -0
  12. package/dist/cjs/biz-components/BrandEquity/types.js +1 -1
  13. package/dist/cjs/biz-components/BuyOneGetOneShelf/DiscountBadge.d.ts +25 -0
  14. package/dist/cjs/biz-components/BuyOneGetOneShelf/DiscountBadge.js +1 -0
  15. package/dist/cjs/biz-components/BuyOneGetOneShelf/FreeGiftItem.d.ts +4 -0
  16. package/dist/cjs/biz-components/BuyOneGetOneShelf/FreeGiftItem.js +1 -1
  17. package/dist/cjs/biz-components/BuyOneGetOneShelf/GiftSelection.d.ts +4 -0
  18. package/dist/cjs/biz-components/BuyOneGetOneShelf/GiftSelection.js +1 -1
  19. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +2 -2
  20. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
  21. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductImage.d.ts +0 -3
  22. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductImage.js +1 -1
  23. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductTags.d.ts +14 -0
  24. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductTags.js +1 -0
  25. package/dist/cjs/biz-components/BuyOneGetOneShelf/context.d.ts +2 -1
  26. package/dist/cjs/biz-components/BuyOneGetOneShelf/context.js +1 -1
  27. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +1 -1
  28. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +1 -1
  29. package/dist/cjs/biz-components/BuyOneGetOneShelf/types.d.ts +70 -3
  30. package/dist/cjs/biz-components/BuyOneGetOneShelf/types.js +1 -1
  31. package/dist/cjs/biz-components/Category/index.js +1 -1
  32. package/dist/cjs/biz-components/EventSchedule/index.js +1 -1
  33. package/dist/cjs/biz-components/FooterNavigation/index.js +1 -1
  34. package/dist/cjs/biz-components/Graphic/index.js +1 -1
  35. package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.js +1 -1
  36. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  37. package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.d.ts +9 -10
  38. package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.js +1 -1
  39. package/dist/cjs/biz-components/HeroBanner/index.d.ts +3 -0
  40. package/dist/cjs/biz-components/HeroBanner/index.js +1 -1
  41. package/dist/cjs/biz-components/HeroBanner/mediaResolver.d.ts +58 -0
  42. package/dist/cjs/biz-components/HeroBanner/mediaResolver.js +1 -0
  43. package/dist/cjs/biz-components/HeroBanner/types.d.ts +116 -8
  44. package/dist/cjs/biz-components/HeroBanner/types.js +1 -1
  45. package/dist/cjs/biz-components/ImageWithText/ImageWithText.js +1 -1
  46. package/dist/cjs/biz-components/ImageWithText/types.d.ts +8 -2
  47. package/dist/cjs/biz-components/ImageWithText/types.js +1 -1
  48. package/dist/cjs/biz-components/Ksp/index.d.ts +2 -0
  49. package/dist/cjs/biz-components/Ksp/index.js +1 -1
  50. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGridBox.js +1 -1
  51. package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
  52. package/dist/cjs/biz-components/Listing/hooks/useStickyFlip.d.ts +20 -0
  53. package/dist/cjs/biz-components/Listing/hooks/useStickyFlip.js +1 -0
  54. package/dist/cjs/biz-components/MarqueeReview/index.js +1 -1
  55. package/dist/cjs/biz-components/MediaPlayerBase/index.js +1 -1
  56. package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js +2 -2
  57. package/dist/cjs/biz-components/MediaShelf/ProductCard.d.ts +2 -0
  58. package/dist/cjs/biz-components/MediaShelf/ProductCard.js +1 -1
  59. package/dist/cjs/biz-components/MediaShelf/index.js +1 -1
  60. package/dist/cjs/biz-components/ProductCompare/index.d.ts +1 -1
  61. package/dist/cjs/biz-components/ProductCompare/index.js +1 -1
  62. package/dist/cjs/biz-components/ProductHero/ProductHero.js +1 -1
  63. package/dist/cjs/biz-components/ProductHero/types.d.ts +2 -0
  64. package/dist/cjs/biz-components/ProductHero/types.js +1 -1
  65. package/dist/cjs/biz-components/ProductNav/ProductNav.js +1 -1
  66. package/dist/cjs/biz-components/PromotionalBar/index.js +1 -1
  67. package/dist/cjs/biz-components/SceneShelf/ProductCard.js +1 -1
  68. package/dist/cjs/biz-components/SearchPage/index.js +1 -1
  69. package/dist/cjs/biz-components/SecondaryBanner/SecondaryBannerCarousel.d.ts +9 -9
  70. package/dist/cjs/biz-components/SecondaryBanner/SecondaryBannerCarousel.js +1 -1
  71. package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +63 -6
  72. package/dist/cjs/biz-components/SecondaryBanner/index.js +1 -1
  73. package/dist/cjs/biz-components/Specs/dropdown.js +1 -2
  74. package/dist/cjs/biz-components/Specs/index.js +1 -1
  75. package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.js +1 -1
  76. package/dist/cjs/biz-components/Title/index.js +1 -1
  77. package/dist/cjs/biz-components/index.d.ts +1 -0
  78. package/dist/cjs/biz-components/index.js +1 -1
  79. package/dist/cjs/components/container.js +1 -1
  80. package/dist/cjs/components/link.js +1 -1
  81. package/dist/cjs/helpers/ScrollLoadVideo.js +1 -1
  82. package/dist/cjs/helpers/utils.js +1 -1
  83. package/dist/cjs/hooks/useCarouselPlayback.d.ts +110 -0
  84. package/dist/cjs/hooks/useCarouselPlayback.js +1 -0
  85. package/dist/cjs/hooks/useDraggableScroll.js +1 -1
  86. package/dist/cjs/hooks/useExposure.d.ts +1 -1
  87. package/dist/cjs/hooks/useExposure.js +1 -1
  88. package/dist/cjs/hooks/useViewItemList.d.ts +1 -1
  89. package/dist/cjs/index.d.ts +2 -0
  90. package/dist/cjs/index.js +1 -1
  91. package/dist/cjs/material/breakpoints.d.ts +97 -0
  92. package/dist/cjs/material/breakpoints.js +1 -0
  93. package/dist/cjs/material/contract.d.ts +72 -0
  94. package/dist/cjs/material/contract.js +1 -0
  95. package/dist/cjs/material/index.d.ts +17 -0
  96. package/dist/cjs/material/index.js +1 -0
  97. package/dist/cjs/material/material-meta.d.ts +76 -0
  98. package/dist/cjs/material/material-meta.js +1 -0
  99. package/dist/cjs/shared/CarouselControls.d.ts +75 -0
  100. package/dist/cjs/shared/CarouselControls.js +1 -0
  101. package/dist/cjs/shared/ContainerGridContext.d.ts +20 -0
  102. package/dist/cjs/shared/ContainerGridContext.js +1 -0
  103. package/dist/cjs/shared/Styles.d.ts +2 -0
  104. package/dist/cjs/shared/Styles.js +1 -1
  105. package/dist/cjs/shared/mediaGridSpec.d.ts +87 -0
  106. package/dist/cjs/shared/mediaGridSpec.js +1 -0
  107. package/dist/esm/biz-components/ActiveShelf/ProductCard.d.ts +2 -0
  108. package/dist/esm/biz-components/ActiveShelf/ProductCard.js +1 -1
  109. package/dist/esm/biz-components/ActiveShelf/index.d.ts +2 -0
  110. package/dist/esm/biz-components/ActiveShelf/index.js +1 -1
  111. package/dist/esm/biz-components/ActiveShelf/styles.js +1 -1
  112. package/dist/esm/biz-components/ActivitySchedule/index.js +1 -1
  113. package/dist/esm/biz-components/AiuiProvider/index.js +1 -1
  114. package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +2 -0
  115. package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
  116. package/dist/esm/biz-components/BrandEquity/types.d.ts +2 -0
  117. package/dist/esm/biz-components/BuyOneGetOneShelf/DiscountBadge.d.ts +25 -0
  118. package/dist/esm/biz-components/BuyOneGetOneShelf/DiscountBadge.js +1 -0
  119. package/dist/esm/biz-components/BuyOneGetOneShelf/FreeGiftItem.d.ts +4 -0
  120. package/dist/esm/biz-components/BuyOneGetOneShelf/FreeGiftItem.js +1 -1
  121. package/dist/esm/biz-components/BuyOneGetOneShelf/GiftSelection.d.ts +4 -0
  122. package/dist/esm/biz-components/BuyOneGetOneShelf/GiftSelection.js +1 -1
  123. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +2 -2
  124. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
  125. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductImage.d.ts +0 -3
  126. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductImage.js +1 -1
  127. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductTags.d.ts +14 -0
  128. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductTags.js +1 -0
  129. package/dist/esm/biz-components/BuyOneGetOneShelf/context.d.ts +2 -1
  130. package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +1 -1
  131. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +1 -1
  132. package/dist/esm/biz-components/BuyOneGetOneShelf/types.d.ts +70 -3
  133. package/dist/esm/biz-components/Category/index.js +1 -1
  134. package/dist/esm/biz-components/EventSchedule/index.js +1 -1
  135. package/dist/esm/biz-components/FooterNavigation/index.js +1 -1
  136. package/dist/esm/biz-components/Graphic/index.js +1 -1
  137. package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.js +1 -1
  138. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  139. package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.d.ts +9 -10
  140. package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.js +1 -1
  141. package/dist/esm/biz-components/HeroBanner/index.d.ts +3 -0
  142. package/dist/esm/biz-components/HeroBanner/index.js +1 -1
  143. package/dist/esm/biz-components/HeroBanner/mediaResolver.d.ts +58 -0
  144. package/dist/esm/biz-components/HeroBanner/mediaResolver.js +1 -0
  145. package/dist/esm/biz-components/HeroBanner/types.d.ts +116 -8
  146. package/dist/esm/biz-components/ImageWithText/ImageWithText.js +1 -1
  147. package/dist/esm/biz-components/ImageWithText/types.d.ts +8 -2
  148. package/dist/esm/biz-components/Ksp/index.d.ts +2 -0
  149. package/dist/esm/biz-components/Ksp/index.js +1 -1
  150. package/dist/esm/biz-components/Listing/components/ProductCard/ProductGridBox.js +1 -1
  151. package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
  152. package/dist/esm/biz-components/Listing/hooks/useStickyFlip.d.ts +20 -0
  153. package/dist/esm/biz-components/Listing/hooks/useStickyFlip.js +1 -0
  154. package/dist/esm/biz-components/MarqueeReview/index.js +1 -1
  155. package/dist/esm/biz-components/MediaPlayerBase/index.js +1 -1
  156. package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js +2 -2
  157. package/dist/esm/biz-components/MediaShelf/ProductCard.d.ts +2 -0
  158. package/dist/esm/biz-components/MediaShelf/ProductCard.js +1 -1
  159. package/dist/esm/biz-components/MediaShelf/index.js +1 -1
  160. package/dist/esm/biz-components/ProductCompare/index.d.ts +1 -1
  161. package/dist/esm/biz-components/ProductCompare/index.js +1 -1
  162. package/dist/esm/biz-components/ProductHero/ProductHero.js +1 -1
  163. package/dist/esm/biz-components/ProductHero/types.d.ts +2 -0
  164. package/dist/esm/biz-components/ProductNav/ProductNav.js +1 -1
  165. package/dist/esm/biz-components/PromotionalBar/index.js +1 -1
  166. package/dist/esm/biz-components/SceneShelf/ProductCard.js +1 -1
  167. package/dist/esm/biz-components/SearchPage/index.js +1 -1
  168. package/dist/esm/biz-components/SecondaryBanner/SecondaryBannerCarousel.d.ts +9 -9
  169. package/dist/esm/biz-components/SecondaryBanner/SecondaryBannerCarousel.js +1 -1
  170. package/dist/esm/biz-components/SecondaryBanner/index.d.ts +63 -6
  171. package/dist/esm/biz-components/SecondaryBanner/index.js +1 -1
  172. package/dist/esm/biz-components/Specs/dropdown.js +1 -2
  173. package/dist/esm/biz-components/Specs/index.js +1 -1
  174. package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.js +1 -1
  175. package/dist/esm/biz-components/Title/index.js +1 -1
  176. package/dist/esm/biz-components/index.d.ts +1 -0
  177. package/dist/esm/biz-components/index.js +1 -1
  178. package/dist/esm/components/container.js +1 -1
  179. package/dist/esm/components/link.js +1 -1
  180. package/dist/esm/helpers/ScrollLoadVideo.js +1 -1
  181. package/dist/esm/helpers/utils.js +1 -1
  182. package/dist/esm/hooks/useCarouselPlayback.d.ts +110 -0
  183. package/dist/esm/hooks/useCarouselPlayback.js +1 -0
  184. package/dist/esm/hooks/useDraggableScroll.js +1 -1
  185. package/dist/esm/hooks/useExposure.d.ts +1 -1
  186. package/dist/esm/hooks/useExposure.js +1 -1
  187. package/dist/esm/hooks/useViewItemList.d.ts +1 -1
  188. package/dist/esm/index.d.ts +2 -0
  189. package/dist/esm/index.js +1 -1
  190. package/dist/esm/material/breakpoints.d.ts +97 -0
  191. package/dist/esm/material/breakpoints.js +1 -0
  192. package/dist/esm/material/contract.d.ts +72 -0
  193. package/dist/esm/material/contract.js +1 -0
  194. package/dist/esm/material/index.d.ts +17 -0
  195. package/dist/esm/material/index.js +1 -0
  196. package/dist/esm/material/material-meta.d.ts +76 -0
  197. package/dist/esm/material/material-meta.js +1 -0
  198. package/dist/esm/shared/CarouselControls.d.ts +75 -0
  199. package/dist/esm/shared/CarouselControls.js +1 -0
  200. package/dist/esm/shared/ContainerGridContext.d.ts +20 -0
  201. package/dist/esm/shared/ContainerGridContext.js +1 -0
  202. package/dist/esm/shared/Styles.d.ts +2 -0
  203. package/dist/esm/shared/Styles.js +1 -1
  204. package/dist/esm/shared/mediaGridSpec.d.ts +87 -0
  205. package/dist/esm/shared/mediaGridSpec.js +1 -0
  206. package/dist/tokens/base.css +28 -0
  207. package/package.json +17 -3
  208. package/style.css +293 -167
  209. package/tailwind.config.js +8 -0
package/CONTRIBUTING.md CHANGED
@@ -221,6 +221,63 @@ alert('Example of disabled line for no-alert')
221
221
 
222
222
  ❗ 在ui/目录下的代码导入的时候,要带上.js后缀,比如 import { cn } from '../helpers/index.js' 否则在使用的时候会出现 ERR_UNSUPPORTED_DIR_IMPORT 问题
223
223
 
224
+ # 媒体字段断点命名(ADR 0010,增量强制)
225
+
226
+ 业务组件中「断点族媒体字段」(承载图片/视频/海报引用、按断点区分尺寸的字段)必须遵守与 Tailwind 断点对齐的 canonical 5 端命名:
227
+
228
+ | 断点 | canonical 字段名(image 族) | video / poster 族同理 |
229
+ | ---- | ---- | ---- |
230
+ | mobile 基线(<768px) | `image`(无前缀 = 移动优先基线) | `video` / `poster` |
231
+ | tablet(≥768px) | `tabletImage` | `tabletVideo` / `tabletPoster` |
232
+ | laptop(≥1025px) | `laptopImage` | `laptopVideo` / `laptopPoster` |
233
+ | desktop(≥1440px) | `desktopImage` | `desktopVideo` / `desktopPoster` |
234
+ | lg-desktop(≥1920px) | `lgDesktopImage` | `lgDesktopVideo` / `lgDesktopPoster` |
235
+
236
+ ```tsx
237
+ // ✅ 合规
238
+ export interface MyCompItem {
239
+ image: Media
240
+ tabletImage?: Media
241
+ laptopImage?: Media
242
+ desktopImage?: Media
243
+ lgDesktopImage?: Media
244
+ }
245
+
246
+ // ❌ 违规(pad/mob/pc 前缀、后缀式、嵌套裸断点键均不合规)
247
+ export interface MyCompItem {
248
+ pcImage: Media
249
+ padImage?: Media
250
+ mobImage?: Media
251
+ imgPad?: Media
252
+ backgroundImage?: { mobile?: Media; tablet?: Media }
253
+ }
254
+ ```
255
+
256
+ **豁免**:语义媒体(`icon` / `avatar` / `logo` 等单尺寸小图)无断点概念,不需要断点前缀,保持原样即合规。
257
+
258
+ ## lint 闸门与 ratchet 快照(grandfather)
259
+
260
+ 命名检查由 `scripts/check-material-naming.mjs` 实现,已接入 `pnpm lint`(`pnpm --filter @anker-in/headless-ui run lint`),CI / pre-commit 均经此入口拦截:
261
+
262
+ - **新组件 / 新增媒体字段**不合规 → lint 红,报错信息含 canonical 写法与 `material-meta.json` 的 `fieldMap` 逃生舱指引(字段名已写进生产 PageConfig、无法改名时,用 fieldMap 显式声明字段→断点映射,这是合法终态而非临时豁免)。
263
+ - **存量不合规字段**(`imgPad` / `imageMob` / `padImage` / 嵌套 `backgroundImage.{mobile...}` 等)记录在 `scripts/material-naming-snapshot.json`,被 grandfather 不报错——不做 big-bang 迁移,存量字段名已固化在 CMS 数据里,改名 = 数据迁移。
264
+ - 快照**只减不增**:字段从源码消失后重新生成快照即自动收紧;快照中不存在的字段永远报错。
265
+
266
+ 单独运行:
267
+
268
+ ```shell
269
+ pnpm --filter @anker-in/headless-ui run lint:material-naming # 检查
270
+ pnpm --filter @anker-in/headless-ui run lint:material-naming:update # 重新生成快照
271
+ ```
272
+
273
+ ## 随 touch 迁移(touch-to-migrate)
274
+
275
+ eslint 无法感知「本次 PR 是否改动了某字段」,因此存量字段的合规化提示由 PR review 承担:
276
+
277
+ - 你的 PR 若**触及**某组件的媒体字段(新增、修改、挪动),请顺手将该字段合规化(改名 + 组件内 fallback 兼容旧名),或在该组件的 `material-meta.json` 中显式声明 `fieldMap`。
278
+ - 字段合规化后运行 `lint:material-naming:update` 收紧快照,被迁移的字段从快照中移除,之后任何人再引入该旧名都会 lint 红。
279
+ - 判定逻辑(哪个字段是媒体、哪个名字合规)全仓单点在 `src/material/breakpoints.ts`(`isMediaField` / `isCanonicalMediaFieldName`),本检查脚本直接复用,勿在别处复制第二份词表。
280
+
224
281
  # Tesing
225
282
 
226
283
  unit test 使用 [jest](https://jestjs.io/) 和 [@test-library/react](https://testing-library.com/)。
@@ -168,6 +168,8 @@ export interface ProductCardProps {
168
168
  customTagsIcon?: Img;
169
169
  /** 自定义折扣标签图标样式(style1/style2/style3 为内置预设,custom 为自定义上传) */
170
170
  customTagStyle?: DiscountTagStyle;
171
+ /** 左上角折扣标签文字颜色,覆盖默认文字色;未设置时保持原样式 */
172
+ discountTagTextColor?: string;
171
173
  /** 点击会员标签模块游客副标题(注册/登录)回调 */
172
174
  onMemberSignUp?: () => void;
173
175
  /** 点击会员标签模块付费会员折扣文案(加购付费会员sku)回调 */
@@ -1 +1 @@
1
- "use strict";"use client";var be=Object.create;var N=Object.defineProperty;var fe=Object.getOwnPropertyDescriptor;var ye=Object.getOwnPropertyNames;var pe=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var Se=(e,a)=>{for(var o in a)N(e,o,{get:a[o],enumerable:!0})},$=(e,a,o,d)=>{if(a&&typeof a=="object"||typeof a=="function")for(let c of ye(a))!ve.call(e,c)&&c!==o&&N(e,c,{get:()=>a[c],enumerable:!(d=fe(a,c))||d.enumerable});return e};var Ce=(e,a,o)=>(o=e!=null?be(pe(e)):{},$(a||!e||!e.__esModule?N(o,"default",{value:e,enumerable:!0}):o,e)),he=e=>$(N({},"__esModule",{value:!0}),e);var Ae={};Se(Ae,{ProductCard:()=>B,default:()=>Ne});module.exports=he(Ae);var t=require("react/jsx-runtime"),A=Ce(require("react")),n=require("../../helpers/index.js"),i=require("../../components/index.js"),G=require("./MemberLabel.js"),z=require("./styles.js");const xe=5;function ke(e,a,o,d){if(e===void 0)return!0;switch(e){case"always":return!0;case"never":return!1;case"below-quantity":return a===void 0?!0:o<=a;case"below-percentage":return a===void 0?!0:o/d*100<=a;default:return!0}}const Te=({items:e})=>e?.length?(0,t.jsx)("div",{className:"active-shelf-display-social-endorsements desktop:gap-2 laptop:flex absolute right-0 top-0 z-10 hidden flex-col items-center gap-1",children:e.slice(0,3).map((a,o)=>typeof a.icon=="string"?(0,t.jsx)("img",{src:a.icon,alt:a.label||"",loading:"lazy",className:"desktop:size-10 lg-desktop:size-12 size-8 object-contain"},o):(0,t.jsx)(i.Text,{"aria-label":a.label,className:"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full",children:a.icon},o))}):null,U={style1:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_7746fc9c-d4e4-4a59-a972-fa4cb0f3f8bd.png?v=1789381635",textClass:"aiui-dark text-info-primary"},style2:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/1_e0438358-493b-40cb-9a58-89d6ee2d3751.png?v=1789381628",textClass:"aiui-dark text-info-primary"},style3:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/1_19208ba4-71ea-4580-892d-72167f1cf606.png?v=1789381639",textClass:"aiui-dark text-info-primary"}},Pe=({text:e,style:a="style1",icon:o,className:d,textClassName:c,layoutMode:h="flex",renderBadge:v})=>{if(!e)return null;const b=a==="custom",s=b&&!!v,S=b&&!v&&!!o?.url,C=b?void 0:U[a],f=U.style1,u=z.layoutModeStyles[h],x={style1:u.discountBadgeText,style2:u.discountBadgeTextStyle2,style3:u.discountBadgeTextStyle3},k=b?u.discountBadgeTextCenter:x[a];return(0,t.jsxs)("div",{className:(0,n.cn)("active-shelf-discount-badge","absolute left-0 top-0 z-10",u.discountBadgeSize,d),children:[s?v({text:e,layoutMode:h}):S?(0,t.jsx)(i.Picture,{source:o.url,alt:o.alt||e,className:"block size-full",imgClassName:"block size-full object-contain"}):(0,t.jsx)("img",{src:(C??f).bg,alt:e,loading:"lazy",className:"block size-full object-contain"}),!s&&(0,t.jsx)(i.Text,{className:(0,n.cn)("active-shelf-discount-badge-text text-center","absolute inset-0 font-bold !leading-[1.2]",k,(C??f).textClass,c),html:e})]})},B=A.forwardRef(({product:e,className:a,showTags:o=!0,stockDisplayMode:d,stockThresholdValue:c,onLearnMore:h,onShopNow:v,onAddToCart:b,classNames:s,secondaryButtonText:S,secondaryButtonFun:C,primaryButtonText:f,primaryButtonFun:u,showOriginalPrice:x,renderOriginalPrice:k,copy:y,onProductImageClick:T,tagTypeConfig:_,fill:M,outline:w,memberPriceTextColor:R,userType:P,memberImages:H,customTagsIcon:K,customTagStyle:J,onMemberSignUp:Q,onPlusMemberAddCart:W,showMemberPrice:I,layoutMode:L,renderDiscountBadge:X},Y)=>{const[Z,ee]=A.useState(!1),[te,ae]=A.useState(!1),ie=e?.memberDiscountAmount,ne=e?.plusMemberDiscountAmount,oe=e?.activityLabels??[],se=P==="guest"?"guest":"member",E=oe.find(l=>l.type===se)?.label,re=P==="guest"?y?.memberActivityLabelUnLogin:y?.memberActivityLabel,le=!!E||!!re,ce=e?.discountAmount,r=z.layoutModeStyles[L??"flex"],de=A.useMemo(()=>e?.availableForSale&&e?.quantityAvailable<=0?xe:e?.availableForSale?(e?.quantityAvailable??0)/(e?.totalInventory??1)*100:0,[e?.availableForSale,e?.quantityAvailable,e?.totalInventory]),F=async(l,g)=>{if(!l)return;const m=g==="primary"?ee:ae;m(!0);try{switch(l){case"buyNow":await v?.(e);break;case"addCart":await b?.(e);break;case"learnMore":await h?.(e);break;default:break}}finally{m(!1)}},ue=e.availableForSale&&e.quantityAvailable<=0,ge=(l,g)=>{const m=l===0?_?.firstTagVariant:l===1?_?.secondTagVariant:void 0,D=(m||void 0)??(g==="fill"?"fill":g!==void 0?"outline":l===0?"fill":"outline"),p=D==="fill"?{outline:M?.outlineColor,bg:M?.bgColor}:{outline:w?.outlineColor,bg:w?.bgColor},O={...p.outline?{outlineColor:p.outline}:{},...p.bg?{backgroundColor:p.bg,backgroundImage:"none"}:{}};return D==="outline"&&p.outline&&(O.color=p.outline),{variant:D,style:O}},j=!!e.custom_bg_image,me=!!e.custom_scene_image,q=l=>l?{backgroundImage:`url(${l})`,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"}:void 0;return(0,t.jsxs)(i.Card,{ref:Y,className:(0,n.cn)("hover:bg-container-secondary-0 bg-container-primary relative flex h-full cursor-pointer flex-col overflow-hidden border-none",r.cardRadius,a,s?.productCard),children:[(0,t.jsx)(Pe,{text:ce,style:J,icon:K,layoutMode:L,renderBadge:X,className:s?.discountBadge,textClassName:s?.discountBadgeText}),(0,t.jsxs)(i.CardContent,{className:(0,n.cn)(r.cardContent,"relative flex flex-1 flex-col justify-between"),children:[(0,t.jsxs)("div",{className:"product-image-wrapper group/product-image laptop:pb-2 laptop:mb-4 desktop:pb-6 desktop:mb-4 relative pb-4",children:[j&&(0,t.jsx)("div",{"aria-hidden":!0,className:(0,n.cn)("pointer-events-none absolute inset-0 z-20",r.imageOffset),style:q(e.custom_bg_image)}),me&&(0,t.jsx)("div",{"aria-hidden":!0,className:(0,n.cn)("laptop:block laptop:group-hover/product-image:opacity-100 pointer-events-none absolute inset-0 z-20 hidden opacity-0 transition-opacity duration-300",r.imageOffset),style:q(e.custom_scene_image)}),(0,t.jsx)("div",{className:(0,n.cn)("product-image mx-auto cursor-pointer overflow-hidden",r.image),children:(0,t.jsx)("a",{onClick:()=>T?.(e),...!T&&{href:e?.listingLink},rel:"noreferrer",className:(0,n.cn)("block size-full",j&&"opacity-0"),children:(0,t.jsx)(i.Picture,{source:e.image,alt:e.name,className:"aspect-square size-full object-contain",imgClassName:"size-full object-contain"})})}),(0,t.jsx)(Te,{items:e?.socialEndorsements})]}),o&&(0,t.jsx)("div",{className:"desktop:mb-2 mb-1 flex h-[24px] gap-1",children:e.tags?.map((l,g)=>{if(!l.label)return null;const{variant:m,style:V}=ge(g,l.variant);return(0,t.jsx)(i.Badge,{size:"sm",variant:m,className:"active-shelf-items-tag py-0",style:V,children:l.label},g)})}),(0,t.jsxs)("div",{className:"flex h-full flex-1 grow flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(i.Heading,{as:"h3",size:"none",className:(0,n.cn)("text-info-primary",r.title,s?.productTitle),children:(0,t.jsx)("a",{onClick:()=>T?.(e),...!T&&{href:e?.listingLink},rel:"noreferrer",className:"hover:text-brand-0 cursor-pointer ",children:e.custom_name||e.name})}),e?.description&&(0,t.jsx)(i.Text,{size:"none",className:(0,n.cn)("active-shelf-product-description text-info-primary",r.description,s?.productDescription),html:e.custom_description||e.description})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:(0,n.cn)(s?.productPrice),children:(0,t.jsx)("div",{className:(0,n.cn)("flex items-baseline",r.priceGap),children:e.availableForSale?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Heading,{size:"none",className:(0,n.cn)("text-info-primary",r.price),as:"h6",children:e.price}),k?k(e,{showOriginalPrice:x}):x&&e.originalPrice&&(0,t.jsx)(i.Heading,{size:"none",className:(0,n.cn)("text-info-tertiary line-through",r.price,s?.originalPrice),as:"h6",children:e.originalPrice})]}):(0,t.jsx)(i.Heading,{size:"none",className:(0,n.cn)("text-info-tertiary",r.price),children:y?.outOfStockLabel??"Sold Out"})})}),I&&e?.priceLabel&&e?.availableForSale&&(0,t.jsx)("div",{className:(0,n.cn)("min-h-[1lh]",r.priceLabel),children:(0,t.jsx)(i.Text,{size:"none",className:(0,n.cn)("text-brand-0",s?.productPriceLabel),style:{...R?{color:R}:{}},children:e.priceLabel})}),(0,t.jsxs)("div",{className:(0,n.cn)("mt-2 flex",r.buttonContainer,s?.buttonGroup),children:[S&&(0,t.jsx)(i.Button,{variant:"secondary",size:"lg",className:(0,n.cn)(r.buttonItem,s?.secondaryButton),onClick:()=>F(C,"secondary"),disabled:!e.availableForSale&&C!=="learnMore",loading:te,"data-headless-type-name":"ActiveShelf#ProductCard","data-headless-title-desc-button":`${e.custom_name||e.name}#${e.description||""}#${S}`,"data-headless-sku":e.sku,children:S}),f&&(0,t.jsx)(i.Button,{variant:"primary",size:"lg",className:(0,n.cn)(r.buttonItem,s?.primaryButton),onClick:()=>F(u,"primary"),disabled:!e.availableForSale&&u!=="learnMore",loading:Z,"data-headless-type-name":"ActiveShelf#ProductCard","data-headless-title-desc-button":`${e.custom_name||e.name}#${e.description||""}#${f}`,"data-headless-sku":e.sku,children:f})]}),ke(d,c,e?.quantityAvailable??0,e?.totalInventory??0)&&(0,t.jsxs)("div",{className:"mt-4 flex flex-col gap-1",children:[(0,t.jsx)(i.Progress,{value:de,max:100,min:0,size:"base",variant:"default","aria-label":"stock progress",classNames:{root:(0,n.cn)("bg-[var(--progress-track-bg,rgba(0,0,0,0.2))]",s?.stockTrack),progressBar:(0,n.cn)("bg-brand-0 transition-all duration-300 ease-in-out",s?.stockBar)}}),(0,t.jsx)(i.Text,{size:3,className:"text-info-tertiary text-[14px]",children:ue?y?.limitedStock:y?.stockDisplayText?.replace("{count}",`${e.availableForSale?e.quantityAvailable:0}`)})]})]})]})]}),I&&P&&(0,t.jsx)(G.MemberLabel,{userType:P,copy:y,images:H,onSignUp:Q,onPlusMemberAddCart:W,hasActivity:le,activityLabel:E,memberDiscountAmount:ie,plusMemberDiscountAmount:ne,layoutMode:L})]})});B.displayName="ActiveShelf.ProductCard";var Ne=B;
1
+ "use strict";"use client";var fe=Object.create;var N=Object.defineProperty;var ye=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var ve=Object.getPrototypeOf,Se=Object.prototype.hasOwnProperty;var Ce=(e,a)=>{for(var o in a)N(e,o,{get:a[o],enumerable:!0})},$=(e,a,o,d)=>{if(a&&typeof a=="object"||typeof a=="function")for(let c of pe(a))!Se.call(e,c)&&c!==o&&N(e,c,{get:()=>a[c],enumerable:!(d=ye(a,c))||d.enumerable});return e};var he=(e,a,o)=>(o=e!=null?fe(ve(e)):{},$(a||!e||!e.__esModule?N(o,"default",{value:e,enumerable:!0}):o,e)),xe=e=>$(N({},"__esModule",{value:!0}),e);var Be={};Ce(Be,{ProductCard:()=>B,default:()=>Ae});module.exports=xe(Be);var t=require("react/jsx-runtime"),A=he(require("react")),n=require("../../helpers/index.js"),i=require("../../components/index.js"),G=require("./MemberLabel.js"),z=require("./styles.js");const ke=5;function Te(e,a,o,d){if(e===void 0)return!0;switch(e){case"always":return!0;case"never":return!1;case"below-quantity":return a===void 0?!0:o<=a;case"below-percentage":return a===void 0?!0:o/d*100<=a;default:return!0}}const Pe=({items:e})=>e?.length?(0,t.jsx)("div",{className:"active-shelf-display-social-endorsements desktop:gap-2 laptop:flex absolute right-0 top-0 z-10 hidden flex-col items-center gap-1",children:e.slice(0,3).map((a,o)=>typeof a.icon=="string"?(0,t.jsx)("img",{src:a.icon,alt:a.label||"",loading:"lazy",className:"desktop:size-10 lg-desktop:size-12 size-8 object-contain"},o):(0,t.jsx)(i.Text,{"aria-label":a.label,className:"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full",children:a.icon},o))}):null,U={style1:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_7746fc9c-d4e4-4a59-a972-fa4cb0f3f8bd.png?v=1789381635",textClass:"aiui-dark text-info-primary"},style2:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/1_e0438358-493b-40cb-9a58-89d6ee2d3751.png?v=1789381628",textClass:"aiui-dark text-info-primary"},style3:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/1_19208ba4-71ea-4580-892d-72167f1cf606.png?v=1789381639",textClass:"aiui-dark text-info-primary"}},Ne=({text:e,style:a="style1",icon:o,className:d,textClassName:c,textColor:C,layoutMode:h="flex",renderBadge:v})=>{if(!e)return null;const s=a==="custom",f=s&&!!v,x=s&&!v&&!!o?.url,y=s?void 0:U[a],S=U.style1,u=z.layoutModeStyles[h],k={style1:u.discountBadgeText,style2:u.discountBadgeTextStyle2,style3:u.discountBadgeTextStyle3},g=s?u.discountBadgeTextCenter:k[a];return(0,t.jsxs)("div",{className:(0,n.cn)("active-shelf-discount-badge","absolute left-0 top-0 z-30",u.discountBadgeSize,d),children:[f?v({text:e,layoutMode:h}):x?(0,t.jsx)(i.Picture,{source:o.url,alt:o.alt||e,className:"block size-full",imgClassName:"block size-full object-contain"}):(0,t.jsx)("img",{src:(y??S).bg,alt:e,loading:"lazy",className:"block size-full object-contain"}),!f&&(0,t.jsx)(i.Text,{className:(0,n.cn)("active-shelf-discount-badge-text text-center","absolute inset-0 font-bold !leading-[1.2]",g,(y??S).textClass,c),style:C?{color:C}:void 0,html:e})]})},B=A.forwardRef(({product:e,className:a,showTags:o=!0,stockDisplayMode:d,stockThresholdValue:c,onLearnMore:C,onShopNow:h,onAddToCart:v,classNames:s,secondaryButtonText:f,secondaryButtonFun:x,primaryButtonText:y,primaryButtonFun:S,showOriginalPrice:u,renderOriginalPrice:k,copy:g,onProductImageClick:T,tagTypeConfig:_,fill:M,outline:w,memberPriceTextColor:R,userType:P,memberImages:H,customTagsIcon:K,customTagStyle:J,discountTagTextColor:Q,onMemberSignUp:W,onPlusMemberAddCart:X,showMemberPrice:I,layoutMode:L,renderDiscountBadge:Y},Z)=>{const[ee,te]=A.useState(!1),[ae,ie]=A.useState(!1),ne=e?.memberDiscountAmount,oe=e?.plusMemberDiscountAmount,se=e?.activityLabels??[],re=P==="guest"?"guest":"member",E=se.find(l=>l.type===re)?.label,le=P==="guest"?g?.memberActivityLabelUnLogin:g?.memberActivityLabel,ce=!!E||!!le,de=e?.discountAmount,r=z.layoutModeStyles[L??"flex"],ue=A.useMemo(()=>e?.availableForSale&&e?.quantityAvailable<=0?ke:e?.availableForSale?(e?.quantityAvailable??0)/(e?.totalInventory??1)*100:0,[e?.availableForSale,e?.quantityAvailable,e?.totalInventory]),F=async(l,m)=>{if(!l)return;const b=m==="primary"?te:ie;b(!0);try{switch(l){case"buyNow":await h?.(e);break;case"addCart":await v?.(e);break;case"learnMore":await C?.(e);break;default:break}}finally{b(!1)}},ge=e.availableForSale&&e.quantityAvailable<=0,me=(l,m)=>{const b=l===0?_?.firstTagVariant:l===1?_?.secondTagVariant:void 0,D=(b||void 0)??(m==="fill"?"fill":m!==void 0?"outline":l===0?"fill":"outline"),p=D==="fill"?{outline:M?.outlineColor,bg:M?.bgColor}:{outline:w?.outlineColor,bg:w?.bgColor},O={...p.outline?{outlineColor:p.outline}:{},...p.bg?{backgroundColor:p.bg,backgroundImage:"none"}:{}};return D==="outline"&&p.outline&&(O.color=p.outline),{variant:D,style:O}},j=!!e.custom_bg_image,be=!!e.custom_scene_image,q=l=>l?{backgroundImage:`url(${l})`,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"}:void 0;return(0,t.jsxs)(i.Card,{ref:Z,className:(0,n.cn)("active-shelf-card","hover:bg-container-secondary-0 bg-container-primary relative flex h-full cursor-pointer flex-col overflow-hidden border-none",r.cardRadius,a,s?.productCard),children:[(0,t.jsx)(Ne,{text:de,style:J,icon:K,layoutMode:L,renderBadge:Y,className:s?.discountBadge,textClassName:s?.discountBadgeText,textColor:Q}),(0,t.jsxs)(i.CardContent,{className:(0,n.cn)(r.cardContent,"relative flex flex-1 flex-col justify-between"),children:[(0,t.jsxs)("div",{className:"product-image-wrapper group/product-image laptop:pb-2 laptop:mb-4 desktop:pb-6 desktop:mb-4 relative mb-4",children:[j&&(0,t.jsx)("div",{"aria-hidden":!0,className:(0,n.cn)("pointer-events-none absolute inset-0 z-20",r.imageOffset),style:q(e.custom_bg_image)}),be&&(0,t.jsx)("div",{"aria-hidden":!0,className:(0,n.cn)("laptop:block laptop:group-hover/product-image:opacity-100 pointer-events-none absolute inset-0 z-20 hidden opacity-0 transition-opacity duration-300",r.imageOffset),style:q(e.custom_scene_image)}),(0,t.jsx)("div",{className:(0,n.cn)("product-image mx-auto cursor-pointer overflow-hidden",r.image),children:(0,t.jsx)("a",{onClick:()=>T?.(e),...!T&&{href:e?.listingLink},rel:"noreferrer",className:(0,n.cn)("block size-full",j&&"opacity-0"),children:(0,t.jsx)(i.Picture,{source:e.image,alt:e.name,className:"aspect-square size-full object-contain",imgClassName:"size-full object-contain"})})}),(0,t.jsx)(Pe,{items:e?.socialEndorsements})]}),o&&(0,t.jsx)("div",{className:"desktop:mb-2 mb-1 flex h-[24px] gap-1",children:e.tags?.map((l,m)=>{if(!l.label)return null;const{variant:b,style:V}=me(m,l.variant);return(0,t.jsx)(i.Badge,{size:"sm",variant:b,className:"active-shelf-items-tag py-0",style:V,children:l.label},m)})}),(0,t.jsxs)("div",{className:"flex h-full flex-1 grow flex-col justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(i.Heading,{as:"h3",size:"none",className:(0,n.cn)("text-info-primary",r.title,s?.productTitle),children:(0,t.jsx)("a",{onClick:()=>T?.(e),...!T&&{href:e?.listingLink},rel:"noreferrer",className:"hover:text-brand-0 cursor-pointer ",children:e.custom_name||e.name})}),e?.description&&(0,t.jsx)(i.Text,{size:"none",className:(0,n.cn)("active-shelf-product-description text-info-primary",r.description,s?.productDescription),html:e.custom_description||e.description})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:(0,n.cn)(s?.productPrice),children:(0,t.jsx)("div",{className:(0,n.cn)("flex items-baseline",r.priceGap),children:e.availableForSale?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Heading,{size:"none",className:(0,n.cn)("text-info-primary",r.price),as:"h6",children:e.price}),k?k(e,{showOriginalPrice:u}):u&&e.originalPrice&&(0,t.jsx)(i.Heading,{size:"none",className:(0,n.cn)("text-info-tertiary line-through",r.price,s?.originalPrice),as:"h6",children:e.originalPrice})]}):(0,t.jsx)(i.Heading,{size:"none",className:(0,n.cn)("text-info-tertiary",r.price),children:g?.outOfStockLabel??"Sold Out"})})}),I&&e?.priceLabel&&e?.availableForSale&&(0,t.jsx)("div",{className:(0,n.cn)("min-h-[1lh]",r.priceLabel),children:(0,t.jsx)(i.Text,{size:"none",className:(0,n.cn)("text-brand-0",s?.productPriceLabel),style:{...R?{color:R}:{}},children:e.priceLabel})}),(0,t.jsxs)("div",{className:(0,n.cn)("mt-2 flex",r.buttonContainer,s?.buttonGroup),children:[f&&(0,t.jsx)(i.Button,{variant:"secondary",size:"lg",className:(0,n.cn)(r.buttonItem,s?.secondaryButton),onClick:()=>F(x,"secondary"),disabled:!e.availableForSale&&x!=="learnMore",loading:ae,"data-headless-type-name":"ActiveShelf#ProductCard","data-headless-title-desc-button":`${e.custom_name||e.name}#${e.description||""}#${f}`,"data-headless-sku":e.sku,children:f}),y&&(0,t.jsx)(i.Button,{variant:"primary",size:"lg",className:(0,n.cn)(r.buttonItem,s?.primaryButton),onClick:()=>F(S,"primary"),disabled:!e.availableForSale&&S!=="learnMore",loading:ee,"data-headless-type-name":"ActiveShelf#ProductCard","data-headless-title-desc-button":`${e.custom_name||e.name}#${e.description||""}#${y}`,"data-headless-sku":e.sku,children:y})]}),Te(d,c,e?.quantityAvailable??0,e?.totalInventory??0)&&(0,t.jsxs)("div",{className:"active-shelf-stock mt-4 flex flex-col gap-1",children:[(0,t.jsx)(i.Progress,{value:ue,max:100,min:0,size:"base",variant:"default","aria-label":"stock progress",classNames:{root:(0,n.cn)("active-shelf-stock-track","bg-[var(--progress-track-bg,rgba(0,0,0,0.2))]",s?.stockTrack),progressBar:(0,n.cn)("active-shelf-stock-bar","bg-brand-0 transition-all duration-300 ease-in-out",s?.stockBar)}}),(0,t.jsx)(i.Text,{size:3,className:"text-info-tertiary text-[14px]",children:ge?g?.limitedStock:g?.stockDisplayText?.replace("{count}",`${e.availableForSale?e.quantityAvailable:0}`)})]})]})]})]}),I&&P&&(0,t.jsx)(G.MemberLabel,{userType:P,copy:g,images:H,onSignUp:W,onPlusMemberAddCart:X,hasActivity:ce,activityLabel:E,memberDiscountAmount:ne,plusMemberDiscountAmount:oe,layoutMode:L})]})});B.displayName="ActiveShelf.ProductCard";var Ae=B;
@@ -87,6 +87,8 @@ export interface ActiveShelfData {
87
87
  customTagsIcon?: Img;
88
88
  /** 自定义折扣标签图标样式(style1/style2/style3 为内置预设,custom 为自定义上传) */
89
89
  customTagStyle?: DiscountTagStyle;
90
+ /** 左上角折扣标签文字颜色,覆盖默认文字色;未设置时保持原样式 */
91
+ discountTagTextColor?: string;
90
92
  /** PC 端(≥768px)平铺最多展示行数 */
91
93
  tileMaxRowsPc?: number;
92
94
  /** 移动端(<768px)平铺最多展示行数 */
@@ -1 +1 @@
1
- "use strict";"use client";var ke=Object.create;var te=Object.defineProperty;var Se=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var De=Object.getPrototypeOf,Le=Object.prototype.hasOwnProperty;var Ne=(i,o)=>{for(var r in o)te(i,r,{get:o[r],enumerable:!0})},de=(i,o,r,c)=>{if(o&&typeof o=="object"||typeof o=="function")for(let l of Be(o))!Le.call(i,l)&&l!==r&&te(i,l,{get:()=>o[l],enumerable:!(c=Se(o,l))||c.enumerable});return i};var ue=(i,o,r)=>(r=i!=null?ke(De(i)):{},de(o||!i||!i.__esModule?te(r,"default",{value:i,enumerable:!0}):r,i)),Re=i=>de(te({},"__esModule",{value:!0}),i);var Oe={};Ne(Oe,{default:()=>He});module.exports=Re(Oe);var e=require("react/jsx-runtime"),s=ue(require("react")),p=require("../../helpers/index.js"),he=require("../../shared/Styles.js"),n=require("../../components/index.js"),ae=ue(require("../PromotionalBar/index.js")),ie=require("swiper/react"),Te=require("swiper/modules"),$e=require("swiper/css"),je=require("swiper/css/navigation"),oe=require("./ProductCard.js"),be=require("../../hooks/useExposure.js");const Ae="shelf",Ee="active_shelf",Ie=()=>(0,e.jsxs)("span",{className:"lg-desktop:size-14 relative flex size-10 items-center justify-center",children:[(0,e.jsx)("span",{className:"prev-mask bg-masks-0 group-hover/prev-mask:bg-masks-1 absolute inset-0 rounded-full transition-colors"}),(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",className:"lg-desktop:size-6 relative size-5",children:(0,e.jsx)("path",{d:"M15 6L9 12L15 18",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]}),ze=()=>(0,e.jsxs)("span",{className:"lg-desktop:size-14 relative flex size-10 items-center justify-center",children:[(0,e.jsx)("span",{className:"next-mask bg-masks-0 group-hover/next-mask:bg-masks-1 absolute inset-0 rounded-full transition-colors"}),(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",className:"lg-desktop:size-6 relative size-5",children:(0,e.jsx)("path",{d:"M9 6L15 12L9 18",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]});function pe(i){return typeof window>"u"?2:window.matchMedia("(min-width: 1440px)").matches?i==="3"?3:4:window.matchMedia("(min-width: 768px)").matches?3:2}function me(){return typeof window>"u"?!0:!window.matchMedia("(min-width: 768px)").matches}function ge(){return typeof window>"u"?!1:window.matchMedia("(min-width: 1025px)").matches}const re=s.forwardRef(({products:i,layoutMode:o,className:r,copy:c,showTags:l,stockDisplayMode:h,stockThresholdValue:T,onLearnMore:b,onShopNow:d,onAddToCart:w,onProductImageClick:C,classNames:j,secondaryButtonText:W,secondaryButtonFun:f,primaryButtonText:v,primaryButtonFun:x,showOriginalPrice:P,renderOriginalPrice:M,tagTypeConfig:k,fill:S,outline:B,memberPriceTextColor:D,renderDiscountBadge:L,userType:N,memberImages:_,customTagsIcon:R,customTagStyle:A,onMemberSignUp:E,onPlusMemberAddCart:I,tileMaxRowsPc:se,tileMaxRowsMob:q,tileDesktopColumns:u,tileExpandText:Z,tileCollapseText:G,showMemberPrice:z},J)=>{const F=s.useId().replace(/:/g,""),H=`swiper-button-next-custom-${F}`,O=`swiper-button-prev-custom-${F}`,[V,m]=s.useState({isBeginning:!0,isEnd:!1}),K=s.useRef(null),g=s.useCallback(()=>{const t=K.current;if(!t?.slides||t.slides.length===0)return;t.slides.forEach($=>{$.style.height="auto"});const U=Array.from(t.slides).map($=>$.scrollHeight),ce=Math.max(...U);ce>0&&t.slides.forEach($=>{$.style.height=`${ce}px`})},[]);s.useEffect(()=>{const t=()=>{requestAnimationFrame(g)};return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[g]);const[y,a]=s.useState(!1),[Q,X]=s.useState(()=>pe(u)),[we,Ce]=s.useState(()=>me()),[ve,xe]=s.useState(()=>ge());s.useEffect(()=>{const t=()=>{X(pe(u)),Ce(me()),xe(ge())};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[u]);const Y=o==="horizontal"&&!ve?"flex":o,ee=we?q:se,ne=Y==="flex"&&!!ee&&ee>0,le=ee?ee*Q:i.length,Pe=ne&&i.length>le,Me=ne&&!y?i.slice(0,le):i;return i?.length===0?null:(0,e.jsx)("div",{ref:J,className:r,children:Y==="flex"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:(0,p.cn)("tablet:grid-cols-3 tablet:gap-4 grid grid-cols-2 justify-start gap-3",u==="3"?"desktop:grid-cols-3 lg-desktop:grid-cols-3":"desktop:grid-cols-4 lg-desktop:grid-cols-4"),children:Me.map((t,U)=>(0,e.jsx)(oe.ProductCard,{product:t,layoutMode:Y,className:"shrink-0",showTags:l,stockDisplayMode:h,stockThresholdValue:T,onLearnMore:b,onShopNow:d,onAddToCart:w,onProductImageClick:C,classNames:j,secondaryButtonText:W,secondaryButtonFun:f,primaryButtonText:v,primaryButtonFun:x,showOriginalPrice:P,renderOriginalPrice:M,renderDiscountBadge:L,tagTypeConfig:k,fill:S,outline:B,memberPriceTextColor:D,copy:c,userType:N,memberImages:_,customTagsIcon:R,customTagStyle:A,onMemberSignUp:E,onPlusMemberAddCart:I,showMemberPrice:z},t.shopify_id+"-"+t.sku||U))}),Pe&&(0,e.jsxs)("div",{className:"laptop:hover:text-brand-0 text-info-primary mt-6 flex items-center justify-center",children:[(0,e.jsx)("button",{className:"laptop:text-base text-sm font-bold",onClick:()=>a(t=>!t),children:y?G??"Show less":Z??"Show more"}),(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:(0,p.cn)("laptop:size-5 size-4",y&&"rotate-180"),width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",children:(0,e.jsx)("path",{d:"M17.2929 8.29302C17.6834 7.90249 18.3164 7.90249 18.707 8.29302C19.0975 8.68354 19.0975 9.31655 18.707 9.70708L12.707 15.7071C12.3164 16.0976 11.6834 16.0976 11.2929 15.7071L5.29289 9.70708C4.90237 9.31655 4.90237 8.68354 5.29289 8.29302C5.68342 7.90249 6.31643 7.90249 6.70696 8.29302L11.9999 13.586L17.2929 8.29302Z",fill:"currentColor"})})]})]}):(0,e.jsxs)("div",{className:"group relative",children:[(0,e.jsx)(ie.Swiper,{modules:[Te.Navigation],spaceBetween:16,navigation:{nextEl:`.${H}`,prevEl:`.${O}`},onSwiper:t=>{K.current=t,m({isBeginning:t.isBeginning,isEnd:t.isEnd}),setTimeout(g,100)},slidesPerView:3,breakpoints:{1025:{freeMode:!1,slidesPerView:3},1440:{freeMode:!1,slidesPerView:u==="3"?3:4}},onReachEnd:()=>{m(t=>({...t,isEnd:!0}))},onReachBeginning:()=>{m(t=>({...t,isBeginning:!0}))},onFromEdge:()=>{m({isBeginning:!1,isEnd:!1})},className:"!overflow-visible [&_.swiper-wrapper]:items-start",children:i.map((t,U)=>(0,e.jsx)(ie.SwiperSlide,{className:"overflow-hidden",children:(0,e.jsx)(oe.ProductCard,{product:t,layoutMode:Y,className:"w-full max-w-full",showTags:l,stockDisplayMode:h,stockThresholdValue:T,onLearnMore:b,onShopNow:d,onAddToCart:w,onProductImageClick:C,classNames:j,secondaryButtonText:W,secondaryButtonFun:f,primaryButtonText:v,primaryButtonFun:x,showOriginalPrice:P,renderOriginalPrice:M,renderDiscountBadge:L,tagTypeConfig:k,fill:S,outline:B,memberPriceTextColor:D,copy:c,userType:N,memberImages:_,customTagsIcon:R,customTagStyle:A,onMemberSignUp:E,onPlusMemberAddCart:I,showMemberPrice:z})},t.shopify_id+"-"+t.sku||U))}),(0,e.jsx)("button",{className:`${O} tablet:block group/prev-mask absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 ${V.isBeginning?"pointer-events-none opacity-0":"opacity-100"}`,"aria-label":c?.previousSlideLabel,children:(0,e.jsx)(Ie,{})}),(0,e.jsx)("button",{className:`${H} tablet:block group/next-mask absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 ${V.isEnd?"pointer-events-none opacity-0":"opacity-100"}`,"aria-label":c?.nextSlideLabel,children:(0,e.jsx)(ze,{})})]})})});re.displayName="ProductsList";const fe=s.forwardRef(({className:i,data:o,onLearnMore:r,onShopNow:c,onAddToCart:l,onProductImageClick:h,onMemberSignUp:T,onPlusMemberAddCart:b,classNames:d,renderOriginalPrice:w,renderDiscountBadge:C,...j},W)=>{const f=s.useRef(null);(0,be.useExposure)(f,{componentType:Ae,componentName:Ee,componentTitle:o.title,componentDescription:o.description}),s.useImperativeHandle(W,()=>f.current);const{theme:v="light",layoutMode:x="flex",showTags:P=!0,stockDisplayMode:M,stockThresholdValue:k,showOriginalPrice:S,secondaryButtonText:B,primaryButtonText:D,secondaryButtonFun:L,primaryButtonFun:N,isShowTab:_=!0,tagTypeConfig:R,fill:A,outline:E,memberPriceTextColor:I,copy:se,userType:q,memberImages:u,customTagsIcon:Z,customTagStyle:G,showMemberPrice:z,tileMaxRowsPc:J,tileMaxRowsMob:F,tileDesktopColumns:H,tileExpandText:O,tileCollapseText:V}=o,m=se||{},K=o.productsTab&&o.productsTab.length>0,g=_&&K,y=g?void 0:o.resourceBlocks?.find(a=>a.blockType==="PromotionalBar"&&a.display==="visible");return(0,e.jsxs)("div",{ref:f,className:(0,p.cn)("w-full",{"aiui-dark":v==="dark"},i,d?.root),style:{"--progress-track-bg":v==="dark"?"rgba(255, 255, 255, 0.2)":"rgba(0, 0, 0, 0.2)"},...j,children:[o.title&&(0,e.jsx)(n.Heading,{as:"h2",html:o.title,size:4,className:(0,p.cn)("text-info-primary mb-4 leading-tight",d?.title)}),o.description&&(0,e.jsx)(n.Text,{size:3,as:"p",html:o.description,className:(0,p.cn)("text-info-primary mb-6",d?.description)}),(0,e.jsxs)(n.Tabs,{defaultValue:o.productsTab?.[0]?.id,className:"w-full",children:[g&&(0,e.jsx)(n.TabsList,{className:"mb-6",children:o.productsTab?.map(a=>(0,e.jsx)(n.TabsTrigger,{value:a.id,children:a.tab},"tab-"+a.id))}),g?o.productsTab?.map(a=>{const Q=a.resourceBlocks?.find(X=>X.blockType==="PromotionalBar"&&X.display==="visible");return(0,e.jsxs)(n.TabsContent,{value:a.id,children:[Q&&(0,e.jsx)(ae.default,{data:Q,className:(0,p.cn)("laptop:mb-4 mb-3",d?.promotionalBar)}),(0,e.jsx)(re,{products:a.data,layoutMode:x,copy:m,showTags:P,stockDisplayMode:M,stockThresholdValue:k,onLearnMore:r,onShopNow:c,onAddToCart:l,onProductImageClick:h,classNames:d,secondaryButtonText:B,secondaryButtonFun:L,primaryButtonText:D,primaryButtonFun:N,showOriginalPrice:S,renderOriginalPrice:w,renderDiscountBadge:C,tagTypeConfig:R,fill:A,outline:E,memberPriceTextColor:I,userType:q,memberImages:u,customTagsIcon:Z,customTagStyle:G,onMemberSignUp:T,onPlusMemberAddCart:b,showMemberPrice:z,tileMaxRowsPc:J,tileMaxRowsMob:F,tileDesktopColumns:H,tileExpandText:O,tileCollapseText:V})]},"tab-content-"+a.id)}):(0,e.jsxs)(e.Fragment,{children:[y&&(0,e.jsx)(ae.default,{data:y,className:(0,p.cn)("laptop:mb-4 mb-3",d?.promotionalBar)}),(0,e.jsx)(re,{products:o.productsCard,layoutMode:x,copy:m,showTags:P,stockDisplayMode:M,stockThresholdValue:k,onLearnMore:r,onShopNow:c,onAddToCart:l,onProductImageClick:h,classNames:d,secondaryButtonText:B,secondaryButtonFun:L,primaryButtonText:D,primaryButtonFun:N,showOriginalPrice:S,renderOriginalPrice:w,renderDiscountBadge:C,tagTypeConfig:R,fill:A,outline:E,memberPriceTextColor:I,userType:q,memberImages:u,customTagsIcon:Z,customTagStyle:G,onMemberSignUp:T,onPlusMemberAddCart:b,showMemberPrice:z,tileMaxRowsPc:J,tileMaxRowsMob:F,tileDesktopColumns:H,tileExpandText:O,tileCollapseText:V})]})]})]})});fe.displayName="ActiveShelf";const ye=fe;ye.ProductCard=oe.ProductCard;const Fe=(0,he.withLayout)(ye);var He=Fe;
1
+ "use strict";"use client";var Se=Object.create;var ie=Object.defineProperty;var Be=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var Re=(i,o)=>{for(var r in o)ie(i,r,{get:o[r],enumerable:!0})},ue=(i,o,r,c)=>{if(o&&typeof o=="object"||typeof o=="function")for(let l of De(o))!Ne.call(i,l)&&l!==r&&ie(i,l,{get:()=>o[l],enumerable:!(c=Be(o,l))||c.enumerable});return i};var pe=(i,o,r)=>(r=i!=null?Se(Le(i)):{},ue(o||!i||!i.__esModule?ie(r,"default",{value:i,enumerable:!0}):r,i)),Ae=i=>ue(ie({},"__esModule",{value:!0}),i);var Ve={};Re(Ve,{default:()=>Oe});module.exports=Ae(Ve);var e=require("react/jsx-runtime"),s=pe(require("react")),p=require("../../helpers/index.js"),he=require("../../shared/Styles.js"),n=require("../../components/index.js"),ne=pe(require("../PromotionalBar/index.js")),re=require("swiper/react"),be=require("swiper/modules"),je=require("swiper/css"),We=require("swiper/css/navigation"),se=require("./ProductCard.js"),we=require("../../hooks/useExposure.js");const Ee="shelf",Ie="active_shelf",ze=()=>(0,e.jsxs)("span",{className:"lg-desktop:size-14 relative flex size-10 items-center justify-center",children:[(0,e.jsx)("span",{className:"prev-mask bg-masks-0 group-hover/prev-mask:bg-masks-1 absolute inset-0 rounded-full transition-colors"}),(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",className:"lg-desktop:size-6 relative size-5",children:(0,e.jsx)("path",{d:"M15 6L9 12L15 18",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]}),Fe=()=>(0,e.jsxs)("span",{className:"lg-desktop:size-14 relative flex size-10 items-center justify-center",children:[(0,e.jsx)("span",{className:"next-mask bg-masks-0 group-hover/next-mask:bg-masks-1 absolute inset-0 rounded-full transition-colors"}),(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",className:"lg-desktop:size-6 relative size-5",children:(0,e.jsx)("path",{d:"M9 6L15 12L9 18",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]});function me(i){return typeof window>"u"?2:window.matchMedia("(min-width: 1440px)").matches?i==="3"?3:4:window.matchMedia("(min-width: 768px)").matches?3:2}function ge(){return typeof window>"u"?!0:!window.matchMedia("(min-width: 768px)").matches}function fe(){return typeof window>"u"?!1:window.matchMedia("(min-width: 1025px)").matches}const ae=s.forwardRef(({products:i,layoutMode:o,className:r,copy:c,showTags:l,stockDisplayMode:y,stockThresholdValue:h,onLearnMore:b,onShopNow:d,onAddToCart:w,onProductImageClick:C,classNames:j,secondaryButtonText:W,secondaryButtonFun:f,primaryButtonText:x,primaryButtonFun:v,showOriginalPrice:P,renderOriginalPrice:M,tagTypeConfig:k,fill:S,outline:B,memberPriceTextColor:D,renderDiscountBadge:L,userType:N,memberImages:_,customTagsIcon:R,customTagStyle:A,discountTagTextColor:E,onMemberSignUp:I,onPlusMemberAddCart:q,tileMaxRowsPc:Z,tileMaxRowsMob:G,tileDesktopColumns:u,tileExpandText:J,tileCollapseText:K,showMemberPrice:z},Q)=>{const F=s.useId().replace(/:/g,""),H=`swiper-button-next-custom-${F}`,O=`swiper-button-prev-custom-${F}`,[V,m]=s.useState({isBeginning:!0,isEnd:!1}),X=s.useRef(null),g=s.useCallback(()=>{const t=X.current;if(!t?.slides||t.slides.length===0)return;t.slides.forEach($=>{$.style.height="auto"});const U=Array.from(t.slides).map($=>$.scrollHeight),de=Math.max(...U);de>0&&t.slides.forEach($=>{$.style.height=`${de}px`})},[]);s.useEffect(()=>{const t=()=>{requestAnimationFrame(g)};return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[g]);const[T,a]=s.useState(!1),[Y,ee]=s.useState(()=>me(u)),[Ce,xe]=s.useState(()=>ge()),[ve,Pe]=s.useState(()=>fe());s.useEffect(()=>{const t=()=>{ee(me(u)),xe(ge()),Pe(fe())};return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[u]);const te=o==="horizontal"&&!ve?"flex":o,oe=Ce?G:Z,le=te==="flex"&&!!oe&&oe>0,ce=oe?oe*Y:i.length,Me=le&&i.length>ce,ke=le&&!T?i.slice(0,ce):i;return i?.length===0?null:(0,e.jsx)("div",{ref:Q,className:r,children:te==="flex"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:(0,p.cn)("tablet:grid-cols-3 tablet:gap-4 grid grid-cols-2 justify-start gap-3",u==="3"?"desktop:grid-cols-3 lg-desktop:grid-cols-3":"desktop:grid-cols-4 lg-desktop:grid-cols-4"),children:ke.map((t,U)=>(0,e.jsx)(se.ProductCard,{product:t,layoutMode:te,className:"shrink-0",showTags:l,stockDisplayMode:y,stockThresholdValue:h,onLearnMore:b,onShopNow:d,onAddToCart:w,onProductImageClick:C,classNames:j,secondaryButtonText:W,secondaryButtonFun:f,primaryButtonText:x,primaryButtonFun:v,showOriginalPrice:P,renderOriginalPrice:M,renderDiscountBadge:L,tagTypeConfig:k,fill:S,outline:B,memberPriceTextColor:D,copy:c,userType:N,memberImages:_,customTagsIcon:R,customTagStyle:A,discountTagTextColor:E,onMemberSignUp:I,onPlusMemberAddCart:q,showMemberPrice:z},t.shopify_id+"-"+t.sku||U))}),Me&&(0,e.jsxs)("div",{className:"active-shelf-toggle laptop:hover:text-brand-0 text-info-primary mt-6 flex items-center justify-center",children:[(0,e.jsx)("button",{className:"laptop:text-base text-sm font-bold",onClick:()=>a(t=>!t),children:T?K??"Show less":J??"Show more"}),(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:(0,p.cn)("laptop:size-5 size-4",T&&"rotate-180"),width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",children:(0,e.jsx)("path",{d:"M17.2929 8.29302C17.6834 7.90249 18.3164 7.90249 18.707 8.29302C19.0975 8.68354 19.0975 9.31655 18.707 9.70708L12.707 15.7071C12.3164 16.0976 11.6834 16.0976 11.2929 15.7071L5.29289 9.70708C4.90237 9.31655 4.90237 8.68354 5.29289 8.29302C5.68342 7.90249 6.31643 7.90249 6.70696 8.29302L11.9999 13.586L17.2929 8.29302Z",fill:"currentColor"})})]})]}):(0,e.jsxs)("div",{className:"group relative",children:[(0,e.jsx)(re.Swiper,{modules:[be.Navigation],spaceBetween:16,navigation:{nextEl:`.${H}`,prevEl:`.${O}`},onSwiper:t=>{X.current=t,m({isBeginning:t.isBeginning,isEnd:t.isEnd}),setTimeout(g,100)},slidesPerView:3,breakpoints:{1025:{freeMode:!1,slidesPerView:3},1440:{freeMode:!1,slidesPerView:u==="3"?3:4}},onReachEnd:()=>{m(t=>({...t,isEnd:!0}))},onReachBeginning:()=>{m(t=>({...t,isBeginning:!0}))},onFromEdge:()=>{m({isBeginning:!1,isEnd:!1})},className:"!overflow-visible [&_.swiper-wrapper]:items-start",children:i.map((t,U)=>(0,e.jsx)(re.SwiperSlide,{className:"overflow-hidden",children:(0,e.jsx)(se.ProductCard,{product:t,layoutMode:te,className:"w-full max-w-full",showTags:l,stockDisplayMode:y,stockThresholdValue:h,onLearnMore:b,onShopNow:d,onAddToCart:w,onProductImageClick:C,classNames:j,secondaryButtonText:W,secondaryButtonFun:f,primaryButtonText:x,primaryButtonFun:v,showOriginalPrice:P,renderOriginalPrice:M,renderDiscountBadge:L,tagTypeConfig:k,fill:S,outline:B,memberPriceTextColor:D,copy:c,userType:N,memberImages:_,customTagsIcon:R,customTagStyle:A,discountTagTextColor:E,onMemberSignUp:I,onPlusMemberAddCart:q,showMemberPrice:z})},t.shopify_id+"-"+t.sku||U))}),(0,e.jsx)("button",{className:`${O} tablet:block group/prev-mask absolute left-4 top-1/2 z-10 hidden -translate-y-1/2 ${V.isBeginning?"pointer-events-none opacity-0":"opacity-100"}`,"aria-label":c?.previousSlideLabel,children:(0,e.jsx)(ze,{})}),(0,e.jsx)("button",{className:`${H} tablet:block group/next-mask absolute right-4 top-1/2 z-10 hidden -translate-y-1/2 ${V.isEnd?"pointer-events-none opacity-0":"opacity-100"}`,"aria-label":c?.nextSlideLabel,children:(0,e.jsx)(Fe,{})})]})})});ae.displayName="ProductsList";const Te=s.forwardRef(({className:i,data:o,onLearnMore:r,onShopNow:c,onAddToCart:l,onProductImageClick:y,onMemberSignUp:h,onPlusMemberAddCart:b,classNames:d,renderOriginalPrice:w,renderDiscountBadge:C,...j},W)=>{const f=s.useRef(null);(0,we.useExposure)(f,{componentType:Ee,componentName:Ie,componentTitle:o.title,componentDescription:o.description}),s.useImperativeHandle(W,()=>f.current);const{theme:x="light",layoutMode:v="flex",showTags:P=!0,stockDisplayMode:M,stockThresholdValue:k,showOriginalPrice:S,secondaryButtonText:B,primaryButtonText:D,secondaryButtonFun:L,primaryButtonFun:N,isShowTab:_=!0,tagTypeConfig:R,fill:A,outline:E,memberPriceTextColor:I,copy:q,userType:Z,memberImages:G,customTagsIcon:u,customTagStyle:J,discountTagTextColor:K,showMemberPrice:z,tileMaxRowsPc:Q,tileMaxRowsMob:F,tileDesktopColumns:H,tileExpandText:O,tileCollapseText:V}=o,m=q||{},X=o.productsTab&&o.productsTab.length>0,g=_&&X,T=g?void 0:o.resourceBlocks?.find(a=>a.blockType==="PromotionalBar"&&a.display==="visible");return(0,e.jsxs)("div",{ref:f,className:(0,p.cn)("w-full",{"aiui-dark":x==="dark"},i,d?.root),style:{"--progress-track-bg":x==="dark"?"rgba(255, 255, 255, 0.2)":"rgba(0, 0, 0, 0.2)"},...j,children:[o.title&&(0,e.jsx)(n.Heading,{as:"h2",html:o.title,size:4,className:(0,p.cn)("text-info-primary mb-4 leading-tight",d?.title)}),o.description&&(0,e.jsx)(n.Text,{size:3,as:"p",html:o.description,className:(0,p.cn)("text-info-primary mb-6",d?.description)}),(0,e.jsxs)(n.Tabs,{defaultValue:o.productsTab?.[0]?.id,className:"w-full",children:[g&&(0,e.jsx)(n.TabsList,{className:"mb-6",children:o.productsTab?.map(a=>(0,e.jsx)(n.TabsTrigger,{value:a.id,children:a.tab},"tab-"+a.id))}),g?o.productsTab?.map(a=>{const Y=a.resourceBlocks?.find(ee=>ee.blockType==="PromotionalBar"&&ee.display==="visible");return(0,e.jsxs)(n.TabsContent,{value:a.id,children:[Y&&(0,e.jsx)(ne.default,{data:Y,className:(0,p.cn)("laptop:mb-4 mb-3",d?.promotionalBar)}),(0,e.jsx)(ae,{products:a.data,layoutMode:v,copy:m,showTags:P,stockDisplayMode:M,stockThresholdValue:k,onLearnMore:r,onShopNow:c,onAddToCart:l,onProductImageClick:y,classNames:d,secondaryButtonText:B,secondaryButtonFun:L,primaryButtonText:D,primaryButtonFun:N,showOriginalPrice:S,renderOriginalPrice:w,renderDiscountBadge:C,tagTypeConfig:R,fill:A,outline:E,memberPriceTextColor:I,userType:Z,memberImages:G,customTagsIcon:u,customTagStyle:J,discountTagTextColor:K,onMemberSignUp:h,onPlusMemberAddCart:b,showMemberPrice:z,tileMaxRowsPc:Q,tileMaxRowsMob:F,tileDesktopColumns:H,tileExpandText:O,tileCollapseText:V})]},"tab-content-"+a.id)}):(0,e.jsxs)(e.Fragment,{children:[T&&(0,e.jsx)(ne.default,{data:T,className:(0,p.cn)("laptop:mb-4 mb-3",d?.promotionalBar)}),(0,e.jsx)(ae,{products:o.productsCard,layoutMode:v,copy:m,showTags:P,stockDisplayMode:M,stockThresholdValue:k,onLearnMore:r,onShopNow:c,onAddToCart:l,onProductImageClick:y,classNames:d,secondaryButtonText:B,secondaryButtonFun:L,primaryButtonText:D,primaryButtonFun:N,showOriginalPrice:S,renderOriginalPrice:w,renderDiscountBadge:C,tagTypeConfig:R,fill:A,outline:E,memberPriceTextColor:I,userType:Z,memberImages:G,customTagsIcon:u,customTagStyle:J,discountTagTextColor:K,onMemberSignUp:h,onPlusMemberAddCart:b,showMemberPrice:z,tileMaxRowsPc:Q,tileMaxRowsMob:F,tileDesktopColumns:H,tileExpandText:O,tileCollapseText:V})]})]})]})});Te.displayName="ActiveShelf";const ye=Te;ye.ProductCard=se.ProductCard;const He=(0,he.withLayout)(ye);var Oe=He;
@@ -1 +1 @@
1
- "use strict";var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var i=(e,t)=>{for(var o in t)l(e,o,{get:t[o],enumerable:!0})},n=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of s(t))!d.call(e,p)&&p!==o&&l(e,p,{get:()=>t[p],enumerable:!(a=x(t,p))||a.enumerable});return e};var g=e=>n(l({},"__esModule",{value:!0}),e);var c={};i(c,{layoutModeStyles:()=>r});module.exports=g(c);const r={flex:{cardContent:"px-2 pb-4 pt-6 laptop:px-4 desktop:p-6 laptop:pt-6 desktop:pt-8 lg-desktop:pt-10",image:"size-[125px] laptop:size-[180px] lg-desktop:size-[240px]",imageOffset:"laptop:-top-6 desktop:-top-8 lg-desktop:-top-10 -left-2 -right-2 laptop:-left-4 laptop:-right-4 desktop:-left-6 desktop:-right-6",title:"text-[14px] leading-tight laptop:mb-1 laptop:text-[20px] lg-desktop:text-[24px] line-clamp-3 laptop:line-clamp-2",description:"hidden text-[14px] desktop:text-[16px] lg-desktop:text-[18px] laptop:block laptop:line-clamp-2 leading-normal",price:"text-[14px] leading-tight laptop:text-[20px] lg-desktop:text-[24px]",priceLabel:"text-[12px] laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]",cardRadius:"rounded-box-small tablet:rounded-box",priceGap:"gap-[2px] laptop:gap-1",discountBadgeSize:"size-12 laptop:size-20 lg-desktop:size-24",discountBadgeText:"text-xs laptop:text-base lg-desktop:text-xl pl-2 pt-1 laptop:pl-4 laptop:pt-2",discountBadgeTextStyle2:"text-xs laptop:text-base lg-desktop:text-xl pt-2 desktop:pt-4",discountBadgeTextStyle3:"text-xs laptop:text-base lg-desktop:text-xl flex items-center pl-1 laptop:pl-2",discountBadgeTextCenter:"text-xs laptop:text-base lg-desktop:text-xl flex items-center justify-center",buttonContainer:"flex-wrap gap-2 laptop:flex-nowrap lg-desktop:gap-3",buttonItem:"w-full whitespace-nowrap laptop:w-fit laptop:min-w-0 laptop:whitespace-normal laptop:text-center",memberLabelContainer:"p-2 laptop:px-4 laptop:py-3 desktop:pl-6 desktop:py-4 desktop:pr-12 lg-desktop:pr-16",memberLabelText:"text-xs laptop:text-sm desktop:text-base lg-desktop:text-[18px]"},horizontal:{cardContent:"p-4 desktop:p-6 laptop:pt-6 desktop:pt-8 lg-desktop:pt-10",image:"size-[180px] lg-desktop:size-[240px]",imageOffset:"-top-4 -left-4 -right-4 laptop:-top-6 desktop:-top-8 lg-desktop:-top-10 desktop:-left-6 desktop:-right-6",title:"mb-1 text-[20px] leading-[120%] lg-desktop:text-[24px] line-clamp-2",description:"text-[14px] desktop:text-[16px] lg-desktop:text-[18px] line-clamp-2 leading-normal",price:"text-[20px] leading-[120%] lg-desktop:text-[24px]",priceLabel:"text-[14px] leading-[140%] desktop:text-[16px] lg-desktop:text-[18px]",cardRadius:"rounded-box",priceGap:"gap-1",discountBadgeSize:"size-20 lg-desktop:size-24",discountBadgeText:"text-base lg-desktop:text-xl pt-2 pl-4",discountBadgeTextStyle2:"text-base lg-desktop:text-xl pt-2 desktop:pt-4",discountBadgeTextStyle3:"text-base lg-desktop:text-xl flex items-center pl-1 laptop:pl-2",discountBadgeTextCenter:"text-base lg-desktop:text-xl flex items-center justify-center",buttonContainer:"gap-2 lg-desktop:gap-3",buttonItem:"w-full whitespace-nowrap tablet:w-fit tablet:min-w-0 tablet:whitespace-normal tablet:text-center",memberLabelContainer:"px-4 py-3 desktop:pl-6 desktop:py-4 desktop:pr-12 lg-desktop:pr-16",memberLabelText:"text-xs laptop:text-sm desktop:text-base lg-desktop:text-[18px]"}};
1
+ "use strict";var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var i=(e,t)=>{for(var o in t)l(e,o,{get:t[o],enumerable:!0})},n=(e,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of s(t))!d.call(e,p)&&p!==o&&l(e,p,{get:()=>t[p],enumerable:!(a=x(t,p))||a.enumerable});return e};var g=e=>n(l({},"__esModule",{value:!0}),e);var c={};i(c,{layoutModeStyles:()=>r});module.exports=g(c);const r={flex:{cardContent:"px-2 pb-4 pt-6 laptop:px-4 desktop:p-6 laptop:pt-6 desktop:pt-8 lg-desktop:pt-10",image:"size-[125px] laptop:size-[180px] lg-desktop:size-[240px]",imageOffset:"-top-6 desktop:-top-8 lg-desktop:-top-10 -left-2 -right-2 laptop:-left-4 laptop:-right-4 desktop:-left-6 desktop:-right-6",title:"text-[14px] leading-tight laptop:mb-1 laptop:text-[20px] lg-desktop:text-[24px] line-clamp-3 laptop:line-clamp-2",description:"hidden text-[14px] desktop:text-[16px] lg-desktop:text-[18px] laptop:block laptop:line-clamp-2 leading-normal",price:"text-[14px] leading-tight laptop:text-[20px] lg-desktop:text-[24px]",priceLabel:"text-[12px] laptop:text-[14px] desktop:text-[16px] lg-desktop:text-[18px]",cardRadius:"rounded-box-small tablet:rounded-box",priceGap:"gap-[2px] laptop:gap-1",discountBadgeSize:"size-12 laptop:size-20 lg-desktop:size-24",discountBadgeText:"text-xs laptop:text-base lg-desktop:text-xl pl-2 pt-1 laptop:pl-4 laptop:pt-2",discountBadgeTextStyle2:"text-xs laptop:text-base lg-desktop:text-xl pt-2 desktop:pt-4",discountBadgeTextStyle3:"text-xs laptop:text-base lg-desktop:text-xl flex items-center pl-1 laptop:pl-2",discountBadgeTextCenter:"text-xs laptop:text-base lg-desktop:text-xl flex items-center justify-center",buttonContainer:"flex-wrap gap-2 laptop:flex-nowrap lg-desktop:gap-3",buttonItem:"w-full whitespace-nowrap laptop:w-fit laptop:min-w-0 laptop:whitespace-normal laptop:text-center",memberLabelContainer:"p-2 laptop:px-4 laptop:py-3 desktop:pl-6 desktop:py-4 desktop:pr-12 lg-desktop:pr-16",memberLabelText:"text-xs laptop:text-sm desktop:text-base lg-desktop:text-[18px]"},horizontal:{cardContent:"p-4 desktop:p-6 laptop:pt-6 desktop:pt-8 lg-desktop:pt-10",image:"size-[180px] lg-desktop:size-[240px]",imageOffset:"-top-4 -left-4 -right-4 laptop:-top-6 desktop:-top-8 lg-desktop:-top-10 desktop:-left-6 desktop:-right-6",title:"mb-1 text-[20px] leading-[120%] lg-desktop:text-[24px] line-clamp-2",description:"text-[14px] desktop:text-[16px] lg-desktop:text-[18px] line-clamp-2 leading-normal",price:"text-[20px] leading-[120%] lg-desktop:text-[24px]",priceLabel:"text-[14px] leading-[140%] desktop:text-[16px] lg-desktop:text-[18px]",cardRadius:"rounded-box",priceGap:"gap-1",discountBadgeSize:"size-20 lg-desktop:size-24",discountBadgeText:"text-base lg-desktop:text-xl pt-2 pl-4",discountBadgeTextStyle2:"text-base lg-desktop:text-xl pt-2 desktop:pt-4",discountBadgeTextStyle3:"text-base lg-desktop:text-xl flex items-center pl-1 laptop:pl-2",discountBadgeTextCenter:"text-base lg-desktop:text-xl flex items-center justify-center",buttonContainer:"gap-2 lg-desktop:gap-3",buttonItem:"w-full whitespace-nowrap tablet:w-fit tablet:min-w-0 tablet:whitespace-normal tablet:text-center",memberLabelContainer:"px-4 py-3 desktop:pl-6 desktop:py-4 desktop:pr-12 lg-desktop:pr-16",memberLabelText:"text-xs laptop:text-sm desktop:text-base lg-desktop:text-[18px]"}};
@@ -1 +1 @@
1
- "use strict";"use client";var C=Object.create;var p=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var B=(e,t)=>{for(var a in t)p(e,a,{get:t[a],enumerable:!0})},g=(e,t,a,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of V(t))!I.call(e,s)&&s!==a&&p(e,s,{get:()=>t[s],enumerable:!(c=P(t,s))||c.enumerable});return e};var L=(e,t,a)=>(a=e!=null?C(z(e)):{},g(t||!e||!e.__esModule?p(a,"default",{value:e,enumerable:!0}):a,e)),E=e=>g(p({},"__esModule",{value:!0}),e);var R={};B(R,{default:()=>M});module.exports=E(R);var i=require("react/jsx-runtime"),v=L(require("react")),d=require("../../helpers/index.js"),l=require("../../components/index.js"),f=require("class-variance-authority"),h=require("swiper/react"),y=require("../../shared/Styles.js");const j=(0,f.cva)("rounded-card laptop:px-6 laptop:py-4 relative flex min-w-0 flex-col justify-between gap-2 overflow-hidden px-4 py-3",{variants:{state:{"active-light":"bg-gradient-to-r from-[#3555aa] to-[#6988e3]","active-dark":"bg-gradient-to-r from-[#3555aa] to-[#6988e3]","inactive-light":"bg-[#EAEAEC]","inactive-dark":"bg-[#1E2024]"},size:{small:"laptop:h-[160px] h-[120px]",large:"laptop:h-[240px] h-[200px]"}},defaultVariants:{state:"inactive-light",size:"small"}}),m=(0,f.cva)("font-bold leading-[1.2]",{variants:{state:{"active-light":"text-white","active-dark":"text-white","inactive-light":"text-[#080A0F]","inactive-dark":"text-white"}},defaultVariants:{state:"inactive-light"}}),w=v.memo(({item:e,theme:t="light",className:a,size:c})=>{const s=e.isActive||!1,o=`${s?"active":"inactive"}-${t}`;return(0,i.jsx)("div",{className:(0,d.cn)(j({state:o,size:c}),a),"data-ui-component-id":"ActivityScheduleCard",children:(0,i.jsxs)(l.Link,{asChild:!e?.link,href:e?.link,className:"size-full no-underline hover:text-current",children:[(s?e.activeIcon:e.inactiveIcon)&&(0,i.jsx)("div",{className:"laptop:w-[160px] aspect-1 absolute right-0 top-0 z-10 w-[120px]",children:(0,i.jsx)(l.Picture,{source:s?e.activeIcon.url:e.inactiveIcon.url,alt:s?e.activeIcon.alt:e.inactiveIcon.alt,className:"aspect-square"})}),(0,i.jsxs)("div",{className:"relative z-20 flex h-full flex-col justify-between",children:[(0,i.jsx)(l.Heading,{as:"h3",size:3,html:e.title,className:(0,d.cn)(m({state:o}))}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("div",{className:"flex flex-col justify-end overflow-hidden",children:(0,i.jsx)(l.Heading,{as:"h4",size:2,html:e.subtitle,className:(0,d.cn)(" line-clamp-2",m({state:o}))})}),c==="large"&&e.description&&(0,i.jsx)(l.Text,{html:e.description,className:(0,d.cn)("lg-desktop:text-[18px] desktop:text-[16px] line-clamp-3 text-[14px] leading-[1.4]",m({state:o}))})]})]})]})})});w.displayName="ActivityScheduleCard";const x=v.forwardRef(({classNames:e={},data:t,...a},c)=>{const s=t.theme||"light",o=t.size||"large",r=v.useMemo(()=>t?.scheduleList?.length||2,[t?.scheduleList]),k=v.useMemo(()=>{const n=N=>{switch(N){case"mobile":return{slidesPerView:1.17,spaceBetween:12};case"tablet":return r===2?{slidesPerView:2,spaceBetween:12}:{slidesPerView:2.4,spaceBetween:12};case"laptop":return r===2?{}:r===4?{slidesPerView:3.2,spaceBetween:16}:{slidesPerView:r,spaceBetween:16};case"desktop":return r===2?{slidesPerView:2,spaceBetween:16}:{slidesPerView:r,spaceBetween:16}}},u=n("mobile"),S=n("tablet"),b=n("laptop"),A=n("desktop");return{0:u,768:S,1024:b,1440:A}},[r]);return(0,i.jsx)(l.Container,{ref:c,className:(0,d.cn)(e?.root),childClassName:"overflow-hidden","data-ui-component-id":"ActivitySchedule",...a,children:(0,i.jsx)(h.Swiper,{breakpoints:k,className:"w-full !overflow-visible",children:t.scheduleList.map((n,u)=>(0,i.jsx)(h.SwiperSlide,{children:(0,i.jsx)(w,{item:n,theme:s,size:o,className:e?.card})},"activityScheduleCardItem"+u))})})});x.displayName="ActivitySchedule";var M=(0,y.withLayout)(x);
1
+ "use strict";"use client";var C=Object.create;var p=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var B=(e,t)=>{for(var a in t)p(e,a,{get:t[a],enumerable:!0})},g=(e,t,a,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of V(t))!I.call(e,s)&&s!==a&&p(e,s,{get:()=>t[s],enumerable:!(c=P(t,s))||c.enumerable});return e};var L=(e,t,a)=>(a=e!=null?C(z(e)):{},g(t||!e||!e.__esModule?p(a,"default",{value:e,enumerable:!0}):a,e)),E=e=>g(p({},"__esModule",{value:!0}),e);var R={};B(R,{default:()=>M});module.exports=E(R);var i=require("react/jsx-runtime"),v=L(require("react")),d=require("../../helpers/index.js"),l=require("../../components/index.js"),f=require("class-variance-authority"),h=require("swiper/react"),y=require("../../shared/Styles.js");const j=(0,f.cva)("rounded-card laptop:px-6 laptop:py-4 relative flex min-w-0 flex-col justify-between gap-2 overflow-hidden px-4 py-3",{variants:{state:{"active-light":"bg-gradient-to-r from-[#3555aa] to-[#6988e3]","active-dark":"bg-gradient-to-r from-[#3555aa] to-[#6988e3]","inactive-light":"bg-[#EAEAEC]","inactive-dark":"bg-[#1E2024]"},size:{small:"laptop:h-[160px] h-[120px]",large:"laptop:h-[240px] h-[200px]"}},defaultVariants:{state:"inactive-light",size:"small"}}),m=(0,f.cva)("font-bold leading-[1.2]",{variants:{state:{"active-light":"text-white","active-dark":"text-white","inactive-light":"text-[#080A0F]","inactive-dark":"text-white"}},defaultVariants:{state:"inactive-light"}}),w=v.memo(({item:e,theme:t="light",className:a,size:c})=>{const s=e.isActive||!1,o=`${s?"active":"inactive"}-${t}`;return(0,i.jsx)("div",{className:(0,d.cn)(j({state:o,size:c}),a),"data-ui-component-id":"ActivityScheduleCard",children:(0,i.jsxs)(l.Link,{asChild:!e?.link,href:e?.link,className:"size-full no-underline hover:text-current",children:[(s?e.activeIcon:e.inactiveIcon)&&(0,i.jsx)("div",{className:"laptop:w-[160px] aspect-1 absolute right-0 top-0 z-10 w-[120px]",children:(0,i.jsx)(l.Picture,{source:s?e.activeIcon.url:e.inactiveIcon.url,alt:s?e.activeIcon.alt:e.inactiveIcon.alt,className:"aspect-square"})}),(0,i.jsxs)("div",{className:"relative z-20 flex h-full flex-col justify-between",children:[(0,i.jsx)(l.Heading,{as:"h3",size:3,html:e.title,className:(0,d.cn)(m({state:o}))}),(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("div",{className:"flex flex-col justify-end overflow-hidden",children:(0,i.jsx)(l.Heading,{as:"h4",size:2,html:e.subtitle,className:(0,d.cn)(" line-clamp-2",m({state:o}))})}),c==="large"&&e.description&&(0,i.jsx)(l.Text,{html:e.description,className:(0,d.cn)("lg-desktop:text-[18px] desktop:text-[16px] line-clamp-3 text-[14px] leading-[1.4]",m({state:o}))})]})]})]})})});w.displayName="ActivityScheduleCard";const x=v.forwardRef(({classNames:e={},data:t,...a},c)=>{const s=t.theme||"light",o=t.size||"small",r=v.useMemo(()=>t?.scheduleList?.length||2,[t?.scheduleList]),k=v.useMemo(()=>{const n=N=>{switch(N){case"mobile":return{slidesPerView:1.17,spaceBetween:12};case"tablet":return r===2?{slidesPerView:2,spaceBetween:12}:{slidesPerView:2.4,spaceBetween:12};case"laptop":return r===2?{}:r===4?{slidesPerView:3.2,spaceBetween:16}:{slidesPerView:r,spaceBetween:16};case"desktop":return r===2?{slidesPerView:2,spaceBetween:16}:{slidesPerView:r,spaceBetween:16}}},u=n("mobile"),S=n("tablet"),b=n("laptop"),A=n("desktop");return{0:u,768:S,1024:b,1440:A}},[r]);return(0,i.jsx)("div",{ref:c,className:(0,d.cn)(e?.root),"data-ui-component-id":"ActivitySchedule",...a,children:(0,i.jsx)(h.Swiper,{breakpoints:k,className:"w-full !overflow-visible",children:t?.scheduleList?.map((n,u)=>(0,i.jsx)(h.SwiperSlide,{children:(0,i.jsx)(w,{item:n,theme:s,size:o,className:e?.card})},"activityScheduleCardItem"+u))??null})})});x.displayName="ActivitySchedule";var M=(0,y.withLayout)(x);
@@ -1 +1 @@
1
- "use strict";"use client";var d=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var i in e)d(n,i,{get:e[i],enumerable:!0})},P=(n,e,i,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of T(e))!_.call(n,o)&&o!==i&&d(n,o,{get:()=>e[o],enumerable:!(c=D(e,o))||c.enumerable});return n};var R=n=>P(d({},"__esModule",{value:!0}),n);var S={};M(S,{AiuiContext:()=>m,default:()=>O,useAiuiContext:()=>L});module.exports=R(S);var g=require("react/jsx-runtime"),h=require("../../shared/track.js"),t=require("react"),k=require("../../helpers/index.js");const m=(0,t.createContext)({trackingData:{},locale:void 0,copyWriting:{}}),L=()=>{const n=(0,t.useContext)(m);if(!n)throw new Error("useAiui must be used in <AiuiProvider>");return n},N=({children:n,...e})=>{const i=(0,t.useRef)(null),c=(0,t.useRef)(e?.trackingData),[o,x]=(0,t.useState)(void 0);(0,t.useEffect)(()=>{e.localeMap&&Object.keys(e.localeMap).length>0&&(0,k.extendLocaleMap)(e.localeMap)},[e.localeMap]),(0,t.useEffect)(()=>{c.current=e?.trackingData},[e?.trackingData]),(0,t.useEffect)(()=>{const p=i.current;if(!p)return;const y=(a,r)=>{const s={};if(!r||!r.attributes)return s;for(const E of Array.from(r.attributes)){const l=E?.name;l?.startsWith("data-headless-")&&(s[l]=r.getAttribute(l))}const A=s?.["data-headless-sku"],v=s?.["data-headless-type-name"]?.split?.("#"),u=s?.["data-headless-title-desc-button"]?.split?.("#"),b=s?.["data-headless-nav-position"]?.split?.("#");(0,h.gaTrack)({event:"ga4Event",event_name:"component_click",event_parameters:{page_group:c.current?.pageGroup||"Home Page",component_type:v?.[0]||"",component_name:v?.[1]||"",position:b?.[1]||"",navigation:b?.[0]||"",button_name:u?.[2]||"",SKU:A||"",component_title:u?.[0]||"",component_description:u?.[1]||""}})},f=new MutationObserver(()=>{p.querySelectorAll("[data-headless-type-name]").forEach(a=>{a.hasAttribute("data-headless-track-bound")||(a.addEventListener("click",r=>y(r,a)),a.setAttribute("data-headless-track-bound","true"))})});return f.observe(p,{childList:!0,subtree:!0}),p.querySelectorAll("[data-headless-type-name]").forEach(a=>{a.hasAttribute("data-headless-track-bound")||(a.addEventListener("click",r=>y(r,a)),a.setAttribute("data-headless-track-bound","true"))}),()=>f.disconnect()},[]);const C=(0,t.useMemo)(()=>({...e,navCollapsed:o,setNavCollapsed:x}),[e,o]);return(0,g.jsx)(m.Provider,{value:C,children:(0,g.jsx)("div",{ref:i,children:n})})};var O=N;
1
+ "use strict";"use client";var d=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var i in e)d(n,i,{get:e[i],enumerable:!0})},P=(n,e,i,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of T(e))!_.call(n,o)&&o!==i&&d(n,o,{get:()=>e[o],enumerable:!(c=D(e,o))||c.enumerable});return n};var R=n=>P(d({},"__esModule",{value:!0}),n);var S={};M(S,{AiuiContext:()=>m,default:()=>O,useAiuiContext:()=>L});module.exports=R(S);var g=require("react/jsx-runtime"),h=require("../../shared/track.js"),t=require("react"),k=require("../../helpers/index.js");const m=(0,t.createContext)({trackingData:{},locale:void 0,copyWriting:{},navCollapsed:!1,setNavCollapsed:()=>{}}),L=()=>{const n=(0,t.useContext)(m);if(!n)throw new Error("useAiui must be used in <AiuiProvider>");return n},N=({children:n,...e})=>{const i=(0,t.useRef)(null),c=(0,t.useRef)(e?.trackingData),[o,C]=(0,t.useState)(void 0);(0,t.useEffect)(()=>{e.localeMap&&Object.keys(e.localeMap).length>0&&(0,k.extendLocaleMap)(e.localeMap)},[e.localeMap]),(0,t.useEffect)(()=>{c.current=e?.trackingData},[e?.trackingData]),(0,t.useEffect)(()=>{const l=i.current;if(!l)return;const v=(a,r)=>{const s={};if(!r||!r.attributes)return s;for(const E of Array.from(r.attributes)){const u=E?.name;u?.startsWith("data-headless-")&&(s[u]=r.getAttribute(u))}const A=s?.["data-headless-sku"],y=s?.["data-headless-type-name"]?.split?.("#"),p=s?.["data-headless-title-desc-button"]?.split?.("#"),b=s?.["data-headless-nav-position"]?.split?.("#");(0,h.gaTrack)({event:"ga4Event",event_name:"component_click",event_parameters:{page_group:c.current?.pageGroup||"Home Page",component_type:y?.[0]||"",component_name:y?.[1]||"",position:b?.[1]||"",navigation:b?.[0]||"",button_name:p?.[2]||"",SKU:A||"",component_title:p?.[0]||"",component_description:p?.[1]||""}})},f=new MutationObserver(()=>{l.querySelectorAll("[data-headless-type-name]").forEach(a=>{a.hasAttribute("data-headless-track-bound")||(a.addEventListener("click",r=>v(r,a)),a.setAttribute("data-headless-track-bound","true"))})});return f.observe(l,{childList:!0,subtree:!0}),l.querySelectorAll("[data-headless-type-name]").forEach(a=>{a.hasAttribute("data-headless-track-bound")||(a.addEventListener("click",r=>v(r,a)),a.setAttribute("data-headless-track-bound","true"))}),()=>f.disconnect()},[]);const x=(0,t.useMemo)(()=>({...e,navCollapsed:o,setNavCollapsed:C}),[e,o]);return(0,g.jsx)(m.Provider,{value:x,children:(0,g.jsx)("div",{ref:i,children:n})})};var O=N;
@@ -1,4 +1,6 @@
1
1
  import type { BrandEquityProps } from './types.js';
2
+ import 'swiper/css';
3
+ import 'swiper/css/pagination';
2
4
  declare const _default: import("react").ForwardRefExoticComponent<Omit<BrandEquityProps & import("react").RefAttributes<HTMLDivElement>, "container" | keyof import("../../shared/Styles.js").StylesProps> & import("../../shared/Styles.js").StylesProps & import("../index.js").ContainerProps & import("react").RefAttributes<unknown>> & {
3
5
  readonly $$typeof: symbol;
4
6
  };
@@ -1 +1 @@
1
- "use strict";"use client";var j=Object.create;var d=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var H=(e,r)=>{for(var i in r)d(e,i,{get:r[i],enumerable:!0})},h=(e,r,i,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of L(r))!A.call(e,o)&&o!==i&&d(e,o,{get:()=>r[o],enumerable:!(a=P(r,o))||a.enumerable});return e};var k=(e,r,i)=>(i=e!=null?j(z(e)):{},h(r||!e||!e.__esModule?d(i,"default",{value:e,enumerable:!0}):i,e)),D=e=>h(d({},"__esModule",{value:!0}),e);var F={};H(F,{default:()=>C});module.exports=D(F);var t=require("react/jsx-runtime"),s=require("react"),l=require("../../helpers/utils.js"),y=k(require("../../components/picture.js")),q=require("../../shared/Styles.js"),E=require("react-responsive"),S=require("../../hooks/useExposure.js"),c=require("swiper/react"),p=require("swiper/modules"),M=k(require("../Title/index.js"));const R="copy",Q="store_benefits",$=(e,r)=>{const i=[];for(let a=0;a<e.length;a+=r)i.push(e.slice(a,a+r));return i},N=(0,s.forwardRef)(({data:{items:e=[],itemShape:r,title:i,theme:a},className:o},u)=>{const[x,B]=(0,s.useState)(!1),v=(0,E.useMediaQuery)({query:"(max-width: 768px)"}),b=(0,s.useRef)(null),f=(0,s.useRef)(null);(0,s.useImperativeHandle)(u,()=>f.current),(0,S.useExposure)(f,{componentType:R,componentName:Q}),(0,s.useEffect)(()=>{B(v)},[v]);const T=x?$(e,3):e;return(0,t.jsxs)("div",{ref:f,className:(0,l.cn)("brand-equity-wrapper w-full",{"aiui-dark":a==="dark"},o),children:[i&&(0,t.jsx)(M.default,{data:{title:i}}),x?(0,t.jsxs)(c.Swiper,{className:(0,l.cn)(o),modules:[p.FreeMode,p.Mousewheel,p.Pagination],freeMode:!0,mousewheel:{forceToAxis:!0},pagination:{clickable:!0,el:b.current},breakpoints:{0:{spaceBetween:12}},children:[T?.map((n,m)=>(0,t.jsx)(c.SwiperSlide,{className:"!flex flex-col gap-3",children:Array.isArray(n)&&n?.map((I,g)=>(0,t.jsx)(w,{data:I,itemShape:r,index:g,theme:a},g))},"SwiperSlide"+m)),(0,t.jsx)("div",{ref:b,className:"mt-3 flex justify-center"})]}):(0,t.jsx)("div",{className:(0,l.cn)("grid grid-cols-1 gap-3","tablet:grid-cols-2","laptop:gap-4 laptop:grid-cols-10"),children:e.map((n,m)=>(0,t.jsx)(w,{data:n,itemShape:r,index:m,theme:a},m))})]})}),w=({data:e,itemShape:r,index:i,theme:a})=>(0,t.jsxs)("div",{className:(0,l.cn)("brand-equity-item",`brand-equity-item-${i+1}`,e.containerName?`brand-equity-item--${e.containerName}`:void 0,"bg-container-secondary-1 box-border flex w-full flex-col p-4","desktop:p-6 justify-between","laptop:col-span-3 lg-desktop:p-8","laptop:h-[192px] lg-desktop:h-[240px] h-[160px]",{"laptop:col-span-4":[0,5,6,11].includes(i),"bg-container-primary":a==="dark"},"rounded-box",e.className),children:[(0,t.jsxs)("div",{className:"lg-desktop:h-[36px] flex h-[30px] items-center justify-between gap-3",children:[(0,t.jsx)("h3",{className:"lg-desktop:text-[18px] desktop:text-[16px] text-info-primary text-[14px] font-bold leading-[1.2] tracking-[-0.02em]",children:e.title}),e.type==="avatar"?(0,t.jsx)("div",{className:"flex shrink-0 -space-x-2",children:e?.avatarList?.map((o,u)=>(0,t.jsx)("div",{className:(0,l.cn)("border-container-primary size-[30px] overflow-hidden rounded-full border-2","relative inline-block shrink-0","lg-desktop:size-[36px]"),children:(0,t.jsx)(y.default,{source:o.avatar?.url,alt:o.avatar?.alt,className:"size-full object-cover"})},u))}):(0,t.jsx)("div",{className:"lg-desktop:size-[36px] size-[30px] shrink-0",children:(0,t.jsx)(y.default,{className:"size-full object-cover",source:e.icon?.url,alt:e.icon?.alt,imgClassName:"w-full h-full object-cover"})})]}),(0,t.jsx)("p",{className:"lg-desktop:text-[24px] text-info-primary line-clamp-3 text-[20px] font-bold leading-[1.2] tracking-[-0.04em]",children:e.description})]});N.displayName="BrandEquity";var C=(0,q.withLayout)(N);
1
+ "use strict";"use client";var j=Object.create;var u=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var D=(e,r)=>{for(var i in r)u(e,i,{get:r[i],enumerable:!0})},h=(e,r,i,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of z(r))!H.call(e,o)&&o!==i&&u(e,o,{get:()=>r[o],enumerable:!(a=L(r,o))||a.enumerable});return e};var k=(e,r,i)=>(i=e!=null?j(A(e)):{},h(r||!e||!e.__esModule?u(i,"default",{value:e,enumerable:!0}):i,e)),R=e=>h(u({},"__esModule",{value:!0}),e);var _={};D(_,{default:()=>F});module.exports=R(_);var t=require("react/jsx-runtime"),s=require("react"),l=require("../../helpers/utils.js"),x=k(require("../../components/picture.js")),E=require("../../shared/Styles.js"),q=require("react-responsive"),S=require("../../hooks/useExposure.js"),f=require("swiper/react"),n=require("swiper/modules"),J=require("swiper/css"),K=require("swiper/css/pagination"),I=k(require("../Title/index.js"));const Q="copy",$="store_benefits",C=(e,r)=>{const i=[];for(let a=0;a<e.length;a+=r)i.push(e.slice(a,a+r));return i},N=(0,s.forwardRef)(({data:{items:e=[],itemShape:r,title:i,theme:a},className:o},m)=>{const[c,M]=(0,s.useState)(!1),g=(0,q.useMediaQuery)({query:"(max-width: 767px)"}),[B,T]=(0,s.useState)(null),y=(0,s.useRef)(null);(0,s.useImperativeHandle)(m,()=>y.current),(0,S.useExposure)(y,{componentType:Q,componentName:$}),(0,s.useEffect)(()=>{M(g)},[g]);const P=c?C(e,3):e;return(0,t.jsxs)("div",{ref:y,className:(0,l.cn)("brand-equity-wrapper w-full",{"aiui-dark":a==="dark"},o),children:[i&&(0,t.jsx)(I.default,{data:{title:i}}),c?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(f.Swiper,{className:(0,l.cn)(o),modules:[n.FreeMode,n.Mousewheel,n.Pagination],freeMode:!0,mousewheel:{forceToAxis:!0},pagination:{clickable:!0,el:B},breakpoints:{0:{spaceBetween:12}},children:P?.map((p,d)=>(0,t.jsx)(f.SwiperSlide,{className:"!flex flex-col gap-3",children:Array.isArray(p)&&p?.map((v,b)=>(0,t.jsx)(w,{data:v,itemShape:r,index:b,theme:v.theme??a},b))},"SwiperSlide"+d))}),(0,t.jsx)("div",{ref:T,className:"brand-equity-pagination !static mt-[20px] flex justify-center"})]}):(0,t.jsx)("div",{className:(0,l.cn)("grid grid-cols-1 gap-3","tablet:grid-cols-2","laptop:gap-4 laptop:grid-cols-10"),children:e.map((p,d)=>(0,t.jsx)(w,{data:p,itemShape:r,index:d,theme:p.theme??a},d))})]})}),w=({data:e,itemShape:r,index:i,theme:a})=>{const o=a==="dark"&&e.iconImage?e.iconImage:e.icon;return(0,t.jsxs)("div",{className:(0,l.cn)("brand-equity-item",`brand-equity-item-${i+1}`,e.containerName?`brand-equity-item--${e.containerName}`:void 0,"bg-container-secondary-1 box-border flex w-full flex-col p-4","desktop:p-6 justify-between","laptop:col-span-3 lg-desktop:p-8","laptop:h-[192px] lg-desktop:h-[240px] h-[160px]",{"laptop:col-span-4":[0,5,6,11].includes(i),"bg-container-primary":a==="dark"},"rounded-box",e.className),children:[(0,t.jsxs)("div",{className:"lg-desktop:h-[36px] flex h-[32px] items-center justify-between gap-3",children:[(0,t.jsx)("h3",{className:"lg-desktop:text-[18px] desktop:text-[16px] text-info-primary text-[14px] font-bold leading-[1.2] tracking-[-0.02em]",children:e.title}),e.type==="avatar"?(0,t.jsx)("div",{className:"flex shrink-0 -space-x-2",children:e?.avatarList?.map((m,c)=>(0,t.jsx)("div",{className:(0,l.cn)("border-container-primary size-[32px] overflow-hidden rounded-full border-2","relative inline-block shrink-0","lg-desktop:size-[36px]"),children:(0,t.jsx)(x.default,{source:m.avatar?.url,alt:m.avatar?.alt,className:"size-full object-cover"})},c))}):(0,t.jsx)("div",{className:"lg-desktop:size-[36px] size-[32px] shrink-0",children:(0,t.jsx)(x.default,{className:"size-full object-cover",source:o?.url,alt:o?.alt,imgClassName:"w-full h-full object-cover"})})]}),(0,t.jsx)("p",{className:"lg-desktop:text-[24px] text-info-primary line-clamp-3 text-[20px] font-bold leading-[1.2] tracking-[-0.04em]",children:e.description})]})};N.displayName="BrandEquity";var F=(0,E.withLayout)(N);
@@ -1,6 +1,8 @@
1
1
  import type { ComponentCommonProps, Img } from '../../types/props.js';
2
2
  export interface BrandEquityItemProps {
3
3
  icon?: Img;
4
+ /** 暗色主题专用图标:item 或全局 theme 为 dark 时优先于 icon 渲染(semantic-media 命名遵循 ADR 0010) */
5
+ iconImage?: Img;
4
6
  type?: 'icon' | 'avatar';
5
7
  title: string;
6
8
  description: string;
@@ -1 +1 @@
1
- "use strict";var i=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var p=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of s(t))!m.call(e,r)&&r!==n&&i(e,r,{get:()=>t[r],enumerable:!(a=o(t,r))||a.enumerable});return e};var g=e=>p(i({},"__esModule",{value:!0}),e);var d={};module.exports=g(d);
1
+ "use strict";var i=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var p=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of s(t))!m.call(e,r)&&r!==n&&i(e,r,{get:()=>t[r],enumerable:!(a=o(t,r))||a.enumerable});return e};var g=e=>p(i({},"__esModule",{value:!0}),e);var c={};module.exports=g(c);
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+ import type { Img } from '../../types/props.js';
3
+ import type { DiscountBadgeRenderContext, DiscountTagStyle } from './types.js';
4
+ export interface DiscountBadgeProps {
5
+ /** 折扣文案,为空时不渲染 */
6
+ text?: string;
7
+ /** 角标样式,默认 style1 */
8
+ style?: DiscountTagStyle;
9
+ /** 自定义角标图标(style=custom 时生效) */
10
+ icon?: Img;
11
+ /** 自定义渲染(style=custom 时生效) */
12
+ renderBadge?: (ctx: DiscountBadgeRenderContext) => React.ReactNode;
13
+ className?: string;
14
+ textClassName?: string;
15
+ /** 折扣文案颜色,设置后覆盖默认文字色 */
16
+ textColor?: string;
17
+ }
18
+ /**
19
+ * DiscountBadge - 买赠货架左上角折扣角标
20
+ */
21
+ declare const DiscountBadge: {
22
+ ({ text, style, icon, renderBadge, className, textClassName, textColor, }: DiscountBadgeProps): import("react/jsx-runtime").JSX.Element | null;
23
+ displayName: string;
24
+ };
25
+ export default DiscountBadge;
@@ -0,0 +1 @@
1
+ "use strict";"use client";var C=Object.create;var i=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var S=(t,e)=>{for(var s in e)i(t,s,{get:e[s],enumerable:!0})},g=(t,e,s,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of h(e))!N.call(t,o)&&o!==s&&i(t,o,{get:()=>e[o],enumerable:!(l=D(e,o))||l.enumerable});return t};var T=(t,e,s)=>(s=t!=null?C(k(t)):{},g(e||!t||!t.__esModule?i(s,"default",{value:t,enumerable:!0}):s,t)),B=t=>g(i({},"__esModule",{value:!0}),t);var _={};S(_,{default:()=>z});module.exports=B(_);var a=require("react/jsx-runtime"),E=require("react"),n=require("../../helpers/index.js"),m=T(require("../../components/picture.js")),b=require("../../components/text.js");const f={style1:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/2_7746fc9c-d4e4-4a59-a972-fa4cb0f3f8bd.png?v=1789381635",textClass:"text-base lg-desktop:text-xl pt-2 pl-4"},style2:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/1_e0438358-493b-40cb-9a58-89d6ee2d3751.png?v=1789381628",textClass:"text-base lg-desktop:text-xl pt-2 desktop:pt-4"},style3:{bg:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/1_19208ba4-71ea-4580-892d-72167f1cf606.png?v=1789381639",textClass:"text-base lg-desktop:text-xl flex items-center pl-1 laptop:pl-2"}},R="text-base lg-desktop:text-xl flex items-center justify-center",u=({text:t,style:e="style1",icon:s,renderBadge:l,className:o,textClassName:x,textColor:p})=>{if(!t)return null;const c=e==="custom",r=c&&!!l,y=c&&!l&&!!s?.url,d=c?f.style1:f[e];return(0,a.jsxs)("div",{className:(0,n.cn)("bogo-shelf-discount-badge absolute left-0 top-0 z-10","lg-desktop:size-24 size-20",o),children:[r?l({text:t}):y?(0,a.jsx)(m.default,{source:s.url,alt:s.alt||t,className:"block size-full",imgClassName:"block size-full object-contain"}):(0,a.jsx)("img",{src:d.bg,alt:t,loading:"lazy",className:"block size-full object-contain"}),!r&&(0,a.jsx)(b.Text,{className:(0,n.cn)("bogo-shelf-discount-badge-text aiui-dark text-info-primary text-center","absolute inset-0 font-bold !leading-[1.2]",c?R:d.textClass,x),style:p?{color:p}:void 0,html:t})]})};u.displayName="BuyOneGetOneShelf.DiscountBadge";var z=u;
@@ -8,6 +8,10 @@ export interface FreeGiftItemProps extends Omit<React.HTMLAttributes<HTMLDivElem
8
8
  /** 赠品类型 1-> 单选模式, 2 -> 全选模式 */
9
9
  giftType?: 1 | 2;
10
10
  theme?: 'light' | 'dark';
11
+ /** 赠品角标背景色,覆盖默认品牌色 */
12
+ tagBgColor?: string;
13
+ /** 赠品角标文字颜色,覆盖默认文字色 */
14
+ tagTextColor?: string;
11
15
  }
12
16
  /**
13
17
  * FreeGiftItem - 免费赠品项
@@ -1 +1 @@
1
- "use strict";"use client";var h=Object.create;var d=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var k=(e,r)=>{for(var i in r)d(e,i,{get:r[i],enumerable:!0})},n=(e,r,i,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of v(r))!g.call(e,s)&&s!==i&&d(e,s,{get:()=>r[s],enumerable:!(l=f(r,s))||l.enumerable});return e};var p=(e,r,i)=>(i=e!=null?h(u(e)):{},n(r||!e||!e.__esModule?d(i,"default",{value:e,enumerable:!0}):i,e)),b=e=>n(d({},"__esModule",{value:!0}),e);var N={};k(N,{default:()=>F});module.exports=b(N);var t=require("react/jsx-runtime"),w=p(require("react")),o=require("../../helpers/index.js"),G=require("../../components/badge.js"),c=p(require("../../components/picture.js")),a=require("../../components/text.js");const y=({checked:e,theme:r})=>{const i=r==="dark";return e?(0,t.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{x:"2.8",y:"2.8",width:"18.4",height:"18.4",rx:"9.2",fill:i?"#F5F6F7":"#080A0F"}),(0,t.jsx)("rect",{x:"2.8",y:"2.8",width:"18.4",height:"18.4",rx:"9.2",stroke:i?"#F5F6F7":"#080A0F",strokeWidth:"1.6"}),(0,t.jsx)("path",{d:"M8 11.5833L10.9474 14.5L16 9.5",stroke:i?"#1E2024":"white",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})]}):(0,t.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("rect",{x:"2.8",y:"2.8",width:"18.4",height:"18.4",rx:"9.2",stroke:i?"#B5B7BB":"#2A2C32",strokeWidth:"1.6"})})},x=w.forwardRef(({gift:e,onClick:r,className:i,giftType:l,theme:s},m)=>(0,t.jsx)("div",{ref:m,className:(0,o.cn)("bg-container-primary laptop:rounded-[8px] border-lines relative flex w-full flex-col overflow-hidden rounded-[6px] border-2 transition-all",l===2?"border-brand-0 bg-container-secondary-0 cursor-default":`cursor-pointer hover:shadow-sm ${e.selected?"border-brand-0 bg-container-secondary-0":"border-lines bg-secondary-0"}`,i),onClick:()=>{l===1&&r?.(e)},children:(0,t.jsxs)("div",{className:"flex size-full flex-col",children:[(0,t.jsx)("div",{className:"tablet:h-[24px] lg-desktop:h-[28px] flex h-[18px] justify-end",children:e.tag&&(0,t.jsx)("div",{className:"bg-brand-0 lg-desktop:text-[16px] laptop:rounded-bl-[8px] text-badge-foreground absolute rounded-bl-[6px] px-[6px] pb-[4px] pt-[3px] text-[14px] font-bold leading-[1.2]",children:e.tag})}),(0,t.jsxs)("div",{className:(0,o.cn)("laptop:pb-4 laptop:px-4 flex size-full items-center gap-4 px-2 pb-2"),children:[(0,t.jsx)("div",{className:"flex size-5 shrink-0 items-center justify-center",children:(0,t.jsx)(y,{checked:!!e.selected,theme:s})}),(0,t.jsx)("div",{className:(0,o.cn)("size-14 shrink-0","tablet:size-12"),children:(0,t.jsx)(c.default,{source:e.image,alt:e.name,className:"size-full rounded object-cover"})}),(0,t.jsxs)("div",{className:"flex h-full min-w-0 flex-1 flex-col justify-center gap-1 py-1",children:[(0,t.jsx)(a.Text,{size:2,html:e.name,className:(0,o.cn)("text-info-primary desktop:text-[16px] lg-desktop:text-[18px] line-clamp-1")}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(a.Text,{size:2,className:(0,o.cn)("text-info-primary desktop:text-[16px] lg-desktop:text-[18px]"),children:e.currentPrice}),e.originalPrice&&e.originalPrice!==e.currentPrice&&(0,t.jsx)(a.Text,{size:2,className:(0,o.cn)("text-info-tertiary desktop:text-[16px] lg-desktop:text-[18px] pr-6 line-through"),children:e.originalPrice})]}),e.quantity>=1&&(0,t.jsxs)(a.Text,{size:4,className:(0,o.cn)("text-info-primary laptop:text-[16px] lg-desktop:text-[18px] self-end text-[14px]"),children:["x",e.quantity]})]})]})]})]})}));x.displayName="FreeGiftItem";var F=x;
1
+ "use strict";"use client";var v=Object.create;var d=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var w=(e,r)=>{for(var i in r)d(e,i,{get:r[i],enumerable:!0})},x=(e,r,i,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of g(r))!b.call(e,s)&&s!==i&&d(e,s,{get:()=>r[s],enumerable:!(l=u(r,s))||l.enumerable});return e};var c=(e,r,i)=>(i=e!=null?v(k(e)):{},x(r||!e||!e.__esModule?d(i,"default",{value:e,enumerable:!0}):i,e)),y=e=>x(d({},"__esModule",{value:!0}),e);var G={};w(G,{default:()=>z});module.exports=y(G);var t=require("react/jsx-runtime"),F=c(require("react")),o=require("../../helpers/index.js"),B=require("../../components/badge.js"),h=c(require("../../components/picture.js")),a=require("../../components/text.js");const N=({checked:e,theme:r})=>{const i=r==="dark";return e?(0,t.jsxs)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{x:"2.8",y:"2.8",width:"18.4",height:"18.4",rx:"9.2",fill:i?"#F5F6F7":"#080A0F"}),(0,t.jsx)("rect",{x:"2.8",y:"2.8",width:"18.4",height:"18.4",rx:"9.2",stroke:i?"#F5F6F7":"#080A0F",strokeWidth:"1.6"}),(0,t.jsx)("path",{d:"M8 11.5833L10.9474 14.5L16 9.5",stroke:i?"#1E2024":"white",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})]}):(0,t.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("rect",{x:"2.8",y:"2.8",width:"18.4",height:"18.4",rx:"9.2",stroke:i?"#B5B7BB":"#2A2C32",strokeWidth:"1.6"})})},m=F.forwardRef(({gift:e,onClick:r,className:i,giftType:l,theme:s,tagBgColor:n,tagTextColor:p},f)=>(0,t.jsx)("div",{ref:f,className:(0,o.cn)("bg-container-primary laptop:rounded-[8px] border-lines relative flex w-full flex-col overflow-hidden rounded-[6px] border-2 transition-all",l===2?"border-brand-0 bg-container-secondary-0 cursor-default":`cursor-pointer hover:shadow-sm ${e.selected?"border-brand-0 bg-container-secondary-0":"border-lines bg-secondary-0"}`,i),onClick:()=>{l===1&&r?.(e)},children:(0,t.jsxs)("div",{className:"flex size-full flex-col",children:[(0,t.jsx)("div",{className:"tablet:h-[24px] lg-desktop:h-[28px] flex h-[18px] justify-end",children:e.tag&&(0,t.jsx)("div",{className:"bg-brand-0 lg-desktop:text-[16px] laptop:rounded-bl-[8px] text-badge-foreground absolute rounded-bl-[6px] px-[6px] pb-[4px] pt-[3px] text-[14px] font-bold leading-[1.2]",style:{...n?{backgroundColor:n}:{},...p?{color:p}:{}},children:e.tag})}),(0,t.jsxs)("div",{className:(0,o.cn)("laptop:pb-4 laptop:px-4 flex size-full items-center gap-4 px-2 pb-2"),children:[(0,t.jsx)("div",{className:"flex size-5 shrink-0 items-center justify-center",children:(0,t.jsx)(N,{checked:!!e.selected,theme:s})}),(0,t.jsx)("div",{className:(0,o.cn)("size-14 shrink-0","tablet:size-12"),children:(0,t.jsx)(h.default,{source:e.image,alt:e.name,className:"size-full rounded object-cover"})}),(0,t.jsxs)("div",{className:"flex h-full min-w-0 flex-1 flex-col justify-center gap-1 py-1",children:[(0,t.jsx)(a.Text,{size:2,html:e.name,className:(0,o.cn)("text-info-primary desktop:text-[16px] lg-desktop:text-[18px] line-clamp-1")}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between gap-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(a.Text,{size:2,className:(0,o.cn)("text-info-primary desktop:text-[16px] lg-desktop:text-[18px]"),children:e.currentPrice}),e.originalPrice&&e.originalPrice!==e.currentPrice&&(0,t.jsx)(a.Text,{size:2,className:(0,o.cn)("text-info-tertiary desktop:text-[16px] lg-desktop:text-[18px] pr-6 line-through"),children:e.originalPrice})]}),e.quantity>=1&&(0,t.jsxs)(a.Text,{size:4,className:(0,o.cn)("text-info-primary laptop:text-[16px] lg-desktop:text-[18px] self-end text-[14px]"),children:["x",e.quantity]})]})]})]})]})}));m.displayName="FreeGiftItem";var z=m;
@@ -11,6 +11,10 @@ export interface GiftSelectionProps extends React.HTMLAttributes<HTMLDivElement>
11
11
  giftType?: 1 | 2;
12
12
  selectedGiftSku?: string;
13
13
  theme?: 'light' | 'dark';
14
+ /** 赠品角标背景色 */
15
+ tagBgColor?: string;
16
+ /** 赠品角标文字颜色 */
17
+ tagTextColor?: string;
14
18
  }
15
19
  /**
16
20
  * GiftSelection - 赠品选择区域
@@ -1 +1 @@
1
- "use strict";"use client";var v=Object.create;var r=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var T=(e,t)=>{for(var i in t)r(e,i,{get:t[i],enumerable:!0})},m=(e,t,i,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of k(t))!S.call(e,l)&&l!==i&&r(e,l,{get:()=>t[l],enumerable:!(o=u(t,l))||o.enumerable});return e};var n=(e,t,i)=>(i=e!=null?v(y(e)):{},m(t||!e||!e.__esModule?r(i,"default",{value:e,enumerable:!0}):i,e)),h=e=>m(r({},"__esModule",{value:!0}),e);var N={};T(N,{default:()=>F});module.exports=h(N);var f=require("react/jsx-runtime"),w=n(require("react")),p=require("../../helpers/index.js"),c=require("../../components/text.js"),d=n(require("./FreeGiftItem.js"));const s=w.forwardRef(({freeGiftLabel:e,freeGifts:t,onGiftClick:i,className:o,giftType:l,theme:x},g)=>!t||t.length===0?null:(0,f.jsxs)("div",{ref:g,className:(0,p.cn)("flex w-full flex-col gap-2",o),children:[e&&(0,f.jsx)(c.Text,{size:2,className:(0,p.cn)("text-info-primary desktop:text-[16px] lg-desktop:text-[18px] w-full"),children:e}),(0,f.jsx)("div",{className:(0,p.cn)("tablet:flex-row laptop:flex-col flex flex-col gap-2"),children:t.map((a,G)=>(0,f.jsx)("div",{className:"min-w-0 flex-1",children:(0,f.jsx)(d.default,{gift:a,onClick:i,giftType:l,theme:x})},a.id||G))})]}));s.displayName="GiftSelection";var F=s;
1
+ "use strict";"use client";var u=Object.create;var f=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var C=(e,t)=>{for(var i in t)f(e,i,{get:t[i],enumerable:!0})},p=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of y(t))!h.call(e,l)&&l!==i&&f(e,l,{get:()=>t[l],enumerable:!(r=k(t,l))||r.enumerable});return e};var s=(e,t,i)=>(i=e!=null?u(S(e)):{},p(t||!e||!e.__esModule?f(i,"default",{value:e,enumerable:!0}):i,e)),w=e=>p(f({},"__esModule",{value:!0}),e);var H={};C(H,{default:()=>N});module.exports=w(H);var o=require("react/jsx-runtime"),F=s(require("react")),a=require("../../helpers/index.js"),c=require("../../components/text.js"),g=s(require("./FreeGiftItem.js"));const m=F.forwardRef(({freeGiftLabel:e,freeGifts:t,onGiftClick:i,className:r,giftType:l,theme:x,tagBgColor:d,tagTextColor:G},v)=>!t||t.length===0?null:(0,o.jsxs)("div",{ref:v,className:(0,a.cn)("flex w-full flex-col gap-2",r),children:[e&&(0,o.jsx)(c.Text,{size:2,className:(0,a.cn)("text-info-primary desktop:text-[16px] lg-desktop:text-[18px] w-full"),children:e}),(0,o.jsx)("div",{className:(0,a.cn)("tablet:flex-row laptop:flex-col flex flex-col gap-2"),children:t.map((n,T)=>(0,o.jsx)("div",{className:"min-w-0 flex-1",children:(0,o.jsx)(g.default,{gift:n,onClick:i,giftType:l,theme:x,tagBgColor:d,tagTextColor:G})},n.id||T))})]}));m.displayName="GiftSelection";var N=m;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import type { FreeGift, ProductCardData, PureProductData, ProductTag, BuyOneGetOneShelfProductCardSemanticName } from './types.js';
3
- export interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {
2
+ import type { FreeGift, ProductCardData, PureProductData, ProductTag, BuyOneGetOneShelfCustomTagProps, BuyOneGetOneShelfProductCardSemanticName } from './types.js';
3
+ export interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement>, BuyOneGetOneShelfCustomTagProps {
4
4
  /** 产品数据(不包含赠品信息) */
5
5
  productData: PureProductData;
6
6
  /** 赠品列表 */
@@ -1 +1 @@
1
- "use strict";"use client";var te=Object.create;var h=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var oe=Object.getOwnPropertyNames;var ne=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var r in t)h(e,r,{get:t[r],enumerable:!0})},v=(e,t,r,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of oe(t))!ie.call(e,d)&&d!==r&&h(e,d,{get:()=>t[d],enumerable:!(f=re(t,d))||f.enumerable});return e};var u=(e,t,r)=>(r=e!=null?te(ne(e)):{},v(t||!e||!e.__esModule?h(r,"default",{value:e,enumerable:!0}):r,e)),le=e=>v(h({},"__esModule",{value:!0}),e);var ce={};ae(ce,{default:()=>de});module.exports=le(ce);var a=require("react/jsx-runtime"),l=u(require("react")),b=require("../../helpers/index.js"),L=u(require("./ProductImage.js")),M=u(require("./ProductInfo.js")),O=u(require("./GiftSelection.js")),T=u(require("./PriceAndActions.js")),I=require("./context.js");const N=l.forwardRef(({productData:e,gifts:t=[],giftType:r=1,selectedGiftSku:f,sceneImages:d,tags:B,layout:R,className:H,onProductClick:S,onProductImageClick:x,onLearnMore:A,onShopNow:j,onAddToCart:z,onGiftClick:C,onGiftSelectionChange:E,classNames:y,soldOutText:W,renderOriginalPrice:V,..._},$)=>{const{layout:q,theme:J}=l.useContext(I.BuyOneGetOneShelfContext),G=R??q,[K,Q]=l.useState(!1),[U,X]=l.useState(!1),[k,m]=l.useState(()=>!t||t.length===0?[]:r===2?t.map(o=>o.id):[t[0].id]),P=l.useMemo(()=>t?t.map(o=>({...o,selected:k.includes(o.id)})):[],[t,k]);l.useEffect(()=>{if(!t||t.length===0){m([]);return}m(r===2?t.map(o=>o.id):o=>{const n=o[0];return n&&t.some(c=>c.id===n)?[n]:[t[0].id]})},[t,r]);const s=l.useMemo(()=>({...e,gifts:t,gift_type:r}),[e,t,r]),Y=o=>{if(r===2){const n=P.filter(i=>i.selected);C?.(o,n);return}m(()=>{const n=[o.id],i=t?.filter(c=>n.includes(c.id))||[];return C?.(o,i),E?.(i,s),n})},p=!!(x??S),w=`/products/${e.handle}`,F=()=>{(x??S)?.(s)},g=async(o,n)=>{const i=P.filter(ee=>ee.selected),c=n==="primary"?X:Q;c(!0);try{switch(o){case"buyNow":await j?.(s,i);break;case"addCart":await z?.(s,i);break;case"learnMore":await A?.(s,i);break}}finally{c(!1)}},Z=e.learnMoreFun??"learnMore",D=e.shopNowFun??"buyNow";return(0,a.jsxs)("div",{ref:$,className:(0,b.cn)("bg-container-primary rounded-box flex items-stretch overflow-hidden",G==="horizontal"?["laptop:flex-row lg-desktop:min-h-[560px] desktop:min-h-[448px] tablet:min-h-[526px] min-h-[610px] flex-col","laptop:col-span-2"]:["flex-col justify-between"],H),..._,children:[(0,a.jsx)(L.default,{images:d,name:e.name,layout:G,tags:e.tags||B,onClick:p?F:void 0,href:p?void 0:w}),(0,a.jsx)("div",{className:(0,b.cn)("bg-container-primary desktop:p-6 flex flex-col justify-between p-4",G==="horizontal"?["rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none","laptop:basis-[39.1%]","desktop:basis-[42.1%]","lg-desktop:basis-[42.1%]","shrink-0"]:["rounded-b-box","w-full","grow"]),children:(0,a.jsxs)("div",{className:"flex flex-1 flex-col justify-between gap-6",children:[(0,a.jsx)(M.default,{name:e.name,onClick:p?F:void 0,href:p?void 0:w,description:e.description,classNames:y}),(0,a.jsx)(O.default,{freeGiftLabel:e.freeGiftLabel,freeGifts:P,onGiftClick:Y,giftType:r,selectedGiftSku:f,theme:J}),(0,a.jsx)(T.default,{currentPrice:e.currentPrice??"",originalPrice:e.originalPrice,priceLabel:e.priceLabel,learnMoreText:e.learnMoreText,shopNowText:e.shopNowText,soldOutText:W,onLearnMore:()=>g(Z,"secondary"),onShopNow:()=>g(D,"primary"),availableForSale:e.availableForSale,learnMoreLoading:K,shopNowLoading:U,trackingTitle:e.name,trackingDescription:e.description,trackingSku:e.sku,classNames:y,renderOriginalPrice:V})]})})]})});N.displayName="BuyOneGetOneShelf.ProductCard";var de=N;
1
+ "use strict";"use client";var Le=Object.create;var C=Object.defineProperty;var Me=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Ie=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Ae=(e,t)=>{for(var o in t)C(e,o,{get:t[o],enumerable:!0})},w=(e,t,o,f)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of Oe(t))!Re.call(e,c)&&c!==o&&C(e,c,{get:()=>t[c],enumerable:!(f=Me(t,c))||f.enumerable});return e};var s=(e,t,o)=>(o=e!=null?Le(Ie(e)):{},w(t||!e||!e.__esModule?C(o,"default",{value:e,enumerable:!0}):o,e)),He=e=>w(C({},"__esModule",{value:!0}),e);var je={};Ae(je,{default:()=>Ee});module.exports=He(je);var r=require("react/jsx-runtime"),l=s(require("react")),G=require("../../helpers/index.js"),B=s(require("./ProductImage.js")),N=s(require("./ProductInfo.js")),L=s(require("./ProductTags.js")),M=s(require("./DiscountBadge.js")),O=s(require("./GiftSelection.js")),I=s(require("./PriceAndActions.js")),R=require("./context.js");const De=[],v=l.forwardRef(({productData:e,gifts:t=De,giftType:o=1,selectedGiftSku:f,sceneImages:c,tags:A,layout:H,className:D,onProductClick:h,onProductImageClick:y,onLearnMore:E,onShopNow:j,onAddToCart:z,onGiftClick:P,onGiftSelectionChange:W,classNames:g,soldOutText:V,renderOriginalPrice:_,tagTypeConfig:Y,fill:$,outline:q,customTagStyle:J,customTagsIcon:K,renderDiscountBadge:Q,discountTagTextColor:U,giftTagBgColor:X,giftTagTextColor:Z,...ee},te)=>{const{layout:oe,theme:ne,tagTypeConfig:re,fill:ie,outline:ae,customTagStyle:le,customTagsIcon:ce,renderDiscountBadge:se,discountTagTextColor:de,giftTagBgColor:ue,giftTagTextColor:fe}=l.useContext(R.BuyOneGetOneShelfContext),x=H??oe,ge=Y??re,me=$??ie,pe=q??ae,Ce=J??le,xe=K??ce,Te=Q??se,Ge=U??de,he=X??ue,ye=Z??fe,[Pe,Se]=l.useState(!1),[be,ke]=l.useState(!1),[S,m]=l.useState(()=>!t||t.length===0?[]:o===2?t.map(n=>n.id):[t[0].id]),T=l.useMemo(()=>t?t.map(n=>({...n,selected:S.includes(n.id)})):[],[t,S]);l.useEffect(()=>{if(!t||t.length===0){m([]);return}m(o===2?t.map(n=>n.id):n=>{const i=n[0];return i&&t.some(d=>d.id===i)?[i]:[t[0].id]})},[t,o]);const u=l.useMemo(()=>({...e,gifts:t,gift_type:o}),[e,t,o]),Fe=n=>{if(o===2){const i=T.filter(a=>a.selected);P?.(n,i);return}m(()=>{const i=[n.id],a=t?.filter(d=>i.includes(d.id))||[];return P?.(n,a),W?.(a,u),i})},p=!!(y??h),b=`/products/${e.handle}`,k=()=>{(y??h)?.(u)},F=async(n,i)=>{const a=T.filter(Ne=>Ne.selected),d=i==="primary"?ke:Se;d(!0);try{switch(n){case"buyNow":await j?.(u,a);break;case"addCart":await z?.(u,a);break;case"learnMore":await E?.(u,a);break}}finally{d(!1)}},we=e.learnMoreFun??"learnMore",ve=e.shopNowFun??"buyNow",Be=t.length>0;return(0,r.jsxs)("div",{ref:te,className:(0,G.cn)("bg-container-primary rounded-box relative flex items-stretch overflow-hidden",x==="horizontal"?["laptop:flex-row flex-col","laptop:col-span-2",Be&&"lg-desktop:min-h-[560px] desktop:min-h-[448px] tablet:min-h-[526px] min-h-[610px]"]:["flex-col justify-between"],D),...ee,children:[(0,r.jsx)(M.default,{text:e.discountAmount,style:Ce,icon:xe,renderBadge:Te,className:g?.productCardDiscountBadge,textClassName:g?.productCardDiscountBadgeText,textColor:Ge}),(0,r.jsx)(B.default,{images:c,name:e.name,layout:x,onClick:p?k:void 0,href:p?void 0:b}),(0,r.jsx)("div",{className:(0,G.cn)("bg-container-primary desktop:p-6 flex flex-col justify-between p-4",x==="horizontal"?["rounded-r-box laptop:rounded-r-box tablet:rounded-b-box tablet:rounded-l-none","laptop:basis-[39.1%]","desktop:basis-[42.1%]","lg-desktop:basis-[42.1%]","shrink-0"]:["rounded-b-box","w-full","grow"]),children:(0,r.jsxs)("div",{className:"flex flex-1 flex-col justify-between gap-6",children:[(0,r.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,r.jsx)(L.default,{tags:e.tags||A,tagTypeConfig:ge,fill:me,outline:pe}),(0,r.jsx)(N.default,{name:e.name,onClick:p?k:void 0,href:p?void 0:b,description:e.description,classNames:g})]}),(0,r.jsx)(O.default,{freeGiftLabel:e.freeGiftLabel,freeGifts:T,onGiftClick:Fe,giftType:o,selectedGiftSku:f,theme:ne,tagBgColor:he,tagTextColor:ye}),(0,r.jsx)(I.default,{currentPrice:e.currentPrice??"",originalPrice:e.originalPrice,priceLabel:e.priceLabel,learnMoreText:e.learnMoreText,shopNowText:e.shopNowText,soldOutText:V,onLearnMore:()=>F(we,"secondary"),onShopNow:()=>F(ve,"primary"),availableForSale:e.availableForSale,learnMoreLoading:Pe,shopNowLoading:be,trackingTitle:e.name,trackingDescription:e.description,trackingSku:e.sku,classNames:g,renderOriginalPrice:_})]})})]})});v.displayName="BuyOneGetOneShelf.ProductCard";var Ee=v;
@@ -1,12 +1,9 @@
1
1
  import * as React from 'react';
2
- import type { ProductTag } from './types.js';
3
2
  export interface ProductImageProps extends React.HTMLAttributes<HTMLDivElement> {
4
3
  /** 响应式图片集合 */
5
4
  images: any;
6
5
  /** 产品名称,用作 alt 文本 */
7
6
  name: string;
8
- /** 产品标签 */
9
- tags?: ProductTag[];
10
7
  /** 布局模式 */
11
8
  layout?: 'horizontal' | 'vertical';
12
9
  /** 点击回调 */
@@ -1 +1 @@
1
- "use strict";"use client";var k=Object.create;var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var I=(e,t)=>{for(var o in t)c(e,o,{get:t[o],enumerable:!0})},g=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of L(t))!T.call(e,i)&&i!==o&&c(e,i,{get:()=>t[i],enumerable:!(r=y(t,i))||r.enumerable});return e};var d=(e,t,o)=>(o=e!=null?k(N(e)):{},g(t||!e||!e.__esModule?c(o,"default",{value:e,enumerable:!0}):o,e)),w=e=>g(c({},"__esModule",{value:!0}),e);var C={};I(C,{default:()=>x});module.exports=w(C);var a=require("react/jsx-runtime"),$=d(require("react")),f=require("../../helpers/index.js"),P=d(require("../../components/picture.js")),b=d(require("../../components/badge.js")),h=require("../../shared/LocalizedLink.js");const u=({images:e,name:t,tags:o,layout:r})=>{const{laptop:i,mobile:l,tablet:s,desktop:n,lgDesktop:m}=e;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(P.default,{source:`${l?.url}, ${s?.url} 768, ${i?.url} 1024, ${n?.url} 1440, ${m?.url} 1920`,alt:t,className:(0,f.cn)({"laptop:absolute inset-0 size-full static":r==="horizontal","w-full h-auto":r==="vertical"}),imgClassName:"size-full object-cover"}),o&&o.length>0&&(0,a.jsx)("div",{className:"absolute left-4 top-4 flex gap-2",children:o.map((p,z)=>(0,a.jsx)(b.default,{variant:p.variant,size:"lg",promotionalType:p.variant==="promotional"?p.promotionalType:void 0,children:p.label},z))})]})},v=$.forwardRef(({images:e,name:t,tags:o,layout:r="horizontal",className:i,onClick:l,href:s},n)=>{const m=(0,f.cn)("relative grow overflow-hidden",r==="horizontal"?["min-h-[240px]","laptop:basis-[60.9%]","desktop:basis-[57.9%]","lg-desktop:basis-[57.9%]"]:["h-fit grow-0"],l||s?"cursor-pointer":"",i);return l?(0,a.jsx)("div",{ref:n,className:m,onClick:l,children:(0,a.jsx)(u,{images:e,name:t,tags:o,layout:r})}):s?(0,a.jsx)(h.LocalizedLink,{href:s,className:m,children:(0,a.jsx)("div",{ref:n,children:(0,a.jsx)(u,{images:e,name:t,tags:o,layout:r})})}):(0,a.jsx)("div",{ref:n,className:m,children:(0,a.jsx)(u,{images:e,name:t,tags:o,layout:r})})});v.displayName="ProductImage";var x=v;
1
+ "use strict";"use client";var P=Object.create;var c=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var L=(e,t)=>{for(var o in t)c(e,o,{get:t[o],enumerable:!0})},d=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of h(t))!k.call(e,r)&&r!==o&&c(e,r,{get:()=>t[r],enumerable:!(i=b(t,r))||i.enumerable});return e};var p=(e,t,o)=>(o=e!=null?P(z(e)):{},d(t||!e||!e.__esModule?c(o,"default",{value:e,enumerable:!0}):o,e)),I=e=>d(c({},"__esModule",{value:!0}),e);var $={};L($,{default:()=>w});module.exports=I($);var a=require("react/jsx-runtime"),N=p(require("react")),u=require("../../helpers/index.js"),g=p(require("../../components/picture.js")),v=require("../../shared/LocalizedLink.js");const m=({images:e,name:t,layout:o})=>{const{laptop:i,mobile:r,tablet:s,desktop:l,lgDesktop:n}=e;return(0,a.jsx)(g.default,{source:`${r?.url}, ${s?.url} 768, ${i?.url} 1024, ${l?.url} 1440, ${n?.url} 1920`,alt:t,className:(0,u.cn)({"laptop:absolute inset-0 size-full static":o==="horizontal","w-full h-auto":o==="vertical"}),imgClassName:"size-full object-cover"})},f=N.forwardRef(({images:e,name:t,layout:o="horizontal",className:i,onClick:r,href:s},l)=>{const n=(0,u.cn)("relative grow overflow-hidden",o==="horizontal"?["min-h-[240px]","laptop:basis-[60.9%]","desktop:basis-[57.9%]","lg-desktop:basis-[57.9%]"]:["h-fit grow-0"],r||s?"cursor-pointer":"",i);return r?(0,a.jsx)("div",{ref:l,className:n,onClick:r,children:(0,a.jsx)(m,{images:e,name:t,layout:o})}):s?(0,a.jsx)(v.LocalizedLink,{href:s,className:n,children:(0,a.jsx)("div",{ref:l,children:(0,a.jsx)(m,{images:e,name:t,layout:o})})}):(0,a.jsx)("div",{ref:l,className:n,children:(0,a.jsx)(m,{images:e,name:t,layout:o})})});f.displayName="ProductImage";var w=f;
@@ -0,0 +1,14 @@
1
+ import type { BuyOneGetOneShelfCustomTagProps, ProductTag } from './types.js';
2
+ export interface ProductTagsProps extends Pick<BuyOneGetOneShelfCustomTagProps, 'tagTypeConfig' | 'fill' | 'outline'> {
3
+ /** 产品标签 */
4
+ tags?: ProductTag[];
5
+ className?: string;
6
+ }
7
+ /**
8
+ * ProductTags - 产品标题上方的标签列表
9
+ */
10
+ declare const ProductTags: {
11
+ ({ tags, tagTypeConfig, fill, outline, className }: ProductTagsProps): import("react/jsx-runtime").JSX.Element | null;
12
+ displayName: string;
13
+ };
14
+ export default ProductTags;
@@ -0,0 +1 @@
1
+ "use strict";"use client";var T=Object.create;var s=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var v=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},d=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of y(e))!C.call(o,r)&&r!==t&&s(o,r,{get:()=>e[r],enumerable:!(i=P(e,r))||i.enumerable});return o};var S=(o,e,t)=>(t=o!=null?T(b(o)):{},d(e||!o||!o.__esModule?s(t,"default",{value:o,enumerable:!0}):t,o)),O=o=>d(s({},"__esModule",{value:!0}),o);var V={};v(V,{default:()=>k});module.exports=O(V);var g=require("react/jsx-runtime"),w=require("react"),p=require("../../helpers/index.js"),m=S(require("../../components/badge.js"));const h=(o,e,{tagTypeConfig:t,fill:i,outline:r})=>{const n=((e===0?t?.firstTagVariant:e===1?t?.secondTagVariant:void 0)||void 0)??o.variant;if(n==="promotional")return{variant:n};const a=n==="fill"?{outline:i?.outlineColor,bg:i?.bgColor}:{outline:r?.outlineColor,bg:r?.bgColor},c={...a.outline?{outlineColor:a.outline}:{},...a.bg?{backgroundColor:a.bg,backgroundImage:"none"}:{}};return n==="outline"&&a.outline&&(c.color=a.outline),{variant:n,style:Object.keys(c).length>0?c:void 0}},f=({tags:o,tagTypeConfig:e,fill:t,outline:i,className:r})=>!o||o.length===0?null:(0,g.jsx)("div",{className:(0,p.cn)("bogo-shelf-tags flex flex-wrap gap-2",r),children:o.map((l,u)=>{const{variant:n,style:a}=h(l,u,{tagTypeConfig:e,fill:t,outline:i});return(0,g.jsx)(m.default,{variant:n,size:"lg",style:a,promotionalType:n==="promotional"?l.promotionalType:void 0,children:l.label},u)})});f.displayName="BuyOneGetOneShelf.ProductTags";var k=f;
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
+ import type { BuyOneGetOneShelfCustomTagProps } from './types.js';
2
3
  export declare const BuyOneGetOneShelfContext: React.Context<{
3
4
  layout: "horizontal" | "vertical";
4
5
  theme?: "light" | "dark";
5
- }>;
6
+ } & BuyOneGetOneShelfCustomTagProps>;
@@ -1 +1 @@
1
- "use strict";var h=Object.create;var r=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var x=(t,e)=>{for(var o in e)r(t,o,{get:e[o],enumerable:!0})},n=(t,e,o,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of c(e))!u.call(t,a)&&a!==o&&r(t,a,{get:()=>e[a],enumerable:!(l=i(e,a))||l.enumerable});return t};var y=(t,e,o)=>(o=t!=null?h(m(t)):{},n(e||!t||!t.__esModule?r(o,"default",{value:t,enumerable:!0}):o,t)),f=t=>n(r({},"__esModule",{value:!0}),t);var z={};x(z,{BuyOneGetOneShelfContext:()=>s});module.exports=f(z);var p=y(require("react"));const s=p.createContext({layout:"horizontal"});
1
+ "use strict";var s=Object.create;var a=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var y=(t,e)=>{for(var o in e)a(t,o,{get:e[o],enumerable:!0})},l=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of m(e))!u.call(t,r)&&r!==o&&a(t,r,{get:()=>e[r],enumerable:!(n=h(e,r))||n.enumerable});return t};var i=(t,e,o)=>(o=t!=null?s(p(t)):{},l(e||!t||!t.__esModule?a(o,"default",{value:t,enumerable:!0}):o,t)),O=t=>l(a({},"__esModule",{value:!0}),t);var C={};y(C,{BuyOneGetOneShelfContext:()=>c});module.exports=O(C);var f=i(require("react"));const c=f.createContext({layout:"horizontal"});
@@ -5,4 +5,4 @@ declare const BuyOneGetOneShelf: {
5
5
  ProductCard: React.ForwardRefExoticComponent<import("./ProductCard.js").ProductCardProps & React.RefAttributes<HTMLDivElement>>;
6
6
  };
7
7
  export default BuyOneGetOneShelf;
8
- export type { FreeGift, FreeGiftWithSelection, ProductTag, ButtonFunctionType, BuyOneGetOneShelfSemanticName, BuyOneGetOneShelfRootSemanticName, BuyOneGetOneShelfProductCardSemanticName, ResponsiveImage, ResponsiveImages, BaseProductData, PureProductData, WithGiftData, ProductData, ProductCardData, CopyConfig, BogoItem, BuyOneGetOneShelfData, BuyOneGetOneShelfProps, BuyOneGetOneShelfCardProps, } from './types.js';
8
+ export type { FreeGift, FreeGiftWithSelection, ProductTag, ButtonFunctionType, BuyOneGetOneShelfSemanticName, BuyOneGetOneShelfRootSemanticName, BuyOneGetOneShelfProductCardSemanticName, BuyOneGetOneShelfCustomTagProps, DiscountTagStyle, DiscountBadgeRenderContext, TagVariant, TagTypeConfig, TagColorConfig, ResponsiveImage, ResponsiveImages, BaseProductData, PureProductData, WithGiftData, ProductData, ProductCardData, CopyConfig, BogoItem, BuyOneGetOneShelfData, BuyOneGetOneShelfProps, BuyOneGetOneShelfCardProps, } from './types.js';
@@ -1 +1 @@
1
- "use strict";"use client";var k=Object.create;var d=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var L=(e,t)=>{for(var o in t)d(e,o,{get:t[o],enumerable:!0})},O=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of T(t))!I.call(e,n)&&n!==o&&d(e,n,{get:()=>t[n],enumerable:!(i=z(t,n))||i.enumerable});return e};var R=(e,t,o)=>(o=e!=null?k(w(e)):{},O(t||!e||!e.__esModule?d(o,"default",{value:e,enumerable:!0}):o,e)),M=e=>O(d({},"__esModule",{value:!0}),e);var A={};L(A,{default:()=>W});module.exports=M(A);var r=require("react/jsx-runtime"),a=R(require("react")),s=require("../../helpers/index.js"),C=R(require("./ProductCard.js")),u=require("../../components/index.js"),N=require("./context.js"),B=require("../../hooks/useExposure.js");const H="shelf",V="buy_one_get_one_shelf";function x(e){return a.Children.toArray(e).flatMap(t=>a.isValidElement(t)&&t.type===a.Fragment?x(t.props.children):[t])}function F(e){return a.isValidElement(e)?e.props.layout??"horizontal":"horizontal"}function _(e,t){let o=0,i=0;for(let n=0;n<t;n++){const p=F(e[n])==="horizontal"?2:1;p===2&&o>0&&(o=0),o+=p,o===2&&(i=n+1,o=0)}return e.slice(0,i)}const v=a.forwardRef(({className:e,classNames:t={},theme:o,title:i,subtitle:n,children:p,viewMoreThreshold:y=4,viewMoreText:S="View More",viewLessText:G="View Less",...P},b)=>{const f=a.useRef(null),[c,E]=a.useState(!1);(0,B.useExposure)(f,{componentType:H,componentName:V,componentTitle:i,componentDescription:n}),a.useImperativeHandle(b,()=>f.current);const m=x(p),h=m.length>y,D=(h&&!c?_(m,y):m).map(l=>{if(!a.isValidElement(l))return l;const g=l.props;return g.layout==="horizontal"?a.cloneElement(l,{className:(0,s.cn)(g.className,"laptop:col-span-2")}):l});return(0,r.jsx)(N.BuyOneGetOneShelfContext.Provider,{value:{layout:"horizontal",theme:o},children:(0,r.jsxs)("div",{ref:f,className:(0,s.cn)("bogo-shelf-root w-full py-0",{"aiui-dark":o==="dark"},e,t?.root),...P,children:[i&&(0,r.jsx)(u.Heading,{as:"h2",size:3,html:i,className:(0,s.cn)("bogo-shelf-title text-info-primary mb-4",t?.title)}),n&&(0,r.jsx)(u.Text,{size:3,as:"p",html:n,className:(0,s.cn)("bogo-shelf-description text-info-primary mb-6",t?.description)}),(0,r.jsx)("div",{className:(0,s.cn)("grid grid-cols-1 gap-6","laptop:grid-cols-2"),children:D}),h&&(0,r.jsx)("div",{className:"mt-6 flex justify-center",children:(0,r.jsxs)("button",{type:"button",onClick:()=>E(l=>!l),"aria-expanded":c,className:(0,s.cn)("hover:text-brand-0 lg-desktop:text-[16px] text-info-primary flex cursor-pointer items-center gap-2 border-none bg-transparent text-[14px] font-bold outline-none transition-colors",t?.viewMoreBtn),children:[c?G:S,(0,r.jsx)("svg",{className:(0,s.cn)("size-4 transition-transform",c&&"rotate-180"),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})})]})})});v.displayName="BuyOneGetOneShelf.Root";const j={Root:v,ProductCard:C.default};var W=j;
1
+ "use strict";"use client";var j=Object.create;var u=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var q=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var K=(e,t)=>{for(var o in t)u(e,o,{get:t[o],enumerable:!0})},P=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of A(t))!J.call(e,n)&&n!==o&&u(e,n,{get:()=>t[n],enumerable:!(s=W(t,n))||s.enumerable});return e};var b=(e,t,o)=>(o=e!=null?j(q(e)):{},P(t||!e||!e.__esModule?u(o,"default",{value:e,enumerable:!0}):o,e)),Q=e=>P(u({},"__esModule",{value:!0}),e);var te={};K(te,{default:()=>ee});module.exports=Q(te);var a=require("react/jsx-runtime"),r=b(require("react")),i=require("../../helpers/index.js"),k=b(require("./ProductCard.js")),d=require("../../components/index.js"),z=require("./context.js"),w=require("../../hooks/useExposure.js");const U="shelf",X="buy_one_get_one_shelf";function D(e){return r.Children.toArray(e).flatMap(t=>r.isValidElement(t)&&t.type===r.Fragment?D(t.props.children):[t])}function Y(e){return r.isValidElement(e)?e.props.layout??"horizontal":"horizontal"}function Z(e,t){let o=0,s=0;for(let n=0;n<t;n++){const p=Y(e[n])==="horizontal"?2:1;p===2&&o>0&&(o=0),o+=p,o===2&&(s=n+1,o=0)}return e.slice(0,s)}const E=r.forwardRef(({className:e,classNames:t={},theme:o,title:s,subtitle:n,children:p,viewMoreThreshold:y=4,viewMoreText:L="View More",viewLessText:M="View Less",tagTypeConfig:h,fill:O,outline:R,customTagStyle:g,customTagsIcon:x,renderDiscountBadge:v,discountTagTextColor:C,giftTagBgColor:N,giftTagTextColor:S,...V},I)=>{const f=r.useRef(null),[c,T]=r.useState(!1);(0,w.useExposure)(f,{componentType:U,componentName:X,componentTitle:s,componentDescription:n}),r.useImperativeHandle(I,()=>f.current);const m=D(p),B=m.length>y,H=B&&!c?Z(m,y):m,F=r.useMemo(()=>({layout:"horizontal",theme:o,tagTypeConfig:h,fill:O,outline:R,customTagStyle:g,customTagsIcon:x,renderDiscountBadge:v,discountTagTextColor:C,giftTagBgColor:N,giftTagTextColor:S}),[o,h,O,R,g,x,v,C,N,S]),_=H.map(l=>{if(!r.isValidElement(l))return l;const G=l.props;return G.layout==="horizontal"?r.cloneElement(l,{className:(0,i.cn)(G.className,"laptop:col-span-2")}):l});return(0,a.jsx)(z.BuyOneGetOneShelfContext.Provider,{value:F,children:(0,a.jsxs)("div",{ref:f,className:(0,i.cn)("bogo-shelf-root w-full py-0",{"aiui-dark":o==="dark"},e,t?.root),...V,children:[s&&(0,a.jsx)(d.Heading,{as:"h2",size:3,html:s,className:(0,i.cn)("bogo-shelf-title text-info-primary mb-4",t?.title)}),n&&(0,a.jsx)(d.Text,{size:3,as:"p",html:n,className:(0,i.cn)("bogo-shelf-description text-info-primary mb-6",t?.description)}),(0,a.jsx)("div",{className:(0,i.cn)("grid grid-cols-1 gap-6","laptop:grid-cols-2"),children:_}),B&&(0,a.jsx)("div",{className:"mt-6 flex justify-center",children:(0,a.jsxs)("button",{type:"button",onClick:()=>T(l=>!l),"aria-expanded":c,className:(0,i.cn)("hover:text-brand-0 lg-desktop:text-[16px] text-info-primary flex cursor-pointer items-center gap-2 border-none bg-transparent text-[14px] font-bold outline-none transition-colors",t?.viewMoreBtn),children:[c?M:L,(0,a.jsx)("svg",{className:(0,i.cn)("size-4 transition-transform",c&&"rotate-180"),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})})]})})});E.displayName="BuyOneGetOneShelf.Root";const $={Root:E,ProductCard:k.default};var ee=$;