@anker-in/headless-ui 1.3.61 → 1.3.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/cjs/biz-components/ActiveShelf/ProductCard.d.ts +9 -0
  2. package/dist/cjs/biz-components/ActiveShelf/ProductCard.js +1 -1
  3. package/dist/cjs/biz-components/ActiveShelf/ProductCard.js.map +3 -3
  4. package/dist/cjs/biz-components/ActiveShelf/index.d.ts +9 -0
  5. package/dist/cjs/biz-components/ActiveShelf/index.js +1 -1
  6. package/dist/cjs/biz-components/ActiveShelf/index.js.map +3 -3
  7. package/dist/cjs/biz-components/BuyOneGetOneShelf/PriceAndActions.d.ts +6 -0
  8. package/dist/cjs/biz-components/BuyOneGetOneShelf/PriceAndActions.js +1 -1
  9. package/dist/cjs/biz-components/BuyOneGetOneShelf/PriceAndActions.js.map +3 -3
  10. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +6 -0
  11. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
  12. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +3 -3
  13. package/dist/cjs/biz-components/BuyOneGetOneShelf/types.d.ts +6 -0
  14. package/dist/cjs/biz-components/BuyOneGetOneShelf/types.js +1 -1
  15. package/dist/cjs/biz-components/BuyOneGetOneShelf/types.js.map +1 -1
  16. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.d.ts +9 -0
  17. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js +1 -1
  18. package/dist/cjs/biz-components/SceneShelfV3/ProductCard.js.map +3 -3
  19. package/dist/cjs/biz-components/SceneShelfV3/index.d.ts +9 -0
  20. package/dist/cjs/biz-components/SceneShelfV3/index.js +1 -1
  21. package/dist/cjs/biz-components/SceneShelfV3/index.js.map +3 -3
  22. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.d.ts +32 -18
  23. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
  24. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplay.js.map +1 -1
  25. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  26. package/dist/cjs/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
  27. package/dist/cjs/biz-components/ShelfDisplayHorizontal/shelfDisplayHorizontalItem.js +1 -1
  28. package/dist/cjs/biz-components/ShelfDisplayHorizontal/shelfDisplayHorizontalItem.js.map +2 -2
  29. package/dist/esm/biz-components/ActiveShelf/ProductCard.d.ts +9 -0
  30. package/dist/esm/biz-components/ActiveShelf/ProductCard.js +1 -1
  31. package/dist/esm/biz-components/ActiveShelf/ProductCard.js.map +3 -3
  32. package/dist/esm/biz-components/ActiveShelf/index.d.ts +9 -0
  33. package/dist/esm/biz-components/ActiveShelf/index.js +1 -1
  34. package/dist/esm/biz-components/ActiveShelf/index.js.map +3 -3
  35. package/dist/esm/biz-components/BuyOneGetOneShelf/PriceAndActions.d.ts +6 -0
  36. package/dist/esm/biz-components/BuyOneGetOneShelf/PriceAndActions.js +1 -1
  37. package/dist/esm/biz-components/BuyOneGetOneShelf/PriceAndActions.js.map +3 -3
  38. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +6 -0
  39. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +1 -1
  40. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +3 -3
  41. package/dist/esm/biz-components/BuyOneGetOneShelf/types.d.ts +6 -0
  42. package/dist/esm/biz-components/BuyOneGetOneShelf/types.js.map +1 -1
  43. package/dist/esm/biz-components/SceneShelfV3/ProductCard.d.ts +9 -0
  44. package/dist/esm/biz-components/SceneShelfV3/ProductCard.js +1 -1
  45. package/dist/esm/biz-components/SceneShelfV3/ProductCard.js.map +3 -3
  46. package/dist/esm/biz-components/SceneShelfV3/index.d.ts +9 -0
  47. package/dist/esm/biz-components/SceneShelfV3/index.js +1 -1
  48. package/dist/esm/biz-components/SceneShelfV3/index.js.map +3 -3
  49. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.d.ts +32 -18
  50. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js +1 -1
  51. package/dist/esm/biz-components/ShelfDisplay/shelfDisplay.js.map +1 -1
  52. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js +1 -1
  53. package/dist/esm/biz-components/ShelfDisplay/shelfDisplayItem.js.map +2 -2
  54. package/dist/esm/biz-components/ShelfDisplayHorizontal/shelfDisplayHorizontalItem.js +1 -1
  55. package/dist/esm/biz-components/ShelfDisplayHorizontal/shelfDisplayHorizontalItem.js.map +2 -2
  56. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{Fragment as Ae,jsx as s,jsxs as f}from"react/jsx-runtime";import{useAiuiContext as Ne}from"../AiuiProvider/index.js";import{formatVariantPrice as Ce}from"./shelfDisplay.js";import _e from"../../components/picture.js";import Se from"../../components/badge.js";import{cn as w}from"../../helpers/utils.js";import{Text as Te}from"../../components/text.js";import fe from"../../components/button.js";import{gaTrack as Be}from"../../shared/track.js";import{trackUrlRef as Pe}from"../../shared/trackUrlRef.js";import{Heading as Le}from"../../components/heading.js";import{useExposure as $e}from"../../hooks/useExposure.js";import{useRef as De,useEffect as Ie,useMemo as ye,useState as F}from"react";const ge="image",he="product_shelf",xe=999999999e-2,ze=e=>{const t=e?.sku,_=e?.variants,M=_?.find(j=>j?.sku===t),G=M?.image?.url||_?.[0]?.image?.url||"",te=M?.image?.altText||_?.[0]?.image?.altText||e?.custom_name||e?.title||"";return{imageUrl:G,altText:te}},Fe=({items:e})=>e?.length?s("div",{className:"shelf-display-social-endorsements desktop:gap-2 absolute right-0 top-0 z-10 flex flex-col items-center gap-1",children:e.map((t,_)=>typeof t.icon=="string"?s("img",{src:t.icon,alt:t.label||"",loading:"lazy",className:"desktop:size-10 lg-desktop:size-12 size-8 object-contain"},_):s(Te,{"aria-label":t.label,className:"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full",children:t.icon},_))}):null,Ke=({data:e,configuration:t})=>{const{isDisplayBackImage:_=!1,itemShape:M,metafields:G,isTopTag:te=!1,isShowTag:j,isShowOriginalPrice:se,isShowShortTitle:ve=!1,isShowPricesTag:$=!1,pricesTagTextColor:E,pricesTagBgColor:O,itemsTagTextColor:v,itemsTagBgColor:J,formatPrice:re,renderOriginalPrice:K,renderPriceLabel:be,renderPrice:W}=t||{},{locale:T="es",copyWriting:ie,currencyDisplay:Q}=Ne(),{discounts:X,discountsCopy:oe}=G||{},le=De(null),[n,ne]=F([]),[ae,D]=F(""),[ce,pe]=F(!1),[b,H]=F(!1),me=(i,p,m,d)=>{const{primaryFun:x,onAddCart:S,onBuyNow:Z,onLearnMore:ee,event:we}=t||{};if(x){if(x==="AddCart"&&S)return S(i,p+1,m,d);if(x==="BuyNow"&&Z)return Z(i,p+1,m,d);if(x==="LearnMore"&&ee)return ee(i,p+1,m,d)}we?.primaryButton?.(i,p+1,m,d)},ke=(i,p,m,d)=>{const{secondaryFun:x,onAddCart:S,onBuyNow:Z,onLearnMore:ee,event:we}=t||{};if(x){if(x==="AddCart"&&S)return S(i,p+1,m,d);if(x==="BuyNow"&&Z)return Z(i,p+1,m,d);if(x==="LearnMore"&&ee)return ee(i,p+1,m,d)}we?.secondaryButton?.(i,p+1,m,d)},o=ye(()=>{const i=e?.variants||[];if(i.length)return e?.sku?i?.find?.(p=>p?.sku===e?.sku)||i[0]:i?.[0]},[e?.sku,e?.variants]),I=o?.id?.split?.("/")||[],N=I?.[I?.length-1],y=!o?.availableForSale||o?.price?.amount===xe||o?.price===xe,k=o?.coupons?.[0],de=e?.price?.currencyCode||"USD",U=ye(()=>Ce({locale:T,amount:k?k?.variant_price4wscode:o?.price,baseAmount:k?o?.price:0,currencyCode:de,currencyDisplay:Q,customFormatPrice:re}),[de,T,k,Q,o,re]),{price:z,basePrice:C,discount:B,discountAmount:A}=U,{imageUrl:R,altText:ue}=ze(e),q=e?.custom_name||e?.title,P=ve&&o?.metafields?.infos?.page_short_title||q,Y=e?.custom_description||e?.description,r=()=>{if(k?.value_type==="fixed_amount"){const i=A||"",p=i.match(/^(.*?)(\d[\d.,]*)(.*)$/);if(p){const[,m,d,x]=p;let S=d;return d.endsWith(".00")?S=d.replace(/\.00$/,""):d.endsWith(",00")&&(S=d.replace(/,00$/,"")),`${m}${S}${x}`}return i}return B||""};Ie(()=>{let i=[];if(B||A){const m=`${r()} ${X?.off||oe?.off||""}`;D(m)}const p=e?.tags?.filter?.(m=>m?.startsWith?.("CLtag"))?.map?.(m=>m?.replace?.("CLtag:",""))?.slice?.(0,B&&$?1:2)||[];ne(i.concat(p))},[e?.tags,B,A,$,X?.off,oe?.off]),$e(le,{componentType:ge,componentName:he,componentTitle:q,componentDescription:Y,position:t?.index+1});const l=async()=>{if(!ce&&!e?.custom_primary_link){pe(!0);try{await me(e,t?.index,t,k)}finally{pe(!1)}}},a=async()=>{if(!b&&!e?.custom_secondary_link){H(!0);try{await ke(e,t?.index,t,k)}finally{H(!1)}}},c=()=>f("div",{className:"shelf-display-product-content desktop:gap-6 lg-desktop:flex-[221] desktop:flex-[190] flex flex-[178] flex-col justify-between gap-4",children:[f("div",{className:"shelf-display-product-content-title-desc",children:[P?s(Le,{as:"h3",title:P||"",size:2,className:"shelf-display-product-title text-info-primary mb-1 line-clamp-2",html:P||""}):null,s(Te,{size:2,className:w("lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]"),html:Y||""})]}),f("div",{className:"shelf-display-product-content-price-button",children:[s("div",{className:"mb-2 flex items-center",children:W?W(e,{price:z,basePrice:C,discount:B,discountAmount:A,variant:o,coupon:k,isSoldOut:y}):y?s("div",{className:"lg-desktop:text-2xl text-info-primary text-xl font-bold",children:ie?.soldOutText}):f(Ae,{children:[s("div",{className:"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]",children:o?.availableForSale&&z||""}),K?K(e,{price:z,basePrice:C,discount:B,discountAmount:A}):C&&se&&s("div",{className:"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through",children:o?.availableForSale&&C||""})]})}),!W&&be?.(e,o),f("div",{className:w("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton&&!y?s(fe,{disabled:y&&t?.secondaryFun!=="LearnMore",variant:"secondary",href:e?.custom_secondary_link,as:e?.custom_secondary_link?"a":"button",onClick:a,loading:b,className:t.direction==="vertical"?"w-full":"",children:t?.secondaryButton||""}):null,t?.primaryButton?s(fe,{disabled:y&&t?.primaryFun!=="LearnMore",variant:"primary",href:e?.custom_primary_link,as:e?.custom_primary_link?"a":"button",onClick:l,loading:ce,className:t.direction==="vertical"?"w-full":"",children:t?.primaryButton||""}):null]})]})]}),u={...E?{color:E}:{},...O?{backgroundColor:O,backgroundImage:"none"}:{},...E||O?{outline:"none"}:{}},g={...v?{color:v}:{},...J?{backgroundColor:J,backgroundImage:"none"}:{},...v||J?{outlineColor:v}:{}},L=()=>f("div",{className:"lg-desktop:h-[28px] lg-desktop:flex-[28] box-border flex h-6 flex-[24] flex-wrap gap-1 overflow-hidden",children:[$&&ae&&s(Se,{className:"shelf-prices-tag",variant:"fill",style:u,children:ae||""}),j&&n?.length>0&&n?.map?.((i,p)=>s(Se,{className:"shelf-items-tag",variant:"outline",style:g,children:i},p))]}),h=e?.custom_bg_image,V=e?.custom_theme;return s("div",{ref:le,className:w("box-border w-full cursor-pointer overflow-hidden duration-300","rounded-box","lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[545] desktop:aspect-w-[316] desktop:aspect-h-[450]","laptop:aspect-w-[288] laptop:aspect-h-[422] aspect-w-[296] aspect-h-[422] relative","md-tablet:h-[422px] shelf-display-item",h?"bg-cover bg-center bg-no-repeat":"bg-background tablet:hover:bg-info-white",{"aiui-dark":V==="dark","aiui-light":V==="light"}),style:h?{backgroundImage:`url(${h})`}:void 0,children:_?s("div",{className:"absolute inset-0 box-border overflow-hidden",children:f("div",{className:"relative inset-0 size-full",children:[s(L,{}),s(_e,{source:R,alt:ue,className:w("flex h-full justify-center object-cover [&_img]:w-auto",{"opacity-0":h})}),s("div",{className:"desktop:p-6 absolute inset-x-0 bottom-0 box-border overflow-hidden p-4",children:c()})]})}):f("div",{className:"desktop:p-6 desktop:pt-4 desktop:gap-2 absolute inset-0 box-border flex flex-col justify-between gap-1 overflow-hidden p-4",children:[s(L,{}),f("div",{className:w("shelf-display-item-image lg-desktop:flex-[240] relative inline-block w-full flex-[180] overflow-hidden",{"opacity-0":h}),children:[s("a",{"aria-label":q,target:t?.target,href:Pe(`${T==="us"||!T?"":`/${T}`}/products/${e?.handle}?variant=${N}`,`${ge}_${he}`),onClick:()=>{Be({event:"ga4Event",event_name:"select_item",event_parameters:{page_group:"Home Page",item_list_name:"Home_Page_Bundle",items:[{item_id:e?.sku||o?.sku,item_name:e?.name,item_variant:o?.name,price:o?.price,index:t?.index+1}]}})},children:s(_e,{source:R,alt:ue,className:"flex h-full justify-center object-cover [&_img]:w-auto"})}),s(Fe,{items:e?.socialEndorsements})]}),c()]})},e?.id||e?.handle)},Qe=({data:e,configuration:t})=>{const{itemShape:_,itemLength:M,metafields:G,isShowShortTitle:te,formatPrice:j,renderOriginalPrice:se,renderPriceLabel:ve,renderPrice:$}=t||{},{discounts:E,discountsCopy:O}=G||{},{locale:v="us",copyWriting:J,currencyDisplay:re}=Ne(),[K,be]=F([]),W=De(null),[T,ie]=F(!1),[Q,X]=F(!1),oe=(r,l,a,c)=>{const{primaryFun:u,onAddCart:g,onBuyNow:L,onLearnMore:h,event:V}=t||{};if(u){if(u==="AddCart"&&g)return g(r,l+1,a,c);if(u==="BuyNow"&&L)return L(r,l+1,a,c);if(u==="LearnMore"&&h)return h(r,l+1,a,c)}V?.primaryButton?.(r,l+1,a,c)},le=(r,l,a,c)=>{const{secondaryFun:u,onAddCart:g,onBuyNow:L,onLearnMore:h,event:V}=t||{};if(u){if(u==="AddCart"&&g)return g(r,l+1,a,c);if(u==="BuyNow"&&L)return L(r,l+1,a,c);if(u==="LearnMore"&&h)return h(r,l+1,a,c)}V?.secondaryButton?.(r,l+1,a,c)},n=ye(()=>{const r=e?.variants||[];if(r.length)return e?.sku&&r.find(l=>l?.sku===e?.sku)||r[0]},[e?.sku,e?.variants]),ne=n?.id?.split?.("/")||[],ae=ne?.[ne?.length-1],D=!n?.availableForSale||n?.price?.amount===xe||n?.price===xe,ce=t?.isShowTag,pe=t?.isShowOriginalPrice,b=n?.coupons?.[0],H=!!(pe&&b),me=e?.price?.currencyCode||"USD",ke=ye(()=>Ce({locale:v,amount:H?b?.variant_price4wscode:n?.price,baseAmount:H?n?.price:0,currencyCode:me,currencyDisplay:re,customFormatPrice:j}),[me,v,H,b?.variant_price4wscode,n,j]),{price:o,basePrice:I,discount:N,discountAmount:y}=ke,{imageUrl:k,altText:de}=ze(e),U=e?.custom_name||e?.title,z=te&&n?.metafields?.infos?.page_short_title||U,C=e?.custom_description||e?.description;$e(W,{componentType:ge,componentName:he,componentTitle:U,componentDescription:C,position:t?.index+1});const B=async()=>{if(!T&&!e?.custom_primary_link){ie(!0);try{await oe(e,t?.index,t,b)}finally{ie(!1)}}},A=async()=>{if(!Q&&!e?.custom_secondary_link){X(!0);try{await le(e,t?.index,t,b)}finally{X(!1)}}},R=()=>M>=2?{boxItem:"lg-desktop:max-w-[401px] desktop:max-w-[292px] max-w-full",imgItem:"m-tablet:m-auto lg-desktop:max-w-[330px] lg-desktop:max-h-[330px] desktop:max-w-[260px] desktop:max-h-[260px] max-w-[138px] max-h-[138px]",wrap:"lg-desktop:aspect-w-[824] lg-desktop:aspect-h-[480] desktop:aspect-w-[648] desktop:aspect-h-[380] laptop:aspect-w-[440] laptop:aspect-h-[356] tablet:aspect-w-[346] tablet:aspect-h-[360] md-tablet:w-full"}:{boxItem:"lg-desktop:max-w-[401px] desktop:max-w-[292px] laptop:max-w-[289px] max-w-[262px]",imgItem:"md-tablet:m-auto lg-desktop:max-w-[450px] lg-desktop:max-h-[450px] desktop:max-w-[332px] desktop:max-h-[332px] max-w-[312px] max-h-[312px]",wrap:"lg-desktop:aspect-w-[1664] lg-desktop:aspect-h-[480] desktop:aspect-w-[1312] desktop:aspect-h-[380] laptop:aspect-w-[896] laptop:aspect-h-[356] tablet:aspect-w-[704] tablet:aspect-h-[360] md-tablet:w-full"},ue=()=>M>=2?"flex flex-col justify-between desktop:gap-12 desktop:flex-row desktop:justify-center desktop:items-center":"flex justify-center items-center gap-6 md-tablet:flex-col",q=()=>{if(b?.value_type==="fixed_amount"){const r=y||"",l=r.match(/^(.*?)(\d[\d.,]*)(.*)$/);if(l){const[,a,c,u]=l;let g=c;return c.endsWith(".00")?g=c.replace(/\.00$/,""):c.endsWith(",00")&&(g=c.replace(/,00$/,"")),`${a}${g}${u}`}return r}return N||""};Ie(()=>{let r=[];if(N||y){const a=`${q()} ${E?.off||O?.off||""}`;r.push(a)}const l=e?.tags?.filter?.(a=>a?.startsWith?.("CLtag"))?.map?.(a=>a?.replace?.("CLtag:",""))?.slice?.(0,N?1:2)||[];be(r.concat(l))},[e?.tags,N,y,E?.off,O?.off]);const P=e?.custom_bg_image,Y=e?.custom_theme;return s("div",{ref:W,className:w(R().wrap,"rounded-box","shelf-display-item","duration-300","md-tablet:h-[360px] relative box-border w-full cursor-pointer overflow-hidden",P?"bg-cover bg-center bg-no-repeat":"bg-container-secondary-1 tablet:hover:bg-info-white",{"aiui-dark":Y==="dark","aiui-light":Y==="light"}),style:P?{backgroundImage:`url(${P})`}:void 0,children:f("div",{className:w(ue(),"desktop:p-6 absolute inset-0 box-border overflow-hidden p-4"),children:[s("div",{className:w(R().imgItem,"desktop:mb-0 relative mb-1 overflow-hidden",{"opacity-0":P}),children:s("a",{"aria-label":U,target:t?.target,href:Pe(`${v==="us"||!v?"":`/${v}`}/products/${e?.handle}?variant=${ae}`,`${ge}_${he}`),onClick:()=>{Be({event:"ga4Event",event_name:"select_item",event_parameters:{page_group:"Home Page",item_list_name:"Home_Page_Bundle",items:[{item_id:e?.sku||n?.sku,item_name:e?.name,item_variant:n?.name,price:n?.price,index:t?.index+1}]}})},children:s(_e,{source:k,alt:de,className:"flex h-full justify-center object-cover [&_img]:w-auto"})})}),f("div",{className:w("flex flex-col items-start justify-center",R().boxItem),children:[ce&&s("div",{className:"mb-1 box-border flex h-8 flex-wrap gap-1 overflow-hidden",children:K?.length>0&&K?.map?.((r,l)=>s(Se,{className:"shelf-items-tag",variant:"fill",children:r},l))}),z?s(Le,{as:"h3",title:z||"",size:2,className:"shelf-display-product-title lg-desktop:h-[58px] text-info-primary mb-1 line-clamp-2 h-[48px]",html:z||""}):null,C?s(Te,{size:2,className:"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 shelf-display-product-description text-info-primary line-clamp-1 h-5 text-sm",html:C||""}):null,s("div",{className:"mb-2 mt-5 flex items-center",children:$?$(e,{price:o,basePrice:I,discount:N,discountAmount:y,variant:n,coupon:b,isSoldOut:D}):D?s("div",{className:"lg-desktop:text-2xl text-info-primary text-xl font-bold",children:J?.soldOutText}):f(Ae,{children:[s("div",{className:"final-price tablet:text-xl text-info-primary text-xl font-bold",children:n?.availableForSale&&o||""}),se?se(e,{price:o,basePrice:I,discount:N,discountAmount:y}):I&&s("div",{className:"origin-price tablet:text-xl text-info-quaternary ml-1 text-lg font-bold line-through",children:n?.availableForSale&&I||""})]})}),!$&&ve?.(e,n),f("div",{className:w("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton&&!D?s(fe,{disabled:D&&t?.secondaryFun!=="LearnMore",variant:"secondary",href:e?.custom_secondary_link,as:e?.custom_secondary_link?"a":"button",onClick:A,loading:Q,className:t.direction==="vertical"?"w-full":"",children:t?.secondaryButton||""}):null,t?.primaryButton?s(fe,{disabled:D&&t?.primaryFun!=="LearnMore",variant:"primary",href:e?.custom_primary_link,as:e?.custom_primary_link?"a":"button",onClick:B,loading:T,className:t.direction==="vertical"?"w-full":"",children:t?.primaryButton||""}):null]})]})]})},e?.id||e?.handle)};export{Qe as ShelfDisplayHorizontalItem,Ke as ShelfDisplayWrapItem,ze as getProductImage};
1
+ import{Fragment as Ae,jsx as s,jsxs as f}from"react/jsx-runtime";import{useAiuiContext as Ne}from"../AiuiProvider/index.js";import{formatVariantPrice as Ce}from"./shelfDisplay.js";import _e from"../../components/picture.js";import Se from"../../components/badge.js";import{cn as w}from"../../helpers/utils.js";import{Text as Te}from"../../components/text.js";import fe from"../../components/button.js";import{gaTrack as Be}from"../../shared/track.js";import{trackUrlRef as Pe}from"../../shared/trackUrlRef.js";import{Heading as Le}from"../../components/heading.js";import{useExposure as $e}from"../../hooks/useExposure.js";import{useRef as De,useEffect as Ie,useMemo as ye,useState as j}from"react";const ge="image",he="product_shelf",xe=999999999e-2,ze=e=>{const t=e?.sku,_=e?.variants,E=_?.find(O=>O?.sku===t),K=E?.image?.url||_?.[0]?.image?.url||"",re=E?.image?.altText||_?.[0]?.image?.altText||e?.custom_name||e?.title||"";return{imageUrl:K,altText:re}},Fe=({items:e})=>e?.length?s("div",{className:"shelf-display-social-endorsements desktop:gap-2 absolute right-0 top-0 z-10 flex flex-col items-center gap-1",children:e.map((t,_)=>typeof t.icon=="string"?s("img",{src:t.icon,alt:t.label||"",loading:"lazy",className:"desktop:size-10 lg-desktop:size-12 size-8 object-contain"},_):s(Te,{"aria-label":t.label,className:"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full",children:t.icon},_))}):null,Ke=({data:e,configuration:t})=>{const{isDisplayBackImage:_=!1,itemShape:E,metafields:K,isTopTag:re=!1,isShowTag:O,isShowOriginalPrice:$,isShowShortTitle:ve=!1,isShowPricesTag:D=!1,pricesTagTextColor:W,pricesTagBgColor:H,itemsTagTextColor:v,itemsTagBgColor:Q,formatPrice:ie,renderOriginalPrice:X,renderPriceLabel:be,renderPrice:U}=t||{},{locale:T="es",copyWriting:oe,currencyDisplay:Y}=Ne(),{discounts:Z,discountsCopy:le}=K||{},ne=De(null),[n,ae]=j([]),[ce,I]=j(""),[pe,z]=j(!1),[b,R]=j(!1),me=(i,p,m,d)=>{const{primaryFun:x,onAddCart:S,onBuyNow:te,onLearnMore:se,event:we}=t||{};if(x){if(x==="AddCart"&&S)return S(i,p+1,m,d);if(x==="BuyNow"&&te)return te(i,p+1,m,d);if(x==="LearnMore"&&se)return se(i,p+1,m,d)}we?.primaryButton?.(i,p+1,m,d)},ke=(i,p,m,d)=>{const{secondaryFun:x,onAddCart:S,onBuyNow:te,onLearnMore:se,event:we}=t||{};if(x){if(x==="AddCart"&&S)return S(i,p+1,m,d);if(x==="BuyNow"&&te)return te(i,p+1,m,d);if(x==="LearnMore"&&se)return se(i,p+1,m,d)}we?.secondaryButton?.(i,p+1,m,d)},o=ye(()=>{const i=e?.variants||[];if(i.length)return e?.sku?i?.find?.(p=>p?.sku===e?.sku)||i[0]:i?.[0]},[e?.sku,e?.variants]),A=o?.id?.split?.("/")||[],N=A?.[A?.length-1],y=!o?.availableForSale||o?.price?.amount===xe||o?.price===xe,k=o?.coupons?.[0],de=e?.price?.currencyCode||"USD",q=ye(()=>Ce({locale:T,amount:k?k?.variant_price4wscode:o?.price,baseAmount:k?o?.price:0,currencyCode:de,currencyDisplay:Y,customFormatPrice:ie}),[de,T,k,Y,o,ie]),{price:F,basePrice:C,discount:B,discountAmount:M}=q,{imageUrl:V,altText:ue}=ze(e),G=e?.custom_name||e?.title,P=ve&&o?.metafields?.infos?.page_short_title||G,ee=e?.custom_description||e?.description,r=()=>{if(k?.value_type==="fixed_amount"){const i=M||"",p=i.match(/^(.*?)(\d[\d.,]*)(.*)$/);if(p){const[,m,d,x]=p;let S=d;return d.endsWith(".00")?S=d.replace(/\.00$/,""):d.endsWith(",00")&&(S=d.replace(/,00$/,"")),`${m}${S}${x}`}return i}return B||""};Ie(()=>{let i=[];if(B||M){const m=`${r()} ${Z?.off||le?.off||""}`;I(m)}const p=e?.tags?.filter?.(m=>m?.startsWith?.("CLtag"))?.map?.(m=>m?.replace?.("CLtag:",""))?.slice?.(0,B&&D?1:2)||[];ae(i.concat(p))},[e?.tags,B,M,D,Z?.off,le?.off]),$e(ne,{componentType:ge,componentName:he,componentTitle:G,componentDescription:ee,position:t?.index+1});const l=async()=>{if(!pe&&!e?.custom_primary_link){z(!0);try{await me(e,t?.index,t,k)}finally{z(!1)}}},a=async()=>{if(!b&&!e?.custom_secondary_link){R(!0);try{await ke(e,t?.index,t,k)}finally{R(!1)}}},c=()=>f("div",{className:"shelf-display-product-content desktop:gap-6 lg-desktop:flex-[221] desktop:flex-[190] flex flex-[178] flex-col justify-between gap-4",children:[f("div",{className:"shelf-display-product-content-title-desc",children:[P?s(Le,{as:"h3",title:P||"",size:2,className:"shelf-display-product-title text-info-primary mb-1 line-clamp-2",html:P||""}):null,s(Te,{size:2,className:w("lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]"),html:ee||""})]}),f("div",{className:"shelf-display-product-content-price-button",children:[s("div",{className:"mb-2 flex items-center",children:U?U(e,{price:F,basePrice:C,discount:B,discountAmount:M,variant:o,coupon:k,isSoldOut:y,isShowOriginalPrice:$}):y?s("div",{className:"lg-desktop:text-2xl text-info-primary text-xl font-bold",children:oe?.soldOutText}):f(Ae,{children:[s("div",{className:"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]",children:o?.availableForSale&&F||""}),X?X(e,{price:F,basePrice:C,discount:B,discountAmount:M,isShowOriginalPrice:$}):C&&$&&s("div",{className:"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through",children:o?.availableForSale&&C||""})]})}),!U&&be?.(e,o,{isShowOriginalPrice:$}),f("div",{className:w("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton&&!y?s(fe,{disabled:y&&t?.secondaryFun!=="LearnMore",variant:"secondary",href:e?.custom_secondary_link,as:e?.custom_secondary_link?"a":"button",onClick:a,loading:b,className:t.direction==="vertical"?"w-full":"",children:t?.secondaryButton||""}):null,t?.primaryButton?s(fe,{disabled:y&&t?.primaryFun!=="LearnMore",variant:"primary",href:e?.custom_primary_link,as:e?.custom_primary_link?"a":"button",onClick:l,loading:pe,className:t.direction==="vertical"?"w-full":"",children:t?.primaryButton||""}):null]})]})]}),u={...W?{color:W}:{},...H?{backgroundColor:H,backgroundImage:"none"}:{},...W||H?{outline:"none"}:{}},g={...v?{color:v}:{},...Q?{backgroundColor:Q,backgroundImage:"none"}:{},...v||Q?{outlineColor:v}:{}},L=()=>f("div",{className:"lg-desktop:h-[28px] lg-desktop:flex-[28] box-border flex h-6 flex-[24] flex-wrap gap-1 overflow-hidden",children:[D&&ce&&s(Se,{className:"shelf-prices-tag",variant:"fill",style:u,children:ce||""}),O&&n?.length>0&&n?.map?.((i,p)=>s(Se,{className:"shelf-items-tag",variant:"outline",style:g,children:i},p))]}),h=e?.custom_bg_image,J=e?.custom_theme;return s("div",{ref:ne,className:w("box-border w-full cursor-pointer overflow-hidden duration-300","rounded-box","lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[545] desktop:aspect-w-[316] desktop:aspect-h-[450]","laptop:aspect-w-[288] laptop:aspect-h-[422] aspect-w-[296] aspect-h-[422] relative","md-tablet:h-[422px] shelf-display-item",h?"bg-cover bg-center bg-no-repeat":"bg-background tablet:hover:bg-info-white",{"aiui-dark":J==="dark","aiui-light":J==="light"}),style:h?{backgroundImage:`url(${h})`}:void 0,children:_?s("div",{className:"absolute inset-0 box-border overflow-hidden",children:f("div",{className:"relative inset-0 size-full",children:[s(L,{}),s(_e,{source:V,alt:ue,className:w("flex h-full justify-center object-cover [&_img]:w-auto",{"opacity-0":h})}),s("div",{className:"desktop:p-6 absolute inset-x-0 bottom-0 box-border overflow-hidden p-4",children:c()})]})}):f("div",{className:"desktop:p-6 desktop:pt-4 desktop:gap-2 absolute inset-0 box-border flex flex-col justify-between gap-1 overflow-hidden p-4",children:[s(L,{}),f("div",{className:w("shelf-display-item-image lg-desktop:flex-[240] relative inline-block w-full flex-[180] overflow-hidden",{"opacity-0":h}),children:[s("a",{"aria-label":G,target:t?.target,href:Pe(`${T==="us"||!T?"":`/${T}`}/products/${e?.handle}?variant=${N}`,`${ge}_${he}`),onClick:()=>{Be({event:"ga4Event",event_name:"select_item",event_parameters:{page_group:"Home Page",item_list_name:"Home_Page_Bundle",items:[{item_id:e?.sku||o?.sku,item_name:e?.name,item_variant:o?.name,price:o?.price,index:t?.index+1}]}})},children:s(_e,{source:V,alt:ue,className:"flex h-full justify-center object-cover [&_img]:w-auto"})}),s(Fe,{items:e?.socialEndorsements})]}),c()]})},e?.id||e?.handle)},Qe=({data:e,configuration:t})=>{const{itemShape:_,itemLength:E,metafields:K,isShowShortTitle:re,formatPrice:O,renderOriginalPrice:$,renderPriceLabel:ve,renderPrice:D}=t||{},{discounts:W,discountsCopy:H}=K||{},{locale:v="us",copyWriting:Q,currencyDisplay:ie}=Ne(),[X,be]=j([]),U=De(null),[T,oe]=j(!1),[Y,Z]=j(!1),le=(r,l,a,c)=>{const{primaryFun:u,onAddCart:g,onBuyNow:L,onLearnMore:h,event:J}=t||{};if(u){if(u==="AddCart"&&g)return g(r,l+1,a,c);if(u==="BuyNow"&&L)return L(r,l+1,a,c);if(u==="LearnMore"&&h)return h(r,l+1,a,c)}J?.primaryButton?.(r,l+1,a,c)},ne=(r,l,a,c)=>{const{secondaryFun:u,onAddCart:g,onBuyNow:L,onLearnMore:h,event:J}=t||{};if(u){if(u==="AddCart"&&g)return g(r,l+1,a,c);if(u==="BuyNow"&&L)return L(r,l+1,a,c);if(u==="LearnMore"&&h)return h(r,l+1,a,c)}J?.secondaryButton?.(r,l+1,a,c)},n=ye(()=>{const r=e?.variants||[];if(r.length)return e?.sku&&r.find(l=>l?.sku===e?.sku)||r[0]},[e?.sku,e?.variants]),ae=n?.id?.split?.("/")||[],ce=ae?.[ae?.length-1],I=!n?.availableForSale||n?.price?.amount===xe||n?.price===xe,pe=t?.isShowTag,z=t?.isShowOriginalPrice,b=n?.coupons?.[0],R=!!(z&&b),me=e?.price?.currencyCode||"USD",ke=ye(()=>Ce({locale:v,amount:R?b?.variant_price4wscode:n?.price,baseAmount:R?n?.price:0,currencyCode:me,currencyDisplay:ie,customFormatPrice:O}),[me,v,R,b?.variant_price4wscode,n,O]),{price:o,basePrice:A,discount:N,discountAmount:y}=ke,{imageUrl:k,altText:de}=ze(e),q=e?.custom_name||e?.title,F=re&&n?.metafields?.infos?.page_short_title||q,C=e?.custom_description||e?.description;$e(U,{componentType:ge,componentName:he,componentTitle:q,componentDescription:C,position:t?.index+1});const B=async()=>{if(!T&&!e?.custom_primary_link){oe(!0);try{await le(e,t?.index,t,b)}finally{oe(!1)}}},M=async()=>{if(!Y&&!e?.custom_secondary_link){Z(!0);try{await ne(e,t?.index,t,b)}finally{Z(!1)}}},V=()=>E>=2?{boxItem:"lg-desktop:max-w-[401px] desktop:max-w-[292px] max-w-full",imgItem:"m-tablet:m-auto lg-desktop:max-w-[330px] lg-desktop:max-h-[330px] desktop:max-w-[260px] desktop:max-h-[260px] max-w-[138px] max-h-[138px]",wrap:"lg-desktop:aspect-w-[824] lg-desktop:aspect-h-[480] desktop:aspect-w-[648] desktop:aspect-h-[380] laptop:aspect-w-[440] laptop:aspect-h-[356] tablet:aspect-w-[346] tablet:aspect-h-[360] md-tablet:w-full"}:{boxItem:"lg-desktop:max-w-[401px] desktop:max-w-[292px] laptop:max-w-[289px] max-w-[262px]",imgItem:"md-tablet:m-auto lg-desktop:max-w-[450px] lg-desktop:max-h-[450px] desktop:max-w-[332px] desktop:max-h-[332px] max-w-[312px] max-h-[312px]",wrap:"lg-desktop:aspect-w-[1664] lg-desktop:aspect-h-[480] desktop:aspect-w-[1312] desktop:aspect-h-[380] laptop:aspect-w-[896] laptop:aspect-h-[356] tablet:aspect-w-[704] tablet:aspect-h-[360] md-tablet:w-full"},ue=()=>E>=2?"flex flex-col justify-between desktop:gap-12 desktop:flex-row desktop:justify-center desktop:items-center":"flex justify-center items-center gap-6 md-tablet:flex-col",G=()=>{if(b?.value_type==="fixed_amount"){const r=y||"",l=r.match(/^(.*?)(\d[\d.,]*)(.*)$/);if(l){const[,a,c,u]=l;let g=c;return c.endsWith(".00")?g=c.replace(/\.00$/,""):c.endsWith(",00")&&(g=c.replace(/,00$/,"")),`${a}${g}${u}`}return r}return N||""};Ie(()=>{let r=[];if(N||y){const a=`${G()} ${W?.off||H?.off||""}`;r.push(a)}const l=e?.tags?.filter?.(a=>a?.startsWith?.("CLtag"))?.map?.(a=>a?.replace?.("CLtag:",""))?.slice?.(0,N?1:2)||[];be(r.concat(l))},[e?.tags,N,y,W?.off,H?.off]);const P=e?.custom_bg_image,ee=e?.custom_theme;return s("div",{ref:U,className:w(V().wrap,"rounded-box","shelf-display-item","duration-300","md-tablet:h-[360px] relative box-border w-full cursor-pointer overflow-hidden",P?"bg-cover bg-center bg-no-repeat":"bg-container-secondary-1 tablet:hover:bg-info-white",{"aiui-dark":ee==="dark","aiui-light":ee==="light"}),style:P?{backgroundImage:`url(${P})`}:void 0,children:f("div",{className:w(ue(),"desktop:p-6 absolute inset-0 box-border overflow-hidden p-4"),children:[s("div",{className:w(V().imgItem,"desktop:mb-0 relative mb-1 overflow-hidden",{"opacity-0":P}),children:s("a",{"aria-label":q,target:t?.target,href:Pe(`${v==="us"||!v?"":`/${v}`}/products/${e?.handle}?variant=${ce}`,`${ge}_${he}`),onClick:()=>{Be({event:"ga4Event",event_name:"select_item",event_parameters:{page_group:"Home Page",item_list_name:"Home_Page_Bundle",items:[{item_id:e?.sku||n?.sku,item_name:e?.name,item_variant:n?.name,price:n?.price,index:t?.index+1}]}})},children:s(_e,{source:k,alt:de,className:"flex h-full justify-center object-cover [&_img]:w-auto"})})}),f("div",{className:w("flex flex-col items-start justify-center",V().boxItem),children:[pe&&s("div",{className:"mb-1 box-border flex h-8 flex-wrap gap-1 overflow-hidden",children:X?.length>0&&X?.map?.((r,l)=>s(Se,{className:"shelf-items-tag",variant:"fill",children:r},l))}),F?s(Le,{as:"h3",title:F||"",size:2,className:"shelf-display-product-title lg-desktop:h-[58px] text-info-primary mb-1 line-clamp-2 h-[48px]",html:F||""}):null,C?s(Te,{size:2,className:"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 shelf-display-product-description text-info-primary line-clamp-1 h-5 text-sm",html:C||""}):null,s("div",{className:"mb-2 mt-5 flex items-center",children:D?D(e,{price:o,basePrice:A,discount:N,discountAmount:y,variant:n,coupon:b,isSoldOut:I,isShowOriginalPrice:z}):I?s("div",{className:"lg-desktop:text-2xl text-info-primary text-xl font-bold",children:Q?.soldOutText}):f(Ae,{children:[s("div",{className:"final-price tablet:text-xl text-info-primary text-xl font-bold",children:n?.availableForSale&&o||""}),$?$(e,{price:o,basePrice:A,discount:N,discountAmount:y,isShowOriginalPrice:z}):A&&s("div",{className:"origin-price tablet:text-xl text-info-quaternary ml-1 text-lg font-bold line-through",children:n?.availableForSale&&A||""})]})}),!D&&ve?.(e,n,{isShowOriginalPrice:z}),f("div",{className:w("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton&&!I?s(fe,{disabled:I&&t?.secondaryFun!=="LearnMore",variant:"secondary",href:e?.custom_secondary_link,as:e?.custom_secondary_link?"a":"button",onClick:M,loading:Y,className:t.direction==="vertical"?"w-full":"",children:t?.secondaryButton||""}):null,t?.primaryButton?s(fe,{disabled:I&&t?.primaryFun!=="LearnMore",variant:"primary",href:e?.custom_primary_link,as:e?.custom_primary_link?"a":"button",onClick:B,loading:T,className:t.direction==="vertical"?"w-full":"",children:t?.primaryButton||""}):null]})]})]})},e?.id||e?.handle)};export{Qe as ShelfDisplayHorizontalItem,Ke as ShelfDisplayWrapItem,ze as getProductImage};
2
2
  //# sourceMappingURL=shelfDisplayItem.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/ShelfDisplay/shelfDisplayItem.tsx"],
4
- "sourcesContent": ["import { useAiuiContext } from '../AiuiProvider/index.js'\nimport { formatVariantPrice } from './shelfDisplay.js'\nimport Picture from '../../components/picture.js'\nimport Badge from '../../components/badge.js'\nimport { cn } from '../../helpers/utils.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport { gaTrack } from '../../shared/track.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { Heading } from '../../components/heading.js'\nimport type { ShelfDisplayItem, ShelfDisplayType, SocialEndorsementItem } from './shelfDisplay.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { useRef, useEffect, useMemo, useState, type CSSProperties } from 'react'\n\nconst componentType = 'image'\nconst componentName = 'product_shelf'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\n// \u516C\u5171\u51FD\u6570\uFF1A\u83B7\u53D6\u4EA7\u54C1\u56FE\u7247URL\u548CaltText\nexport const getProductImage = (data: any) => {\n const sku = data?.sku\n const skuArray = data?.variants\n const findSku = skuArray?.find((item: any) => item?.sku === sku)\n const imageUrl = findSku?.image?.url || skuArray?.[0]?.image?.url || ''\n const altText = findSku?.image?.altText || skuArray?.[0]?.image?.altText || data?.custom_name || data?.title || ''\n\n return {\n imageUrl,\n altText,\n }\n}\n\nconst ShelfDisplaySocialEndorsements = ({ items }: { items?: SocialEndorsementItem[] }) => {\n if (!items?.length) {\n return null\n }\n return (\n <div className=\"shelf-display-social-endorsements desktop:gap-2 absolute right-0 top-0 z-10 flex flex-col items-center gap-1\">\n {items.map((item, index) =>\n typeof item.icon === 'string' ? (\n <img\n key={index}\n src={item.icon}\n alt={item.label || ''}\n loading=\"lazy\"\n className=\"desktop:size-10 lg-desktop:size-12 size-8 object-contain\"\n />\n ) : (\n <Text\n key={index}\n aria-label={item.label}\n className=\"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full\"\n >\n {item.icon}\n </Text>\n )\n )}\n </div>\n )\n}\n\nexport const ShelfDisplayWrapItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const {\n isDisplayBackImage = false,\n itemShape,\n metafields,\n isTopTag = false,\n isShowTag,\n isShowOriginalPrice,\n isShowShortTitle = false,\n isShowPricesTag = false,\n pricesTagTextColor,\n pricesTagBgColor,\n itemsTagTextColor,\n itemsTagBgColor,\n formatPrice,\n renderOriginalPrice,\n renderPriceLabel,\n renderPrice,\n } = configuration || {}\n const { locale = 'es', copyWriting, currencyDisplay } = useAiuiContext()\n const { discounts, discountsCopy } = metafields || {}\n const ref = useRef<HTMLDivElement>(null)\n const [showTags, setShowTags] = useState<string[]>([])\n const [currentPriceTag, setCurrentPriceTag] = useState<string>('')\n const [primaryLoading, setPrimaryLoading] = useState(false)\n const [secondaryLoading, setSecondaryLoading] = useState(false)\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { primaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E primaryFun \u503C\uFF09\n if (primaryFun) {\n if (primaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (primaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (primaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.primaryButton?.(params, index + 1, data, coupon)\n }\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { secondaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E secondaryFun \u503C\uFF09\n if (secondaryFun) {\n if (secondaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.secondaryButton?.(params, index + 1, data, coupon)\n }\n\n const variant = useMemo(() => {\n const variants = data?.variants || []\n if (!variants.length) {\n return undefined\n }\n if (!data?.sku) {\n return variants?.[0]\n }\n return variants?.find?.((item: any) => item?.sku === data?.sku) || variants[0]\n }, [data?.sku, data?.variants])\n\n const variantArr = variant?.id?.split?.('/') || []\n const variantId = variantArr?.[variantArr?.length - 1]\n\n const isSoldOut =\n !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE || variant?.price === SOLD_OUT_PRICE\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const currencyCode = data?.price?.currencyCode || 'USD'\n\n const priceInfo = useMemo(\n () =>\n formatVariantPrice({\n locale,\n amount: coupon ? coupon?.variant_price4wscode : variant?.price,\n baseAmount: coupon ? variant?.price : 0,\n currencyCode,\n currencyDisplay,\n customFormatPrice: formatPrice,\n }),\n [currencyCode, locale, coupon, currencyDisplay, variant, formatPrice]\n )\n\n const { price, basePrice, discount, discountAmount } = priceInfo\n\n const { imageUrl, altText } = getProductImage(data)\n\n const displayTitle = data?.custom_name || data?.title\n const currentDisplayTitle = isShowShortTitle\n ? variant?.metafields?.infos?.page_short_title || displayTitle\n : displayTitle\n const displayDescription = data?.custom_description || data?.description\n\n const showPrice = () => {\n if (coupon?.value_type === 'fixed_amount') {\n const amountStr = discountAmount || ''\n const match = amountStr.match(/^(.*?)(\\d[\\d.,]*)(.*)$/)\n if (match) {\n const [, prefix, numeric, suffix] = match\n let updatedNumeric = numeric\n if (numeric.endsWith('.00')) {\n updatedNumeric = numeric.replace(/\\.00$/, '')\n } else if (numeric.endsWith(',00')) {\n updatedNumeric = numeric.replace(/,00$/, '')\n }\n return `${prefix}${updatedNumeric}${suffix}`\n }\n return amountStr\n }\n return discount || ''\n }\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discount || discountAmount) {\n const discountTag = `${showPrice()} ${discounts?.off || discountsCopy?.off || ''}`\n setCurrentPriceTag(discountTag)\n // handleTags.push(discountTag)\n }\n const newTags =\n data?.tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discount && isShowPricesTag ? 1 : 2) || []\n setShowTags(handleTags.concat(newTags))\n }, [data?.tags, discount, discountAmount, isShowPricesTag, discounts?.off, discountsCopy?.off])\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: displayTitle,\n componentDescription: displayDescription,\n position: configuration?.index + 1,\n })\n\n const handlePrimaryClick = async () => {\n if (primaryLoading) return\n if (data?.custom_primary_link) return\n setPrimaryLoading(true)\n try {\n await onPrimaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setPrimaryLoading(false)\n }\n }\n\n const handleSecondaryClick = async () => {\n if (secondaryLoading) return\n if (data?.custom_secondary_link) return\n setSecondaryLoading(true)\n try {\n await onSecondaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setSecondaryLoading(false)\n }\n }\n\n const bottomContent = () => {\n return (\n <div className=\"shelf-display-product-content desktop:gap-6 lg-desktop:flex-[221] desktop:flex-[190] flex flex-[178] flex-col justify-between gap-4\">\n <div className=\"shelf-display-product-content-title-desc\">\n {currentDisplayTitle ? (\n <Heading\n as=\"h3\"\n title={currentDisplayTitle || ''}\n size={2}\n className=\"shelf-display-product-title text-info-primary mb-1 line-clamp-2\"\n html={currentDisplayTitle || ''}\n />\n ) : null}\n <Text\n size={2}\n className={cn(\n 'lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]'\n )}\n html={displayDescription || ''}\n />\n </div>\n <div className=\"shelf-display-product-content-price-button\">\n <div className=\"mb-2 flex items-center\">\n {renderPrice ? (\n renderPrice(data, { price, basePrice, discount, discountAmount, variant, coupon, isSoldOut })\n ) : isSoldOut ? (\n <div className=\"lg-desktop:text-2xl text-info-primary text-xl font-bold\">{copyWriting?.soldOutText}</div>\n ) : (\n <>\n <div className=\"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n {renderOriginalPrice\n ? renderOriginalPrice(data, { price, basePrice, discount, discountAmount })\n : basePrice &&\n isShowOriginalPrice && (\n <div className=\"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n )}\n </>\n )}\n </div>\n {!renderPrice && renderPriceLabel?.(data, variant)}\n {/* \u6309\u94AE\u7EC4 */}\n <div\n className={cn(\n 'shelf-flex-button-group',\n 'lg-desktop:gap-3 flex items-center gap-2',\n configuration.direction === 'vertical' ? 'flex-col' : ''\n )}\n >\n {configuration?.secondaryButton && !isSoldOut ? (\n <Button\n disabled={isSoldOut && configuration?.secondaryFun !== 'LearnMore'}\n variant=\"secondary\"\n href={data?.custom_secondary_link}\n as={data?.custom_secondary_link ? 'a' : 'button'}\n onClick={handleSecondaryClick}\n loading={secondaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n disabled={isSoldOut && configuration?.primaryFun !== 'LearnMore'}\n variant=\"primary\"\n href={data?.custom_primary_link}\n as={data?.custom_primary_link ? 'a' : 'button'}\n onClick={handlePrimaryClick}\n loading={primaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.primaryButton || ''}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n )\n }\n\n const pricesTagStyle: CSSProperties = {\n ...(pricesTagTextColor ? { color: pricesTagTextColor } : {}),\n ...(pricesTagBgColor ? { backgroundColor: pricesTagBgColor, backgroundImage: 'none' } : {}),\n ...(pricesTagTextColor || pricesTagBgColor ? { outline: 'none' } : {}),\n }\n const itemsTagStyle: CSSProperties = {\n ...(itemsTagTextColor ? { color: itemsTagTextColor } : {}),\n ...(itemsTagBgColor ? { backgroundColor: itemsTagBgColor, backgroundImage: 'none' } : {}),\n ...(itemsTagTextColor || itemsTagBgColor ? { outlineColor: itemsTagTextColor } : {}),\n }\n\n const TagsComp = () => {\n return (\n <div className=\"lg-desktop:h-[28px] lg-desktop:flex-[28] box-border flex h-6 flex-[24] flex-wrap gap-1 overflow-hidden\">\n {isShowPricesTag && currentPriceTag && (\n <Badge className=\"shelf-prices-tag\" variant=\"fill\" style={pricesTagStyle}>\n {currentPriceTag || ''}\n </Badge>\n )}\n {isShowTag &&\n showTags?.length > 0 &&\n showTags?.map?.((item: any, index: number) => (\n <Badge key={index} className=\"shelf-items-tag\" variant=\"outline\" style={itemsTagStyle}>\n {item}\n </Badge>\n ))}\n </div>\n )\n }\n\n const custom_bg_image = data?.custom_bg_image\n const custom_theme = data?.custom_theme\n\n return (\n <div\n ref={ref}\n key={data?.id || data?.handle}\n className={cn(\n 'box-border w-full cursor-pointer overflow-hidden duration-300',\n 'rounded-box',\n 'lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[545] desktop:aspect-w-[316] desktop:aspect-h-[450]',\n 'laptop:aspect-w-[288] laptop:aspect-h-[422] aspect-w-[296] aspect-h-[422] relative',\n 'md-tablet:h-[422px] shelf-display-item',\n custom_bg_image ? 'bg-cover bg-center bg-no-repeat' : 'bg-background tablet:hover:bg-info-white',\n { 'aiui-dark': custom_theme === 'dark', 'aiui-light': custom_theme === 'light' }\n )}\n style={custom_bg_image ? { backgroundImage: `url(${custom_bg_image})` } : undefined}\n >\n {isDisplayBackImage ? (\n <div className=\"absolute inset-0 box-border overflow-hidden\">\n <div className=\"relative inset-0 size-full\">\n <TagsComp />\n <Picture\n source={imageUrl}\n alt={altText}\n className={cn('flex h-full justify-center object-cover [&_img]:w-auto', {\n 'opacity-0': custom_bg_image,\n })}\n />\n <div className=\"desktop:p-6 absolute inset-x-0 bottom-0 box-border overflow-hidden p-4\">\n {bottomContent()}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"desktop:p-6 desktop:pt-4 desktop:gap-2 absolute inset-0 box-border flex flex-col justify-between gap-1 overflow-hidden p-4\">\n {/* {currentPriceTag && isTopTag && (\n <Badge className=\"shelf-prices-tag absolute left-4 top-4 z-10\" variant=\"fill\">\n {currentPriceTag || ''}\n </Badge>\n )} */}\n <TagsComp />\n <div\n className={cn(\n 'shelf-display-item-image lg-desktop:flex-[240] relative inline-block w-full flex-[180] overflow-hidden',\n {\n 'opacity-0': custom_bg_image,\n }\n )}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}?variant=${variantId}`,\n `${componentType}_${componentName}`\n )}\n onClick={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'select_item',\n event_parameters: {\n page_group: 'Home Page',\n item_list_name: 'Home_Page_Bundle',\n items: [\n {\n item_id: data?.sku || variant?.sku,\n item_name: data?.name,\n item_variant: variant?.name,\n price: variant?.price,\n index: configuration?.index + 1,\n },\n ],\n },\n })\n }}\n >\n <Picture\n source={imageUrl}\n alt={altText}\n className=\"flex h-full justify-center object-cover [&_img]:w-auto\"\n />\n </a>\n <ShelfDisplaySocialEndorsements items={data?.socialEndorsements} />\n </div>\n {bottomContent()}\n </div>\n )}\n </div>\n )\n}\n\nexport const ShelfDisplayHorizontalItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const {\n itemShape,\n itemLength,\n metafields,\n isShowShortTitle,\n formatPrice,\n renderOriginalPrice,\n renderPriceLabel,\n renderPrice,\n } = configuration || {}\n const { discounts, discountsCopy } = metafields || {}\n const { locale = 'us', copyWriting, currencyDisplay } = useAiuiContext()\n const [showTags, setShowTags] = useState<string[]>([])\n const ref = useRef<HTMLDivElement>(null)\n const [primaryLoading, setPrimaryLoading] = useState(false)\n const [secondaryLoading, setSecondaryLoading] = useState(false)\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { primaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E primaryFun \u503C\uFF09\n if (primaryFun) {\n if (primaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (primaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (primaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.primaryButton?.(params, index + 1, data, coupon)\n }\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { secondaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E secondaryFun \u503C\uFF09\n if (secondaryFun) {\n if (secondaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.secondaryButton?.(params, index + 1, data, coupon)\n }\n\n const variant = useMemo(() => {\n const variants = data?.variants || []\n if (!variants.length) {\n return undefined\n }\n if (!data?.sku) {\n return variants[0]\n }\n return variants.find((item: any) => item?.sku === data?.sku) || variants[0]\n }, [data?.sku, data?.variants])\n\n const variantArr = variant?.id?.split?.('/') || []\n const variantId = variantArr?.[variantArr?.length - 1]\n\n const isSoldOut =\n !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE || variant?.price === SOLD_OUT_PRICE\n const isShowTag = configuration?.isShowTag\n const isShowOriginalPrice = configuration?.isShowOriginalPrice\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const shouldUseCouponPrice = Boolean(isShowOriginalPrice && coupon)\n const currencyCode = data?.price?.currencyCode || 'USD'\n\n const priceInfo = useMemo(\n () =>\n formatVariantPrice({\n locale,\n amount: shouldUseCouponPrice ? coupon?.variant_price4wscode : variant?.price,\n baseAmount: shouldUseCouponPrice ? variant?.price : 0,\n currencyCode,\n currencyDisplay,\n customFormatPrice: formatPrice,\n }),\n [currencyCode, locale, shouldUseCouponPrice, coupon?.variant_price4wscode, variant, formatPrice]\n )\n\n const { price, basePrice, discount, discountAmount } = priceInfo\n\n const { imageUrl, altText } = getProductImage(data)\n\n const displayTitle = data?.custom_name || data?.title\n const currentDisplayTitle = isShowShortTitle\n ? variant?.metafields?.infos?.page_short_title || displayTitle\n : displayTitle\n const displayDescription = data?.custom_description || data?.description\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: displayTitle,\n componentDescription: displayDescription,\n position: configuration?.index + 1,\n })\n\n const handlePrimaryClick = async () => {\n if (primaryLoading) return\n if (data?.custom_primary_link) return\n setPrimaryLoading(true)\n try {\n await onPrimaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setPrimaryLoading(false)\n }\n }\n\n const handleSecondaryClick = async () => {\n if (secondaryLoading) return\n if (data?.custom_secondary_link) return\n setSecondaryLoading(true)\n try {\n await onSecondaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setSecondaryLoading(false)\n }\n }\n\n const showSizeClass = (): {\n boxItem: string\n imgItem: string\n wrap: string\n } => {\n if (itemLength >= 2) {\n return {\n boxItem: 'lg-desktop:max-w-[401px] desktop:max-w-[292px] max-w-full',\n imgItem:\n 'm-tablet:m-auto lg-desktop:max-w-[330px] lg-desktop:max-h-[330px] desktop:max-w-[260px] desktop:max-h-[260px] max-w-[138px] max-h-[138px]',\n wrap: 'lg-desktop:aspect-w-[824] lg-desktop:aspect-h-[480] desktop:aspect-w-[648] desktop:aspect-h-[380] laptop:aspect-w-[440] laptop:aspect-h-[356] tablet:aspect-w-[346] tablet:aspect-h-[360] md-tablet:w-full',\n }\n }\n return {\n boxItem: 'lg-desktop:max-w-[401px] desktop:max-w-[292px] laptop:max-w-[289px] max-w-[262px]',\n imgItem:\n 'md-tablet:m-auto lg-desktop:max-w-[450px] lg-desktop:max-h-[450px] desktop:max-w-[332px] desktop:max-h-[332px] max-w-[312px] max-h-[312px]',\n wrap: 'lg-desktop:aspect-w-[1664] lg-desktop:aspect-h-[480] desktop:aspect-w-[1312] desktop:aspect-h-[380] laptop:aspect-w-[896] laptop:aspect-h-[356] tablet:aspect-w-[704] tablet:aspect-h-[360] md-tablet:w-full',\n }\n }\n\n const handleWrapClass = () => {\n if (itemLength >= 2) {\n return 'flex flex-col justify-between desktop:gap-12 desktop:flex-row desktop:justify-center desktop:items-center'\n }\n return 'flex justify-center items-center gap-6 md-tablet:flex-col'\n }\n\n const showPrice = () => {\n if (coupon?.value_type === 'fixed_amount') {\n const amountStr = discountAmount || ''\n const match = amountStr.match(/^(.*?)(\\d[\\d.,]*)(.*)$/)\n if (match) {\n const [, prefix, numeric, suffix] = match\n let updatedNumeric = numeric\n if (numeric.endsWith('.00')) {\n updatedNumeric = numeric.replace(/\\.00$/, '')\n } else if (numeric.endsWith(',00')) {\n updatedNumeric = numeric.replace(/,00$/, '')\n }\n return `${prefix}${updatedNumeric}${suffix}`\n }\n return amountStr\n }\n return discount || ''\n }\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discount || discountAmount) {\n const discountTag = `${showPrice()} ${discounts?.off || discountsCopy?.off || ''}`\n handleTags.push(discountTag)\n }\n const newTags =\n data?.tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discount ? 1 : 2) || []\n setShowTags(handleTags.concat(newTags))\n }, [data?.tags, discount, discountAmount, discounts?.off, discountsCopy?.off])\n\n const custom_bg_image = data?.custom_bg_image\n const custom_theme = data?.custom_theme\n\n return (\n <div\n ref={ref}\n key={data?.id || data?.handle}\n className={cn(\n showSizeClass().wrap,\n 'rounded-box',\n 'shelf-display-item',\n 'duration-300',\n 'md-tablet:h-[360px] relative box-border w-full cursor-pointer overflow-hidden',\n custom_bg_image ? 'bg-cover bg-center bg-no-repeat' : 'bg-container-secondary-1 tablet:hover:bg-info-white',\n { 'aiui-dark': custom_theme === 'dark', 'aiui-light': custom_theme === 'light' }\n )}\n style={custom_bg_image ? { backgroundImage: `url(${custom_bg_image})` } : undefined}\n >\n <div className={cn(handleWrapClass(), 'desktop:p-6 absolute inset-0 box-border overflow-hidden p-4')}>\n <div\n className={cn(showSizeClass().imgItem, 'desktop:mb-0 relative mb-1 overflow-hidden', {\n 'opacity-0': custom_bg_image,\n })}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}?variant=${variantId}`,\n `${componentType}_${componentName}`\n )}\n onClick={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'select_item',\n event_parameters: {\n page_group: 'Home Page',\n item_list_name: 'Home_Page_Bundle',\n items: [\n {\n item_id: data?.sku || variant?.sku,\n item_name: data?.name,\n item_variant: variant?.name,\n price: variant?.price,\n index: configuration?.index + 1,\n },\n ],\n },\n })\n }}\n >\n <Picture\n source={imageUrl}\n alt={altText}\n className=\"flex h-full justify-center object-cover [&_img]:w-auto\"\n />\n </a>\n </div>\n <div className={cn('flex flex-col items-start justify-center', showSizeClass().boxItem)}>\n {isShowTag && (\n <div className=\"mb-1 box-border flex h-8 flex-wrap gap-1 overflow-hidden\">\n {showTags?.length > 0 &&\n showTags?.map?.((item: any, index: number) => (\n <Badge key={index} className=\"shelf-items-tag\" variant=\"fill\">\n {item}\n </Badge>\n ))}\n </div>\n )}\n {currentDisplayTitle ? (\n <Heading\n as=\"h3\"\n title={currentDisplayTitle || ''}\n size={2}\n className=\"shelf-display-product-title lg-desktop:h-[58px] text-info-primary mb-1 line-clamp-2 h-[48px]\"\n html={currentDisplayTitle || ''}\n />\n ) : null}\n {displayDescription ? (\n <Text\n size={2}\n className=\"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 shelf-display-product-description text-info-primary line-clamp-1 h-5 text-sm\"\n html={displayDescription || ''}\n />\n ) : null}\n <div className=\"mb-2 mt-5 flex items-center\">\n {renderPrice ? (\n renderPrice(data, { price, basePrice, discount, discountAmount, variant, coupon, isSoldOut })\n ) : isSoldOut ? (\n <div className=\"lg-desktop:text-2xl text-info-primary text-xl font-bold\">{copyWriting?.soldOutText}</div>\n ) : (\n <>\n <div className=\"final-price tablet:text-xl text-info-primary text-xl font-bold\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n {renderOriginalPrice\n ? renderOriginalPrice(data, { price, basePrice, discount, discountAmount })\n : basePrice && (\n <div className=\"origin-price tablet:text-xl text-info-quaternary ml-1 text-lg font-bold line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n )}\n </>\n )}\n </div>\n {!renderPrice && renderPriceLabel?.(data, variant)}\n {/* \u6309\u94AE\u7EC4 */}\n <div\n className={cn(\n 'shelf-flex-button-group',\n 'lg-desktop:gap-3 flex items-center gap-2',\n configuration.direction === 'vertical' ? 'flex-col' : ''\n )}\n >\n {configuration?.secondaryButton && !isSoldOut ? (\n <Button\n disabled={isSoldOut && configuration?.secondaryFun !== 'LearnMore'}\n variant=\"secondary\"\n href={data?.custom_secondary_link}\n as={data?.custom_secondary_link ? 'a' : 'button'}\n onClick={handleSecondaryClick}\n loading={secondaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n disabled={isSoldOut && configuration?.primaryFun !== 'LearnMore'}\n variant=\"primary\"\n href={data?.custom_primary_link}\n as={data?.custom_primary_link ? 'a' : 'button'}\n onClick={handlePrimaryClick}\n loading={primaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.primaryButton || ''}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useAiuiContext } from '../AiuiProvider/index.js'\nimport { formatVariantPrice } from './shelfDisplay.js'\nimport Picture from '../../components/picture.js'\nimport Badge from '../../components/badge.js'\nimport { cn } from '../../helpers/utils.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport { gaTrack } from '../../shared/track.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { Heading } from '../../components/heading.js'\nimport type { ShelfDisplayItem, ShelfDisplayType, SocialEndorsementItem } from './shelfDisplay.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { useRef, useEffect, useMemo, useState, type CSSProperties } from 'react'\n\nconst componentType = 'image'\nconst componentName = 'product_shelf'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\n// \u516C\u5171\u51FD\u6570\uFF1A\u83B7\u53D6\u4EA7\u54C1\u56FE\u7247URL\u548CaltText\nexport const getProductImage = (data: any) => {\n const sku = data?.sku\n const skuArray = data?.variants\n const findSku = skuArray?.find((item: any) => item?.sku === sku)\n const imageUrl = findSku?.image?.url || skuArray?.[0]?.image?.url || ''\n const altText = findSku?.image?.altText || skuArray?.[0]?.image?.altText || data?.custom_name || data?.title || ''\n\n return {\n imageUrl,\n altText,\n }\n}\n\nconst ShelfDisplaySocialEndorsements = ({ items }: { items?: SocialEndorsementItem[] }) => {\n if (!items?.length) {\n return null\n }\n return (\n <div className=\"shelf-display-social-endorsements desktop:gap-2 absolute right-0 top-0 z-10 flex flex-col items-center gap-1\">\n {items.map((item, index) =>\n typeof item.icon === 'string' ? (\n <img\n key={index}\n src={item.icon}\n alt={item.label || ''}\n loading=\"lazy\"\n className=\"desktop:size-10 lg-desktop:size-12 size-8 object-contain\"\n />\n ) : (\n <Text\n key={index}\n aria-label={item.label}\n className=\"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full\"\n >\n {item.icon}\n </Text>\n )\n )}\n </div>\n )\n}\n\nexport const ShelfDisplayWrapItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const {\n isDisplayBackImage = false,\n itemShape,\n metafields,\n isTopTag = false,\n isShowTag,\n isShowOriginalPrice,\n isShowShortTitle = false,\n isShowPricesTag = false,\n pricesTagTextColor,\n pricesTagBgColor,\n itemsTagTextColor,\n itemsTagBgColor,\n formatPrice,\n renderOriginalPrice,\n renderPriceLabel,\n renderPrice,\n } = configuration || {}\n const { locale = 'es', copyWriting, currencyDisplay } = useAiuiContext()\n const { discounts, discountsCopy } = metafields || {}\n const ref = useRef<HTMLDivElement>(null)\n const [showTags, setShowTags] = useState<string[]>([])\n const [currentPriceTag, setCurrentPriceTag] = useState<string>('')\n const [primaryLoading, setPrimaryLoading] = useState(false)\n const [secondaryLoading, setSecondaryLoading] = useState(false)\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { primaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E primaryFun \u503C\uFF09\n if (primaryFun) {\n if (primaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (primaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (primaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.primaryButton?.(params, index + 1, data, coupon)\n }\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { secondaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E secondaryFun \u503C\uFF09\n if (secondaryFun) {\n if (secondaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.secondaryButton?.(params, index + 1, data, coupon)\n }\n\n const variant = useMemo(() => {\n const variants = data?.variants || []\n if (!variants.length) {\n return undefined\n }\n if (!data?.sku) {\n return variants?.[0]\n }\n return variants?.find?.((item: any) => item?.sku === data?.sku) || variants[0]\n }, [data?.sku, data?.variants])\n\n const variantArr = variant?.id?.split?.('/') || []\n const variantId = variantArr?.[variantArr?.length - 1]\n\n const isSoldOut =\n !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE || variant?.price === SOLD_OUT_PRICE\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const currencyCode = data?.price?.currencyCode || 'USD'\n\n const priceInfo = useMemo(\n () =>\n formatVariantPrice({\n locale,\n amount: coupon ? coupon?.variant_price4wscode : variant?.price,\n baseAmount: coupon ? variant?.price : 0,\n currencyCode,\n currencyDisplay,\n customFormatPrice: formatPrice,\n }),\n [currencyCode, locale, coupon, currencyDisplay, variant, formatPrice]\n )\n\n const { price, basePrice, discount, discountAmount } = priceInfo\n\n const { imageUrl, altText } = getProductImage(data)\n\n const displayTitle = data?.custom_name || data?.title\n const currentDisplayTitle = isShowShortTitle\n ? variant?.metafields?.infos?.page_short_title || displayTitle\n : displayTitle\n const displayDescription = data?.custom_description || data?.description\n\n const showPrice = () => {\n if (coupon?.value_type === 'fixed_amount') {\n const amountStr = discountAmount || ''\n const match = amountStr.match(/^(.*?)(\\d[\\d.,]*)(.*)$/)\n if (match) {\n const [, prefix, numeric, suffix] = match\n let updatedNumeric = numeric\n if (numeric.endsWith('.00')) {\n updatedNumeric = numeric.replace(/\\.00$/, '')\n } else if (numeric.endsWith(',00')) {\n updatedNumeric = numeric.replace(/,00$/, '')\n }\n return `${prefix}${updatedNumeric}${suffix}`\n }\n return amountStr\n }\n return discount || ''\n }\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discount || discountAmount) {\n const discountTag = `${showPrice()} ${discounts?.off || discountsCopy?.off || ''}`\n setCurrentPriceTag(discountTag)\n // handleTags.push(discountTag)\n }\n const newTags =\n data?.tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discount && isShowPricesTag ? 1 : 2) || []\n setShowTags(handleTags.concat(newTags))\n }, [data?.tags, discount, discountAmount, isShowPricesTag, discounts?.off, discountsCopy?.off])\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: displayTitle,\n componentDescription: displayDescription,\n position: configuration?.index + 1,\n })\n\n const handlePrimaryClick = async () => {\n if (primaryLoading) return\n if (data?.custom_primary_link) return\n setPrimaryLoading(true)\n try {\n await onPrimaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setPrimaryLoading(false)\n }\n }\n\n const handleSecondaryClick = async () => {\n if (secondaryLoading) return\n if (data?.custom_secondary_link) return\n setSecondaryLoading(true)\n try {\n await onSecondaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setSecondaryLoading(false)\n }\n }\n\n const bottomContent = () => {\n return (\n <div className=\"shelf-display-product-content desktop:gap-6 lg-desktop:flex-[221] desktop:flex-[190] flex flex-[178] flex-col justify-between gap-4\">\n <div className=\"shelf-display-product-content-title-desc\">\n {currentDisplayTitle ? (\n <Heading\n as=\"h3\"\n title={currentDisplayTitle || ''}\n size={2}\n className=\"shelf-display-product-title text-info-primary mb-1 line-clamp-2\"\n html={currentDisplayTitle || ''}\n />\n ) : null}\n <Text\n size={2}\n className={cn(\n 'lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]'\n )}\n html={displayDescription || ''}\n />\n </div>\n <div className=\"shelf-display-product-content-price-button\">\n <div className=\"mb-2 flex items-center\">\n {renderPrice ? (\n renderPrice(data, {\n price,\n basePrice,\n discount,\n discountAmount,\n variant,\n coupon,\n isSoldOut,\n isShowOriginalPrice,\n })\n ) : isSoldOut ? (\n <div className=\"lg-desktop:text-2xl text-info-primary text-xl font-bold\">{copyWriting?.soldOutText}</div>\n ) : (\n <>\n <div className=\"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n {renderOriginalPrice\n ? renderOriginalPrice(data, {\n price,\n basePrice,\n discount,\n discountAmount,\n isShowOriginalPrice,\n })\n : basePrice &&\n isShowOriginalPrice && (\n <div className=\"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n )}\n </>\n )}\n </div>\n {!renderPrice && renderPriceLabel?.(data, variant, { isShowOriginalPrice })}\n {/* \u6309\u94AE\u7EC4 */}\n <div\n className={cn(\n 'shelf-flex-button-group',\n 'lg-desktop:gap-3 flex items-center gap-2',\n configuration.direction === 'vertical' ? 'flex-col' : ''\n )}\n >\n {configuration?.secondaryButton && !isSoldOut ? (\n <Button\n disabled={isSoldOut && configuration?.secondaryFun !== 'LearnMore'}\n variant=\"secondary\"\n href={data?.custom_secondary_link}\n as={data?.custom_secondary_link ? 'a' : 'button'}\n onClick={handleSecondaryClick}\n loading={secondaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n disabled={isSoldOut && configuration?.primaryFun !== 'LearnMore'}\n variant=\"primary\"\n href={data?.custom_primary_link}\n as={data?.custom_primary_link ? 'a' : 'button'}\n onClick={handlePrimaryClick}\n loading={primaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.primaryButton || ''}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n )\n }\n\n const pricesTagStyle: CSSProperties = {\n ...(pricesTagTextColor ? { color: pricesTagTextColor } : {}),\n ...(pricesTagBgColor ? { backgroundColor: pricesTagBgColor, backgroundImage: 'none' } : {}),\n ...(pricesTagTextColor || pricesTagBgColor ? { outline: 'none' } : {}),\n }\n const itemsTagStyle: CSSProperties = {\n ...(itemsTagTextColor ? { color: itemsTagTextColor } : {}),\n ...(itemsTagBgColor ? { backgroundColor: itemsTagBgColor, backgroundImage: 'none' } : {}),\n ...(itemsTagTextColor || itemsTagBgColor ? { outlineColor: itemsTagTextColor } : {}),\n }\n\n const TagsComp = () => {\n return (\n <div className=\"lg-desktop:h-[28px] lg-desktop:flex-[28] box-border flex h-6 flex-[24] flex-wrap gap-1 overflow-hidden\">\n {isShowPricesTag && currentPriceTag && (\n <Badge className=\"shelf-prices-tag\" variant=\"fill\" style={pricesTagStyle}>\n {currentPriceTag || ''}\n </Badge>\n )}\n {isShowTag &&\n showTags?.length > 0 &&\n showTags?.map?.((item: any, index: number) => (\n <Badge key={index} className=\"shelf-items-tag\" variant=\"outline\" style={itemsTagStyle}>\n {item}\n </Badge>\n ))}\n </div>\n )\n }\n\n const custom_bg_image = data?.custom_bg_image\n const custom_theme = data?.custom_theme\n\n return (\n <div\n ref={ref}\n key={data?.id || data?.handle}\n className={cn(\n 'box-border w-full cursor-pointer overflow-hidden duration-300',\n 'rounded-box',\n 'lg-desktop:aspect-w-[404] lg-desktop:aspect-h-[545] desktop:aspect-w-[316] desktop:aspect-h-[450]',\n 'laptop:aspect-w-[288] laptop:aspect-h-[422] aspect-w-[296] aspect-h-[422] relative',\n 'md-tablet:h-[422px] shelf-display-item',\n custom_bg_image ? 'bg-cover bg-center bg-no-repeat' : 'bg-background tablet:hover:bg-info-white',\n { 'aiui-dark': custom_theme === 'dark', 'aiui-light': custom_theme === 'light' }\n )}\n style={custom_bg_image ? { backgroundImage: `url(${custom_bg_image})` } : undefined}\n >\n {isDisplayBackImage ? (\n <div className=\"absolute inset-0 box-border overflow-hidden\">\n <div className=\"relative inset-0 size-full\">\n <TagsComp />\n <Picture\n source={imageUrl}\n alt={altText}\n className={cn('flex h-full justify-center object-cover [&_img]:w-auto', {\n 'opacity-0': custom_bg_image,\n })}\n />\n <div className=\"desktop:p-6 absolute inset-x-0 bottom-0 box-border overflow-hidden p-4\">\n {bottomContent()}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"desktop:p-6 desktop:pt-4 desktop:gap-2 absolute inset-0 box-border flex flex-col justify-between gap-1 overflow-hidden p-4\">\n {/* {currentPriceTag && isTopTag && (\n <Badge className=\"shelf-prices-tag absolute left-4 top-4 z-10\" variant=\"fill\">\n {currentPriceTag || ''}\n </Badge>\n )} */}\n <TagsComp />\n <div\n className={cn(\n 'shelf-display-item-image lg-desktop:flex-[240] relative inline-block w-full flex-[180] overflow-hidden',\n {\n 'opacity-0': custom_bg_image,\n }\n )}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}?variant=${variantId}`,\n `${componentType}_${componentName}`\n )}\n onClick={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'select_item',\n event_parameters: {\n page_group: 'Home Page',\n item_list_name: 'Home_Page_Bundle',\n items: [\n {\n item_id: data?.sku || variant?.sku,\n item_name: data?.name,\n item_variant: variant?.name,\n price: variant?.price,\n index: configuration?.index + 1,\n },\n ],\n },\n })\n }}\n >\n <Picture\n source={imageUrl}\n alt={altText}\n className=\"flex h-full justify-center object-cover [&_img]:w-auto\"\n />\n </a>\n <ShelfDisplaySocialEndorsements items={data?.socialEndorsements} />\n </div>\n {bottomContent()}\n </div>\n )}\n </div>\n )\n}\n\nexport const ShelfDisplayHorizontalItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const {\n itemShape,\n itemLength,\n metafields,\n isShowShortTitle,\n formatPrice,\n renderOriginalPrice,\n renderPriceLabel,\n renderPrice,\n } = configuration || {}\n const { discounts, discountsCopy } = metafields || {}\n const { locale = 'us', copyWriting, currencyDisplay } = useAiuiContext()\n const [showTags, setShowTags] = useState<string[]>([])\n const ref = useRef<HTMLDivElement>(null)\n const [primaryLoading, setPrimaryLoading] = useState(false)\n const [secondaryLoading, setSecondaryLoading] = useState(false)\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { primaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E primaryFun \u503C\uFF09\n if (primaryFun) {\n if (primaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (primaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (primaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.primaryButton?.(params, index + 1, data, coupon)\n }\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { secondaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E secondaryFun \u503C\uFF09\n if (secondaryFun) {\n if (secondaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.secondaryButton?.(params, index + 1, data, coupon)\n }\n\n const variant = useMemo(() => {\n const variants = data?.variants || []\n if (!variants.length) {\n return undefined\n }\n if (!data?.sku) {\n return variants[0]\n }\n return variants.find((item: any) => item?.sku === data?.sku) || variants[0]\n }, [data?.sku, data?.variants])\n\n const variantArr = variant?.id?.split?.('/') || []\n const variantId = variantArr?.[variantArr?.length - 1]\n\n const isSoldOut =\n !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE || variant?.price === SOLD_OUT_PRICE\n const isShowTag = configuration?.isShowTag\n const isShowOriginalPrice = configuration?.isShowOriginalPrice\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const shouldUseCouponPrice = Boolean(isShowOriginalPrice && coupon)\n const currencyCode = data?.price?.currencyCode || 'USD'\n\n const priceInfo = useMemo(\n () =>\n formatVariantPrice({\n locale,\n amount: shouldUseCouponPrice ? coupon?.variant_price4wscode : variant?.price,\n baseAmount: shouldUseCouponPrice ? variant?.price : 0,\n currencyCode,\n currencyDisplay,\n customFormatPrice: formatPrice,\n }),\n [currencyCode, locale, shouldUseCouponPrice, coupon?.variant_price4wscode, variant, formatPrice]\n )\n\n const { price, basePrice, discount, discountAmount } = priceInfo\n\n const { imageUrl, altText } = getProductImage(data)\n\n const displayTitle = data?.custom_name || data?.title\n const currentDisplayTitle = isShowShortTitle\n ? variant?.metafields?.infos?.page_short_title || displayTitle\n : displayTitle\n const displayDescription = data?.custom_description || data?.description\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: displayTitle,\n componentDescription: displayDescription,\n position: configuration?.index + 1,\n })\n\n const handlePrimaryClick = async () => {\n if (primaryLoading) return\n if (data?.custom_primary_link) return\n setPrimaryLoading(true)\n try {\n await onPrimaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setPrimaryLoading(false)\n }\n }\n\n const handleSecondaryClick = async () => {\n if (secondaryLoading) return\n if (data?.custom_secondary_link) return\n setSecondaryLoading(true)\n try {\n await onSecondaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setSecondaryLoading(false)\n }\n }\n\n const showSizeClass = (): {\n boxItem: string\n imgItem: string\n wrap: string\n } => {\n if (itemLength >= 2) {\n return {\n boxItem: 'lg-desktop:max-w-[401px] desktop:max-w-[292px] max-w-full',\n imgItem:\n 'm-tablet:m-auto lg-desktop:max-w-[330px] lg-desktop:max-h-[330px] desktop:max-w-[260px] desktop:max-h-[260px] max-w-[138px] max-h-[138px]',\n wrap: 'lg-desktop:aspect-w-[824] lg-desktop:aspect-h-[480] desktop:aspect-w-[648] desktop:aspect-h-[380] laptop:aspect-w-[440] laptop:aspect-h-[356] tablet:aspect-w-[346] tablet:aspect-h-[360] md-tablet:w-full',\n }\n }\n return {\n boxItem: 'lg-desktop:max-w-[401px] desktop:max-w-[292px] laptop:max-w-[289px] max-w-[262px]',\n imgItem:\n 'md-tablet:m-auto lg-desktop:max-w-[450px] lg-desktop:max-h-[450px] desktop:max-w-[332px] desktop:max-h-[332px] max-w-[312px] max-h-[312px]',\n wrap: 'lg-desktop:aspect-w-[1664] lg-desktop:aspect-h-[480] desktop:aspect-w-[1312] desktop:aspect-h-[380] laptop:aspect-w-[896] laptop:aspect-h-[356] tablet:aspect-w-[704] tablet:aspect-h-[360] md-tablet:w-full',\n }\n }\n\n const handleWrapClass = () => {\n if (itemLength >= 2) {\n return 'flex flex-col justify-between desktop:gap-12 desktop:flex-row desktop:justify-center desktop:items-center'\n }\n return 'flex justify-center items-center gap-6 md-tablet:flex-col'\n }\n\n const showPrice = () => {\n if (coupon?.value_type === 'fixed_amount') {\n const amountStr = discountAmount || ''\n const match = amountStr.match(/^(.*?)(\\d[\\d.,]*)(.*)$/)\n if (match) {\n const [, prefix, numeric, suffix] = match\n let updatedNumeric = numeric\n if (numeric.endsWith('.00')) {\n updatedNumeric = numeric.replace(/\\.00$/, '')\n } else if (numeric.endsWith(',00')) {\n updatedNumeric = numeric.replace(/,00$/, '')\n }\n return `${prefix}${updatedNumeric}${suffix}`\n }\n return amountStr\n }\n return discount || ''\n }\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discount || discountAmount) {\n const discountTag = `${showPrice()} ${discounts?.off || discountsCopy?.off || ''}`\n handleTags.push(discountTag)\n }\n const newTags =\n data?.tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discount ? 1 : 2) || []\n setShowTags(handleTags.concat(newTags))\n }, [data?.tags, discount, discountAmount, discounts?.off, discountsCopy?.off])\n\n const custom_bg_image = data?.custom_bg_image\n const custom_theme = data?.custom_theme\n\n return (\n <div\n ref={ref}\n key={data?.id || data?.handle}\n className={cn(\n showSizeClass().wrap,\n 'rounded-box',\n 'shelf-display-item',\n 'duration-300',\n 'md-tablet:h-[360px] relative box-border w-full cursor-pointer overflow-hidden',\n custom_bg_image ? 'bg-cover bg-center bg-no-repeat' : 'bg-container-secondary-1 tablet:hover:bg-info-white',\n { 'aiui-dark': custom_theme === 'dark', 'aiui-light': custom_theme === 'light' }\n )}\n style={custom_bg_image ? { backgroundImage: `url(${custom_bg_image})` } : undefined}\n >\n <div className={cn(handleWrapClass(), 'desktop:p-6 absolute inset-0 box-border overflow-hidden p-4')}>\n <div\n className={cn(showSizeClass().imgItem, 'desktop:mb-0 relative mb-1 overflow-hidden', {\n 'opacity-0': custom_bg_image,\n })}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}?variant=${variantId}`,\n `${componentType}_${componentName}`\n )}\n onClick={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'select_item',\n event_parameters: {\n page_group: 'Home Page',\n item_list_name: 'Home_Page_Bundle',\n items: [\n {\n item_id: data?.sku || variant?.sku,\n item_name: data?.name,\n item_variant: variant?.name,\n price: variant?.price,\n index: configuration?.index + 1,\n },\n ],\n },\n })\n }}\n >\n <Picture\n source={imageUrl}\n alt={altText}\n className=\"flex h-full justify-center object-cover [&_img]:w-auto\"\n />\n </a>\n </div>\n <div className={cn('flex flex-col items-start justify-center', showSizeClass().boxItem)}>\n {isShowTag && (\n <div className=\"mb-1 box-border flex h-8 flex-wrap gap-1 overflow-hidden\">\n {showTags?.length > 0 &&\n showTags?.map?.((item: any, index: number) => (\n <Badge key={index} className=\"shelf-items-tag\" variant=\"fill\">\n {item}\n </Badge>\n ))}\n </div>\n )}\n {currentDisplayTitle ? (\n <Heading\n as=\"h3\"\n title={currentDisplayTitle || ''}\n size={2}\n className=\"shelf-display-product-title lg-desktop:h-[58px] text-info-primary mb-1 line-clamp-2 h-[48px]\"\n html={currentDisplayTitle || ''}\n />\n ) : null}\n {displayDescription ? (\n <Text\n size={2}\n className=\"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 shelf-display-product-description text-info-primary line-clamp-1 h-5 text-sm\"\n html={displayDescription || ''}\n />\n ) : null}\n <div className=\"mb-2 mt-5 flex items-center\">\n {renderPrice ? (\n renderPrice(data, {\n price,\n basePrice,\n discount,\n discountAmount,\n variant,\n coupon,\n isSoldOut,\n isShowOriginalPrice,\n })\n ) : isSoldOut ? (\n <div className=\"lg-desktop:text-2xl text-info-primary text-xl font-bold\">{copyWriting?.soldOutText}</div>\n ) : (\n <>\n <div className=\"final-price tablet:text-xl text-info-primary text-xl font-bold\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n {renderOriginalPrice\n ? renderOriginalPrice(data, {\n price,\n basePrice,\n discount,\n discountAmount,\n isShowOriginalPrice,\n })\n : basePrice && (\n <div className=\"origin-price tablet:text-xl text-info-quaternary ml-1 text-lg font-bold line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n )}\n </>\n )}\n </div>\n {!renderPrice && renderPriceLabel?.(data, variant, { isShowOriginalPrice })}\n {/* \u6309\u94AE\u7EC4 */}\n <div\n className={cn(\n 'shelf-flex-button-group',\n 'lg-desktop:gap-3 flex items-center gap-2',\n configuration.direction === 'vertical' ? 'flex-col' : ''\n )}\n >\n {configuration?.secondaryButton && !isSoldOut ? (\n <Button\n disabled={isSoldOut && configuration?.secondaryFun !== 'LearnMore'}\n variant=\"secondary\"\n href={data?.custom_secondary_link}\n as={data?.custom_secondary_link ? 'a' : 'button'}\n onClick={handleSecondaryClick}\n loading={secondaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n disabled={isSoldOut && configuration?.primaryFun !== 'LearnMore'}\n variant=\"primary\"\n href={data?.custom_primary_link}\n as={data?.custom_primary_link ? 'a' : 'button'}\n onClick={handlePrimaryClick}\n loading={primaryLoading}\n className={configuration.direction === 'vertical' ? 'w-full' : ''}\n >\n {configuration?.primaryButton || ''}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Fragment", "jsx", "jsxs", "useAiuiContext", "formatVariantPrice", "Picture", "Badge", "cn", "Text", "Button", "gaTrack", "trackUrlRef", "Heading", "useExposure", "useRef", "useEffect", "useMemo", "useState", "componentType", "componentName", "SOLD_OUT_PRICE", "getProductImage", "data", "sku", "skuArray", "findSku", "item", "imageUrl", "altText", "ShelfDisplaySocialEndorsements", "items", "index", "ShelfDisplayWrapItem", "configuration", "isDisplayBackImage", "itemShape", "metafields", "isTopTag", "isShowTag", "isShowOriginalPrice", "isShowShortTitle", "isShowPricesTag", "pricesTagTextColor", "pricesTagBgColor", "itemsTagTextColor", "itemsTagBgColor", "formatPrice", "renderOriginalPrice", "renderPriceLabel", "renderPrice", "locale", "copyWriting", "currencyDisplay", "discounts", "discountsCopy", "ref", "showTags", "setShowTags", "currentPriceTag", "setCurrentPriceTag", "primaryLoading", "setPrimaryLoading", "secondaryLoading", "setSecondaryLoading", "onPrimaryButton", "params", "coupon", "primaryFun", "onAddCart", "onBuyNow", "onLearnMore", "event", "onSecondaryButton", "secondaryFun", "variant", "variants", "variantArr", "variantId", "isSoldOut", "currencyCode", "priceInfo", "price", "basePrice", "discount", "discountAmount", "displayTitle", "currentDisplayTitle", "displayDescription", "showPrice", "amountStr", "match", "prefix", "numeric", "suffix", "updatedNumeric", "handleTags", "discountTag", "newTags", "handlePrimaryClick", "handleSecondaryClick", "bottomContent", "pricesTagStyle", "itemsTagStyle", "TagsComp", "custom_bg_image", "custom_theme", "ShelfDisplayHorizontalItem", "itemLength", "shouldUseCouponPrice", "showSizeClass", "handleWrapClass"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as $e,jsx as s,jsxs as m}from"react/jsx-runtime";import{useAiuiContext as _e}from"../AiuiProvider/index.js";import{formatVariantPrice as Se}from"../ShelfDisplay/shelfDisplay.js";import{getProductImage as Te}from"../ShelfDisplay/shelfDisplayItem.js";import we from"../../components/picture.js";import Q from"../../components/badge.js";import{cn as _}from"../../helpers/utils.js";import{Text as X}from"../../components/text.js";import Y from"../../components/button.js";import{gaTrack as Ce}from"../../shared/track.js";import{trackUrlRef as Ne}from"../../shared/trackUrlRef.js";import{Heading as Pe}from"../../components/heading.js";import{useExposure as Be}from"../../hooks/useExposure.js";import{useRef as ze,useEffect as De,useMemo as Z,useState as S}from"react";const ee="image",te="product_shelf",oe=999999999e-2,Le=({items:e})=>e?.length?s("div",{className:"shelf-display-horizontal-social-endorsements desktop:gap-2 desktop:top-2 absolute right-0 top-0 flex flex-none flex-col items-center gap-1 self-center",children:e.map((t,T)=>typeof t.icon=="string"?s("img",{src:t.icon,alt:t.label||"",loading:"lazy",className:"desktop:size-10 lg-desktop:size-12 size-8 object-contain"},T):s(X,{"aria-label":t.label,className:"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full",children:t.icon},T))}):null,Ke=({data:e,configuration:t})=>{const{isDisplayBackImage:T=!1,itemShape:Ie,metafields:$,isTopTag:Ee=!1,isShowTag:se,isShowOriginalPrice:re,isShowShortTitle:ie=!1,isShowPricesTag:w=!1,pricesTagTextColor:C,pricesTagBgColor:N,itemsTagTextColor:v,itemsTagBgColor:P,formatPrice:I,renderOriginalPrice:E,renderPriceLabel:le,renderPrice:B}=t||{},{locale:f="es",copyWriting:ne,currencyDisplay:A}=_e(),{discounts:F,discountsCopy:M}=$||{},H=ze(null),[O,ae]=S([]),[j,ce]=S(""),[U,W]=S(!1),[R,q]=S(!1),pe=(o,r,i,n)=>{const{primaryFun:a,onAddCart:c,onBuyNow:y,onLearnMore:h,event:L}=t||{};if(a){if(a==="AddCart"&&c)return c(o,r+1,i,n);if(a==="BuyNow"&&y)return y(o,r+1,i,n);if(a==="LearnMore"&&h)return h(o,r+1,i,n)}L?.primaryButton?.(o,r+1,i,n)},me=(o,r,i,n)=>{const{secondaryFun:a,onAddCart:c,onBuyNow:y,onLearnMore:h,event:L}=t||{};if(a){if(a==="AddCart"&&c)return c(o,r+1,i,n);if(a==="BuyNow"&&y)return y(o,r+1,i,n);if(a==="LearnMore"&&h)return h(o,r+1,i,n)}L?.secondaryButton?.(o,r+1,i,n)},l=Z(()=>{const o=e?.variants||[];if(o.length)return e?.sku?o?.find?.(r=>r?.sku===e?.sku)||o[0]:o?.[0]},[e?.sku,e?.variants]),V=l?.id?.split?.("/")||[],de=V?.[V?.length-1],u=!l?.availableForSale||l?.price?.amount===oe||l?.price===oe,p=l?.coupons?.[0],G=e?.price?.currencyCode||"USD",fe=Z(()=>Se({locale:f,amount:p?p?.variant_price4wscode:l?.price,baseAmount:p?l?.price:0,currencyCode:G,currencyDisplay:A,customFormatPrice:I}),[G,f,A,p,l,I]),{price:z,basePrice:k,discount:d,discountAmount:g}=fe,{imageUrl:ue,altText:ge}=Te(e),x=e?.custom_name||e?.title,D=ie&&l?.metafields?.infos?.page_short_title||x,J=e?.custom_description||e?.description,ye=()=>{if(p?.value_type==="fixed_amount"){const o=g||"",r=o.match(/^(.*?)(\d[\d.,]*)(.*)$/);if(r){const[,i,n,a]=r;let c=n;return n.endsWith(".00")?c=n.replace(/\.00$/,""):n.endsWith(",00")&&(c=n.replace(/,00$/,"")),`${i}${c}${a}`}return o}return d||""};De(()=>{let o=[];if(d||g){const i=`${ye()} ${F?.off||M?.off||""}`;ce(i)}const r=e?.tags?.filter?.(i=>i?.startsWith?.("CLtag"))?.map?.(i=>i?.replace?.("CLtag:",""))?.slice?.(0,d&&w?1:2)||[];ae(o.concat(r))},[e?.tags,d,g,F?.off,M?.off,w]),Be(H,{componentType:ee,componentName:te,componentTitle:x,componentDescription:J,position:t?.index+1});const he=async()=>{if(!U&&!e?.custom_primary_link){W(!0);try{await pe(e,t?.index,t,p)}finally{W(!1)}}},ve=async()=>{if(!R&&!e?.custom_secondary_link){q(!0);try{await me(e,t?.index,t,p)}finally{q(!1)}}},ke={...C?{color:C}:{},...N?{backgroundColor:N,backgroundImage:"none"}:{},...C||N?{outline:"none"}:{}},xe={...v?{color:v}:{},...P?{backgroundColor:P,backgroundImage:"none"}:{},...v||P?{outlineColor:v}:{}},be=()=>m("div",{className:"lg-desktop:h-[28px] absolute left-0 top-0 z-10 box-border flex h-6 flex-wrap gap-1 overflow-hidden",children:[w&&j&&s(Q,{className:"shelf-prices-tag",variant:"fill",style:ke,children:j||""}),se&&O?.length>0&&O?.map?.((o,r)=>s(Q,{className:"shelf-items-tag",variant:"outline",style:xe,children:o},r))]}),b=e?.custom_bg_image,K=e?.custom_theme;return s("div",{ref:H,className:_("box-border w-full cursor-pointer overflow-hidden duration-300","rounded-box","shelf-display-horizontal-item","lg-desktop:aspect-[824/269] desktop:aspect-[648/238] laptop:aspect-[440/256] relative",b?"bg-cover bg-center bg-no-repeat":"bg-background tablet:hover:bg-info-white",{"aiui-dark":K==="dark","aiui-light":K==="light"}),style:b?{backgroundImage:`url(${b})`}:void 0,children:m("div",{className:"desktop:p-6 desktop:pt-4 absolute inset-0 box-border flex overflow-hidden p-4",children:[m("div",{className:"shelf-display-horizontal-left laptop:flex-[196] desktop:flex-[292] lg-desktop:flex-[380] relative flex h-full flex-none flex-col items-center justify-center gap-2",children:[s(be,{}),s("div",{className:_("shelf-display-horizontal-item-image desktop:h-[92.3%] lg-desktop:h-[89.5%] relative inline-block aspect-[1] h-[63.6%] min-h-0 overflow-hidden",{"opacity-0":b}),children:s("a",{"aria-label":x,target:t?.target,href:Ne(`${f==="us"||!f?"":`/${f}`}/products/${e?.handle}?variant=${de}`,`${ee}_${te}`),onClick:()=>{Ce({event:"ga4Event",event_name:"select_item",event_parameters:{page_group:"Home Page",item_list_name:"Home_Page_Bundle",items:[{item_id:e?.sku||l?.sku,item_name:e?.name,item_variant:l?.name,price:l?.price,index:t?.index+1}]}})},children:s(we,{source:ue,alt:ge,className:"flex h-full justify-center object-cover [&_img]:w-auto"})})}),s(Le,{items:e?.socialEndorsements||$?.socialEndorsements})]}),m("div",{className:"shelf-display-horizontal-content desktop:flex-[332] desktop:pl-6 desktop:pt-2 lg-desktop:flex-[420] desktop:gap-6 flex min-w-0 flex-[224] flex-col justify-between gap-4 pl-4",children:[m("div",{className:"shelf-display-horizontal-content-title-desc",children:[D?s(Pe,{as:"h3",title:D||"",size:2,className:"shelf-display-product-title text-info-primary mb-1 line-clamp-2",html:D||""}):null,s(X,{size:2,className:_("lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]"),html:J||""})]}),m("div",{className:"shelf-display-horizontal-content-price-button",children:[s("div",{className:"mb-2 flex items-center",children:B?B(e,{price:z,basePrice:k,discount:d,discountAmount:g,variant:l,coupon:p,isSoldOut:u}):u?s("div",{className:"lg-desktop:text-2xl text-info-primary text-xl font-bold",children:ne?.soldOutText}):m($e,{children:[s("div",{className:"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]",children:l?.availableForSale&&z||""}),E?E(e,{price:z,basePrice:k,discount:d,discountAmount:g}):k&&re&&s("div",{className:"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through",children:l?.availableForSale&&k||""})]})}),!B&&le?.(e,l),m("div",{className:_("shelf-flex-button-group","lg-desktop:gap-3 desktop:flex-row flex flex-col items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton&&!u?s(Y,{disabled:u&&t?.secondaryFun!=="LearnMore",variant:"secondary",href:e?.custom_secondary_link,as:e?.custom_secondary_link?"a":"button",onClick:ve,loading:R,className:"laptop:w-full desktop:w-auto",children:t?.secondaryButton||""}):null,t?.primaryButton?s(Y,{disabled:u&&t?.primaryFun!=="LearnMore",variant:"primary",href:e?.custom_primary_link,as:e?.custom_primary_link?"a":"button",onClick:he,loading:U,className:"laptop:w-full desktop:w-auto",children:t?.primaryButton||""}):null]})]})]})]})},e?.id||e?.handle)};export{Ke as ShelfDisplayHorizontalCardItem};
1
+ import{Fragment as $e,jsx as s,jsxs as m}from"react/jsx-runtime";import{useAiuiContext as _e}from"../AiuiProvider/index.js";import{formatVariantPrice as Se}from"../ShelfDisplay/shelfDisplay.js";import{getProductImage as Te}from"../ShelfDisplay/shelfDisplayItem.js";import we from"../../components/picture.js";import X from"../../components/badge.js";import{cn as S}from"../../helpers/utils.js";import{Text as Y}from"../../components/text.js";import Z from"../../components/button.js";import{gaTrack as Ce}from"../../shared/track.js";import{trackUrlRef as Ne}from"../../shared/trackUrlRef.js";import{Heading as Pe}from"../../components/heading.js";import{useExposure as Be}from"../../hooks/useExposure.js";import{useRef as ze,useEffect as De,useMemo as ee,useState as T}from"react";const te="image",oe="product_shelf",se=999999999e-2,Le=({items:e})=>e?.length?s("div",{className:"shelf-display-horizontal-social-endorsements desktop:gap-2 desktop:top-2 absolute right-0 top-0 flex flex-none flex-col items-center gap-1 self-center",children:e.map((t,w)=>typeof t.icon=="string"?s("img",{src:t.icon,alt:t.label||"",loading:"lazy",className:"desktop:size-10 lg-desktop:size-12 size-8 object-contain"},w):s(Y,{"aria-label":t.label,className:"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full",children:t.icon},w))}):null,Ke=({data:e,configuration:t})=>{const{isDisplayBackImage:w=!1,itemShape:Ie,metafields:I,isTopTag:Ee=!1,isShowTag:re,isShowOriginalPrice:v,isShowShortTitle:ie=!1,isShowPricesTag:C=!1,pricesTagTextColor:N,pricesTagBgColor:P,itemsTagTextColor:k,itemsTagBgColor:B,formatPrice:E,renderOriginalPrice:A,renderPriceLabel:le,renderPrice:z}=t||{},{locale:f="es",copyWriting:ne,currencyDisplay:F}=_e(),{discounts:M,discountsCopy:H}=I||{},O=ze(null),[j,ae]=T([]),[U,ce]=T(""),[W,R]=T(!1),[q,V]=T(!1),pe=(o,r,i,n)=>{const{primaryFun:a,onAddCart:c,onBuyNow:y,onLearnMore:h,event:$}=t||{};if(a){if(a==="AddCart"&&c)return c(o,r+1,i,n);if(a==="BuyNow"&&y)return y(o,r+1,i,n);if(a==="LearnMore"&&h)return h(o,r+1,i,n)}$?.primaryButton?.(o,r+1,i,n)},me=(o,r,i,n)=>{const{secondaryFun:a,onAddCart:c,onBuyNow:y,onLearnMore:h,event:$}=t||{};if(a){if(a==="AddCart"&&c)return c(o,r+1,i,n);if(a==="BuyNow"&&y)return y(o,r+1,i,n);if(a==="LearnMore"&&h)return h(o,r+1,i,n)}$?.secondaryButton?.(o,r+1,i,n)},l=ee(()=>{const o=e?.variants||[];if(o.length)return e?.sku?o?.find?.(r=>r?.sku===e?.sku)||o[0]:o?.[0]},[e?.sku,e?.variants]),G=l?.id?.split?.("/")||[],de=G?.[G?.length-1],u=!l?.availableForSale||l?.price?.amount===se||l?.price===se,p=l?.coupons?.[0],J=e?.price?.currencyCode||"USD",fe=ee(()=>Se({locale:f,amount:p?p?.variant_price4wscode:l?.price,baseAmount:p?l?.price:0,currencyCode:J,currencyDisplay:F,customFormatPrice:E}),[J,f,F,p,l,E]),{price:D,basePrice:x,discount:d,discountAmount:g}=fe,{imageUrl:ue,altText:ge}=Te(e),b=e?.custom_name||e?.title,L=ie&&l?.metafields?.infos?.page_short_title||b,K=e?.custom_description||e?.description,ye=()=>{if(p?.value_type==="fixed_amount"){const o=g||"",r=o.match(/^(.*?)(\d[\d.,]*)(.*)$/);if(r){const[,i,n,a]=r;let c=n;return n.endsWith(".00")?c=n.replace(/\.00$/,""):n.endsWith(",00")&&(c=n.replace(/,00$/,"")),`${i}${c}${a}`}return o}return d||""};De(()=>{let o=[];if(d||g){const i=`${ye()} ${M?.off||H?.off||""}`;ce(i)}const r=e?.tags?.filter?.(i=>i?.startsWith?.("CLtag"))?.map?.(i=>i?.replace?.("CLtag:",""))?.slice?.(0,d&&C?1:2)||[];ae(o.concat(r))},[e?.tags,d,g,M?.off,H?.off,C]),Be(O,{componentType:te,componentName:oe,componentTitle:b,componentDescription:K,position:t?.index+1});const he=async()=>{if(!W&&!e?.custom_primary_link){R(!0);try{await pe(e,t?.index,t,p)}finally{R(!1)}}},ve=async()=>{if(!q&&!e?.custom_secondary_link){V(!0);try{await me(e,t?.index,t,p)}finally{V(!1)}}},ke={...N?{color:N}:{},...P?{backgroundColor:P,backgroundImage:"none"}:{},...N||P?{outline:"none"}:{}},xe={...k?{color:k}:{},...B?{backgroundColor:B,backgroundImage:"none"}:{},...k||B?{outlineColor:k}:{}},be=()=>m("div",{className:"lg-desktop:h-[28px] absolute left-0 top-0 z-10 box-border flex h-6 flex-wrap gap-1 overflow-hidden",children:[C&&U&&s(X,{className:"shelf-prices-tag",variant:"fill",style:ke,children:U||""}),re&&j?.length>0&&j?.map?.((o,r)=>s(X,{className:"shelf-items-tag",variant:"outline",style:xe,children:o},r))]}),_=e?.custom_bg_image,Q=e?.custom_theme;return s("div",{ref:O,className:S("box-border w-full cursor-pointer overflow-hidden duration-300","rounded-box","shelf-display-horizontal-item","lg-desktop:aspect-[824/269] desktop:aspect-[648/238] laptop:aspect-[440/256] relative",_?"bg-cover bg-center bg-no-repeat":"bg-background tablet:hover:bg-info-white",{"aiui-dark":Q==="dark","aiui-light":Q==="light"}),style:_?{backgroundImage:`url(${_})`}:void 0,children:m("div",{className:"desktop:p-6 desktop:pt-4 absolute inset-0 box-border flex overflow-hidden p-4",children:[m("div",{className:"shelf-display-horizontal-left laptop:flex-[196] desktop:flex-[292] lg-desktop:flex-[380] relative flex h-full flex-none flex-col items-center justify-center gap-2",children:[s(be,{}),s("div",{className:S("shelf-display-horizontal-item-image desktop:h-[92.3%] lg-desktop:h-[89.5%] relative inline-block aspect-[1] h-[63.6%] min-h-0 overflow-hidden",{"opacity-0":_}),children:s("a",{"aria-label":b,target:t?.target,href:Ne(`${f==="us"||!f?"":`/${f}`}/products/${e?.handle}?variant=${de}`,`${te}_${oe}`),onClick:()=>{Ce({event:"ga4Event",event_name:"select_item",event_parameters:{page_group:"Home Page",item_list_name:"Home_Page_Bundle",items:[{item_id:e?.sku||l?.sku,item_name:e?.name,item_variant:l?.name,price:l?.price,index:t?.index+1}]}})},children:s(we,{source:ue,alt:ge,className:"flex h-full justify-center object-cover [&_img]:w-auto"})})}),s(Le,{items:e?.socialEndorsements||I?.socialEndorsements})]}),m("div",{className:"shelf-display-horizontal-content desktop:flex-[332] desktop:pl-6 desktop:pt-2 lg-desktop:flex-[420] desktop:gap-6 flex min-w-0 flex-[224] flex-col justify-between gap-4 pl-4",children:[m("div",{className:"shelf-display-horizontal-content-title-desc",children:[L?s(Pe,{as:"h3",title:L||"",size:2,className:"shelf-display-product-title text-info-primary mb-1 line-clamp-2",html:L||""}):null,s(Y,{size:2,className:S("lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]"),html:K||""})]}),m("div",{className:"shelf-display-horizontal-content-price-button",children:[s("div",{className:"mb-2 flex items-center",children:z?z(e,{price:D,basePrice:x,discount:d,discountAmount:g,variant:l,coupon:p,isSoldOut:u,isShowOriginalPrice:v}):u?s("div",{className:"lg-desktop:text-2xl text-info-primary text-xl font-bold",children:ne?.soldOutText}):m($e,{children:[s("div",{className:"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]",children:l?.availableForSale&&D||""}),A?A(e,{price:D,basePrice:x,discount:d,discountAmount:g,isShowOriginalPrice:v}):x&&v&&s("div",{className:"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through",children:l?.availableForSale&&x||""})]})}),!z&&le?.(e,l,{isShowOriginalPrice:v}),m("div",{className:S("shelf-flex-button-group","lg-desktop:gap-3 desktop:flex-row flex flex-col items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton&&!u?s(Z,{disabled:u&&t?.secondaryFun!=="LearnMore",variant:"secondary",href:e?.custom_secondary_link,as:e?.custom_secondary_link?"a":"button",onClick:ve,loading:q,className:"laptop:w-full desktop:w-auto",children:t?.secondaryButton||""}):null,t?.primaryButton?s(Z,{disabled:u&&t?.primaryFun!=="LearnMore",variant:"primary",href:e?.custom_primary_link,as:e?.custom_primary_link?"a":"button",onClick:he,loading:W,className:"laptop:w-full desktop:w-auto",children:t?.primaryButton||""}):null]})]})]})]})},e?.id||e?.handle)};export{Ke as ShelfDisplayHorizontalCardItem};
2
2
  //# sourceMappingURL=shelfDisplayHorizontalItem.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/ShelfDisplayHorizontal/shelfDisplayHorizontalItem.tsx"],
4
- "sourcesContent": ["import { useAiuiContext } from '../AiuiProvider/index.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport { getProductImage } from '../ShelfDisplay/shelfDisplayItem.js'\nimport Picture from '../../components/picture.js'\nimport Badge from '../../components/badge.js'\nimport { cn } from '../../helpers/utils.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport { gaTrack } from '../../shared/track.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { Heading } from '../../components/heading.js'\nimport type { ShelfDisplayItem, ShelfDisplayType, SocialEndorsementItem } from '../ShelfDisplay/shelfDisplay.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { useRef, useEffect, useMemo, useState, type CSSProperties } from 'react'\n\nconst componentType = 'image'\nconst componentName = 'product_shelf'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\nconst ShelfDisplayHorizontalEndorsements = ({ items }: { items?: SocialEndorsementItem[] }) => {\n if (!items?.length) {\n return null\n }\n return (\n <div className=\"shelf-display-horizontal-social-endorsements desktop:gap-2 desktop:top-2 absolute right-0 top-0 flex flex-none flex-col items-center gap-1 self-center\">\n {items.map((item, index) =>\n typeof item.icon === 'string' ? (\n <img\n key={index}\n src={item.icon}\n alt={item.label || ''}\n loading=\"lazy\"\n className=\"desktop:size-10 lg-desktop:size-12 size-8 object-contain\"\n />\n ) : (\n <Text\n key={index}\n aria-label={item.label}\n className=\"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full\"\n >\n {item.icon}\n </Text>\n )\n )}\n </div>\n )\n}\n\n/**\n * \u6A2A\u7248\u4EA7\u54C1\u8D27\u67B6\u5361\u7247\uFF08\u22651025px \u4F7F\u7528\uFF09\n * \u903B\u8F91\u4E0E ShelfDisplayWrapItem \u4FDD\u6301\u4E00\u81F4\uFF0C\u4EC5\u5E03\u5C40\u4E3A\u6A2A\u5411\uFF08\u56FE\u5DE6\u3001\u5185\u5BB9\u53F3\uFF09\n */\nexport const ShelfDisplayHorizontalCardItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const {\n isDisplayBackImage = false,\n itemShape,\n metafields,\n isTopTag = false,\n isShowTag,\n isShowOriginalPrice,\n isShowShortTitle = false,\n isShowPricesTag = false,\n pricesTagTextColor,\n pricesTagBgColor,\n itemsTagTextColor,\n itemsTagBgColor,\n formatPrice,\n renderOriginalPrice,\n renderPriceLabel,\n renderPrice,\n } = configuration || {}\n const { locale = 'es', copyWriting, currencyDisplay } = useAiuiContext()\n const { discounts, discountsCopy } = metafields || {}\n const ref = useRef<HTMLDivElement>(null)\n const [showTags, setShowTags] = useState<string[]>([])\n const [currentPriceTag, setCurrentPriceTag] = useState<string>('')\n const [primaryLoading, setPrimaryLoading] = useState(false)\n const [secondaryLoading, setSecondaryLoading] = useState(false)\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { primaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E primaryFun \u503C\uFF09\n if (primaryFun) {\n if (primaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (primaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (primaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.primaryButton?.(params, index + 1, data, coupon)\n }\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { secondaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E secondaryFun \u503C\uFF09\n if (secondaryFun) {\n if (secondaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.secondaryButton?.(params, index + 1, data, coupon)\n }\n\n const variant = useMemo(() => {\n const variants = data?.variants || []\n if (!variants.length) {\n return undefined\n }\n if (!data?.sku) {\n return variants?.[0]\n }\n return variants?.find?.((item: any) => item?.sku === data?.sku) || variants[0]\n }, [data?.sku, data?.variants])\n\n const variantArr = variant?.id?.split?.('/') || []\n const variantId = variantArr?.[variantArr?.length - 1]\n\n const isSoldOut =\n !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE || variant?.price === SOLD_OUT_PRICE\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const currencyCode = data?.price?.currencyCode || 'USD'\n\n const priceInfo = useMemo(\n () =>\n formatVariantPrice({\n locale,\n amount: coupon ? coupon?.variant_price4wscode : variant?.price,\n baseAmount: coupon ? variant?.price : 0,\n currencyCode,\n currencyDisplay,\n customFormatPrice: formatPrice,\n }),\n [currencyCode, locale, currencyDisplay, coupon, variant, formatPrice]\n )\n\n const { price, basePrice, discount, discountAmount } = priceInfo\n\n const { imageUrl, altText } = getProductImage(data)\n\n const displayTitle = data?.custom_name || data?.title\n const currentDisplayTitle = isShowShortTitle\n ? variant?.metafields?.infos?.page_short_title || displayTitle\n : displayTitle\n const displayDescription = data?.custom_description || data?.description\n\n const showPrice = () => {\n if (coupon?.value_type === 'fixed_amount') {\n const amountStr = discountAmount || ''\n const match = amountStr.match(/^(.*?)(\\d[\\d.,]*)(.*)$/)\n if (match) {\n const [, prefix, numeric, suffix] = match\n let updatedNumeric = numeric\n if (numeric.endsWith('.00')) {\n updatedNumeric = numeric.replace(/\\.00$/, '')\n } else if (numeric.endsWith(',00')) {\n updatedNumeric = numeric.replace(/,00$/, '')\n }\n return `${prefix}${updatedNumeric}${suffix}`\n }\n return amountStr\n }\n return discount || ''\n }\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discount || discountAmount) {\n const discountTag = `${showPrice()} ${discounts?.off || discountsCopy?.off || ''}`\n setCurrentPriceTag(discountTag)\n }\n const newTags =\n data?.tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discount && isShowPricesTag ? 1 : 2) || []\n setShowTags(handleTags.concat(newTags))\n }, [data?.tags, discount, discountAmount, discounts?.off, discountsCopy?.off, isShowPricesTag])\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: displayTitle,\n componentDescription: displayDescription,\n position: configuration?.index + 1,\n })\n\n const handlePrimaryClick = async () => {\n if (primaryLoading) return\n if (data?.custom_primary_link) return\n setPrimaryLoading(true)\n try {\n await onPrimaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setPrimaryLoading(false)\n }\n }\n\n const handleSecondaryClick = async () => {\n if (secondaryLoading) return\n if (data?.custom_secondary_link) return\n setSecondaryLoading(true)\n try {\n await onSecondaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setSecondaryLoading(false)\n }\n }\n\n const pricesTagStyle: CSSProperties = {\n ...(pricesTagTextColor ? { color: pricesTagTextColor } : {}),\n ...(pricesTagBgColor ? { backgroundColor: pricesTagBgColor, backgroundImage: 'none' } : {}),\n ...(pricesTagTextColor || pricesTagBgColor ? { outline: 'none' } : {}),\n }\n const itemsTagStyle: CSSProperties = {\n ...(itemsTagTextColor ? { color: itemsTagTextColor } : {}),\n ...(itemsTagBgColor ? { backgroundColor: itemsTagBgColor, backgroundImage: 'none' } : {}),\n ...(itemsTagTextColor || itemsTagBgColor ? { outlineColor: itemsTagTextColor } : {}),\n }\n\n const TagsComp = () => {\n return (\n <div className=\"lg-desktop:h-[28px] absolute left-0 top-0 z-10 box-border flex h-6 flex-wrap gap-1 overflow-hidden\">\n {isShowPricesTag && currentPriceTag && (\n <Badge className=\"shelf-prices-tag\" variant=\"fill\" style={pricesTagStyle}>\n {currentPriceTag || ''}\n </Badge>\n )}\n {isShowTag &&\n showTags?.length > 0 &&\n showTags?.map?.((item: any, index: number) => (\n <Badge key={index} className=\"shelf-items-tag\" variant=\"outline\" style={itemsTagStyle}>\n {item}\n </Badge>\n ))}\n </div>\n )\n }\n\n const custom_bg_image = data?.custom_bg_image\n const custom_theme = data?.custom_theme\n\n return (\n <div\n ref={ref}\n key={data?.id || data?.handle}\n className={cn(\n 'box-border w-full cursor-pointer overflow-hidden duration-300',\n 'rounded-box',\n 'shelf-display-horizontal-item',\n 'lg-desktop:aspect-[824/269] desktop:aspect-[648/238] laptop:aspect-[440/256] relative',\n custom_bg_image ? 'bg-cover bg-center bg-no-repeat' : 'bg-background tablet:hover:bg-info-white',\n { 'aiui-dark': custom_theme === 'dark', 'aiui-light': custom_theme === 'light' }\n )}\n style={custom_bg_image ? { backgroundImage: `url(${custom_bg_image})` } : undefined}\n >\n <div className=\"desktop:p-6 desktop:pt-4 absolute inset-0 box-border flex overflow-hidden p-4\">\n <div className=\"shelf-display-horizontal-left laptop:flex-[196] desktop:flex-[292] lg-desktop:flex-[380] relative flex h-full flex-none flex-col items-center justify-center gap-2\">\n <TagsComp />\n <div\n className={cn(\n 'shelf-display-horizontal-item-image desktop:h-[92.3%] lg-desktop:h-[89.5%] relative inline-block aspect-[1] h-[63.6%] min-h-0 overflow-hidden',\n {\n 'opacity-0': custom_bg_image,\n }\n )}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}?variant=${variantId}`,\n `${componentType}_${componentName}`\n )}\n onClick={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'select_item',\n event_parameters: {\n page_group: 'Home Page',\n item_list_name: 'Home_Page_Bundle',\n items: [\n {\n item_id: data?.sku || variant?.sku,\n item_name: data?.name,\n item_variant: variant?.name,\n price: variant?.price,\n index: configuration?.index + 1,\n },\n ],\n },\n })\n }}\n >\n <Picture\n source={imageUrl}\n alt={altText}\n className=\"flex h-full justify-center object-cover [&_img]:w-auto\"\n />\n </a>\n </div>\n <ShelfDisplayHorizontalEndorsements items={data?.socialEndorsements || metafields?.socialEndorsements} />\n </div>\n <div className=\"shelf-display-horizontal-content desktop:flex-[332] desktop:pl-6 desktop:pt-2 lg-desktop:flex-[420] desktop:gap-6 flex min-w-0 flex-[224] flex-col justify-between gap-4 pl-4\">\n <div className=\"shelf-display-horizontal-content-title-desc\">\n {currentDisplayTitle ? (\n <Heading\n as=\"h3\"\n title={currentDisplayTitle || ''}\n size={2}\n className=\"shelf-display-product-title text-info-primary mb-1 line-clamp-2\"\n html={currentDisplayTitle || ''}\n />\n ) : null}\n <Text\n size={2}\n className={cn(\n 'lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]'\n )}\n html={displayDescription || ''}\n />\n </div>\n <div className=\"shelf-display-horizontal-content-price-button\">\n <div className=\"mb-2 flex items-center\">\n {renderPrice ? (\n renderPrice(data, { price, basePrice, discount, discountAmount, variant, coupon, isSoldOut })\n ) : isSoldOut ? (\n <div className=\"lg-desktop:text-2xl text-info-primary text-xl font-bold\">\n {copyWriting?.soldOutText}\n </div>\n ) : (\n <>\n <div className=\"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n {renderOriginalPrice\n ? renderOriginalPrice(data, { price, basePrice, discount, discountAmount })\n : basePrice &&\n isShowOriginalPrice && (\n <div className=\"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n )}\n </>\n )}\n </div>\n {!renderPrice && renderPriceLabel?.(data, variant)}\n <div\n className={cn(\n 'shelf-flex-button-group',\n 'lg-desktop:gap-3 desktop:flex-row flex flex-col items-center gap-2',\n configuration.direction === 'vertical' ? 'flex-col' : ''\n )}\n >\n {configuration?.secondaryButton && !isSoldOut ? (\n <Button\n disabled={isSoldOut && configuration?.secondaryFun !== 'LearnMore'}\n variant=\"secondary\"\n href={data?.custom_secondary_link}\n as={data?.custom_secondary_link ? 'a' : 'button'}\n onClick={handleSecondaryClick}\n loading={secondaryLoading}\n className=\"laptop:w-full desktop:w-auto\"\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n disabled={isSoldOut && configuration?.primaryFun !== 'LearnMore'}\n variant=\"primary\"\n href={data?.custom_primary_link}\n as={data?.custom_primary_link ? 'a' : 'button'}\n onClick={handlePrimaryClick}\n loading={primaryLoading}\n className=\"laptop:w-full desktop:w-auto\"\n >\n {configuration?.primaryButton || ''}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useAiuiContext } from '../AiuiProvider/index.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport { getProductImage } from '../ShelfDisplay/shelfDisplayItem.js'\nimport Picture from '../../components/picture.js'\nimport Badge from '../../components/badge.js'\nimport { cn } from '../../helpers/utils.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport { gaTrack } from '../../shared/track.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { Heading } from '../../components/heading.js'\nimport type { ShelfDisplayItem, ShelfDisplayType, SocialEndorsementItem } from '../ShelfDisplay/shelfDisplay.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { useRef, useEffect, useMemo, useState, type CSSProperties } from 'react'\n\nconst componentType = 'image'\nconst componentName = 'product_shelf'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\nconst ShelfDisplayHorizontalEndorsements = ({ items }: { items?: SocialEndorsementItem[] }) => {\n if (!items?.length) {\n return null\n }\n return (\n <div className=\"shelf-display-horizontal-social-endorsements desktop:gap-2 desktop:top-2 absolute right-0 top-0 flex flex-none flex-col items-center gap-1 self-center\">\n {items.map((item, index) =>\n typeof item.icon === 'string' ? (\n <img\n key={index}\n src={item.icon}\n alt={item.label || ''}\n loading=\"lazy\"\n className=\"desktop:size-10 lg-desktop:size-12 size-8 object-contain\"\n />\n ) : (\n <Text\n key={index}\n aria-label={item.label}\n className=\"desktop:size-10 lg-desktop:size-12 size-8 [&_img]:size-full [&_svg]:size-full\"\n >\n {item.icon}\n </Text>\n )\n )}\n </div>\n )\n}\n\n/**\n * \u6A2A\u7248\u4EA7\u54C1\u8D27\u67B6\u5361\u7247\uFF08\u22651025px \u4F7F\u7528\uFF09\n * \u903B\u8F91\u4E0E ShelfDisplayWrapItem \u4FDD\u6301\u4E00\u81F4\uFF0C\u4EC5\u5E03\u5C40\u4E3A\u6A2A\u5411\uFF08\u56FE\u5DE6\u3001\u5185\u5BB9\u53F3\uFF09\n */\nexport const ShelfDisplayHorizontalCardItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const {\n isDisplayBackImage = false,\n itemShape,\n metafields,\n isTopTag = false,\n isShowTag,\n isShowOriginalPrice,\n isShowShortTitle = false,\n isShowPricesTag = false,\n pricesTagTextColor,\n pricesTagBgColor,\n itemsTagTextColor,\n itemsTagBgColor,\n formatPrice,\n renderOriginalPrice,\n renderPriceLabel,\n renderPrice,\n } = configuration || {}\n const { locale = 'es', copyWriting, currencyDisplay } = useAiuiContext()\n const { discounts, discountsCopy } = metafields || {}\n const ref = useRef<HTMLDivElement>(null)\n const [showTags, setShowTags] = useState<string[]>([])\n const [currentPriceTag, setCurrentPriceTag] = useState<string>('')\n const [primaryLoading, setPrimaryLoading] = useState(false)\n const [secondaryLoading, setSecondaryLoading] = useState(false)\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { primaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E primaryFun \u503C\uFF09\n if (primaryFun) {\n if (primaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (primaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (primaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.primaryButton?.(params, index + 1, data, coupon)\n }\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType, coupon: any) => {\n const { secondaryFun, onAddCart, onBuyNow, onLearnMore, event } = configuration || {}\n\n // \u4F18\u5148\u4F7F\u7528 function props\uFF08\u6839\u636E secondaryFun \u503C\uFF09\n if (secondaryFun) {\n if (secondaryFun === 'AddCart' && onAddCart) {\n return onAddCart(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'BuyNow' && onBuyNow) {\n return onBuyNow(params, index + 1, data, coupon)\n }\n if (secondaryFun === 'LearnMore' && onLearnMore) {\n return onLearnMore(params, index + 1, data, coupon)\n }\n }\n\n // \u517C\u5BB9\u65E7\u7684 event \u903B\u8F91\n event?.secondaryButton?.(params, index + 1, data, coupon)\n }\n\n const variant = useMemo(() => {\n const variants = data?.variants || []\n if (!variants.length) {\n return undefined\n }\n if (!data?.sku) {\n return variants?.[0]\n }\n return variants?.find?.((item: any) => item?.sku === data?.sku) || variants[0]\n }, [data?.sku, data?.variants])\n\n const variantArr = variant?.id?.split?.('/') || []\n const variantId = variantArr?.[variantArr?.length - 1]\n\n const isSoldOut =\n !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE || variant?.price === SOLD_OUT_PRICE\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const currencyCode = data?.price?.currencyCode || 'USD'\n\n const priceInfo = useMemo(\n () =>\n formatVariantPrice({\n locale,\n amount: coupon ? coupon?.variant_price4wscode : variant?.price,\n baseAmount: coupon ? variant?.price : 0,\n currencyCode,\n currencyDisplay,\n customFormatPrice: formatPrice,\n }),\n [currencyCode, locale, currencyDisplay, coupon, variant, formatPrice]\n )\n\n const { price, basePrice, discount, discountAmount } = priceInfo\n\n const { imageUrl, altText } = getProductImage(data)\n\n const displayTitle = data?.custom_name || data?.title\n const currentDisplayTitle = isShowShortTitle\n ? variant?.metafields?.infos?.page_short_title || displayTitle\n : displayTitle\n const displayDescription = data?.custom_description || data?.description\n\n const showPrice = () => {\n if (coupon?.value_type === 'fixed_amount') {\n const amountStr = discountAmount || ''\n const match = amountStr.match(/^(.*?)(\\d[\\d.,]*)(.*)$/)\n if (match) {\n const [, prefix, numeric, suffix] = match\n let updatedNumeric = numeric\n if (numeric.endsWith('.00')) {\n updatedNumeric = numeric.replace(/\\.00$/, '')\n } else if (numeric.endsWith(',00')) {\n updatedNumeric = numeric.replace(/,00$/, '')\n }\n return `${prefix}${updatedNumeric}${suffix}`\n }\n return amountStr\n }\n return discount || ''\n }\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discount || discountAmount) {\n const discountTag = `${showPrice()} ${discounts?.off || discountsCopy?.off || ''}`\n setCurrentPriceTag(discountTag)\n }\n const newTags =\n data?.tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discount && isShowPricesTag ? 1 : 2) || []\n setShowTags(handleTags.concat(newTags))\n }, [data?.tags, discount, discountAmount, discounts?.off, discountsCopy?.off, isShowPricesTag])\n\n useExposure(ref, {\n componentType,\n componentName,\n componentTitle: displayTitle,\n componentDescription: displayDescription,\n position: configuration?.index + 1,\n })\n\n const handlePrimaryClick = async () => {\n if (primaryLoading) return\n if (data?.custom_primary_link) return\n setPrimaryLoading(true)\n try {\n await onPrimaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setPrimaryLoading(false)\n }\n }\n\n const handleSecondaryClick = async () => {\n if (secondaryLoading) return\n if (data?.custom_secondary_link) return\n setSecondaryLoading(true)\n try {\n await onSecondaryButton(data, configuration?.index, configuration, coupon)\n } finally {\n setSecondaryLoading(false)\n }\n }\n\n const pricesTagStyle: CSSProperties = {\n ...(pricesTagTextColor ? { color: pricesTagTextColor } : {}),\n ...(pricesTagBgColor ? { backgroundColor: pricesTagBgColor, backgroundImage: 'none' } : {}),\n ...(pricesTagTextColor || pricesTagBgColor ? { outline: 'none' } : {}),\n }\n const itemsTagStyle: CSSProperties = {\n ...(itemsTagTextColor ? { color: itemsTagTextColor } : {}),\n ...(itemsTagBgColor ? { backgroundColor: itemsTagBgColor, backgroundImage: 'none' } : {}),\n ...(itemsTagTextColor || itemsTagBgColor ? { outlineColor: itemsTagTextColor } : {}),\n }\n\n const TagsComp = () => {\n return (\n <div className=\"lg-desktop:h-[28px] absolute left-0 top-0 z-10 box-border flex h-6 flex-wrap gap-1 overflow-hidden\">\n {isShowPricesTag && currentPriceTag && (\n <Badge className=\"shelf-prices-tag\" variant=\"fill\" style={pricesTagStyle}>\n {currentPriceTag || ''}\n </Badge>\n )}\n {isShowTag &&\n showTags?.length > 0 &&\n showTags?.map?.((item: any, index: number) => (\n <Badge key={index} className=\"shelf-items-tag\" variant=\"outline\" style={itemsTagStyle}>\n {item}\n </Badge>\n ))}\n </div>\n )\n }\n\n const custom_bg_image = data?.custom_bg_image\n const custom_theme = data?.custom_theme\n\n return (\n <div\n ref={ref}\n key={data?.id || data?.handle}\n className={cn(\n 'box-border w-full cursor-pointer overflow-hidden duration-300',\n 'rounded-box',\n 'shelf-display-horizontal-item',\n 'lg-desktop:aspect-[824/269] desktop:aspect-[648/238] laptop:aspect-[440/256] relative',\n custom_bg_image ? 'bg-cover bg-center bg-no-repeat' : 'bg-background tablet:hover:bg-info-white',\n { 'aiui-dark': custom_theme === 'dark', 'aiui-light': custom_theme === 'light' }\n )}\n style={custom_bg_image ? { backgroundImage: `url(${custom_bg_image})` } : undefined}\n >\n <div className=\"desktop:p-6 desktop:pt-4 absolute inset-0 box-border flex overflow-hidden p-4\">\n <div className=\"shelf-display-horizontal-left laptop:flex-[196] desktop:flex-[292] lg-desktop:flex-[380] relative flex h-full flex-none flex-col items-center justify-center gap-2\">\n <TagsComp />\n <div\n className={cn(\n 'shelf-display-horizontal-item-image desktop:h-[92.3%] lg-desktop:h-[89.5%] relative inline-block aspect-[1] h-[63.6%] min-h-0 overflow-hidden',\n {\n 'opacity-0': custom_bg_image,\n }\n )}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}?variant=${variantId}`,\n `${componentType}_${componentName}`\n )}\n onClick={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'select_item',\n event_parameters: {\n page_group: 'Home Page',\n item_list_name: 'Home_Page_Bundle',\n items: [\n {\n item_id: data?.sku || variant?.sku,\n item_name: data?.name,\n item_variant: variant?.name,\n price: variant?.price,\n index: configuration?.index + 1,\n },\n ],\n },\n })\n }}\n >\n <Picture\n source={imageUrl}\n alt={altText}\n className=\"flex h-full justify-center object-cover [&_img]:w-auto\"\n />\n </a>\n </div>\n <ShelfDisplayHorizontalEndorsements items={data?.socialEndorsements || metafields?.socialEndorsements} />\n </div>\n <div className=\"shelf-display-horizontal-content desktop:flex-[332] desktop:pl-6 desktop:pt-2 lg-desktop:flex-[420] desktop:gap-6 flex min-w-0 flex-[224] flex-col justify-between gap-4 pl-4\">\n <div className=\"shelf-display-horizontal-content-title-desc\">\n {currentDisplayTitle ? (\n <Heading\n as=\"h3\"\n title={currentDisplayTitle || ''}\n size={2}\n className=\"shelf-display-product-title text-info-primary mb-1 line-clamp-2\"\n html={currentDisplayTitle || ''}\n />\n ) : null}\n <Text\n size={2}\n className={cn(\n 'lg-desktop:text-lg desktop:text-base shelf-display-product-description text-info-primary line-clamp-2 text-sm !leading-[1.4]'\n )}\n html={displayDescription || ''}\n />\n </div>\n <div className=\"shelf-display-horizontal-content-price-button\">\n <div className=\"mb-2 flex items-center\">\n {renderPrice ? (\n renderPrice(data, {\n price,\n basePrice,\n discount,\n discountAmount,\n variant,\n coupon,\n isSoldOut,\n isShowOriginalPrice,\n })\n ) : isSoldOut ? (\n <div className=\"lg-desktop:text-2xl text-info-primary text-xl font-bold\">\n {copyWriting?.soldOutText}\n </div>\n ) : (\n <>\n <div className=\"final-price lg-desktop:text-2xl text-info-primary text-xl font-bold !leading-[1.2]\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n {renderOriginalPrice\n ? renderOriginalPrice(data, {\n price,\n basePrice,\n discount,\n discountAmount,\n isShowOriginalPrice,\n })\n : basePrice &&\n isShowOriginalPrice && (\n <div className=\"origin-price lg-desktop:text-2xl text-info-quaternary ml-1 text-xl font-bold !leading-[1.2] line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n )}\n </>\n )}\n </div>\n {!renderPrice && renderPriceLabel?.(data, variant, { isShowOriginalPrice })}\n <div\n className={cn(\n 'shelf-flex-button-group',\n 'lg-desktop:gap-3 desktop:flex-row flex flex-col items-center gap-2',\n configuration.direction === 'vertical' ? 'flex-col' : ''\n )}\n >\n {configuration?.secondaryButton && !isSoldOut ? (\n <Button\n disabled={isSoldOut && configuration?.secondaryFun !== 'LearnMore'}\n variant=\"secondary\"\n href={data?.custom_secondary_link}\n as={data?.custom_secondary_link ? 'a' : 'button'}\n onClick={handleSecondaryClick}\n loading={secondaryLoading}\n className=\"laptop:w-full desktop:w-auto\"\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n disabled={isSoldOut && configuration?.primaryFun !== 'LearnMore'}\n variant=\"primary\"\n href={data?.custom_primary_link}\n as={data?.custom_primary_link ? 'a' : 'button'}\n onClick={handlePrimaryClick}\n loading={primaryLoading}\n className=\"laptop:w-full desktop:w-auto\"\n >\n {configuration?.primaryButton || ''}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Fragment", "jsx", "jsxs", "useAiuiContext", "formatVariantPrice", "getProductImage", "Picture", "Badge", "cn", "Text", "Button", "gaTrack", "trackUrlRef", "Heading", "useExposure", "useRef", "useEffect", "useMemo", "useState", "componentType", "componentName", "SOLD_OUT_PRICE", "ShelfDisplayHorizontalEndorsements", "items", "item", "index", "ShelfDisplayHorizontalCardItem", "data", "configuration", "isDisplayBackImage", "itemShape", "metafields", "isTopTag", "isShowTag", "isShowOriginalPrice", "isShowShortTitle", "isShowPricesTag", "pricesTagTextColor", "pricesTagBgColor", "itemsTagTextColor", "itemsTagBgColor", "formatPrice", "renderOriginalPrice", "renderPriceLabel", "renderPrice", "locale", "copyWriting", "currencyDisplay", "discounts", "discountsCopy", "ref", "showTags", "setShowTags", "currentPriceTag", "setCurrentPriceTag", "primaryLoading", "setPrimaryLoading", "secondaryLoading", "setSecondaryLoading", "onPrimaryButton", "params", "coupon", "primaryFun", "onAddCart", "onBuyNow", "onLearnMore", "event", "onSecondaryButton", "secondaryFun", "variant", "variants", "variantArr", "variantId", "isSoldOut", "currencyCode", "priceInfo", "price", "basePrice", "discount", "discountAmount", "imageUrl", "altText", "displayTitle", "currentDisplayTitle", "displayDescription", "showPrice", "amountStr", "match", "prefix", "numeric", "suffix", "updatedNumeric", "handleTags", "discountTag", "newTags", "handlePrimaryClick", "handleSecondaryClick", "pricesTagStyle", "itemsTagStyle", "TagsComp", "custom_bg_image", "custom_theme"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/headless-ui",
3
- "version": "1.3.61",
3
+ "version": "1.3.62",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/cjs/index.d.ts",