@anker-in/headless-ui 1.3.78-alpha.1792675541810 → 1.3.79
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 +0 -57
- package/dist/cjs/biz-components/ActiveShelf/ProductCard.d.ts +0 -2
- package/dist/cjs/biz-components/ActiveShelf/ProductCard.js +1 -1
- package/dist/cjs/biz-components/ActiveShelf/index.d.ts +0 -2
- 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.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +0 -2
- package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/cjs/biz-components/BrandEquity/types.d.ts +0 -2
- package/dist/cjs/biz-components/BrandEquity/types.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/FreeGiftItem.d.ts +0 -4
- package/dist/cjs/biz-components/BuyOneGetOneShelf/FreeGiftItem.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/GiftSelection.d.ts +0 -4
- 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 +3 -0
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductImage.js +1 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/context.d.ts +1 -2
- 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 +3 -70
- 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 +2 -8
- package/dist/cjs/biz-components/ImageWithText/types.js +1 -1
- package/dist/cjs/biz-components/Ksp/index.d.ts +0 -2
- 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/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 +0 -2
- 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/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 +0 -2
- 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/index.d.ts +0 -10
- package/dist/cjs/biz-components/SecondaryBanner/index.js +1 -1
- package/dist/cjs/biz-components/Specs/dropdown.js +2 -1
- 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/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/useDraggableScroll.js +1 -1
- package/dist/cjs/hooks/useExposure.d.ts +1 -1
- package/dist/cjs/hooks/useExposure.js +1 -1
- package/dist/cjs/hooks/useViewItemList.d.ts +1 -1
- package/dist/cjs/index.d.ts +4 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/shared/Styles.d.ts +0 -2
- package/dist/cjs/shared/Styles.js +1 -1
- package/dist/esm/biz-components/ActiveShelf/ProductCard.d.ts +0 -2
- package/dist/esm/biz-components/ActiveShelf/ProductCard.js +1 -1
- package/dist/esm/biz-components/ActiveShelf/index.d.ts +0 -2
- 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.js +1 -1
- package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +0 -2
- package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
- package/dist/esm/biz-components/BrandEquity/types.d.ts +0 -2
- package/dist/esm/biz-components/BuyOneGetOneShelf/FreeGiftItem.d.ts +0 -4
- package/dist/esm/biz-components/BuyOneGetOneShelf/FreeGiftItem.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/GiftSelection.d.ts +0 -4
- 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 +3 -0
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductImage.js +1 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/context.d.ts +1 -2
- 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 +3 -70
- 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 +2 -8
- package/dist/esm/biz-components/Ksp/index.d.ts +0 -2
- 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/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 +0 -2
- 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/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 +0 -2
- 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/index.d.ts +0 -10
- package/dist/esm/biz-components/SecondaryBanner/index.js +1 -1
- package/dist/esm/biz-components/Specs/dropdown.js +2 -1
- 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/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/useDraggableScroll.js +1 -1
- package/dist/esm/hooks/useExposure.d.ts +1 -1
- package/dist/esm/hooks/useExposure.js +1 -1
- package/dist/esm/hooks/useViewItemList.d.ts +1 -1
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/shared/Styles.d.ts +0 -2
- package/dist/esm/shared/Styles.js +1 -1
- package/dist/tokens/base.css +0 -28
- package/package.json +3 -17
- package/style.css +144 -261
- package/tailwind.config.js +0 -8
- package/dist/cjs/biz-components/BuyOneGetOneShelf/DiscountBadge.d.ts +0 -25
- package/dist/cjs/biz-components/BuyOneGetOneShelf/DiscountBadge.js +0 -1
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductTags.d.ts +0 -14
- package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductTags.js +0 -1
- package/dist/cjs/biz-components/Listing/hooks/useStickyFlip.d.ts +0 -20
- package/dist/cjs/biz-components/Listing/hooks/useStickyFlip.js +0 -1
- package/dist/cjs/material/breakpoints.d.ts +0 -97
- package/dist/cjs/material/breakpoints.js +0 -1
- package/dist/cjs/material/contract.d.ts +0 -72
- package/dist/cjs/material/contract.js +0 -1
- package/dist/cjs/material/index.d.ts +0 -17
- package/dist/cjs/material/index.js +0 -1
- package/dist/cjs/material/material-meta.d.ts +0 -76
- package/dist/cjs/material/material-meta.js +0 -1
- package/dist/cjs/shared/ContainerGridContext.d.ts +0 -20
- package/dist/cjs/shared/ContainerGridContext.js +0 -1
- package/dist/cjs/shared/mediaGridSpec.d.ts +0 -87
- package/dist/cjs/shared/mediaGridSpec.js +0 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/DiscountBadge.d.ts +0 -25
- package/dist/esm/biz-components/BuyOneGetOneShelf/DiscountBadge.js +0 -1
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductTags.d.ts +0 -14
- package/dist/esm/biz-components/BuyOneGetOneShelf/ProductTags.js +0 -1
- package/dist/esm/biz-components/Listing/hooks/useStickyFlip.d.ts +0 -20
- package/dist/esm/biz-components/Listing/hooks/useStickyFlip.js +0 -1
- package/dist/esm/material/breakpoints.d.ts +0 -97
- package/dist/esm/material/breakpoints.js +0 -1
- package/dist/esm/material/contract.d.ts +0 -72
- package/dist/esm/material/contract.js +0 -1
- package/dist/esm/material/index.d.ts +0 -17
- package/dist/esm/material/index.js +0 -1
- package/dist/esm/material/material-meta.d.ts +0 -76
- package/dist/esm/material/material-meta.js +0 -1
- package/dist/esm/shared/ContainerGridContext.d.ts +0 -20
- package/dist/esm/shared/ContainerGridContext.js +0 -1
- package/dist/esm/shared/mediaGridSpec.d.ts +0 -87
- package/dist/esm/shared/mediaGridSpec.js +0 -1
package/CONTRIBUTING.md
CHANGED
|
@@ -221,63 +221,6 @@ 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
|
-
|
|
281
224
|
# Tesing
|
|
282
225
|
|
|
283
226
|
unit test 使用 [jest](https://jestjs.io/) 和 [@test-library/react](https://testing-library.com/)。
|
|
@@ -168,8 +168,6 @@ export interface ProductCardProps {
|
|
|
168
168
|
customTagsIcon?: Img;
|
|
169
169
|
/** 自定义折扣标签图标样式(style1/style2/style3 为内置预设,custom 为自定义上传) */
|
|
170
170
|
customTagStyle?: DiscountTagStyle;
|
|
171
|
-
/** 左上角折扣标签文字颜色,覆盖默认文字色;未设置时保持原样式 */
|
|
172
|
-
discountTagTextColor?: string;
|
|
173
171
|
/** 点击会员标签模块游客副标题(注册/登录)回调 */
|
|
174
172
|
onMemberSignUp?: () => void;
|
|
175
173
|
/** 点击会员标签模块付费会员折扣文案(加购付费会员sku)回调 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
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;
|
|
@@ -87,8 +87,6 @@ export interface ActiveShelfData {
|
|
|
87
87
|
customTagsIcon?: Img;
|
|
88
88
|
/** 自定义折扣标签图标样式(style1/style2/style3 为内置预设,custom 为自定义上传) */
|
|
89
89
|
customTagStyle?: DiscountTagStyle;
|
|
90
|
-
/** 左上角折扣标签文字颜色,覆盖默认文字色;未设置时保持原样式 */
|
|
91
|
-
discountTagTextColor?: string;
|
|
92
90
|
/** PC 端(≥768px)平铺最多展示行数 */
|
|
93
91
|
tileMaxRowsPc?: number;
|
|
94
92
|
/** 移动端(<768px)平铺最多展示行数 */
|
|
@@ -1 +1 @@
|
|
|
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
|
+
"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 +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:"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 +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||"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 +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:{}
|
|
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,6 +1,4 @@
|
|
|
1
1
|
import type { BrandEquityProps } from './types.js';
|
|
2
|
-
import 'swiper/css';
|
|
3
|
-
import 'swiper/css/pagination';
|
|
4
2
|
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>> & {
|
|
5
3
|
readonly $$typeof: symbol;
|
|
6
4
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var j=Object.create;var
|
|
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,8 +1,6 @@
|
|
|
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;
|
|
6
4
|
type?: 'icon' | 'avatar';
|
|
7
5
|
title: string;
|
|
8
6
|
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 d={};module.exports=g(d);
|
|
@@ -8,10 +8,6 @@ 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;
|
|
15
11
|
}
|
|
16
12
|
/**
|
|
17
13
|
* FreeGiftItem - 免费赠品项
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
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;
|
|
@@ -11,10 +11,6 @@ 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;
|
|
18
14
|
}
|
|
19
15
|
/**
|
|
20
16
|
* GiftSelection - 赠品选择区域
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
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,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { FreeGift, ProductCardData, PureProductData, ProductTag,
|
|
3
|
-
export interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement
|
|
2
|
+
import type { FreeGift, ProductCardData, PureProductData, ProductTag, BuyOneGetOneShelfProductCardSemanticName } from './types.js';
|
|
3
|
+
export interface ProductCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
4
|
/** 产品数据(不包含赠品信息) */
|
|
5
5
|
productData: PureProductData;
|
|
6
6
|
/** 赠品列表 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
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,9 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import type { ProductTag } from './types.js';
|
|
2
3
|
export interface ProductImageProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
4
|
/** 响应式图片集合 */
|
|
4
5
|
images: any;
|
|
5
6
|
/** 产品名称,用作 alt 文本 */
|
|
6
7
|
name: string;
|
|
8
|
+
/** 产品标签 */
|
|
9
|
+
tags?: ProductTag[];
|
|
7
10
|
/** 布局模式 */
|
|
8
11
|
layout?: 'horizontal' | 'vertical';
|
|
9
12
|
/** 点击回调 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
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,6 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { BuyOneGetOneShelfCustomTagProps } from './types.js';
|
|
3
2
|
export declare const BuyOneGetOneShelfContext: React.Context<{
|
|
4
3
|
layout: "horizontal" | "vertical";
|
|
5
4
|
theme?: "light" | "dark";
|
|
6
|
-
}
|
|
5
|
+
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
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"});
|
|
@@ -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,
|
|
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';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";"use client";var
|
|
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;
|