@anker-in/headless-ui 1.0.19-temp-100903 → 1.0.19-temp-101002

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.
@@ -1,2 +1,2 @@
1
- import{Fragment as W,jsx as o,jsxs as r}from"react/jsx-runtime";import{cn as p}from"../../helpers/utils.js";import I from"../../components/badge.js";import{Text as E}from"../../components/text.js";import g from"../../components/button.js";import{gaTrack as j}from"../../shared/track.js";import{useState as f,useEffect as k}from"react";import S from"../../components/picture.js";import{Heading as A}from"../../components/heading.js";import{useAiuiContext as z}from"../AiuiProvider/index.js";import{trackUrlRef as L}from"../../shared/trackUrlRef.js";import{formatVariantPrice as U}from"../ShelfDisplay/shelfDisplay.js";const H="image",R="collectio_shelves",M=999999999e-2,se=({data:e,configuration:t})=>{const{itemShape:w}=t||{},{locale:a="us"}=z(),[_,N]=f(""),T=(s,i,n)=>t?.event?.primaryButton?.(s,i+1,n),B=(s,i,n)=>t?.event?.secondaryButton?.(s,i+1,n),l=e?.variants?.find(s=>s?.sku===e?.sku)||e?.variants?.[0]||{},v=!l?.availableForSale||l?.price?.amount===M,C=t?.isShowTag,h=t?.isShowOriginalPrice,[x,D]=f([]),[$,b]=f(!1),d=l?.coupons?.[0],{price:F,basePrice:O,discount:m}=U({locale:a,amount:h&&d?d.variant_price4wscode:l.price,baseAmount:h&&d?l.price:0,currencyCode:e?.price?.currencyCode||"USD"}),P=()=>{const s=e?.sku,i=e?.variants;return i?.find(u=>u?.sku===s)?.image?.url||i?.[0]?.image?.url||""},c=e?.custom_name||e?.title||e?.name,y=e?.custom_description||e?.description;return k(()=>{let s=[];if(m){const n=`${m}${t?.metafields?.discounts?.off||""}`;s.push(n)}const i=e?.tags?.filter?.(n=>n?.startsWith?.("CLtag"))?.map?.(n=>n?.replace?.("CLtag:",""))?.slice?.(0,m?1:2);D(s.concat(i))},[m,t?.metafields?.discounts,e?.tags]),k(()=>{const{infos:s}=l?.metafields||{},{productInfos:i,preRender:n}=e?.metafields||{},{shopCommon:u}=t?.metafields||{};N(s?.comingSoon||i?.comingSoon||n?.soldOut||u?.soldOut||"")},[e,l]),o("div",{className:p(w==="rounded"?"rounded-2xl":"rounded-none","tablet:aspect-h-[360] tablet:aspect-w-[296] laptop:aspect-h-[560] laptop:aspect-w-[544] relative","bg-[#EAEAEC] tablet:hover:bg-[#FFFFFF] box-border w-full cursor-pointer overflow-hidden duration-300","md-tablet:h-[360px] collection-shelves-item",{"aiui-dark":e?.custom_theme==="dark"}),children:r("div",{className:"absolute inset-0 box-border flex flex-col justify-between overflow-hidden",children:[o("div",{onMouseEnter:()=>b(!0),onMouseLeave:()=>b(!1),className:p("desktop:px-6 px-4 lg-desktop:mb-3 relative mb-2 inline-block w-full flex-1 overflow-hidden cursor-pointer"),children:r("a",{"aria-label":c,target:t?.target,href:L(`${a==="us"||!a?"":`/${a}`}/products/${e?.handle}`,`${H}_${R}`),onClick:()=>{j({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:[o(S,{alt:"",source:P(),className:"desktop:mt-6 mt-4 flex h-full justify-center object-cover [&_img]:w-auto"}),o(S,{alt:"",source:e?.custom_image,className:p($?"opacity-100":"opacity-0","absolute inset-x-0 top-0 size-full object-cover [&_img]:size-full transition-all duration-300")})]})}),r("div",{className:"flex flex-col justify-end desktop:pb-6 pb-4 desktop:px-6 px-4 flex-1 collection-shelves-product-content",children:[C&&x?.length?o("div",{className:"mb-1 box-border flex flex-wrap gap-1 overflow-hidden",children:x?.map?.((s,i)=>o(I,{children:s},i))}):null,c?o(A,{as:"h3",size:2,title:c||"",html:c||"",className:"collection-shelves-product-title mb-1 line-clamp-2 text-info-primary font-semibold"}):null,y?o(E,{size:2,html:y||"",className:"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 collection-shelves-product-description line-clamp-1 h-5 text-sm font-semibold text-info-primary"}):null,o("div",{className:"mb-2 mt-6 flex items-center",children:v?o("div",{className:"tablet:text-2xl text-info-primary text-xl font-semibold",children:_||""}):r(W,{children:[o("div",{className:"final-price tablet:text-2xl text-info-primary text-xl font-semibold",children:l?.availableForSale&&F||""}),o("div",{className:"origin-price tablet:text-xl text-info-secondary ml-1 text-lg font-semibold line-through",children:l?.availableForSale&&O||""})]})}),r("div",{className:p("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton?o(g,{variant:"secondary",onClick:()=>B(e,t?.index,t),className:`overflow-hidden font-semibold ${t.direction==="vertical"?"w-full":""} ${t?.shape==="rounded"?"rounded-2xl":""}`,children:t?.secondaryButton||""}):null,t?.primaryButton?o(g,{variant:"primary",disabled:v,onClick:()=>T(e,t?.index,t),className:`overflow-hidden font-semibold ${t.direction==="vertical"?"w-full":""} ${t?.shape==="rounded"?"rounded-2xl":""}`,children:t?.primaryButton||""}):null]})]})]})},e?.id||e?.handle)};export{se as CollectionShelvesWrapItem};
1
+ import{Fragment as W,jsx as o,jsxs as r}from"react/jsx-runtime";import{cn as p}from"../../helpers/utils.js";import I from"../../components/badge.js";import{Text as E}from"../../components/text.js";import g from"../../components/button.js";import{gaTrack as j}from"../../shared/track.js";import{useState as f,useEffect as k}from"react";import w from"../../components/picture.js";import{Heading as A}from"../../components/heading.js";import{useAiuiContext as L}from"../AiuiProvider/index.js";import{trackUrlRef as U}from"../../shared/trackUrlRef.js";import{formatVariantPrice as H}from"../ShelfDisplay/shelfDisplay.js";const R="image",z="collectio_shelves",M=999999999e-2,se=({data:e,configuration:t})=>{const{itemShape:S}=t||{},{locale:a="us"}=L(),[_,N]=f(""),T=(s,i,n)=>t?.event?.primaryButton?.(s,i+1,n),B=(s,i,n)=>t?.event?.secondaryButton?.(s,i+1,n),l=e?.variants?.find(s=>s?.sku===e?.sku)||e?.variants?.[0]||{},h=!l?.availableForSale||l?.price?.amount===M,C=t?.isShowTag,v=t?.isShowOriginalPrice,[x,D]=f([]),[$,b]=f(!1),d=l?.coupons?.[0],{price:F,basePrice:O,discount:m}=H({locale:a,amount:v&&d?d.variant_price4wscode:l.price,baseAmount:v&&d?l.price:0,currencyCode:e?.price?.currencyCode||"USD"}),P=()=>{const s=e?.sku,i=e?.variants;return i?.find(u=>u?.sku===s)?.image?.url||i?.[0]?.image?.url||""},c=e?.custom_name||e?.title||e?.name,y=e?.custom_description||e?.description;return k(()=>{let s=[];if(m){const n=`${m}${t?.metafields?.discounts?.off||""}`;s.push(n)}const i=e?.tags?.filter?.(n=>n?.startsWith?.("CLtag"))?.map?.(n=>n?.replace?.("CLtag:",""))?.slice?.(0,m?1:2);D(s.concat(i))},[m,t?.metafields?.discounts,e?.tags]),k(()=>{const{infos:s}=l?.metafields||{},{productInfos:i,preRender:n}=e?.metafields||{},{shopCommon:u}=t?.metafields||{};N(s?.comingSoon||i?.comingSoon||n?.soldOut||u?.soldOut||"")},[e,l]),o("div",{className:p(S==="rounded"?"rounded-2xl":"rounded-none","lg-desktop:aspect-h-[480] lg-desktop:aspect-w-[404] desktop:aspect-h-[384] desktop:aspect-w-[316] laptop:aspect-h-[360] laptop:aspect-w-[288] tablet:aspect-h-[360] tablet:aspect-w-[296]","relative bg-[#EAEAEC] tablet:hover:bg-[#FFFFFF] box-border w-full cursor-pointer overflow-hidden duration-300","md-tablet:h-[360px] collection-shelves-item",{"aiui-dark":e?.custom_theme==="dark"}),children:r("div",{className:"absolute inset-0 box-border flex flex-col justify-between overflow-hidden",children:[o("div",{onMouseEnter:()=>b(!0),onMouseLeave:()=>b(!1),className:p("desktop:px-6 px-4 lg-desktop:mb-3 relative mb-6 inline-block w-full h-[280px] md-tablet:h-[120px] overflow-hidden cursor-pointer"),children:r("a",{"aria-label":c,target:t?.target,href:U(`${a==="us"||!a?"":`/${a}`}/products/${e?.handle}`,`${R}_${z}`),onClick:()=>{j({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:[o(w,{alt:"",source:P(),className:"mt-2 flex h-full justify-center object-cover [&_img]:h-full [&_img]:w-auto"}),o(w,{alt:"",source:e?.custom_image,className:p($?"opacity-100":"opacity-0","absolute inset-x-0 top-0 h-full object-cover [&_img]:h-full [&_img]:w-auto transition-all duration-300")})]})}),r("div",{className:"flex flex-col justify-end desktop:pb-6 pb-4 desktop:px-6 px-4 flex-1 collection-shelves-product-content",children:[C&&x?.length?o("div",{className:"mb-1 box-border flex flex-wrap gap-1 overflow-hidden",children:x?.map?.((s,i)=>o(I,{children:s},i))}):null,c?o(A,{as:"h3",size:2,title:c||"",html:c||"",className:"collection-shelves-product-title mb-1 line-clamp-2 text-info-primary font-semibold"}):null,y?o(E,{size:2,html:y||"",className:"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 collection-shelves-product-description line-clamp-1 h-5 text-sm font-semibold text-info-primary"}):null,o("div",{className:"mb-2 mt-6 md-tablet:mt-3 flex items-center",children:h?o("div",{className:"tablet:text-2xl text-info-primary text-xl font-semibold",children:_||""}):r(W,{children:[o("div",{className:"final-price tablet:text-2xl text-info-primary text-xl font-semibold",children:l?.availableForSale&&F||""}),o("div",{className:"origin-price tablet:text-xl text-info-secondary ml-1 text-lg font-semibold line-through",children:l?.availableForSale&&O||""})]})}),r("div",{className:p("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2",t.direction==="vertical"?"flex-col":""),children:[t?.secondaryButton?o(g,{variant:"secondary",onClick:()=>B(e,t?.index,t),className:`overflow-hidden font-semibold ${t.direction==="vertical"?"w-full":""} ${t?.shape==="rounded"?"rounded-2xl":""}`,children:t?.secondaryButton||""}):null,t?.primaryButton?o(g,{variant:"primary",disabled:h,onClick:()=>T(e,t?.index,t),className:`overflow-hidden font-semibold ${t.direction==="vertical"?"w-full":""} ${t?.shape==="rounded"?"rounded-2xl":""}`,children:t?.primaryButton||""}):null]})]})]})},e?.id||e?.handle)};export{se as CollectionShelvesWrapItem};
2
2
  //# sourceMappingURL=CollectionShelvesItem.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/CollectionShelves/CollectionShelvesItem.tsx"],
4
- "sourcesContent": ["import { cn } from '../../helpers/utils.js'\nimport Badge from '../../components/badge.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport { gaTrack } from '../../shared/track.js'\nimport { useState, useEffect } from 'react'\nimport Picture from '../../components/picture.js'\nimport { Heading } from '../../components/heading.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport type { ShelfDisplayItem, ShelfDisplayType } from '../ShelfDisplay/shelfDisplay.js'\n\nconst componentType = 'image'\nconst componentName = 'collectio_shelves'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\nexport const CollectionShelvesWrapItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const { itemShape } = configuration || {}\n const { locale = 'us' } = useAiuiContext()\n\n const [soldOutText, setSoldOutText] = useState<string>('')\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType) =>\n configuration?.event?.primaryButton?.(params, index + 1, data)\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType) =>\n configuration?.event?.secondaryButton?.(params, index + 1, data)\n\n const variant = data?.variants?.find((item: any) => item?.sku === data?.sku) || data?.variants?.[0] || {}\n\n const isSoldOut = !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE\n const isShowTag = configuration?.isShowTag\n const isShowOriginalPrice = configuration?.isShowOriginalPrice\n\n const [showTags, setShowTags] = useState<string[]>([])\n const [showImage, setShowImage] = useState<boolean>(false)\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const { price, basePrice, discount } = formatVariantPrice({\n locale: locale,\n amount: isShowOriginalPrice && coupon ? coupon.variant_price4wscode : variant.price,\n baseAmount: isShowOriginalPrice && coupon ? variant.price : 0,\n currencyCode: data?.price?.currencyCode || 'USD',\n })\n\n const handleUrl = () => {\n const sku = data?.sku\n const skuArray = data?.variants\n const findSku = skuArray?.find((item: any) => item?.sku === sku)\n return findSku?.image?.url || skuArray?.[0]?.image?.url || ''\n }\n\n const displayTitle = data?.custom_name || data?.title || data?.name\n const displayDescription = data?.custom_description || data?.description\n\n useEffect(() => {\n let handleTags: string[] = []\n if (discount) {\n const discountTag = `${discount}${configuration?.metafields?.discounts?.off || ''}`\n handleTags.push(discountTag)\n }\n const newTags = 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 }, [discount, configuration?.metafields?.discounts, data?.tags])\n\n useEffect(() => {\n const { infos } = variant?.metafields || {}\n const { productInfos, preRender } = data?.metafields || {}\n const { shopCommon } = configuration?.metafields || {}\n setSoldOutText(infos?.comingSoon || productInfos?.comingSoon || preRender?.soldOut || shopCommon?.soldOut || '')\n }, [data, variant])\n\n return (\n <div\n key={data?.id || data?.handle}\n className={cn(\n itemShape === 'rounded' ? 'rounded-2xl' : 'rounded-none',\n 'tablet:aspect-h-[360] tablet:aspect-w-[296] laptop:aspect-h-[560] laptop:aspect-w-[544] relative',\n 'bg-[#EAEAEC] tablet:hover:bg-[#FFFFFF] box-border w-full cursor-pointer overflow-hidden duration-300',\n 'md-tablet:h-[360px] collection-shelves-item',\n {\n 'aiui-dark': data?.custom_theme === 'dark',\n }\n )}\n >\n <div className=\"absolute inset-0 box-border flex flex-col justify-between overflow-hidden\">\n <div\n onMouseEnter={() => setShowImage(true)}\n onMouseLeave={() => setShowImage(false)}\n className={cn(\n 'desktop:px-6 px-4 lg-desktop:mb-3 relative mb-2 inline-block w-full flex-1 overflow-hidden cursor-pointer'\n )}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}`,\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 alt=\"\"\n source={handleUrl()}\n className=\"desktop:mt-6 mt-4 flex h-full justify-center object-cover [&_img]:w-auto\"\n />\n <Picture\n alt=\"\"\n source={data?.custom_image}\n className={cn(\n showImage ? 'opacity-100' : 'opacity-0',\n 'absolute inset-x-0 top-0 size-full object-cover [&_img]:size-full transition-all duration-300'\n )}\n />\n </a>\n </div>\n <div className=\"flex flex-col justify-end desktop:pb-6 pb-4 desktop:px-6 px-4 flex-1 collection-shelves-product-content\">\n {isShowTag && showTags?.length ? (\n <div className=\"mb-1 box-border flex flex-wrap gap-1 overflow-hidden\">\n {showTags?.map?.((item: any, index: number) => <Badge key={index}>{item}</Badge>)}\n </div>\n ) : null}\n {displayTitle ? (\n <Heading\n as=\"h3\"\n size={2}\n title={displayTitle || ''}\n html={displayTitle || ''}\n className=\"collection-shelves-product-title mb-1 line-clamp-2 text-info-primary font-semibold\"\n />\n ) : null}\n {displayDescription ? (\n <Text\n size={2}\n html={displayDescription || ''}\n className=\"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 collection-shelves-product-description line-clamp-1 h-5 text-sm font-semibold text-info-primary\"\n />\n ) : null}\n <div className=\"mb-2 mt-6 flex items-center\">\n {isSoldOut ? (\n <div className=\"tablet:text-2xl text-info-primary text-xl font-semibold\">{soldOutText || ''}</div>\n ) : (\n <>\n <div className=\"final-price tablet:text-2xl text-info-primary text-xl font-semibold\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n <div className=\"origin-price tablet:text-xl text-info-secondary ml-1 text-lg font-semibold line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n </>\n )}\n </div>\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 ? (\n <Button\n variant=\"secondary\"\n onClick={() => onSecondaryButton(data, configuration?.index, configuration)}\n className={`overflow-hidden font-semibold ${configuration.direction === 'vertical' ? 'w-full' : ''} ${configuration?.shape === 'rounded' ? 'rounded-2xl' : ''}`}\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n variant=\"primary\"\n disabled={isSoldOut}\n onClick={() => onPrimaryButton(data, configuration?.index, configuration)}\n className={`overflow-hidden font-semibold ${configuration.direction === 'vertical' ? 'w-full' : ''} ${configuration?.shape === 'rounded' ? 'rounded-2xl' : ''}`}\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 { cn } from '../../helpers/utils.js'\nimport Badge from '../../components/badge.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport { gaTrack } from '../../shared/track.js'\nimport { useState, useEffect } from 'react'\nimport Picture from '../../components/picture.js'\nimport { Heading } from '../../components/heading.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport type { ShelfDisplayItem, ShelfDisplayType } from '../ShelfDisplay/shelfDisplay.js'\n\nconst componentType = 'image'\nconst componentName = 'collectio_shelves'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\nexport const CollectionShelvesWrapItem = ({ data, configuration }: { data: any; configuration?: any }) => {\n const { itemShape } = configuration || {}\n const { locale = 'us' } = useAiuiContext()\n\n const [soldOutText, setSoldOutText] = useState<string>('')\n\n const onPrimaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType) =>\n configuration?.event?.primaryButton?.(params, index + 1, data)\n\n const onSecondaryButton = (params: ShelfDisplayItem, index: number, data: ShelfDisplayType) =>\n configuration?.event?.secondaryButton?.(params, index + 1, data)\n\n const variant = data?.variants?.find((item: any) => item?.sku === data?.sku) || data?.variants?.[0] || {}\n\n const isSoldOut = !variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE\n const isShowTag = configuration?.isShowTag\n const isShowOriginalPrice = configuration?.isShowOriginalPrice\n\n const [showTags, setShowTags] = useState<string[]>([])\n const [showImage, setShowImage] = useState<boolean>(false)\n\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n\n const { price, basePrice, discount } = formatVariantPrice({\n locale: locale,\n amount: isShowOriginalPrice && coupon ? coupon.variant_price4wscode : variant.price,\n baseAmount: isShowOriginalPrice && coupon ? variant.price : 0,\n currencyCode: data?.price?.currencyCode || 'USD',\n })\n\n const handleUrl = () => {\n const sku = data?.sku\n const skuArray = data?.variants\n const findSku = skuArray?.find((item: any) => item?.sku === sku)\n return findSku?.image?.url || skuArray?.[0]?.image?.url || ''\n }\n\n const displayTitle = data?.custom_name || data?.title || data?.name\n const displayDescription = data?.custom_description || data?.description\n\n useEffect(() => {\n let handleTags: string[] = []\n if (discount) {\n const discountTag = `${discount}${configuration?.metafields?.discounts?.off || ''}`\n handleTags.push(discountTag)\n }\n const newTags = 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 }, [discount, configuration?.metafields?.discounts, data?.tags])\n\n useEffect(() => {\n const { infos } = variant?.metafields || {}\n const { productInfos, preRender } = data?.metafields || {}\n const { shopCommon } = configuration?.metafields || {}\n setSoldOutText(infos?.comingSoon || productInfos?.comingSoon || preRender?.soldOut || shopCommon?.soldOut || '')\n }, [data, variant])\n\n return (\n <div\n key={data?.id || data?.handle}\n className={cn(\n itemShape === 'rounded' ? 'rounded-2xl' : 'rounded-none',\n 'lg-desktop:aspect-h-[480] lg-desktop:aspect-w-[404] desktop:aspect-h-[384] desktop:aspect-w-[316] laptop:aspect-h-[360] laptop:aspect-w-[288] tablet:aspect-h-[360] tablet:aspect-w-[296]',\n 'relative bg-[#EAEAEC] tablet:hover:bg-[#FFFFFF] box-border w-full cursor-pointer overflow-hidden duration-300',\n 'md-tablet:h-[360px] collection-shelves-item',\n {\n 'aiui-dark': data?.custom_theme === 'dark',\n }\n )}\n >\n <div className=\"absolute inset-0 box-border flex flex-col justify-between overflow-hidden\">\n <div\n onMouseEnter={() => setShowImage(true)}\n onMouseLeave={() => setShowImage(false)}\n className={cn(\n 'desktop:px-6 px-4 lg-desktop:mb-3 relative mb-6 inline-block w-full h-[280px] md-tablet:h-[120px] overflow-hidden cursor-pointer'\n )}\n >\n <a\n aria-label={displayTitle}\n target={configuration?.target}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}`,\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 alt=\"\"\n source={handleUrl()}\n className=\"mt-2 flex h-full justify-center object-cover [&_img]:h-full [&_img]:w-auto\"\n />\n <Picture\n alt=\"\"\n source={data?.custom_image}\n className={cn(\n showImage ? 'opacity-100' : 'opacity-0',\n 'absolute inset-x-0 top-0 h-full object-cover [&_img]:h-full [&_img]:w-auto transition-all duration-300'\n )}\n />\n </a>\n </div>\n <div className=\"flex flex-col justify-end desktop:pb-6 pb-4 desktop:px-6 px-4 flex-1 collection-shelves-product-content\">\n {isShowTag && showTags?.length ? (\n <div className=\"mb-1 box-border flex flex-wrap gap-1 overflow-hidden\">\n {showTags?.map?.((item: any, index: number) => <Badge key={index}>{item}</Badge>)}\n </div>\n ) : null}\n {displayTitle ? (\n <Heading\n as=\"h3\"\n size={2}\n title={displayTitle || ''}\n html={displayTitle || ''}\n className=\"collection-shelves-product-title mb-1 line-clamp-2 text-info-primary font-semibold\"\n />\n ) : null}\n {displayDescription ? (\n <Text\n size={2}\n html={displayDescription || ''}\n className=\"lg-desktop:text-lg lg-desktop:h-[26px] desktop:text-base desktop:h-6 collection-shelves-product-description line-clamp-1 h-5 text-sm font-semibold text-info-primary\"\n />\n ) : null}\n <div className=\"mb-2 mt-6 md-tablet:mt-3 flex items-center\">\n {isSoldOut ? (\n <div className=\"tablet:text-2xl text-info-primary text-xl font-semibold\">{soldOutText || ''}</div>\n ) : (\n <>\n <div className=\"final-price tablet:text-2xl text-info-primary text-xl font-semibold\">\n {variant?.availableForSale ? price || '' : ''}\n </div>\n <div className=\"origin-price tablet:text-xl text-info-secondary ml-1 text-lg font-semibold line-through\">\n {variant?.availableForSale ? basePrice || '' : ''}\n </div>\n </>\n )}\n </div>\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 ? (\n <Button\n variant=\"secondary\"\n onClick={() => onSecondaryButton(data, configuration?.index, configuration)}\n className={`overflow-hidden font-semibold ${configuration.direction === 'vertical' ? 'w-full' : ''} ${configuration?.shape === 'rounded' ? 'rounded-2xl' : ''}`}\n >\n {configuration?.secondaryButton || ''}\n </Button>\n ) : null}\n {configuration?.primaryButton ? (\n <Button\n variant=\"primary\"\n disabled={isSoldOut}\n onClick={() => onPrimaryButton(data, configuration?.index, configuration)}\n className={`overflow-hidden font-semibold ${configuration.direction === 'vertical' ? 'w-full' : ''} ${configuration?.shape === 'rounded' ? 'rounded-2xl' : ''}`}\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", "cn", "Badge", "Text", "Button", "gaTrack", "useState", "useEffect", "Picture", "Heading", "useAiuiContext", "trackUrlRef", "formatVariantPrice", "componentType", "componentName", "SOLD_OUT_PRICE", "CollectionShelvesWrapItem", "data", "configuration", "itemShape", "locale", "soldOutText", "setSoldOutText", "onPrimaryButton", "params", "index", "onSecondaryButton", "variant", "item", "isSoldOut", "isShowTag", "isShowOriginalPrice", "showTags", "setShowTags", "showImage", "setShowImage", "coupon", "price", "basePrice", "discount", "handleUrl", "sku", "skuArray", "displayTitle", "displayDescription", "handleTags", "discountTag", "newTags", "infos", "productInfos", "preRender", "shopCommon"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as ke,jsx as s,jsxs as a}from"react/jsx-runtime";import{cn as x}from"../../helpers/utils.js";import{useAiuiContext as ue}from"../AiuiProvider/index.js";import{formatVariantPrice as de}from"../ShelfDisplay/shelfDisplay.js";import fe from"../../components/badge.js";import{Heading as ge}from"../../components/heading.js";import{Text as be}from"../../components/text.js";import D from"../../components/button.js";import W from"../../components/picture.js";import{trackUrlRef as y}from"../../shared/trackUrlRef.js";import{getFunctionMemberPrice as xe}from"./component/price.js";import{useState as i,useEffect as k}from"react";const C="image",_="product_shelf",ve=999999999e-2,he=e=>{let c;return e?.includes("products")?c=e?.split("products")[0]+"files/":c=e?.replace(e?.split("files")?.pop()||"","")+"/",c},ye=({data:e,isSale:c=!1,buttonText:N,itemShape:H,metafields:A,onPrimaryChange:U,onSecondaryChange:E})=>{const{memberPriceDiscount:R,memberSetting:S,discounts:w,shopCommon:V}=A,[m,P]=i(""),[q,$]=i(""),[d,T]=i(""),[I,G]=i(!1),[B,J]=i({}),[K,Q]=i(!1),[v,X]=i({price:"",basePrice:""}),[M,Y]=i([]),[Z,ee]=i([]),[f,te]=i(""),[se,oe]=i(""),{locale:l="us",currencyCode:re,isLogin:L}=ue(),g=e?.custom_name||e?.title||e?.name,z=e?.custom_description||e?.description||e?.descriptionHtml,n=e?.filter_variants||e?.variants||[],ie=t=>T(t),h=(t,r,o,p)=>{Q(p),te(t||""),X({basePrice:r||"",price:o||""})};return k(()=>{if(d){const o=n?.find(p=>p?.name?.includes?.(d));P(o?.sku||n?.[0]?.sku||""),$(o?.image?.url||n?.[0]?.image?.url||"");return}const t=e?.options?.find(o=>o?.displayName==="color")?.values?.[0]?.label;t&&T(t);const r=n?.find(o=>o?.name?.includes?.(t));P(r?.sku||n?.[0]?.sku||""),$(r?.image?.url||n?.[0]?.image?.url||"")},[d]),k(()=>{if(!m)return;Y(e?.tags||[]);const t=n?.find(u=>u?.sku===m)||n?.[0]||{};J(t),G(!t?.availableForSale||t?.price?.amount===ve);const{infos:r}=t?.metafields||{},{productInfos:o,preRender:p}=e?.metafields||{};oe(r?.comingSoon||o?.comingSoon||p?.soldOut||V?.soldOut||"");const b=t?.coupons?.[0],{price:F,basePrice:O,discount:le,discountAmount:ne}=de({locale:l,amount:b?b.variant_price4wscode:t.price,baseAmount:b?t.price:0,currencyCode:e?.price?.currencyCode||"USD"}),j=(b?.value_type==="fixed_amount"?ne:le)||"";if(L){const u=xe({locale:l,variant:t,shopMemberPriceDiscountConfig:R,currencyCode:re||e?.price?.currencyCode||"USD"});if(u){const{hasMemberPrice:ae,salePriceWithCurrency:ce,originalPriceWithCurrency:me,savePriceWithCurrency:pe}=u;h(pe||"",me||"",ae?ce:"",u?.hasMemberPrice)}else h(j,O||"",F||"",!1)}else h(j,O||"",F||"",!1)},[e,m]),k(()=>{let t=[];if(f){const o=`${f}${w?.off}`;t.push(o)}const r=M?.filter?.(o=>o?.startsWith?.("CLtag"))?.map?.(o=>o?.replace?.("CLtag:",""))?.slice?.(0,f?1:2);ee(t.concat(r))},[M,f]),c&&!v?.basePrice&&!e?.mImage?null:s("div",{className:x(H==="round"?"rounded-2xl":"rounded-none","lg-desktop:h-[493px] laptop:h-[433px] h-[398px] relative tablet:hover:bg-info-white","bg-container-secondary-1 box-border w-full cursor-pointer overflow-hidden duration-300",{"aiui-dark":e.theme==="dark"}),children:e?.mImage?s("div",{className:"absolute inset-0 box-border overflow-hidden hover:[&_img]:scale-105",children:a("a",{className:"relative inset-0 size-full",href:y(e?.link,`${C}_${_}`),children:[s(W,{alt:"",source:e?.mImage?.url||e?.mImage,className:"size-full [&_img]:object-cover [&_img]:size-full",imgClassName:"size-full object-cover transition-all duration-300"}),a("div",{className:"desktop:p-6 absolute inset-x-0 top-0 box-border overflow-hidden p-4",children:[s("p",{className:"desktop:mb-2 mb-1 text-info-primary desktop:text-base text-sm font-semibold",dangerouslySetInnerHTML:{__html:e?.subTitle}}),s("span",{className:"text-info-secondary desktop:text-[32px] text-[20px] font-semibold desktop:leading-9 line-clamp-4",dangerouslySetInnerHTML:{__html:e?.title}})]})]})}):a("div",{className:"desktop:p-6 absolute inset-0 box-border flex flex-col justify-between overflow-hidden tablet:p-4 p-2 pb-4",children:[s("div",{className:"flex flex-wrap gap-1 overflow-hidden collection-filter-tags",children:Z?.map?.((t,r)=>s(fe,{className:"whitespace-nowrap max-w-full truncate px-1 box-border font-semibold item-badge",children:t},r))}),s("a",{target:"_blank","aria-label":g,href:y(`${l==="us"||!l?"":`/${l}`}/products/${e?.handle}`,`${C}_${_}`),children:s("div",{className:x("m-auto lg-desktop:size-[196px] desktop:size-[138px] size-[120px] overflow-hidden"),children:s(W,{alt:"",source:q,className:"h-full [&_img]:object-cover [&_img]:h-full [&_img]:w-fit"})})}),e?.options?.map(t=>{if(t?.displayName==="color")return s("div",{className:"flex items-center gap-1",children:t?.values?.map(r=>{const o=r?.hexColors?r.hexColors?.[0]:r?.label;return s("button",{onClick:()=>ie(r?.label),className:x("size-4 rounded-full cursor-pointer overflow-hidden border-2 border-transparent",`${d===r?.label?"border-[#00BEFA]":""}`),children:s("img",{alt:o,className:"h-full w-full object-cover",src:`${he(e?.images?.[0]?.url)}${o?.toLowerCase().split(" ")?.join("-")}_50x.png`})},r?.label)})})}),a("div",{children:[g?s(ge,{html:g||"",title:g||"",className:"shelf-display-product-title line-clamp-2 lg-desktop:text-2xl laptop:test-xl test-base"}):null,e?.metafields?.judgemeBadge?s("a",{target:"_blank",className:"font-semibold text-xs [&_.jdgm-star]:text-[#F77234]",dangerouslySetInnerHTML:{__html:e?.metafields?.judgemeBadge},href:y(`${l==="us"||!l?"":`/${l}`}/products/${e?.handle}`,`${C}_${_}`)}):null,z?s(be,{size:2,html:z||"",className:"desktop:text-base laptop:text-sm shelf-display-product-description line-clamp-1 text-xs"}):null,a("div",{className:"mt-3 mb-2",children:[s("p",{dangerouslySetInnerHTML:{__html:L&&K&&(w?.memberPrice||S?.member_price||S?.plus_member_price)||""},className:"text-info-primary lg-desktop:text-lg desktop:text-base laptop:text-sm text-xs font-semibold"}),s("div",{className:"flex items-center",children:I?s("div",{className:"desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold",children:se||""}):a(ke,{children:[s("div",{className:"final-price desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold",children:B?.availableForSale&&v?.price||""}),s("div",{className:"origin-price desktop:text-xl tablet:text-lg text-info-secondary ml-1 text-sm font-semibold line-through",children:B?.availableForSale&&v?.basePrice||""})]})})]}),a("div",{className:x("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2 m-tablet:flex-col"),children:[s(D,{variant:"secondary",className:"m-tablet:w-full",onClick:()=>E?.(e,m),children:N?.secondaryButton||"Learn More"}),s(D,{variant:"primary",className:"m-tablet:w-full",disabled:I,onClick:()=>U?.(e,m),children:N?.primaryButton||"Shop Now"})]})]})]})},e?.id||e?.handle)};var Le=ye;export{Le as default};
1
+ import{Fragment as ke,jsx as s,jsxs as a}from"react/jsx-runtime";import{cn as x}from"../../helpers/utils.js";import{useAiuiContext as de}from"../AiuiProvider/index.js";import{formatVariantPrice as ue}from"../ShelfDisplay/shelfDisplay.js";import fe from"../../components/badge.js";import{Heading as ge}from"../../components/heading.js";import{Text as be}from"../../components/text.js";import D from"../../components/button.js";import W from"../../components/picture.js";import{trackUrlRef as y}from"../../shared/trackUrlRef.js";import{getFunctionMemberPrice as xe}from"./component/price.js";import{useState as i,useEffect as k}from"react";const C="image",N="product_shelf",ve=999999999e-2,he=e=>{let c;return e?.includes("products")?c=e?.split("products")[0]+"files/":c=e?.replace(e?.split("files")?.pop()||"","")+"/",c},ye=({data:e,isSale:c=!1,buttonText:_,itemShape:H,metafields:A,onPrimaryChange:U,onSecondaryChange:E})=>{const{memberPriceDiscount:R,memberSetting:S,discounts:w,shopCommon:V}=A,[m,P]=i(""),[q,$]=i(""),[u,T]=i(""),[I,G]=i(!1),[B,J]=i({}),[K,Q]=i(!1),[v,X]=i({price:"",basePrice:""}),[M,Y]=i([]),[Z,ee]=i([]),[f,te]=i(""),[se,oe]=i(""),{locale:l="us",currencyCode:re,isLogin:z}=de(),g=e?.custom_name||e?.title||e?.name,L=e?.custom_description||e?.description||e?.descriptionHtml,n=e?.filter_variants||e?.variants||[],ie=t=>T(t),h=(t,r,o,p)=>{Q(p),te(t||""),X({basePrice:r||"",price:o||""})};return k(()=>{if(u){const o=n?.find(p=>p?.name?.includes?.(u));P(o?.sku||n?.[0]?.sku||""),$(o?.image?.url||n?.[0]?.image?.url||"");return}const t=e?.options?.find(o=>o?.displayName==="color")?.values?.[0]?.label;t&&T(t);const r=n?.find(o=>o?.name?.includes?.(t));P(r?.sku||n?.[0]?.sku||""),$(r?.image?.url||n?.[0]?.image?.url||"")},[u]),k(()=>{if(!m)return;Y(e?.tags||[]);const t=n?.find(d=>d?.sku===m)||n?.[0]||{};J(t),G(!t?.availableForSale||t?.price?.amount===ve);const{infos:r}=t?.metafields||{},{productInfos:o,preRender:p}=e?.metafields||{};oe(r?.comingSoon||o?.comingSoon||p?.soldOut||V?.soldOut||"");const b=t?.coupons?.[0],{price:F,basePrice:O,discount:le,discountAmount:ne}=ue({locale:l,amount:b?b.variant_price4wscode:t.price,baseAmount:b?t.price:0,currencyCode:e?.price?.currencyCode||"USD"}),j=(b?.value_type==="fixed_amount"?ne:le)||"";if(z){const d=xe({locale:l,variant:t,shopMemberPriceDiscountConfig:R,currencyCode:re||e?.price?.currencyCode||"USD"});if(d){const{hasMemberPrice:ae,salePriceWithCurrency:ce,originalPriceWithCurrency:me,savePriceWithCurrency:pe}=d;h(pe||"",me||"",ae?ce:"",d?.hasMemberPrice)}else h(j,O||"",F||"",!1)}else h(j,O||"",F||"",!1)},[e,m]),k(()=>{let t=[];if(f){const o=`${f}${w?.off}`;t.push(o)}const r=M?.filter?.(o=>o?.startsWith?.("CLtag"))?.map?.(o=>o?.replace?.("CLtag:",""))?.slice?.(0,f?1:2);ee(t.concat(r))},[M,f]),c&&!v?.basePrice&&!e?.mImage?null:s("div",{className:x(H==="round"?"rounded-2xl":"rounded-none","lg-desktop:h-[493px] laptop:h-[433px] h-[398px] relative tablet:hover:bg-info-white","bg-container-secondary-1 box-border w-full cursor-pointer overflow-hidden duration-300",{"aiui-dark":e.theme==="dark"}),children:e?.mImage?s("div",{className:"absolute inset-0 box-border overflow-hidden hover:[&_img]:scale-105",children:s("div",{className:"relative inset-0 size-full",children:a("a",{className:"size-full",href:y(e?.link,`${C}_${N}`),children:[s(W,{alt:"",source:e?.mImage?.url||e?.mImage,className:"size-full [&_img]:object-cover [&_img]:size-full",imgClassName:"size-full object-cover transition-all duration-300"}),a("div",{className:"desktop:p-6 absolute inset-x-0 top-0 box-border overflow-hidden p-4",children:[s("p",{className:"desktop:mb-2 mb-1 text-info-primary desktop:text-base text-sm font-semibold",dangerouslySetInnerHTML:{__html:e?.subTitle}}),s("span",{className:"text-info-secondary desktop:text-[32px] text-[20px] font-semibold desktop:leading-9 line-clamp-4",dangerouslySetInnerHTML:{__html:e?.title}})]})]})})}):a("div",{className:"desktop:p-6 absolute inset-0 box-border flex flex-col justify-between overflow-hidden tablet:p-4 p-2 pb-4",children:[s("div",{className:"flex flex-wrap gap-1 overflow-hidden collection-filter-tags",children:Z?.map?.((t,r)=>s(fe,{className:"whitespace-nowrap max-w-full truncate px-1 box-border font-semibold item-badge",children:t},r))}),s("a",{target:"_blank","aria-label":g,href:y(`${l==="us"||!l?"":`/${l}`}/products/${e?.handle}`,`${C}_${N}`),children:s("div",{className:x("m-auto lg-desktop:size-[196px] desktop:size-[138px] size-[120px] overflow-hidden"),children:s(W,{alt:"",source:q,className:"h-full [&_img]:object-cover [&_img]:h-full [&_img]:w-fit"})})}),e?.options?.map(t=>{if(t?.displayName==="color")return s("div",{className:"flex items-center gap-1",children:t?.values?.map(r=>{const o=r?.hexColors?r.hexColors?.[0]:r?.label;return s("button",{onClick:()=>ie(r?.label),className:x("size-4 rounded-full cursor-pointer overflow-hidden border-2 border-transparent",`${u===r?.label?"border-[#00BEFA]":""}`),children:s("img",{alt:o,className:"h-full w-full object-cover",src:`${he(e?.images?.[0]?.url)}${o?.toLowerCase().split(" ")?.join("-")}_50x.png`})},r?.label)})})}),a("div",{children:[g?s(ge,{html:g||"",title:g||"",className:"shelf-display-product-title line-clamp-2 lg-desktop:text-2xl laptop:test-xl test-base"}):null,e?.metafields?.judgemeBadge?s("a",{target:"_blank",className:"font-semibold text-xs [&_.jdgm-star]:text-[#F77234]",dangerouslySetInnerHTML:{__html:e?.metafields?.judgemeBadge},href:y(`${l==="us"||!l?"":`/${l}`}/products/${e?.handle}`,`${C}_${N}`)}):null,L?s(be,{size:2,html:L||"",className:"desktop:text-base laptop:text-sm shelf-display-product-description line-clamp-1 text-xs"}):null,a("div",{className:"mt-3 mb-2",children:[s("p",{dangerouslySetInnerHTML:{__html:z&&K&&(w?.memberPrice||S?.member_price||S?.plus_member_price)||""},className:"text-info-primary lg-desktop:text-lg desktop:text-base laptop:text-sm text-xs font-semibold"}),s("div",{className:"flex items-center",children:I?s("div",{className:"desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold",children:se||""}):a(ke,{children:[s("div",{className:"final-price desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold",children:B?.availableForSale&&v?.price||""}),s("div",{className:"origin-price desktop:text-xl tablet:text-lg text-info-secondary ml-1 text-sm font-semibold line-through",children:B?.availableForSale&&v?.basePrice||""})]})})]}),a("div",{className:x("shelf-flex-button-group","lg-desktop:gap-3 flex items-center gap-2 m-tablet:flex-col"),children:[s(D,{variant:"secondary",className:"m-tablet:w-full",onClick:()=>E?.(e,m),children:_?.secondaryButton||"Learn More"}),s(D,{variant:"primary",className:"m-tablet:w-full",disabled:I,onClick:()=>U?.(e,m),children:_?.primaryButton||"Shop Now"})]})]})]})},e?.id||e?.handle)};var ze=ye;export{ze as default};
2
2
  //# sourceMappingURL=FilterCardWrapItem.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/CollectionsFilters/FilterCardWrapItem.tsx"],
4
- "sourcesContent": ["import { cn } from '../../helpers/utils.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport Badge from '../../components/badge.js'\nimport { Heading } from '../../components/heading.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport Picture from '../../components/picture.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { getFunctionMemberPrice } from './component/price.js'\nimport { useState, useEffect } from 'react'\n\nconst componentType = 'image'\nconst componentName = 'product_shelf'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\nconst getShopifyCdnBaseUrl = (imagePath: string | null) => {\n // \u76EE\u524D\u77E5\u9053\u7684 shopify \u56FE\u7247\u8DEF\u7531\u7684\u5F62\u5F0F\n // https://cdn.shopify.com/s/files/1/0493/9834/9974/files/Group_5581_2.jpg?v=1662379184\n // https://cdn.shopify.com/s/files/1/0493/9834/9974/products/B2633123.jpg?v=1631264041_3840x\n // \u8FD4\u56DE https://cdn.shopify.com/s/files/1/0493/9834/9974/files/\n let path\n if (imagePath?.includes('products')) {\n path = imagePath?.split('products')[0] + 'files/'\n } else {\n path = imagePath?.replace(imagePath?.split('files')?.pop() || '', '') + '/'\n }\n return path\n}\n\ntype FilterCardWrapItemProps = {\n data: any\n isSale?: boolean\n buttonText?: any\n itemShape?: string\n metafields: any\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n}\n\nconst FilterCardWrapItem = ({\n data,\n isSale = false,\n buttonText,\n itemShape,\n metafields,\n onPrimaryChange,\n onSecondaryChange,\n}: FilterCardWrapItemProps) => {\n const { memberPriceDiscount, memberSetting, discounts, shopCommon } = metafields\n const [currentSku, setCurrentSku] = useState<string>('')\n const [currentImage, setCurrentImage] = useState<string>('')\n const [selectedColor, setSelectedColor] = useState<string>('')\n const [isSoldOut, setIsSoldOut] = useState<any>(false)\n const [currentVariant, setCurrentVariant] = useState<any>({})\n const [plusMemberStatus, setPlusMemberStatus] = useState<boolean>(false)\n const [priceCollection, setPriceCollection] = useState<{ price: string; basePrice: string }>({\n price: '',\n basePrice: '',\n })\n const [tags, setTags] = useState<string[]>([])\n const [showTags, setShowTags] = useState<string[]>([])\n const [discountCollection, setDiscountCollection] = useState<string>('')\n const [soldOutText, setSoldOutText] = useState<string>('')\n\n const { locale = 'us', currencyCode, isLogin } = useAiuiContext()\n\n const displayTitle = data?.custom_name || data?.title || data?.name\n const displayDescription = data?.custom_description || data?.description || data?.descriptionHtml\n const skuArray = data?.filter_variants || data?.variants || []\n\n const onColorClick = (color: string) => setSelectedColor(color)\n\n const handleBasePrice = (discount: string, priceCurrency: string, salePrice: string, status: boolean) => {\n setPlusMemberStatus(status)\n setDiscountCollection(discount || '')\n setPriceCollection({\n basePrice: priceCurrency || '',\n price: salePrice || '',\n })\n }\n\n useEffect(() => {\n if (selectedColor) {\n const findSku = skuArray?.find((item: any) => item?.name?.includes?.(selectedColor))\n setCurrentSku(findSku?.sku || skuArray?.[0]?.sku || '')\n setCurrentImage(findSku?.image?.url || skuArray?.[0]?.image?.url || '')\n return\n }\n const firstOption = data?.options?.find((item: any) => item?.displayName === 'color')?.values?.[0]?.label\n firstOption && setSelectedColor(firstOption)\n const findSku = skuArray?.find((item: any) => item?.name?.includes?.(firstOption))\n setCurrentSku(findSku?.sku || skuArray?.[0]?.sku || '')\n setCurrentImage(findSku?.image?.url || skuArray?.[0]?.image?.url || '')\n }, [selectedColor])\n\n useEffect(() => {\n if (!currentSku) return\n setTags(data?.tags || [])\n const variant = skuArray?.find((item: any) => item?.sku === currentSku) || skuArray?.[0] || {}\n setCurrentVariant(variant)\n setIsSoldOut(!variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE)\n const { infos } = variant?.metafields || {}\n const { productInfos, preRender } = data?.metafields || {}\n setSoldOutText(infos?.comingSoon || productInfos?.comingSoon || preRender?.soldOut || shopCommon?.soldOut || '')\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n const { price, basePrice, discount, discountAmount } = formatVariantPrice({\n locale: locale,\n amount: coupon ? coupon.variant_price4wscode : variant.price,\n baseAmount: coupon ? variant.price : 0,\n currencyCode: data?.price?.currencyCode || 'USD',\n })\n const showPrice = (coupon?.value_type === 'fixed_amount' ? discountAmount : discount) || ''\n // \u4F1A\u5458\u6298\u6263\n if (isLogin) {\n const result = getFunctionMemberPrice({\n locale: locale,\n variant: variant,\n shopMemberPriceDiscountConfig: memberPriceDiscount,\n currencyCode: currencyCode || data?.price?.currencyCode || 'USD',\n })\n if (result) {\n const { hasMemberPrice, salePriceWithCurrency, originalPriceWithCurrency, savePriceWithCurrency } = result\n handleBasePrice(\n savePriceWithCurrency || '',\n originalPriceWithCurrency || '',\n hasMemberPrice ? salePriceWithCurrency : '',\n result?.hasMemberPrice\n )\n } else {\n handleBasePrice(showPrice, basePrice || '', price || '', false)\n }\n } else {\n handleBasePrice(showPrice, basePrice || '', price || '', false)\n }\n }, [data, currentSku])\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discountCollection) {\n const discountTag = `${discountCollection}${discounts?.off}`\n handleTags.push(discountTag)\n }\n const newTags = tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discountCollection ? 1 : 2)\n setShowTags(handleTags.concat(newTags))\n }, [tags, discountCollection])\n\n if (isSale && !priceCollection?.basePrice && !data?.mImage) {\n return null\n }\n\n return (\n <div\n key={data?.id || data?.handle}\n className={cn(\n itemShape === 'round' ? 'rounded-2xl' : 'rounded-none',\n 'lg-desktop:h-[493px] laptop:h-[433px] h-[398px] relative tablet:hover:bg-info-white',\n 'bg-container-secondary-1 box-border w-full cursor-pointer overflow-hidden duration-300',\n {\n 'aiui-dark': data.theme === 'dark',\n }\n )}\n >\n {data?.mImage ? (\n <div className=\"absolute inset-0 box-border overflow-hidden hover:[&_img]:scale-105\">\n <a className=\"relative inset-0 size-full\" href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}>\n <Picture\n alt=\"\"\n source={data?.mImage?.url || data?.mImage}\n className=\"size-full [&_img]:object-cover [&_img]:size-full\"\n imgClassName=\"size-full object-cover transition-all duration-300\"\n />\n <div className=\"desktop:p-6 absolute inset-x-0 top-0 box-border overflow-hidden p-4\">\n <p\n className=\"desktop:mb-2 mb-1 text-info-primary desktop:text-base text-sm font-semibold\"\n dangerouslySetInnerHTML={{ __html: data?.subTitle }}\n />\n <span\n className=\"text-info-secondary desktop:text-[32px] text-[20px] font-semibold desktop:leading-9 line-clamp-4\"\n dangerouslySetInnerHTML={{ __html: data?.title }}\n />\n </div>\n </a>\n </div>\n ) : (\n <div className=\"desktop:p-6 absolute inset-0 box-border flex flex-col justify-between overflow-hidden tablet:p-4 p-2 pb-4\">\n <div className=\"flex flex-wrap gap-1 overflow-hidden collection-filter-tags\">\n {showTags?.map?.((item: string, index: number) => (\n <Badge\n key={index}\n className=\"whitespace-nowrap max-w-full truncate px-1 box-border font-semibold item-badge\"\n >\n {item}\n </Badge>\n ))}\n </div>\n <a\n target=\"_blank\"\n aria-label={displayTitle}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}`,\n `${componentType}_${componentName}`\n )}\n >\n <div className={cn('m-auto lg-desktop:size-[196px] desktop:size-[138px] size-[120px] overflow-hidden')}>\n <Picture\n alt=\"\"\n source={currentImage}\n className=\"h-full [&_img]:object-cover [&_img]:h-full [&_img]:w-fit\"\n />\n </div>\n </a>\n {data?.options?.map((option: any) => {\n if (option?.displayName === 'color') {\n return (\n <div className=\"flex items-center gap-1\">\n {option?.values?.map((item: any) => {\n const color = item?.hexColors ? item.hexColors?.[0] : item?.label\n return (\n <button\n key={item?.label}\n onClick={() => onColorClick(item?.label)}\n className={cn(\n 'size-4 rounded-full cursor-pointer overflow-hidden border-2 border-transparent',\n `${selectedColor === item?.label ? 'border-[#00BEFA]' : ''}`\n )}\n >\n <img\n alt={color}\n className=\"h-full w-full object-cover\"\n src={`${getShopifyCdnBaseUrl(data?.images?.[0]?.url)}${color\n ?.toLowerCase()\n .split(' ')\n ?.join('-')}_${'50x'}.png`}\n />\n </button>\n )\n })}\n </div>\n )\n }\n })}\n <div>\n {displayTitle ? (\n <Heading\n html={displayTitle || ''}\n title={displayTitle || ''}\n className=\"shelf-display-product-title line-clamp-2 lg-desktop:text-2xl laptop:test-xl test-base\"\n />\n ) : null}\n {data?.metafields?.judgemeBadge ? (\n <a\n target=\"_blank\"\n className=\"font-semibold text-xs [&_.jdgm-star]:text-[#F77234]\"\n dangerouslySetInnerHTML={{ __html: data?.metafields?.judgemeBadge }}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}`,\n `${componentType}_${componentName}`\n )}\n />\n ) : null}\n {displayDescription ? (\n <Text\n size={2}\n html={displayDescription || ''}\n className=\"desktop:text-base laptop:text-sm shelf-display-product-description line-clamp-1 text-xs\"\n />\n ) : null}\n <div className=\"mt-3 mb-2\">\n <p\n dangerouslySetInnerHTML={{\n __html:\n isLogin && plusMemberStatus\n ? discounts?.memberPrice || memberSetting?.member_price || memberSetting?.plus_member_price || ''\n : '',\n }}\n className=\"text-info-primary lg-desktop:text-lg desktop:text-base laptop:text-sm text-xs font-semibold\"\n />\n <div className=\"flex items-center\">\n {isSoldOut ? (\n <div className=\"desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold\">\n {soldOutText || ''}\n </div>\n ) : (\n <>\n <div className=\"final-price desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold\">\n {currentVariant?.availableForSale ? priceCollection?.price || '' : ''}\n </div>\n <div className=\"origin-price desktop:text-xl tablet:text-lg text-info-secondary ml-1 text-sm font-semibold line-through\">\n {currentVariant?.availableForSale ? priceCollection?.basePrice || '' : ''}\n </div>\n </>\n )}\n </div>\n </div>\n {/* \u6309\u94AE\u7EC4 */}\n <div\n className={cn('shelf-flex-button-group', 'lg-desktop:gap-3 flex items-center gap-2 m-tablet:flex-col')}\n >\n <Button\n variant=\"secondary\"\n className=\"m-tablet:w-full\"\n onClick={() => onSecondaryChange?.(data, currentSku)}\n >\n {buttonText?.secondaryButton || 'Learn More'}\n </Button>\n <Button\n variant=\"primary\"\n className=\"m-tablet:w-full\"\n disabled={isSoldOut}\n onClick={() => onPrimaryChange?.(data, currentSku)}\n >\n {buttonText?.primaryButton || 'Shop Now'}\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\nexport default FilterCardWrapItem\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { cn } from '../../helpers/utils.js'\nimport { useAiuiContext } from '../AiuiProvider/index.js'\nimport { formatVariantPrice } from '../ShelfDisplay/shelfDisplay.js'\nimport Badge from '../../components/badge.js'\nimport { Heading } from '../../components/heading.js'\nimport { Text } from '../../components/text.js'\nimport Button from '../../components/button.js'\nimport Picture from '../../components/picture.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { getFunctionMemberPrice } from './component/price.js'\nimport { useState, useEffect } from 'react'\n\nconst componentType = 'image'\nconst componentName = 'product_shelf'\n\nconst SOLD_OUT_PRICE = 9999999.99\n\nconst getShopifyCdnBaseUrl = (imagePath: string | null) => {\n // \u76EE\u524D\u77E5\u9053\u7684 shopify \u56FE\u7247\u8DEF\u7531\u7684\u5F62\u5F0F\n // https://cdn.shopify.com/s/files/1/0493/9834/9974/files/Group_5581_2.jpg?v=1662379184\n // https://cdn.shopify.com/s/files/1/0493/9834/9974/products/B2633123.jpg?v=1631264041_3840x\n // \u8FD4\u56DE https://cdn.shopify.com/s/files/1/0493/9834/9974/files/\n let path\n if (imagePath?.includes('products')) {\n path = imagePath?.split('products')[0] + 'files/'\n } else {\n path = imagePath?.replace(imagePath?.split('files')?.pop() || '', '') + '/'\n }\n return path\n}\n\ntype FilterCardWrapItemProps = {\n data: any\n isSale?: boolean\n buttonText?: any\n itemShape?: string\n metafields: any\n onPrimaryChange?: (item: any, sku: string) => void\n onSecondaryChange?: (item: any, sku: string) => void\n}\n\nconst FilterCardWrapItem = ({\n data,\n isSale = false,\n buttonText,\n itemShape,\n metafields,\n onPrimaryChange,\n onSecondaryChange,\n}: FilterCardWrapItemProps) => {\n const { memberPriceDiscount, memberSetting, discounts, shopCommon } = metafields\n const [currentSku, setCurrentSku] = useState<string>('')\n const [currentImage, setCurrentImage] = useState<string>('')\n const [selectedColor, setSelectedColor] = useState<string>('')\n const [isSoldOut, setIsSoldOut] = useState<any>(false)\n const [currentVariant, setCurrentVariant] = useState<any>({})\n const [plusMemberStatus, setPlusMemberStatus] = useState<boolean>(false)\n const [priceCollection, setPriceCollection] = useState<{ price: string; basePrice: string }>({\n price: '',\n basePrice: '',\n })\n const [tags, setTags] = useState<string[]>([])\n const [showTags, setShowTags] = useState<string[]>([])\n const [discountCollection, setDiscountCollection] = useState<string>('')\n const [soldOutText, setSoldOutText] = useState<string>('')\n\n const { locale = 'us', currencyCode, isLogin } = useAiuiContext()\n\n const displayTitle = data?.custom_name || data?.title || data?.name\n const displayDescription = data?.custom_description || data?.description || data?.descriptionHtml\n const skuArray = data?.filter_variants || data?.variants || []\n\n const onColorClick = (color: string) => setSelectedColor(color)\n\n const handleBasePrice = (discount: string, priceCurrency: string, salePrice: string, status: boolean) => {\n setPlusMemberStatus(status)\n setDiscountCollection(discount || '')\n setPriceCollection({\n basePrice: priceCurrency || '',\n price: salePrice || '',\n })\n }\n\n useEffect(() => {\n if (selectedColor) {\n const findSku = skuArray?.find((item: any) => item?.name?.includes?.(selectedColor))\n setCurrentSku(findSku?.sku || skuArray?.[0]?.sku || '')\n setCurrentImage(findSku?.image?.url || skuArray?.[0]?.image?.url || '')\n return\n }\n const firstOption = data?.options?.find((item: any) => item?.displayName === 'color')?.values?.[0]?.label\n firstOption && setSelectedColor(firstOption)\n const findSku = skuArray?.find((item: any) => item?.name?.includes?.(firstOption))\n setCurrentSku(findSku?.sku || skuArray?.[0]?.sku || '')\n setCurrentImage(findSku?.image?.url || skuArray?.[0]?.image?.url || '')\n }, [selectedColor])\n\n useEffect(() => {\n if (!currentSku) return\n setTags(data?.tags || [])\n const variant = skuArray?.find((item: any) => item?.sku === currentSku) || skuArray?.[0] || {}\n setCurrentVariant(variant)\n setIsSoldOut(!variant?.availableForSale || variant?.price?.amount === SOLD_OUT_PRICE)\n const { infos } = variant?.metafields || {}\n const { productInfos, preRender } = data?.metafields || {}\n setSoldOutText(infos?.comingSoon || productInfos?.comingSoon || preRender?.soldOut || shopCommon?.soldOut || '')\n // active \u7684 \u901A\u7528\u6298\u6263\n const coupon = variant?.coupons?.[0]\n const { price, basePrice, discount, discountAmount } = formatVariantPrice({\n locale: locale,\n amount: coupon ? coupon.variant_price4wscode : variant.price,\n baseAmount: coupon ? variant.price : 0,\n currencyCode: data?.price?.currencyCode || 'USD',\n })\n const showPrice = (coupon?.value_type === 'fixed_amount' ? discountAmount : discount) || ''\n // \u4F1A\u5458\u6298\u6263\n if (isLogin) {\n const result = getFunctionMemberPrice({\n locale: locale,\n variant: variant,\n shopMemberPriceDiscountConfig: memberPriceDiscount,\n currencyCode: currencyCode || data?.price?.currencyCode || 'USD',\n })\n if (result) {\n const { hasMemberPrice, salePriceWithCurrency, originalPriceWithCurrency, savePriceWithCurrency } = result\n handleBasePrice(\n savePriceWithCurrency || '',\n originalPriceWithCurrency || '',\n hasMemberPrice ? salePriceWithCurrency : '',\n result?.hasMemberPrice\n )\n } else {\n handleBasePrice(showPrice, basePrice || '', price || '', false)\n }\n } else {\n handleBasePrice(showPrice, basePrice || '', price || '', false)\n }\n }, [data, currentSku])\n\n // \u5904\u7406\u6807\u7B7E\n useEffect(() => {\n let handleTags: string[] = []\n if (discountCollection) {\n const discountTag = `${discountCollection}${discounts?.off}`\n handleTags.push(discountTag)\n }\n const newTags = tags\n ?.filter?.((item: string) => item?.startsWith?.('CLtag'))\n ?.map?.((item: string) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, discountCollection ? 1 : 2)\n setShowTags(handleTags.concat(newTags))\n }, [tags, discountCollection])\n\n if (isSale && !priceCollection?.basePrice && !data?.mImage) {\n return null\n }\n\n return (\n <div\n key={data?.id || data?.handle}\n className={cn(\n itemShape === 'round' ? 'rounded-2xl' : 'rounded-none',\n 'lg-desktop:h-[493px] laptop:h-[433px] h-[398px] relative tablet:hover:bg-info-white',\n 'bg-container-secondary-1 box-border w-full cursor-pointer overflow-hidden duration-300',\n {\n 'aiui-dark': data.theme === 'dark',\n }\n )}\n >\n {data?.mImage ? (\n <div className=\"absolute inset-0 box-border overflow-hidden hover:[&_img]:scale-105\">\n <div className=\"relative inset-0 size-full\">\n <a\n className=\"size-full\"\n href={trackUrlRef(data?.link, `${componentType}_${componentName}`)}\n >\n <Picture\n alt=\"\"\n source={data?.mImage?.url || data?.mImage}\n className=\"size-full [&_img]:object-cover [&_img]:size-full\"\n imgClassName=\"size-full object-cover transition-all duration-300\"\n />\n <div className=\"desktop:p-6 absolute inset-x-0 top-0 box-border overflow-hidden p-4\">\n <p\n className=\"desktop:mb-2 mb-1 text-info-primary desktop:text-base text-sm font-semibold\"\n dangerouslySetInnerHTML={{ __html: data?.subTitle }}\n />\n <span\n className=\"text-info-secondary desktop:text-[32px] text-[20px] font-semibold desktop:leading-9 line-clamp-4\"\n dangerouslySetInnerHTML={{ __html: data?.title }}\n />\n </div>\n </a>\n </div>\n </div>\n ) : (\n <div className=\"desktop:p-6 absolute inset-0 box-border flex flex-col justify-between overflow-hidden tablet:p-4 p-2 pb-4\">\n <div className=\"flex flex-wrap gap-1 overflow-hidden collection-filter-tags\">\n {showTags?.map?.((item: string, index: number) => (\n <Badge\n key={index}\n className=\"whitespace-nowrap max-w-full truncate px-1 box-border font-semibold item-badge\"\n >\n {item}\n </Badge>\n ))}\n </div>\n <a\n target=\"_blank\"\n aria-label={displayTitle}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}`,\n `${componentType}_${componentName}`\n )}\n >\n <div className={cn('m-auto lg-desktop:size-[196px] desktop:size-[138px] size-[120px] overflow-hidden')}>\n <Picture\n alt=\"\"\n source={currentImage}\n className=\"h-full [&_img]:object-cover [&_img]:h-full [&_img]:w-fit\"\n />\n </div>\n </a>\n {data?.options?.map((option: any) => {\n if (option?.displayName === 'color') {\n return (\n <div className=\"flex items-center gap-1\">\n {option?.values?.map((item: any) => {\n const color = item?.hexColors ? item.hexColors?.[0] : item?.label\n return (\n <button\n key={item?.label}\n onClick={() => onColorClick(item?.label)}\n className={cn(\n 'size-4 rounded-full cursor-pointer overflow-hidden border-2 border-transparent',\n `${selectedColor === item?.label ? 'border-[#00BEFA]' : ''}`\n )}\n >\n <img\n alt={color}\n className=\"h-full w-full object-cover\"\n src={`${getShopifyCdnBaseUrl(data?.images?.[0]?.url)}${color\n ?.toLowerCase()\n .split(' ')\n ?.join('-')}_${'50x'}.png`}\n />\n </button>\n )\n })}\n </div>\n )\n }\n })}\n <div>\n {displayTitle ? (\n <Heading\n html={displayTitle || ''}\n title={displayTitle || ''}\n className=\"shelf-display-product-title line-clamp-2 lg-desktop:text-2xl laptop:test-xl test-base\"\n />\n ) : null}\n {data?.metafields?.judgemeBadge ? (\n <a\n target=\"_blank\"\n className=\"font-semibold text-xs [&_.jdgm-star]:text-[#F77234]\"\n dangerouslySetInnerHTML={{ __html: data?.metafields?.judgemeBadge }}\n href={trackUrlRef(\n `${locale === 'us' || !locale ? '' : `/${locale}`}/products/${data?.handle}`,\n `${componentType}_${componentName}`\n )}\n />\n ) : null}\n {displayDescription ? (\n <Text\n size={2}\n html={displayDescription || ''}\n className=\"desktop:text-base laptop:text-sm shelf-display-product-description line-clamp-1 text-xs\"\n />\n ) : null}\n <div className=\"mt-3 mb-2\">\n <p\n dangerouslySetInnerHTML={{\n __html:\n isLogin && plusMemberStatus\n ? discounts?.memberPrice || memberSetting?.member_price || memberSetting?.plus_member_price || ''\n : '',\n }}\n className=\"text-info-primary lg-desktop:text-lg desktop:text-base laptop:text-sm text-xs font-semibold\"\n />\n <div className=\"flex items-center\">\n {isSoldOut ? (\n <div className=\"desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold\">\n {soldOutText || ''}\n </div>\n ) : (\n <>\n <div className=\"final-price desktop:text-2xl tablet:text-xl text-info-primary text-base font-semibold\">\n {currentVariant?.availableForSale ? priceCollection?.price || '' : ''}\n </div>\n <div className=\"origin-price desktop:text-xl tablet:text-lg text-info-secondary ml-1 text-sm font-semibold line-through\">\n {currentVariant?.availableForSale ? priceCollection?.basePrice || '' : ''}\n </div>\n </>\n )}\n </div>\n </div>\n {/* \u6309\u94AE\u7EC4 */}\n <div\n className={cn('shelf-flex-button-group', 'lg-desktop:gap-3 flex items-center gap-2 m-tablet:flex-col')}\n >\n <Button\n variant=\"secondary\"\n className=\"m-tablet:w-full\"\n onClick={() => onSecondaryChange?.(data, currentSku)}\n >\n {buttonText?.secondaryButton || 'Learn More'}\n </Button>\n <Button\n variant=\"primary\"\n className=\"m-tablet:w-full\"\n disabled={isSoldOut}\n onClick={() => onPrimaryChange?.(data, currentSku)}\n >\n {buttonText?.primaryButton || 'Shop Now'}\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\nexport default FilterCardWrapItem\n"],
5
+ "mappings": "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",
6
6
  "names": ["Fragment", "jsx", "jsxs", "cn", "useAiuiContext", "formatVariantPrice", "Badge", "Heading", "Text", "Button", "Picture", "trackUrlRef", "getFunctionMemberPrice", "useState", "useEffect", "componentType", "componentName", "SOLD_OUT_PRICE", "getShopifyCdnBaseUrl", "imagePath", "path", "FilterCardWrapItem", "data", "isSale", "buttonText", "itemShape", "metafields", "onPrimaryChange", "onSecondaryChange", "memberPriceDiscount", "memberSetting", "discounts", "shopCommon", "currentSku", "setCurrentSku", "currentImage", "setCurrentImage", "selectedColor", "setSelectedColor", "isSoldOut", "setIsSoldOut", "currentVariant", "setCurrentVariant", "plusMemberStatus", "setPlusMemberStatus", "priceCollection", "setPriceCollection", "tags", "setTags", "showTags", "setShowTags", "discountCollection", "setDiscountCollection", "soldOutText", "setSoldOutText", "locale", "currencyCode", "isLogin", "displayTitle", "displayDescription", "skuArray", "onColorClick", "color", "handleBasePrice", "discount", "priceCurrency", "salePrice", "status", "findSku", "item", "firstOption", "variant", "infos", "productInfos", "preRender", "coupon", "price", "basePrice", "discountAmount", "showPrice", "result", "hasMemberPrice", "salePriceWithCurrency", "originalPriceWithCurrency", "savePriceWithCurrency", "handleTags", "discountTag", "newTags", "index", "option", "FilterCardWrapItem_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Swiper as r,SwiperSlide as o}from"swiper/react";import n from"../../components/picture.js";import{withLayout as d}from"../../shared/Styles.js";import{FreeMode as p,Autoplay as m}from"swiper/modules";import"swiper/css";import"swiper/css/pagination";const w=({data:i})=>{const{items:t}=i;return a("div",{className:"overflow-hidden relative w-full",children:[e("div",{className:"absolute inset-0 size-full bg-transparent z-10"}),e(r,{className:"overflow-hidden",slidesPerView:"auto",speed:7e3,loop:!0,autoplay:{delay:0,disableOnInteraction:!0},wrapperClass:"!ease-linear",modules:[p,m],breakpoints:{0:{spaceBetween:24,slidesPerView:1.6},768:{spaceBetween:24,slidesPerView:3.1},1024:{spaceBetween:128,slidesPerView:3},1440:{spaceBetween:128,slidesPerView:4},1920:{spaceBetween:128,slidesPerView:t?.length>=5?5:4}},children:[...t||[],...t||[]].map?.((s,l)=>e(o,{className:"!h-[unset]",children:a("div",{className:"flex w-full flex-1 items-center gap-1 overflow-hidden min-md:gap-2",children:[e(n,{source:s.icon?.url||s.icon,className:"size-6"}),e("span",{title:s.text||"",className:"flex-1 truncate text-base md-tablet:text-sm font-bold text-[#1D1D1F]",children:s.text})]})},l))})]})};var y=d(w);export{y as default};
1
+ import{jsx as s,jsxs as a}from"react/jsx-runtime";import{Swiper as r,SwiperSlide as o}from"swiper/react";import n from"../../components/picture.js";import{withLayout as d}from"../../shared/Styles.js";import{FreeMode as p,Autoplay as m}from"swiper/modules";import"swiper/css";import"swiper/css/pagination";const w=({data:i})=>{const{items:e}=i;return a("div",{className:"overflow-hidden relative w-full",children:[s("div",{className:"absolute inset-0 size-full bg-transparent z-10"}),s(r,{className:"overflow-hidden",slidesPerView:"auto",speed:7e3,loop:!0,autoplay:{delay:0,disableOnInteraction:!0},wrapperClass:"!ease-linear",modules:[p,m],breakpoints:{0:{spaceBetween:24,slidesPerView:1.6},768:{spaceBetween:24,slidesPerView:3.1},1024:{spaceBetween:128,slidesPerView:3},1440:{spaceBetween:128,slidesPerView:4},1920:{spaceBetween:128,slidesPerView:e?.length>=5?5:4}},children:(e?.length>3?[...e||[],...e||[]]:e)?.map?.((t,l)=>s(o,{className:"!h-[unset]",children:a("div",{className:"flex w-full flex-1 items-center gap-1 overflow-hidden min-md:gap-2",children:[s(n,{source:t.icon?.url||t.icon,className:"size-6"}),s("span",{title:t.text||"",className:"flex-1 truncate text-base md-tablet:text-sm font-bold text-[#1D1D1F]",children:t.text})]})},l))})]})};var h=d(w);export{h as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/TextMarquee/index.tsx"],
4
- "sourcesContent": ["import { Swiper, SwiperSlide } from 'swiper/react'\nimport Picture from '../../components/picture.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { FreeMode, Autoplay } from 'swiper/modules'\nimport 'swiper/css'\nimport 'swiper/css/pagination'\n\nconst TextMarquee = ({ data }: { data: any }) => {\n const { items } = data\n\n return (\n <div className=\"overflow-hidden relative w-full\">\n <div className=\"absolute inset-0 size-full bg-transparent z-10\" />\n <Swiper\n className=\"overflow-hidden\"\n slidesPerView=\"auto\"\n speed={7000}\n loop={true}\n autoplay={{\n delay: 0,\n disableOnInteraction: true,\n }}\n wrapperClass=\"!ease-linear\"\n modules={[FreeMode, Autoplay]}\n breakpoints={{\n 0: {\n spaceBetween: 24,\n slidesPerView: 1.6,\n },\n 768: {\n spaceBetween: 24,\n slidesPerView: 3.1,\n },\n 1024: {\n spaceBetween: 128,\n slidesPerView: 3,\n },\n 1440: {\n spaceBetween: 128,\n slidesPerView: 4,\n },\n 1920: {\n spaceBetween: 128,\n slidesPerView: items?.length >= 5 ? 5 : 4,\n },\n }}\n >\n {[...(items || []), ...(items || [])]?.map?.((item: any, index: number) => (\n <SwiperSlide key={index} className=\"!h-[unset]\">\n <div className=\"flex w-full flex-1 items-center gap-1 overflow-hidden min-md:gap-2\">\n <Picture source={item.icon?.url || item.icon} className=\"size-6\" />\n <span title={item.text || ''} className=\"flex-1 truncate text-base md-tablet:text-sm font-bold text-[#1D1D1F]\">\n {item.text}\n </span>\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n )\n}\n\nexport default withLayout(TextMarquee)\n"],
5
- "mappings": "AAYM,cAAAA,EAqCM,QAAAC,MArCN,oBAZN,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eACpC,OAAOC,MAAa,8BACpB,OAAS,cAAAC,MAAkB,yBAC3B,OAAS,YAAAC,EAAU,YAAAC,MAAgB,iBACnC,MAAO,aACP,MAAO,wBAEP,MAAMC,EAAc,CAAC,CAAE,KAAAC,CAAK,IAAqB,CAC/C,KAAM,CAAE,MAAAC,CAAM,EAAID,EAElB,OACER,EAAC,OAAI,UAAU,kCACb,UAAAD,EAAC,OAAI,UAAU,iDAAiD,EAChEA,EAACE,EAAA,CACC,UAAU,kBACV,cAAc,OACd,MAAO,IACP,KAAM,GACN,SAAU,CACR,MAAO,EACP,qBAAsB,EACxB,EACA,aAAa,eACb,QAAS,CAACI,EAAUC,CAAQ,EAC5B,YAAa,CACX,EAAG,CACD,aAAc,GACd,cAAe,GACjB,EACA,IAAK,CACH,aAAc,GACd,cAAe,GACjB,EACA,KAAM,CACJ,aAAc,IACd,cAAe,CACjB,EACA,KAAM,CACJ,aAAc,IACd,cAAe,CACjB,EACA,KAAM,CACJ,aAAc,IACd,cAAeG,GAAO,QAAU,EAAI,EAAI,CAC1C,CACF,EAEC,UAAC,GAAIA,GAAS,CAAC,EAAI,GAAIA,GAAS,CAAC,CAAE,EAAG,MAAM,CAACC,EAAWC,IACvDZ,EAACG,EAAA,CAAwB,UAAU,aACjC,SAAAF,EAAC,OAAI,UAAU,qEACb,UAAAD,EAACI,EAAA,CAAQ,OAAQO,EAAK,MAAM,KAAOA,EAAK,KAAM,UAAU,SAAS,EACjEX,EAAC,QAAK,MAAOW,EAAK,MAAQ,GAAI,UAAU,uEACrC,SAAAA,EAAK,KACR,GACF,GANgBC,CAOlB,CACD,EACH,GACF,CAEJ,EAEA,IAAOC,EAAQR,EAAWG,CAAW",
4
+ "sourcesContent": ["import { Swiper, SwiperSlide } from 'swiper/react'\nimport Picture from '../../components/picture.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport { FreeMode, Autoplay } from 'swiper/modules'\nimport 'swiper/css'\nimport 'swiper/css/pagination'\n\nconst TextMarquee = ({ data }: { data: any }) => {\n const { items } = data\n\n return (\n <div className=\"overflow-hidden relative w-full\">\n <div className=\"absolute inset-0 size-full bg-transparent z-10\" />\n <Swiper\n className=\"overflow-hidden\"\n slidesPerView=\"auto\"\n speed={7000}\n loop={true}\n autoplay={{\n delay: 0,\n disableOnInteraction: true,\n }}\n wrapperClass=\"!ease-linear\"\n modules={[FreeMode, Autoplay]}\n breakpoints={{\n 0: {\n spaceBetween: 24,\n slidesPerView: 1.6,\n },\n 768: {\n spaceBetween: 24,\n slidesPerView: 3.1,\n },\n 1024: {\n spaceBetween: 128,\n slidesPerView: 3,\n },\n 1440: {\n spaceBetween: 128,\n slidesPerView: 4,\n },\n 1920: {\n spaceBetween: 128,\n slidesPerView: items?.length >= 5 ? 5 : 4,\n },\n }}\n >\n {(items?.length > 3 ? [...(items || []), ...(items || [])] : items)?.map?.((item: any, index: number) => (\n <SwiperSlide key={index} className=\"!h-[unset]\">\n <div className=\"flex w-full flex-1 items-center gap-1 overflow-hidden min-md:gap-2\">\n <Picture source={item.icon?.url || item.icon} className=\"size-6\" />\n <span title={item.text || ''} className=\"flex-1 truncate text-base md-tablet:text-sm font-bold text-[#1D1D1F]\">\n {item.text}\n </span>\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n )\n}\n\nexport default withLayout(TextMarquee)\n"],
5
+ "mappings": "AAYM,cAAAA,EAqCM,QAAAC,MArCN,oBAZN,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eACpC,OAAOC,MAAa,8BACpB,OAAS,cAAAC,MAAkB,yBAC3B,OAAS,YAAAC,EAAU,YAAAC,MAAgB,iBACnC,MAAO,aACP,MAAO,wBAEP,MAAMC,EAAc,CAAC,CAAE,KAAAC,CAAK,IAAqB,CAC/C,KAAM,CAAE,MAAAC,CAAM,EAAID,EAElB,OACER,EAAC,OAAI,UAAU,kCACb,UAAAD,EAAC,OAAI,UAAU,iDAAiD,EAChEA,EAACE,EAAA,CACC,UAAU,kBACV,cAAc,OACd,MAAO,IACP,KAAM,GACN,SAAU,CACR,MAAO,EACP,qBAAsB,EACxB,EACA,aAAa,eACb,QAAS,CAACI,EAAUC,CAAQ,EAC5B,YAAa,CACX,EAAG,CACD,aAAc,GACd,cAAe,GACjB,EACA,IAAK,CACH,aAAc,GACd,cAAe,GACjB,EACA,KAAM,CACJ,aAAc,IACd,cAAe,CACjB,EACA,KAAM,CACJ,aAAc,IACd,cAAe,CACjB,EACA,KAAM,CACJ,aAAc,IACd,cAAeG,GAAO,QAAU,EAAI,EAAI,CAC1C,CACF,EAEE,UAAAA,GAAO,OAAS,EAAI,CAAC,GAAIA,GAAS,CAAC,EAAI,GAAIA,GAAS,CAAC,CAAE,EAAIA,IAAQ,MAAM,CAACC,EAAWC,IACrFZ,EAACG,EAAA,CAAwB,UAAU,aACjC,SAAAF,EAAC,OAAI,UAAU,qEACb,UAAAD,EAACI,EAAA,CAAQ,OAAQO,EAAK,MAAM,KAAOA,EAAK,KAAM,UAAU,SAAS,EACjEX,EAAC,QAAK,MAAOW,EAAK,MAAQ,GAAI,UAAU,uEACrC,SAAAA,EAAK,KACR,GACF,GANgBC,CAOlB,CACD,EACH,GACF,CAEJ,EAEA,IAAOC,EAAQR,EAAWG,CAAW",
6
6
  "names": ["jsx", "jsxs", "Swiper", "SwiperSlide", "Picture", "withLayout", "FreeMode", "Autoplay", "TextMarquee", "data", "items", "item", "index", "TextMarquee_default"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as o,jsxs as R}from"react/jsx-runtime";import C,{useEffect as F,useRef as n,useImperativeHandle as O}from"react";import{gsap as u}from"gsap";import{SplitText as v}from"gsap/dist/SplitText";import{ScrollTrigger as x}from"gsap/dist/ScrollTrigger";import{cn as T}from"../../helpers/utils.js";import{Heading as _}from"../../components/index.js";import{withLayout as q}from"../../shared/Styles.js";import"../../hooks/useExposure.js";import{trackUrlRef as A}from"../../shared/trackUrlRef.js";import{useInView as G}from"react-intersection-observer";const k="link",y="title",b=C.forwardRef(({data:L,className:E,as:H="h2"},M)=>{const{title:i,caption:s,theme:p,extensions:l}=L,f=n(null),e=n(null),t=n(null),r=n(null),{ref:N,inView:d}=G();return O(M,()=>f.current),F(()=>{u.registerPlugin(v,x);function $(){if(!e.current)return;const D=e.current?.clientHeight||80;t.current&&t.current.revert(),r.current&&r.current.kill(),t.current=new v(e.current,{type:"words",wordsClass:"word"});const a=t.current.words;u.set(a,{opacity:0}),r.current=x.create({trigger:e.current,start:"bottom bottom-=4%",end:`bottom+=${D*1.5+60}px bottom-=4%`,scrub:!0,invalidateOnRefresh:!0,onUpdate:P=>{const S=P.progress,g=a.length||1,z=.5,c=1/g,h=c*(1-z),w=(g-1)*h+c,I=Math.min(1,w>0?S/w:0);a.forEach((V,U)=>{const j=U*h,B=c;let m=(I-j)/B;m=Math.max(0,Math.min(1,m)),u.set(V,{opacity:m})})}})}return d&&$(),()=>{t.current&&t.current.revert(),r.current&&r.current.kill()}},[d]),(i||s)&&R("div",{className:"mb-6 flex items-end justify-between overflow-hidden title-box",ref:f,children:[o("div",{ref:N,className:T("space-y-4 flex-1",E,{"aiui-dark":p==="dark"}),children:o(_,{ref:e,as:H,size:4,html:s||i})}),l?.textLink&&R("a",{className:T({"aiui-dark":p==="dark"},"flex items-center text-base font-[700] leading-[1.4] text-[#777] transition-all duration-[0.4s] hover:text-[#1D1D1F]"),href:A(l?.link,`${k}_${y}`),"data-headless-type-name":`${k}#${y}`,"data-headless-title-desc-button":`${i}#${s}`,children:[l?.textLink,o("svg",{width:"24",height:"24",className:"mb-[3px]",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",children:o("path",{className:"transition-all duration-[0.4s]",d:"M10.5 8L14.5 12L10.5 16",stroke:"#777","stroke-width":"1.5","stroke-linecap":"round"})})]})]})});b.displayName="Title";var ot=q(b);export{ot as default};
1
+ "use client";import{jsx as o,jsxs as R}from"react/jsx-runtime";import F,{useEffect as O,useRef as n,useImperativeHandle as _}from"react";import{gsap as u}from"gsap";import{SplitText as v}from"gsap/dist/SplitText";import{ScrollTrigger as x}from"gsap/dist/ScrollTrigger";import{cn as T}from"../../helpers/utils.js";import{Heading as q}from"../../components/index.js";import{withLayout as A}from"../../shared/Styles.js";import"../../hooks/useExposure.js";import{trackUrlRef as G}from"../../shared/trackUrlRef.js";import{useInView as J}from"react-intersection-observer";const k="link",b="title",y=F.forwardRef(({data:L,className:E,as:H="h2",weight:M="bold"},N)=>{const{title:i,caption:s,theme:p,extensions:l}=L,d=n(null),e=n(null),t=n(null),r=n(null),{ref:$,inView:f}=J();return _(N,()=>d.current),O(()=>{u.registerPlugin(v,x);function D(){if(!e.current)return;const P=e.current?.clientHeight||80;t.current&&t.current.revert(),r.current&&r.current.kill(),t.current=new v(e.current,{type:"words",wordsClass:"word"});const a=t.current.words;u.set(a,{opacity:0}),r.current=x.create({trigger:e.current,start:"bottom bottom-=4%",end:`bottom+=${P*1.5+60}px bottom-=4%`,scrub:!0,invalidateOnRefresh:!0,onUpdate:S=>{const z=S.progress,g=a.length||1,I=.5,c=1/g,h=c*(1-I),w=(g-1)*h+c,V=Math.min(1,w>0?z/w:0);a.forEach((U,j)=>{const B=j*h,C=c;let m=(V-B)/C;m=Math.max(0,Math.min(1,m)),u.set(U,{opacity:m})})}})}return f&&D(),()=>{t.current&&t.current.revert(),r.current&&r.current.kill()}},[f]),(i||s)&&R("div",{className:"mb-6 flex items-end justify-between overflow-hidden title-box",ref:d,children:[o("div",{ref:$,className:T("space-y-4 flex-1",E,{"aiui-dark":p==="dark"}),children:o(q,{ref:e,as:H,size:4,html:s||i,weight:M})}),l?.textLink&&R("a",{className:T({"aiui-dark":p==="dark"},"flex items-center text-base font-[700] leading-[1.4] text-[#777] transition-all duration-[0.4s] hover:text-[#1D1D1F]"),href:G(l?.link,`${k}_${b}`),"data-headless-type-name":`${k}#${b}`,"data-headless-title-desc-button":`${i}#${s}`,children:[l?.textLink,o("svg",{width:"24",height:"24",className:"mb-[3px]",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",children:o("path",{className:"transition-all duration-[0.4s]",d:"M10.5 8L14.5 12L10.5 16",stroke:"#777","stroke-width":"1.5","stroke-linecap":"round"})})]})]})});y.displayName="Title";var it=A(y);export{it as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Title/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useEffect, useRef, useImperativeHandle } from 'react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst componentType = 'link'\nconst componentName = 'title'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className, as = 'h2' }, ref) => {\n const { title, caption, theme, extensions } = data\n const innerRef = useRef<HTMLDivElement>(null)\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const { ref: inViewRef, inView } = useInView()\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n if (splitTextInstance.current) {\n splitTextInstance.current.revert()\n }\n if (scrollTriggerRef.current) {\n scrollTriggerRef.current.kill()\n }\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n invalidateOnRefresh: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length || 1\n const overlap = 0.5\n const interval = 1 / total\n const step = interval * (1 - overlap)\n const lastEnd = (total - 1) * step + interval\n const normalizedProgress = Math.min(1, lastEnd > 0 ? progress / lastEnd : 0)\n words.forEach((word: any, i: number) => {\n const start = i * step\n const width = interval\n let opacity = (normalizedProgress - start) / width\n opacity = Math.max(0, Math.min(1, opacity))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n // ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n (title || caption) && (\n <div className=\"mb-6 flex items-end justify-between overflow-hidden title-box\" ref={innerRef}>\n <div ref={inViewRef} className={cn('space-y-4 flex-1', className, { 'aiui-dark': theme === 'dark' })}>\n <Heading ref={titleRef} as={as} size={4} html={caption || title} />\n </div>\n {extensions?.textLink && (\n <a\n className={cn(\n { 'aiui-dark': theme === 'dark' },\n 'flex items-center text-base font-[700] leading-[1.4] text-[#777] transition-all duration-[0.4s] hover:text-[#1D1D1F]'\n )}\n href={trackUrlRef(extensions?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${caption}`}\n >\n {extensions?.textLink}\n <svg\n width=\"24\"\n height=\"24\"\n className=\"mb-[3px]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n className=\"transition-all duration-[0.4s]\"\n d=\"M10.5 8L14.5 12L10.5 16\"\n stroke=\"#777\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n ></path>\n </svg>\n </a>\n )}\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
- "mappings": "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",
6
- "names": ["jsx", "jsxs", "React", "useEffect", "useRef", "useImperativeHandle", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "withLayout", "trackUrlRef", "useInView", "componentType", "componentName", "Title", "data", "className", "as", "ref", "title", "caption", "theme", "extensions", "innerRef", "titleRef", "splitTextInstance", "scrollTriggerRef", "inViewRef", "inView", "gsapResize", "height", "words", "self", "progress", "total", "overlap", "interval", "step", "lastEnd", "normalizedProgress", "word", "i", "start", "width", "opacity", "Title_default"]
4
+ "sourcesContent": ["'use client'\nimport React, { useEffect, useRef, useImperativeHandle } from 'react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/dist/SplitText'\nimport { ScrollTrigger } from 'gsap/dist/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading } from '../../components/index.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport type { TitleProps } from './types.js'\nimport { useExposure } from '../../hooks/useExposure.js'\nimport { trackUrlRef } from '../../shared/trackUrlRef.js'\nimport { useInView } from 'react-intersection-observer'\n\nconst componentType = 'link'\nconst componentName = 'title'\n\nconst Title = React.forwardRef<HTMLDivElement, TitleProps>(({ data, className, as = 'h2', weight = 'bold' }, ref) => {\n const { title, caption, theme, extensions } = data\n const innerRef = useRef<HTMLDivElement>(null)\n const titleRef = useRef<HTMLHeadingElement>(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n const scrollTriggerRef = useRef<ScrollTrigger | null>(null)\n\n const { ref: inViewRef, inView } = useInView()\n\n useImperativeHandle(ref, () => innerRef.current as HTMLDivElement)\n\n\n useEffect(() => {\n gsap.registerPlugin(SplitText, ScrollTrigger)\n function gsapResize() {\n if (!titleRef.current) return\n const height = titleRef.current?.clientHeight || 80\n if (splitTextInstance.current) {\n splitTextInstance.current.revert()\n }\n if (scrollTriggerRef.current) {\n scrollTriggerRef.current.kill()\n }\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n scrollTriggerRef.current = ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'bottom bottom-=4%',\n end: `bottom+=${height * 1.5 + 60}px bottom-=4%`,\n scrub: true,\n invalidateOnRefresh: true,\n onUpdate: (self: any) => {\n const progress = self.progress\n const total = words.length || 1\n const overlap = 0.5\n const interval = 1 / total\n const step = interval * (1 - overlap)\n const lastEnd = (total - 1) * step + interval\n const normalizedProgress = Math.min(1, lastEnd > 0 ? progress / lastEnd : 0)\n words.forEach((word: any, i: number) => {\n const start = i * step\n const width = interval\n let opacity = (normalizedProgress - start) / width\n opacity = Math.max(0, Math.min(1, opacity))\n gsap.set(word, { opacity })\n })\n },\n })\n }\n\n if (inView) {\n gsapResize()\n }\n\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n // ScrollTrigger.getAll().forEach((t: { kill: () => any }) => t.kill())\n scrollTriggerRef.current && scrollTriggerRef.current.kill()\n }\n }, [inView])\n\n return (\n (title || caption) && (\n <div className=\"mb-6 flex items-end justify-between overflow-hidden title-box\" ref={innerRef}>\n <div ref={inViewRef} className={cn('space-y-4 flex-1', className, { 'aiui-dark': theme === 'dark' })}>\n <Heading ref={titleRef} as={as} size={4} html={caption || title} weight={weight} />\n </div>\n {extensions?.textLink && (\n <a\n className={cn(\n { 'aiui-dark': theme === 'dark' },\n 'flex items-center text-base font-[700] leading-[1.4] text-[#777] transition-all duration-[0.4s] hover:text-[#1D1D1F]'\n )}\n href={trackUrlRef(extensions?.link, `${componentType}_${componentName}`)}\n data-headless-type-name={`${componentType}#${componentName}`}\n data-headless-title-desc-button={`${title}#${caption}`}\n >\n {extensions?.textLink}\n <svg\n width=\"24\"\n height=\"24\"\n className=\"mb-[3px]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n className=\"transition-all duration-[0.4s]\"\n d=\"M10.5 8L14.5 12L10.5 16\"\n stroke=\"#777\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n ></path>\n </svg>\n </a>\n )}\n </div>\n )\n )\n})\n\nTitle.displayName = 'Title'\n\nexport default withLayout(Title)\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "useEffect", "useRef", "useImperativeHandle", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "withLayout", "trackUrlRef", "useInView", "componentType", "componentName", "Title", "data", "className", "as", "weight", "ref", "title", "caption", "theme", "extensions", "innerRef", "titleRef", "splitTextInstance", "scrollTriggerRef", "inViewRef", "inView", "gsapResize", "height", "words", "self", "progress", "total", "overlap", "interval", "step", "lastEnd", "normalizedProgress", "word", "i", "start", "width", "opacity", "Title_default"]
7
7
  }
@@ -30,4 +30,5 @@ export interface TitleProps {
30
30
  */
31
31
  className?: string;
32
32
  as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
33
+ weight?: 'bold' | 'medium' | 'semibold' | 'extraBold' | 'black';
33
34
  }