@anker-in/headless-ui 1.3.79 → 1.3.80-alpha.1792744127015
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +57 -0
- package/dist/cjs/biz-components/ActiveShelf/ProductCard.d.ts +2 -0
- package/dist/cjs/biz-components/ActiveShelf/ProductCard.js +1 -1
- package/dist/cjs/biz-components/ActiveShelf/index.d.ts +2 -0
- package/dist/cjs/biz-components/ActiveShelf/index.js +1 -1
- package/dist/cjs/biz-components/ActiveShelf/styles.js +1 -1
- package/dist/cjs/biz-components/ActivitySchedule/index.js +1 -1
- package/dist/cjs/biz-components/AiuiProvider/index.d.ts +2 -0
- package/dist/cjs/biz-components/AiuiProvider/index.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +2 -0
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/types.d.ts +2 -0
- package/dist/cjs/biz-components/BrandEquity/types.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/DiscountBadge.d.ts +25 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/DiscountBadge.js +1 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/FreeGiftItem.d.ts +4 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/FreeGiftItem.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/GiftSelection.d.ts +4 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/GiftSelection.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +2 -2
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductImage.d.ts +0 -3
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductImage.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductTags.d.ts +14 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductTags.js +1 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/context.d.ts +2 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/context.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/types.d.ts +70 -3
- package/dist/cjs/biz-components/BuyOneGetOneShelf/types.js +1 -1
- package/dist/cjs/biz-components/Category/index.js +1 -1
- package/dist/cjs/biz-components/EventSchedule/index.js +1 -1
- package/dist/cjs/biz-components/FooterNavigation/index.js +1 -1
- package/dist/cjs/biz-components/GraphicOverlay/GraphicOverlay.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
- package/dist/cjs/biz-components/HeroBanner/HeroBannerCarousel.js +1 -1
- package/dist/cjs/biz-components/ImageWithText/ImageWithText.js +1 -1
- package/dist/cjs/biz-components/ImageWithText/types.d.ts +8 -2
- package/dist/cjs/biz-components/ImageWithText/types.js +1 -1
- package/dist/cjs/biz-components/Ksp/index.d.ts +2 -0
- package/dist/cjs/biz-components/Ksp/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGridBox.js +1 -1
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
- package/dist/cjs/biz-components/Listing/hooks/useStickyFlip.d.ts +20 -0
- package/dist/cjs/biz-components/Listing/hooks/useStickyFlip.js +1 -0
- package/dist/cjs/biz-components/MarqueeReview/index.js +1 -1
- package/dist/cjs/biz-components/MediaPlayerBase/index.js +1 -1
- package/dist/cjs/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js +2 -2
- package/dist/cjs/biz-components/MediaShelf/ProductCard.d.ts +2 -0
- package/dist/cjs/biz-components/MediaShelf/ProductCard.js +1 -1
- package/dist/cjs/biz-components/MediaShelf/index.js +1 -1
- package/dist/cjs/biz-components/MiniCart/CircleProgress.d.ts +17 -1
- package/dist/cjs/biz-components/MiniCart/CircleProgress.js +1 -1
- package/dist/cjs/biz-components/MiniCart/MiniCartDialog.d.ts +4 -2
- package/dist/cjs/biz-components/MiniCart/MiniCartDialog.js +1 -1
- package/dist/cjs/biz-components/MiniCart/index.d.ts +42 -0
- package/dist/cjs/biz-components/MiniCart/index.js +1 -1
- package/dist/cjs/biz-components/ProductCompare/index.d.ts +1 -1
- package/dist/cjs/biz-components/ProductCompare/index.js +1 -1
- package/dist/cjs/biz-components/ProductHero/ProductHero.js +1 -1
- package/dist/cjs/biz-components/ProductHero/types.d.ts +2 -0
- package/dist/cjs/biz-components/ProductHero/types.js +1 -1
- package/dist/cjs/biz-components/ProductNav/ProductNav.js +1 -1
- package/dist/cjs/biz-components/PromotionalBar/index.js +1 -1
- package/dist/cjs/biz-components/SceneShelf/ProductCard.js +1 -1
- package/dist/cjs/biz-components/SearchPage/index.js +1 -1
- package/dist/cjs/biz-components/SecondaryBanner/SecondaryBannerCarousel.js +1 -1
- package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +22 -0
- package/dist/cjs/biz-components/SecondaryBanner/index.js +1 -1
- package/dist/cjs/biz-components/Specs/dropdown.js +1 -2
- package/dist/cjs/biz-components/Specs/index.js +1 -1
- package/dist/cjs/biz-components/ThreeDCarousel/ThreeDCarousel.js +1 -1
- package/dist/cjs/biz-components/Title/index.js +1 -1
- package/dist/cjs/biz-components/index.d.ts +1 -1
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/components/container.js +1 -1
- package/dist/cjs/components/link.js +1 -1
- package/dist/cjs/helpers/utils.js +1 -1
- package/dist/cjs/hooks/useCarouselPlayback.d.ts +6 -4
- package/dist/cjs/hooks/useCarouselPlayback.js +1 -1
- package/dist/cjs/hooks/useDraggableScroll.js +1 -1
- package/dist/cjs/hooks/useExposure.d.ts +7 -1
- package/dist/cjs/hooks/useExposure.js +1 -1
- package/dist/cjs/hooks/useIntersectionObserver.js +1 -1
- package/dist/cjs/hooks/useTracking.d.ts +23 -0
- package/dist/cjs/hooks/useTracking.js +1 -0
- package/dist/cjs/hooks/useViewItemList.d.ts +18 -8
- package/dist/cjs/hooks/useViewItemList.js +1 -1
- package/dist/cjs/index.d.ts +9 -4
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/material/breakpoints.d.ts +97 -0
- package/dist/cjs/material/breakpoints.js +1 -0
- package/dist/cjs/material/contract.d.ts +72 -0
- package/dist/cjs/material/contract.js +1 -0
- package/dist/cjs/material/index.d.ts +17 -0
- package/dist/cjs/material/index.js +1 -0
- package/dist/cjs/material/material-meta.d.ts +76 -0
- package/dist/cjs/material/material-meta.js +1 -0
- package/dist/cjs/shared/ContainerGridContext.d.ts +20 -0
- package/dist/cjs/shared/ContainerGridContext.js +1 -0
- package/dist/cjs/shared/Styles.d.ts +2 -0
- package/dist/cjs/shared/Styles.js +1 -1
- package/dist/cjs/shared/mediaGridSpec.d.ts +87 -0
- package/dist/cjs/shared/mediaGridSpec.js +1 -0
- package/dist/cjs/shared/track.d.ts +89 -0
- package/dist/cjs/shared/track.js +1 -1
- package/dist/cjs/shared/trackUrlRef.d.ts +27 -3
- package/dist/cjs/shared/trackUrlRef.js +1 -1
- package/dist/esm/biz-components/ActiveShelf/ProductCard.d.ts +2 -0
- package/dist/esm/biz-components/ActiveShelf/ProductCard.js +1 -1
- package/dist/esm/biz-components/ActiveShelf/index.d.ts +2 -0
- package/dist/esm/biz-components/ActiveShelf/index.js +1 -1
- package/dist/esm/biz-components/ActiveShelf/styles.js +1 -1
- package/dist/esm/biz-components/ActivitySchedule/index.js +1 -1
- package/dist/esm/biz-components/AiuiProvider/index.d.ts +2 -0
- package/dist/esm/biz-components/AiuiProvider/index.js +1 -1
- package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +2 -0
- package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/esm/biz-components/BrandEquity/types.d.ts +2 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/DiscountBadge.d.ts +25 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/DiscountBadge.js +1 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/FreeGiftItem.d.ts +4 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/FreeGiftItem.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/GiftSelection.d.ts +4 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/GiftSelection.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +2 -2
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductImage.d.ts +0 -3
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductImage.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductTags.d.ts +14 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductTags.js +1 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/context.d.ts +2 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/types.d.ts +70 -3
- package/dist/esm/biz-components/Category/index.js +1 -1
- package/dist/esm/biz-components/EventSchedule/index.js +1 -1
- package/dist/esm/biz-components/FooterNavigation/index.js +1 -1
- package/dist/esm/biz-components/GraphicOverlay/GraphicOverlay.js +1 -1
- package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
- package/dist/esm/biz-components/HeroBanner/HeroBannerCarousel.js +1 -1
- package/dist/esm/biz-components/ImageWithText/ImageWithText.js +1 -1
- package/dist/esm/biz-components/ImageWithText/types.d.ts +8 -2
- package/dist/esm/biz-components/Ksp/index.d.ts +2 -0
- package/dist/esm/biz-components/Ksp/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductGridBox.js +1 -1
- package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
- package/dist/esm/biz-components/Listing/hooks/useStickyFlip.d.ts +20 -0
- package/dist/esm/biz-components/Listing/hooks/useStickyFlip.js +1 -0
- package/dist/esm/biz-components/MarqueeReview/index.js +1 -1
- package/dist/esm/biz-components/MediaPlayerBase/index.js +1 -1
- package/dist/esm/biz-components/MediaSceneSwitcher/MediaSceneSwitcher.js +2 -2
- package/dist/esm/biz-components/MediaShelf/ProductCard.d.ts +2 -0
- package/dist/esm/biz-components/MediaShelf/ProductCard.js +1 -1
- package/dist/esm/biz-components/MediaShelf/index.js +1 -1
- package/dist/esm/biz-components/MiniCart/CircleProgress.d.ts +17 -1
- package/dist/esm/biz-components/MiniCart/CircleProgress.js +1 -1
- package/dist/esm/biz-components/MiniCart/MiniCartDialog.d.ts +4 -2
- package/dist/esm/biz-components/MiniCart/MiniCartDialog.js +1 -1
- package/dist/esm/biz-components/MiniCart/index.d.ts +42 -0
- package/dist/esm/biz-components/MiniCart/index.js +1 -1
- package/dist/esm/biz-components/ProductCompare/index.d.ts +1 -1
- package/dist/esm/biz-components/ProductCompare/index.js +1 -1
- package/dist/esm/biz-components/ProductHero/ProductHero.js +1 -1
- package/dist/esm/biz-components/ProductHero/types.d.ts +2 -0
- package/dist/esm/biz-components/ProductNav/ProductNav.js +1 -1
- package/dist/esm/biz-components/PromotionalBar/index.js +1 -1
- package/dist/esm/biz-components/SceneShelf/ProductCard.js +1 -1
- package/dist/esm/biz-components/SearchPage/index.js +1 -1
- package/dist/esm/biz-components/SecondaryBanner/SecondaryBannerCarousel.js +1 -1
- package/dist/esm/biz-components/SecondaryBanner/index.d.ts +22 -0
- package/dist/esm/biz-components/SecondaryBanner/index.js +1 -1
- package/dist/esm/biz-components/Specs/dropdown.js +1 -2
- package/dist/esm/biz-components/Specs/index.js +1 -1
- package/dist/esm/biz-components/ThreeDCarousel/ThreeDCarousel.js +1 -1
- package/dist/esm/biz-components/Title/index.js +1 -1
- package/dist/esm/biz-components/index.d.ts +1 -1
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/components/container.js +1 -1
- package/dist/esm/components/link.js +1 -1
- package/dist/esm/helpers/utils.js +1 -1
- package/dist/esm/hooks/useCarouselPlayback.d.ts +6 -4
- package/dist/esm/hooks/useCarouselPlayback.js +1 -1
- package/dist/esm/hooks/useDraggableScroll.js +1 -1
- package/dist/esm/hooks/useExposure.d.ts +7 -1
- package/dist/esm/hooks/useExposure.js +1 -1
- package/dist/esm/hooks/useIntersectionObserver.js +1 -1
- package/dist/esm/hooks/useTracking.d.ts +23 -0
- package/dist/esm/hooks/useTracking.js +1 -0
- package/dist/esm/hooks/useViewItemList.d.ts +18 -8
- package/dist/esm/hooks/useViewItemList.js +1 -1
- package/dist/esm/index.d.ts +9 -4
- package/dist/esm/index.js +1 -1
- package/dist/esm/material/breakpoints.d.ts +97 -0
- package/dist/esm/material/breakpoints.js +1 -0
- package/dist/esm/material/contract.d.ts +72 -0
- package/dist/esm/material/contract.js +1 -0
- package/dist/esm/material/index.d.ts +17 -0
- package/dist/esm/material/index.js +1 -0
- package/dist/esm/material/material-meta.d.ts +76 -0
- package/dist/esm/material/material-meta.js +1 -0
- package/dist/esm/shared/ContainerGridContext.d.ts +20 -0
- package/dist/esm/shared/ContainerGridContext.js +1 -0
- package/dist/esm/shared/Styles.d.ts +2 -0
- package/dist/esm/shared/Styles.js +1 -1
- package/dist/esm/shared/mediaGridSpec.d.ts +87 -0
- package/dist/esm/shared/mediaGridSpec.js +1 -0
- package/dist/esm/shared/track.d.ts +89 -0
- package/dist/esm/shared/track.js +1 -1
- package/dist/esm/shared/trackUrlRef.d.ts +27 -3
- package/dist/esm/shared/trackUrlRef.js +1 -1
- package/dist/tokens/base.css +28 -0
- package/package.json +17 -3
- package/style.css +274 -144
- 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
|
|
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:"
|
|
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||"
|
|
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
|
|
1
|
+
"use strict";"use client";var g=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var G=(a,e)=>{for(var i in e)g(a,i,{get:e[i],enumerable:!0})},w=(a,e,i,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of H(e))!L.call(a,o)&&o!==i&&g(a,o,{get:()=>e[o],enumerable:!(c=N(e,o))||c.enumerable});return a};var O=a=>w(g({},"__esModule",{value:!0}),a);var I={};G(I,{AiuiContext:()=>m,default:()=>q,useAiuiContext:()=>S});module.exports=O(I);var v=require("react/jsx-runtime"),x=require("../../shared/track.js"),A=require("../../shared/trackUrlRef.js"),t=require("react"),E=require("../../helpers/index.js");const m=(0,t.createContext)({trackingData:{},locale:void 0,copyWriting:{},navCollapsed:!1,setNavCollapsed:()=>{}}),S=()=>{const a=(0,t.useContext)(m);if(!a)throw new Error("useAiui must be used in <AiuiProvider>");return a},W=({children:a,...e})=>{const i=(0,t.useRef)(null),c=(0,t.useRef)(e?.trackingData),o=(0,t.useRef)(e?.pageHandle),[f,D]=(0,t.useState)(void 0);(0,t.useEffect)(()=>{e.localeMap&&Object.keys(e.localeMap).length>0&&(0,E.extendLocaleMap)(e.localeMap)},[e.localeMap]),(0,t.useEffect)(()=>{c.current=e?.trackingData},[e?.trackingData]),(0,t.useEffect)(()=>{o.current=e?.pageHandle},[e?.pageHandle]),(0,t.useEffect)(()=>{const p=i.current;if(!p)return;const b=(n,r)=>{const s={};if(!r||!r.attributes)return s;for(const R of Array.from(r.attributes)){const u=R?.name;u?.startsWith("data-headless-")&&(s[u]=r.getAttribute(u))}const T=s?.["data-headless-sku"],M=s?.["data-headless-creative-id"],h=s?.["data-headless-type-name"]?.split?.("#"),d=s?.["data-headless-title-desc-button"]?.split?.("#"),k=s?.["data-headless-nav-position"]?.split?.("#"),P=(0,A.buildPageGroup)({pageHandle:o.current,pageGroup:c.current?.pageGroup}),l=k?.[1],C=l===void 0||l===""?"":Number(l);(0,x.gaTrack)({event:"ga4Event",event_name:"component_click",event_parameters:{page_group:P,component_type:h?.[0]||"",component_name:h?.[1]||"",position:Number.isNaN(C)?"":C,navigation:k?.[0]||"",button_name:d?.[2]||"",SKU:T||"",creative_id:M||"",component_title:d?.[0]||"",component_description:d?.[1]||""}})},y=new MutationObserver(()=>{p.querySelectorAll("[data-headless-type-name]").forEach(n=>{n.hasAttribute("data-headless-track-bound")||(n.addEventListener("click",r=>b(r,n)),n.setAttribute("data-headless-track-bound","true"))})});return y.observe(p,{childList:!0,subtree:!0}),p.querySelectorAll("[data-headless-type-name]").forEach(n=>{n.hasAttribute("data-headless-track-bound")||(n.addEventListener("click",r=>b(r,n)),n.setAttribute("data-headless-track-bound","true"))}),()=>y.disconnect()},[]);const _=(0,t.useMemo)(()=>({...e,navCollapsed:f,setNavCollapsed:D}),[e,f]);return(0,v.jsx)(m.Provider,{value:_,children:(0,v.jsx)("div",{ref:i,children:a})})};var q=W;
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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';
|