@anker-in/headless-ui 1.1.16-beta.3 → 1.1.17-alpha-1765978730

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 (129) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.d.ts +17 -0
  2. package/dist/cjs/biz-components/AccordionCards/index.js +1 -1
  3. package/dist/cjs/biz-components/AccordionCards/index.js.map +3 -3
  4. package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +22 -0
  5. package/dist/cjs/biz-components/AnchorNavigation/index.js +2 -0
  6. package/dist/cjs/biz-components/AnchorNavigation/index.js.map +7 -0
  7. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  8. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  9. package/dist/cjs/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  10. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +83 -0
  11. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  12. package/dist/cjs/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  13. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.d.ts +40 -0
  14. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js +2 -0
  15. package/dist/cjs/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  16. package/dist/cjs/biz-components/EventSchedule/index.d.ts +39 -0
  17. package/dist/cjs/biz-components/EventSchedule/index.js +2 -0
  18. package/dist/cjs/biz-components/EventSchedule/index.js.map +7 -0
  19. package/dist/cjs/biz-components/HeroBanner/Countdown.js +1 -1
  20. package/dist/cjs/biz-components/HeroBanner/Countdown.js.map +2 -2
  21. package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +4 -1
  22. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  23. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  24. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +3 -3
  25. package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +2 -2
  26. package/dist/cjs/biz-components/Media/index.d.ts +32 -0
  27. package/dist/cjs/biz-components/Media/index.js +2 -0
  28. package/dist/cjs/biz-components/Media/index.js.map +7 -0
  29. package/dist/cjs/biz-components/PromotionalBar/index.d.ts +35 -0
  30. package/dist/cjs/biz-components/PromotionalBar/index.js +2 -0
  31. package/dist/cjs/biz-components/PromotionalBar/index.js.map +7 -0
  32. package/dist/cjs/biz-components/SecondaryBanner/index.d.ts +61 -0
  33. package/dist/cjs/biz-components/SecondaryBanner/index.js +2 -0
  34. package/dist/cjs/biz-components/SecondaryBanner/index.js.map +7 -0
  35. package/dist/cjs/biz-components/StockShelf/index.d.ts +21 -0
  36. package/dist/cjs/biz-components/StockShelf/index.js +2 -0
  37. package/dist/cjs/biz-components/StockShelf/index.js.map +7 -0
  38. package/dist/cjs/biz-components/index.d.ts +5 -0
  39. package/dist/cjs/biz-components/index.js +1 -1
  40. package/dist/cjs/biz-components/index.js.map +3 -3
  41. package/dist/cjs/stories/HeroBanner.stories.d.ts +4 -1
  42. package/dist/cjs/stories/HeroBanner.stories.js +2 -2
  43. package/dist/cjs/stories/HeroBanner.stories.js.map +3 -3
  44. package/dist/cjs/stories/accordionCards.stories.d.ts +21 -0
  45. package/dist/cjs/stories/accordionCards.stories.js +1 -1
  46. package/dist/cjs/stories/accordionCards.stories.js.map +3 -3
  47. package/dist/cjs/stories/anchorNavigation.stories.d.ts +27 -0
  48. package/dist/cjs/stories/anchorNavigation.stories.js +2 -0
  49. package/dist/cjs/stories/anchorNavigation.stories.js.map +7 -0
  50. package/dist/cjs/stories/buyOneGetOneShelf.stories.d.ts +56 -0
  51. package/dist/cjs/stories/buyOneGetOneShelf.stories.js +2 -0
  52. package/dist/cjs/stories/buyOneGetOneShelf.stories.js.map +7 -0
  53. package/dist/cjs/stories/eventSchedule.stories.d.ts +47 -0
  54. package/dist/cjs/stories/eventSchedule.stories.js +2 -0
  55. package/dist/cjs/stories/eventSchedule.stories.js.map +7 -0
  56. package/dist/cjs/stories/promotionalBar.stories.d.ts +26 -0
  57. package/dist/cjs/stories/promotionalBar.stories.js +2 -0
  58. package/dist/cjs/stories/promotionalBar.stories.js.map +7 -0
  59. package/dist/cjs/stories/secondaryBanner.stories.d.ts +47 -0
  60. package/dist/cjs/stories/secondaryBanner.stories.js +2 -0
  61. package/dist/cjs/stories/secondaryBanner.stories.js.map +7 -0
  62. package/dist/cjs/stories/stockShelf.stories.d.ts +27 -0
  63. package/dist/cjs/stories/stockShelf.stories.js +2 -0
  64. package/dist/cjs/stories/stockShelf.stories.js.map +7 -0
  65. package/dist/esm/biz-components/AccordionCards/index.d.ts +17 -0
  66. package/dist/esm/biz-components/AccordionCards/index.js +1 -1
  67. package/dist/esm/biz-components/AccordionCards/index.js.map +3 -3
  68. package/dist/esm/biz-components/AnchorNavigation/index.d.ts +22 -0
  69. package/dist/esm/biz-components/AnchorNavigation/index.js +2 -0
  70. package/dist/esm/biz-components/AnchorNavigation/index.js.map +7 -0
  71. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.d.ts +2 -0
  72. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js +2 -0
  73. package/dist/esm/biz-components/AnchorNavigation/useAnchorPosition.js.map +7 -0
  74. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.d.ts +83 -0
  75. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js +2 -0
  76. package/dist/esm/biz-components/BuyOneGetOneShelf/ProductCard.js.map +7 -0
  77. package/dist/esm/biz-components/BuyOneGetOneShelf/index.d.ts +40 -0
  78. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js +2 -0
  79. package/dist/esm/biz-components/BuyOneGetOneShelf/index.js.map +7 -0
  80. package/dist/esm/biz-components/EventSchedule/index.d.ts +39 -0
  81. package/dist/esm/biz-components/EventSchedule/index.js +2 -0
  82. package/dist/esm/biz-components/EventSchedule/index.js.map +7 -0
  83. package/dist/esm/biz-components/HeroBanner/Countdown.js +1 -1
  84. package/dist/esm/biz-components/HeroBanner/Countdown.js.map +2 -2
  85. package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +4 -1
  86. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  87. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +3 -3
  88. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +2 -2
  89. package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +2 -2
  90. package/dist/esm/biz-components/Media/index.d.ts +32 -0
  91. package/dist/esm/biz-components/Media/index.js +2 -0
  92. package/dist/esm/biz-components/Media/index.js.map +7 -0
  93. package/dist/esm/biz-components/PromotionalBar/index.d.ts +35 -0
  94. package/dist/esm/biz-components/PromotionalBar/index.js +2 -0
  95. package/dist/esm/biz-components/PromotionalBar/index.js.map +7 -0
  96. package/dist/esm/biz-components/SecondaryBanner/index.d.ts +61 -0
  97. package/dist/esm/biz-components/SecondaryBanner/index.js +2 -0
  98. package/dist/esm/biz-components/SecondaryBanner/index.js.map +7 -0
  99. package/dist/esm/biz-components/StockShelf/index.d.ts +21 -0
  100. package/dist/esm/biz-components/StockShelf/index.js +2 -0
  101. package/dist/esm/biz-components/StockShelf/index.js.map +7 -0
  102. package/dist/esm/biz-components/index.d.ts +5 -0
  103. package/dist/esm/biz-components/index.js +1 -1
  104. package/dist/esm/biz-components/index.js.map +2 -2
  105. package/dist/esm/stories/HeroBanner.stories.d.ts +4 -1
  106. package/dist/esm/stories/HeroBanner.stories.js +2 -2
  107. package/dist/esm/stories/HeroBanner.stories.js.map +3 -3
  108. package/dist/esm/stories/accordionCards.stories.d.ts +21 -0
  109. package/dist/esm/stories/accordionCards.stories.js +1 -1
  110. package/dist/esm/stories/accordionCards.stories.js.map +3 -3
  111. package/dist/esm/stories/anchorNavigation.stories.d.ts +27 -0
  112. package/dist/esm/stories/anchorNavigation.stories.js +2 -0
  113. package/dist/esm/stories/anchorNavigation.stories.js.map +7 -0
  114. package/dist/esm/stories/buyOneGetOneShelf.stories.d.ts +56 -0
  115. package/dist/esm/stories/buyOneGetOneShelf.stories.js +2 -0
  116. package/dist/esm/stories/buyOneGetOneShelf.stories.js.map +7 -0
  117. package/dist/esm/stories/eventSchedule.stories.d.ts +47 -0
  118. package/dist/esm/stories/eventSchedule.stories.js +2 -0
  119. package/dist/esm/stories/eventSchedule.stories.js.map +7 -0
  120. package/dist/esm/stories/promotionalBar.stories.d.ts +26 -0
  121. package/dist/esm/stories/promotionalBar.stories.js +2 -0
  122. package/dist/esm/stories/promotionalBar.stories.js.map +7 -0
  123. package/dist/esm/stories/secondaryBanner.stories.d.ts +47 -0
  124. package/dist/esm/stories/secondaryBanner.stories.js +2 -0
  125. package/dist/esm/stories/secondaryBanner.stories.js.map +7 -0
  126. package/dist/esm/stories/stockShelf.stories.d.ts +27 -0
  127. package/dist/esm/stories/stockShelf.stories.js +2 -0
  128. package/dist/esm/stories/stockShelf.stories.js.map +7 -0
  129. package/package.json +2 -1
@@ -1,6 +1,6 @@
1
- import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Text as u,Picture as k,Button as w,Dialog as y,DialogContent as N,DialogTrigger as C}from"../../../../../../components/index.js";import{Content as f,List as T,Root as E,Trigger as D}from"@radix-ui/react-tabs";import{useCallback as v,useEffect as A,useMemo as _,useRef as x,useState as h}from"react";import{cn as L}from"../../../../../../helpers/index.js";import{useBizProductContext as P}from"../../../../BizProductProvider.js";import{withLayout as H}from"../../../../../../shared/Styles.js";import{gaTrack as I}from"../../../../../../shared/track.js";const R=()=>{const{product:i,variant:a}=P(),[g,p]=h(!1),l=_(()=>i?.payload?.components?.find(o=>o.componentKey==="ProductHighlight")?.data||{},[i?.payload]),[r,n]=h(l?.ksp?.[0]),t=v(o=>{I({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:`Product Detail Page${a.sku}`,position:l?.title||"",button_name:o||l?.view||""}})},[l?.title,l?.view,a.sku]);return s("div",{className:"ipc-product-detail-highlight",children:[s("div",{className:"flex items-center justify-between",children:[l?.title&&e(u,{size:3,className:"font-bold leading-[1.2]",html:l?.title}),s(y,{open:g,onOpenChange:p,children:[e(C,{asChild:!0,children:e(w,{variant:"link",className:"!p-0 text-base font-bold",onClick:()=>t(),children:l?.view})}),e(z,{ksp:l?.ksp||[],activeKspItem:r,setActiveKspItem:n,gaTrackEvent:t})]})]}),e("div",{className:"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4",children:l?.ksp?.map(o=>e("div",{className:"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]",children:e(u,{size:3,onClick:()=>{n(o),p(!0),t(o?.title)},className:"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]",html:o?.title})},o?.title))})]})},z=({ksp:i,activeKspItem:a,setActiveKspItem:g,gaTrackEvent:p})=>{const l=x([]),r=x(null),n=v(t=>{const o=i.findIndex(d=>d.title===t?.title),c=l.current[o];if(c&&r.current){const d=r.current,m=c,b=m.offsetLeft-d.offsetWidth/2+m.offsetWidth/2;d.scrollTo({left:b,behavior:"smooth"})}},[i]);return A(()=>{a&&setTimeout(()=>{n(a)},100)},[n,a]),s(N,{className:"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4",children:[e("style",{children:`
1
+ import{jsx as e,jsxs as s}from"react/jsx-runtime";import{Text as u,Picture as k,Button as w,Dialog as y,DialogContent as N,DialogTrigger as C}from"../../../../../../components/index.js";import{Content as f,List as T,Root as E,Trigger as D}from"@radix-ui/react-tabs";import{useCallback as v,useEffect as A,useMemo as _,useRef as h,useState as x}from"react";import{cn as L}from"../../../../../../helpers/index.js";import{useBizProductContext as P}from"../../../../BizProductProvider.js";import{withLayout as R}from"../../../../../../shared/Styles.js";import{gaTrack as H}from"../../../../../../shared/track.js";const I=()=>{const{product:i,variant:a}=P(),[g,p]=x(!1),l=_(()=>i?.payload?.components?.find(o=>o.componentKey==="ProductHighlight")?.data||{},[i?.payload]),[r,n]=x(l?.ksp?.[0]),t=v(o=>{H({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:`Product Detail Page${a.sku}`,position:l?.title||"",button_name:o||l?.view||""}})},[l?.title,l?.view,a.sku]);return Reflect.ownKeys(l).length?s("div",{className:"ipc-product-detail-highlight",children:[s("div",{className:"flex items-center justify-between",children:[l?.title&&e(u,{size:3,className:"font-bold leading-[1.2]",html:l?.title}),s(y,{open:g,onOpenChange:p,children:[e(C,{asChild:!0,children:e(w,{variant:"link",className:"!p-0 text-base font-bold",onClick:()=>t(),children:l?.view})}),e(z,{ksp:l?.ksp||[],activeKspItem:r,setActiveKspItem:n,gaTrackEvent:t})]})]}),e("div",{className:"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4",children:l?.ksp?.map(o=>e("div",{className:"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]",children:e(u,{size:3,onClick:()=>{n(o),p(!0),t(o?.title)},className:"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]",html:o?.title})},o?.title))})]}):null},z=({ksp:i,activeKspItem:a,setActiveKspItem:g,gaTrackEvent:p})=>{const l=h([]),r=h(null),n=v(t=>{const o=i.findIndex(d=>d.title===t?.title),c=l.current[o];if(c&&r.current){const d=r.current,m=c,b=m.offsetLeft-d.offsetWidth/2+m.offsetWidth/2;d.scrollTo({left:b,behavior:"smooth"})}},[i]);return A(()=>{a&&setTimeout(()=>{n(a)},100)},[n,a]),s(N,{className:"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4",children:[e("style",{children:`
2
2
  .dialog-close-icon {
3
3
  color: ${a?.closeColor||"#1D1D1F"};
4
4
  }
5
- `}),s(E,{value:a?.title,className:"w-full overflow-hidden",children:[i?.map(t=>e(f,{value:t.title,children:e(k,{source:`${t?.img}, ${t?.mobileImg} 767`,className:"laptop-md:h-[480px] h-[304px] w-full",alt:t.img.alt,imgClassName:"object-cover h-full"})},t.title)),s("div",{className:"laptop-md:py-6 w-full overflow-visible bg-white py-4",children:[e("div",{ref:r,style:{scrollbarWidth:"none",msOverflowStyle:"none"},className:"laptop-md:px-6 overflow-x-auto px-4",children:e("div",{className:"rounded-btn w-fit bg-[#EAEAEC]",children:e(T,{className:"flex w-max p-1",children:i?.map((t,o)=>e(D,{ref:c=>{c&&(l.current[o]=c)},className:L("lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]",t.title===a?.title&&"bg-white"),onClick:()=>{n(t),g(t),p(t?.title)},value:t.title,children:e(u,{html:t.title,className:"text-[14px] font-bold leading-[1.2]"})},o+t.title))})})}),e("div",{className:"laptop-md:px-6 mt-4 px-4",children:i?.map((t,o)=>e(f,{value:t.title,className:"laptop-md:text-[18px] text-[14px] font-bold",children:t.description},o+t.title))})]})]})]})};var W=H(R);export{W as default};
5
+ `}),s(E,{value:a?.title,className:"w-full overflow-hidden",children:[i?.map(t=>e(f,{value:t.title,children:e(k,{source:`${t?.img}, ${t?.mobileImg} 767`,className:"laptop-md:h-[480px] h-[304px] w-full",alt:t.img.alt,imgClassName:"object-cover h-full"})},t.title)),s("div",{className:"laptop-md:py-6 w-full overflow-visible bg-white py-4",children:[e("div",{ref:r,style:{scrollbarWidth:"none",msOverflowStyle:"none"},className:"laptop-md:px-6 overflow-x-auto px-4",children:e("div",{className:"rounded-btn w-fit bg-[#EAEAEC]",children:e(T,{className:"flex w-max p-1",children:i?.map((t,o)=>e(D,{ref:c=>{c&&(l.current[o]=c)},className:L("lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]",t.title===a?.title&&"bg-white"),onClick:()=>{n(t),g(t),p(t?.title)},value:t.title,children:e(u,{html:t.title,className:"text-[14px] font-bold leading-[1.2]"})},o+t.title))})})}),e("div",{className:"laptop-md:px-6 mt-4 px-4",children:i?.map((t,o)=>e(f,{value:t.title,className:"laptop-md:text-[18px] text-[14px] font-bold",children:t.description},o+t.title))})]})]})]})};var W=R(I);export{W as default};
6
6
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../src/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.tsx"],
4
- "sourcesContent": ["import { Text, Picture, Button, Dialog, DialogContent, DialogTrigger } from '../../../../../../components/index.js'\nimport { Content, List, Root, Trigger } from '@radix-ui/react-tabs'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useBizProductContext } from '../../../../BizProductProvider.js'\nimport { withLayout } from '../../../../../../shared/Styles.js'\nimport { gaTrack } from '../../../../../../shared/track.js'\n\nconst ProductHighlight = () => {\n const { product, variant } = useBizProductContext()\n const [open, setOpen] = useState(false)\n\n const productHighlightData = useMemo(() => {\n return product?.payload?.components?.find((item: any) => item.componentKey === 'ProductHighlight')?.data || {}\n }, [product?.payload])\n\n const [activeKspItem, setActiveKspItem] = useState(productHighlightData?.ksp?.[0])\n\n const gaTrackEvent = useCallback(\n (buttonName?: string) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n event_parameters: {\n page_group: `Product Detail Page${variant.sku}`,\n position: productHighlightData?.title || '',\n button_name: buttonName || productHighlightData?.view || '',\n },\n })\n },\n [productHighlightData?.title, productHighlightData?.view, variant.sku]\n )\n\n return (\n <div className=\"ipc-product-detail-highlight\">\n <div className=\"flex items-center justify-between\">\n {productHighlightData?.title && (\n <Text size={3} className=\"font-bold leading-[1.2]\" html={productHighlightData?.title} />\n )}\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant=\"link\" className=\"!p-0 text-base font-bold\" onClick={() => gaTrackEvent()}>\n {productHighlightData?.view}\n </Button>\n </DialogTrigger>\n <ProductHighlightModal\n ksp={productHighlightData?.ksp || []}\n activeKspItem={activeKspItem}\n setActiveKspItem={setActiveKspItem}\n gaTrackEvent={gaTrackEvent}\n />\n </Dialog>\n </div>\n <div className=\"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4\">\n {productHighlightData?.ksp?.map((item: any) => (\n <div\n key={item?.title}\n className=\"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]\"\n >\n <Text\n size={3}\n onClick={() => {\n setActiveKspItem(item)\n setOpen(true)\n gaTrackEvent(item?.title)\n }}\n className=\"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]\"\n html={item?.title}\n />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst ProductHighlightModal = ({\n ksp,\n activeKspItem,\n setActiveKspItem,\n gaTrackEvent,\n}: {\n ksp: any[]\n activeKspItem: any\n setActiveKspItem: (_activeKspItem: any) => void\n gaTrackEvent: (_buttonName: string) => void\n}) => {\n const highlightRef = useRef<HTMLButtonElement[]>([])\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n const autoScrollToActiveItem = useCallback(\n (activeKspItem: any) => {\n const curIndex = ksp.findIndex(item => item.title === activeKspItem?.title)\n const curRef = highlightRef.current[curIndex]\n\n if (curRef && scrollContainerRef.current) {\n const container = scrollContainerRef.current\n const button = curRef\n const scrollLeft = button.offsetLeft - container.offsetWidth / 2 + button.offsetWidth / 2\n\n container.scrollTo({\n left: scrollLeft,\n behavior: 'smooth',\n })\n }\n },\n [ksp]\n )\n\n useEffect(() => {\n if (!activeKspItem) return\n // setActiveKspItem(clickActiveKspItem)\n\n // \u5EF6\u8FDF\u6267\u884C\uFF0C\u7B49\u5F85 Dialog \u548C\u5185\u90E8\u5143\u7D20\u5B8C\u5168\u6E32\u67D3\n setTimeout(() => {\n autoScrollToActiveItem(activeKspItem)\n }, 100)\n }, [autoScrollToActiveItem, activeKspItem])\n\n return (\n <DialogContent className=\"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4\">\n <style>{`\n .dialog-close-icon {\n color: ${activeKspItem?.closeColor || '#1D1D1F'};\n }\n `}</style>\n <Root value={activeKspItem?.title} className=\"w-full overflow-hidden\">\n {ksp?.map(item => (\n <Content value={item.title} key={item.title}>\n <Picture\n source={`${item?.img}, ${item?.mobileImg} 767`}\n className=\"laptop-md:h-[480px] h-[304px] w-full\"\n alt={item.img.alt}\n imgClassName=\"object-cover h-full\"\n />\n </Content>\n ))}\n <div className=\"laptop-md:py-6 w-full overflow-visible bg-white py-4\">\n <div\n ref={scrollContainerRef}\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n className=\"laptop-md:px-6 overflow-x-auto px-4\"\n >\n <div className=\"rounded-btn w-fit bg-[#EAEAEC]\">\n <List className=\"flex w-max p-1\">\n {ksp?.map((item, index) => (\n <Trigger\n ref={el => {\n if (el) {\n highlightRef.current[index] = el\n }\n }}\n className={cn(\n 'lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]',\n item.title === activeKspItem?.title && 'bg-white'\n )}\n onClick={() => {\n autoScrollToActiveItem(item)\n setActiveKspItem(item)\n gaTrackEvent(item?.title)\n }}\n key={index + item.title}\n value={item.title}\n >\n <Text html={item.title} className=\"text-[14px] font-bold leading-[1.2]\" />\n </Trigger>\n ))}\n </List>\n </div>\n </div>\n <div className=\"laptop-md:px-6 mt-4 px-4\">\n {ksp?.map((item, index) => (\n <Content\n value={item.title}\n key={index + item.title}\n className=\"laptop-md:text-[18px] text-[14px] font-bold\"\n >\n {item.description}\n </Content>\n ))}\n </div>\n </div>\n </Root>\n </DialogContent>\n )\n}\n\nexport default withLayout(ProductHighlight)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Text, Picture, Button, Dialog, DialogContent, DialogTrigger } from '../../../../../../components/index.js'\nimport { Content, List, Root, Trigger } from '@radix-ui/react-tabs'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useBizProductContext } from '../../../../BizProductProvider.js'\nimport { withLayout } from '../../../../../../shared/Styles.js'\nimport { gaTrack } from '../../../../../../shared/track.js'\n\nconst ProductHighlight = () => {\n const { product, variant } = useBizProductContext()\n const [open, setOpen] = useState(false)\n\n const productHighlightData = useMemo(() => {\n return product?.payload?.components?.find((item: any) => item.componentKey === 'ProductHighlight')?.data || {}\n }, [product?.payload])\n\n const [activeKspItem, setActiveKspItem] = useState(productHighlightData?.ksp?.[0])\n\n const gaTrackEvent = useCallback(\n (buttonName?: string) => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n event_parameters: {\n page_group: `Product Detail Page${variant.sku}`,\n position: productHighlightData?.title || '',\n button_name: buttonName || productHighlightData?.view || '',\n },\n })\n },\n [productHighlightData?.title, productHighlightData?.view, variant.sku]\n )\n\n if (!Reflect.ownKeys(productHighlightData).length) return null\n\n return (\n <div className=\"ipc-product-detail-highlight\">\n <div className=\"flex items-center justify-between\">\n {productHighlightData?.title && (\n <Text size={3} className=\"font-bold leading-[1.2]\" html={productHighlightData?.title} />\n )}\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant=\"link\" className=\"!p-0 text-base font-bold\" onClick={() => gaTrackEvent()}>\n {productHighlightData?.view}\n </Button>\n </DialogTrigger>\n <ProductHighlightModal\n ksp={productHighlightData?.ksp || []}\n activeKspItem={activeKspItem}\n setActiveKspItem={setActiveKspItem}\n gaTrackEvent={gaTrackEvent}\n />\n </Dialog>\n </div>\n <div className=\"lg-desktop:mt-4 mt-3 flex flex-wrap gap-4\">\n {productHighlightData?.ksp?.map((item: any) => (\n <div\n key={item?.title}\n className=\"product-highlight-item lg-desktop:h-[38px] lg-desktop:leading-[38px] h-[36px] cursor-pointer rounded-full bg-[#F5F5F7] px-4 leading-[36px] hover:bg-[#EAEAEC]\"\n >\n <Text\n size={3}\n onClick={() => {\n setActiveKspItem(item)\n setOpen(true)\n gaTrackEvent(item?.title)\n }}\n className=\"lg-desktop:text-[16px] line-clamp-1 overflow-hidden break-all text-[14px] font-bold text-[#080A0F]\"\n html={item?.title}\n />\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst ProductHighlightModal = ({\n ksp,\n activeKspItem,\n setActiveKspItem,\n gaTrackEvent,\n}: {\n ksp: any[]\n activeKspItem: any\n setActiveKspItem: (_activeKspItem: any) => void\n gaTrackEvent: (_buttonName: string) => void\n}) => {\n const highlightRef = useRef<HTMLButtonElement[]>([])\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n const autoScrollToActiveItem = useCallback(\n (activeKspItem: any) => {\n const curIndex = ksp.findIndex(item => item.title === activeKspItem?.title)\n const curRef = highlightRef.current[curIndex]\n\n if (curRef && scrollContainerRef.current) {\n const container = scrollContainerRef.current\n const button = curRef\n const scrollLeft = button.offsetLeft - container.offsetWidth / 2 + button.offsetWidth / 2\n\n container.scrollTo({\n left: scrollLeft,\n behavior: 'smooth',\n })\n }\n },\n [ksp]\n )\n\n useEffect(() => {\n if (!activeKspItem) return\n // setActiveKspItem(clickActiveKspItem)\n\n // \u5EF6\u8FDF\u6267\u884C\uFF0C\u7B49\u5F85 Dialog \u548C\u5185\u90E8\u5143\u7D20\u5B8C\u5168\u6E32\u67D3\n setTimeout(() => {\n autoScrollToActiveItem(activeKspItem)\n }, 100)\n }, [autoScrollToActiveItem, activeKspItem])\n\n return (\n <DialogContent className=\"tablet:max-w-[896px] [&_.dialog-close-icon]:laptop:size-6 !rounded-box mx-auto w-full max-w-[326px] overflow-hidden border-none bg-transparent p-0 [&_.dialog-close-icon]:size-4\">\n <style>{`\n .dialog-close-icon {\n color: ${activeKspItem?.closeColor || '#1D1D1F'};\n }\n `}</style>\n <Root value={activeKspItem?.title} className=\"w-full overflow-hidden\">\n {ksp?.map(item => (\n <Content value={item.title} key={item.title}>\n <Picture\n source={`${item?.img}, ${item?.mobileImg} 767`}\n className=\"laptop-md:h-[480px] h-[304px] w-full\"\n alt={item.img.alt}\n imgClassName=\"object-cover h-full\"\n />\n </Content>\n ))}\n <div className=\"laptop-md:py-6 w-full overflow-visible bg-white py-4\">\n <div\n ref={scrollContainerRef}\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n className=\"laptop-md:px-6 overflow-x-auto px-4\"\n >\n <div className=\"rounded-btn w-fit bg-[#EAEAEC]\">\n <List className=\"flex w-max p-1\">\n {ksp?.map((item, index) => (\n <Trigger\n ref={el => {\n if (el) {\n highlightRef.current[index] = el\n }\n }}\n className={cn(\n 'lg-desktop:px-7 rounded-btn h-[38px] shrink-0 px-5 leading-[38px]',\n item.title === activeKspItem?.title && 'bg-white'\n )}\n onClick={() => {\n autoScrollToActiveItem(item)\n setActiveKspItem(item)\n gaTrackEvent(item?.title)\n }}\n key={index + item.title}\n value={item.title}\n >\n <Text html={item.title} className=\"text-[14px] font-bold leading-[1.2]\" />\n </Trigger>\n ))}\n </List>\n </div>\n </div>\n <div className=\"laptop-md:px-6 mt-4 px-4\">\n {ksp?.map((item, index) => (\n <Content\n value={item.title}\n key={index + item.title}\n className=\"laptop-md:text-[18px] text-[14px] font-bold\"\n >\n {item.description}\n </Content>\n ))}\n </div>\n </div>\n </Root>\n </DialogContent>\n )\n}\n\nexport default withLayout(ProductHighlight)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "Text", "Picture", "Button", "Dialog", "DialogContent", "DialogTrigger", "Content", "List", "Root", "Trigger", "useCallback", "useEffect", "useMemo", "useRef", "useState", "cn", "useBizProductContext", "withLayout", "gaTrack", "ProductHighlight", "product", "variant", "open", "setOpen", "productHighlightData", "item", "activeKspItem", "setActiveKspItem", "gaTrackEvent", "buttonName", "ProductHighlightModal", "ksp", "highlightRef", "scrollContainerRef", "autoScrollToActiveItem", "curIndex", "curRef", "container", "button", "scrollLeft", "index", "el", "ProductHighlight_default"]
7
7
  }
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import type { Media as MediaType } from '../../types/props.js';
3
+ export interface MediaProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /** PC端媒体 */
5
+ pcImage?: MediaType;
6
+ /** 平板端媒体 */
7
+ padImage?: MediaType;
8
+ /** 移动端媒体 */
9
+ mobileImage?: MediaType;
10
+ /** 视频类名 */
11
+ videoClassName?: string;
12
+ /** 图片类名 */
13
+ imgClassName?: string;
14
+ /** 是否静音播放(仅视频) */
15
+ muted?: boolean;
16
+ /** 是否循环播放(仅视频) */
17
+ loop?: boolean;
18
+ /** 是否内联播放(仅视频) */
19
+ playsInline?: boolean;
20
+ /** 是否自动播放(仅视频) */
21
+ autoPlay?: boolean;
22
+ /** 视频预览图 */
23
+ poster?: string;
24
+ }
25
+ /**
26
+ * Media - 智能媒体组件
27
+ *
28
+ * @description 根据媒体类型自动选择使用 video 标签或 Picture 组件
29
+ * 支持响应式媒体源,如果任意媒体类型是视频,则使用 video 标签渲染
30
+ */
31
+ declare const Media: React.ForwardRefExoticComponent<MediaProps & React.RefAttributes<HTMLDivElement>>;
32
+ export default Media;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as a}from"react/jsx-runtime";import h from"react";import{useMediaQuery as s}from"react-responsive";import{Picture as z}from"../../components/index.js";import{cn as t}from"../../helpers/index.js";const l=h.forwardRef(({pcImage:o,padImage:r,mobileImage:e,className:d,videoClassName:p,imgClassName:n,muted:u=!0,loop:m=!0,playsInline:c=!0,autoPlay:y=!0,poster:f,...M},v)=>{const T=s({query:"(max-width: 768px)"}),N=s({query:"(max-width: 1024px)"}),P=[o,r,e].some(w=>w?.mimeType==="video/mp4"),i=T?e:N?r||e:o,b=i?.mimeType==="video/mp4"?i.url:void 0,x=f||(i?.mimeType!=="video/mp4"?i?.url:void 0);return a("div",{ref:v,className:t("media-wrapper",d),...M,children:P?a("video",{src:b,poster:x,className:t("size-full object-cover",p),muted:u,loop:m,playsInline:c,autoPlay:y,"aria-label":i?.alt||""}):a(z,{className:"size-full",imgClassName:t("size-full object-cover",n),alt:o?.alt||"",source:`${o?.url||""} , ${r?.url??(e?.url||"")} 1024, ${e?.url||""} 767`})})});l.displayName="Media";var $=l;export{$ as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/Media/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport React from 'react'\nimport { useMediaQuery } from 'react-responsive'\nimport { Picture } from '../../components/index.js'\nimport type { Media as MediaType } from '../../types/props.js'\nimport { cn } from '../../helpers/index.js'\n\nexport interface MediaProps extends React.HTMLAttributes<HTMLDivElement> {\n /** PC\u7AEF\u5A92\u4F53 */\n pcImage?: MediaType\n /** \u5E73\u677F\u7AEF\u5A92\u4F53 */\n padImage?: MediaType\n /** \u79FB\u52A8\u7AEF\u5A92\u4F53 */\n mobileImage?: MediaType\n /** \u89C6\u9891\u7C7B\u540D */\n videoClassName?: string\n /** \u56FE\u7247\u7C7B\u540D */\n imgClassName?: string\n /** \u662F\u5426\u9759\u97F3\u64AD\u653E\uFF08\u4EC5\u89C6\u9891\uFF09 */\n muted?: boolean\n /** \u662F\u5426\u5FAA\u73AF\u64AD\u653E\uFF08\u4EC5\u89C6\u9891\uFF09 */\n loop?: boolean\n /** \u662F\u5426\u5185\u8054\u64AD\u653E\uFF08\u4EC5\u89C6\u9891\uFF09 */\n playsInline?: boolean\n /** \u662F\u5426\u81EA\u52A8\u64AD\u653E\uFF08\u4EC5\u89C6\u9891\uFF09 */\n autoPlay?: boolean\n /** \u89C6\u9891\u9884\u89C8\u56FE */\n poster?: string\n}\n\n/**\n * Media - \u667A\u80FD\u5A92\u4F53\u7EC4\u4EF6\n *\n * @description \u6839\u636E\u5A92\u4F53\u7C7B\u578B\u81EA\u52A8\u9009\u62E9\u4F7F\u7528 video \u6807\u7B7E\u6216 Picture \u7EC4\u4EF6\n * \u652F\u6301\u54CD\u5E94\u5F0F\u5A92\u4F53\u6E90\uFF0C\u5982\u679C\u4EFB\u610F\u5A92\u4F53\u7C7B\u578B\u662F\u89C6\u9891\uFF0C\u5219\u4F7F\u7528 video \u6807\u7B7E\u6E32\u67D3\n */\nconst Media = React.forwardRef<HTMLDivElement, MediaProps>(\n (\n {\n pcImage,\n padImage,\n mobileImage,\n className,\n videoClassName,\n imgClassName,\n muted = true,\n loop = true,\n playsInline = true,\n autoPlay = true,\n poster,\n ...props\n },\n ref\n ) => {\n // \u54CD\u5E94\u5F0F\u67E5\u8BE2\n const isMobile = useMediaQuery({ query: '(max-width: 768px)' })\n const isPad = useMediaQuery({ query: '(max-width: 1024px)' })\n\n // \u68C0\u67E5\u662F\u5426\u6709\u4EFB\u4F55\u5A92\u4F53\u662F\u89C6\u9891\u7C7B\u578B\n const hasVideo = [pcImage, padImage, mobileImage].some(media => media?.mimeType === 'video/mp4')\n\n // \u83B7\u53D6\u5F53\u524D\u8BBE\u5907\u5BF9\u5E94\u7684\u5A92\u4F53\n const currentMedia = isMobile ? mobileImage : isPad ? padImage || mobileImage : pcImage\n\n // \u83B7\u53D6\u89C6\u9891\u6E90\u548C\u6D77\u62A5\u56FE\u7247\n const videoSrc = currentMedia?.mimeType === 'video/mp4' ? currentMedia.url : undefined\n const imagePoster = poster || (currentMedia?.mimeType !== 'video/mp4' ? currentMedia?.url : undefined)\n\n return (\n <div ref={ref} className={cn('media-wrapper', className)} {...props}>\n {hasVideo ? (\n <video\n src={videoSrc}\n poster={imagePoster}\n className={cn('size-full object-cover', videoClassName)}\n muted={muted}\n loop={loop}\n playsInline={playsInline}\n autoPlay={autoPlay}\n aria-label={currentMedia?.alt || ''}\n />\n ) : (\n <Picture\n className=\"size-full\"\n imgClassName={cn('size-full object-cover', imgClassName)}\n alt={pcImage?.alt || ''}\n source={`${pcImage?.url || ''} , ${padImage?.url ?? (mobileImage?.url || '')} 1024, ${mobileImage?.url || ''} 767`}\n />\n )}\n </div>\n )\n }\n)\n\nMedia.displayName = 'Media'\n\nexport default Media\n"],
5
+ "mappings": "aAwEU,cAAAA,MAAA,oBAtEV,OAAOC,MAAW,QAClB,OAAS,iBAAAC,MAAqB,mBAC9B,OAAS,WAAAC,MAAe,4BAExB,OAAS,MAAAC,MAAU,yBA+BnB,MAAMC,EAAQJ,EAAM,WAClB,CACE,CACE,QAAAK,EACA,SAAAC,EACA,YAAAC,EACA,UAAAC,EACA,eAAAC,EACA,aAAAC,EACA,MAAAC,EAAQ,GACR,KAAAC,EAAO,GACP,YAAAC,EAAc,GACd,SAAAC,EAAW,GACX,OAAAC,EACA,GAAGC,CACL,EACAC,IACG,CAEH,MAAMC,EAAWjB,EAAc,CAAE,MAAO,oBAAqB,CAAC,EACxDkB,EAAQlB,EAAc,CAAE,MAAO,qBAAsB,CAAC,EAGtDmB,EAAW,CAACf,EAASC,EAAUC,CAAW,EAAE,KAAKc,GAASA,GAAO,WAAa,WAAW,EAGzFC,EAAeJ,EAAWX,EAAcY,EAAQb,GAAYC,EAAcF,EAG1EkB,EAAWD,GAAc,WAAa,YAAcA,EAAa,IAAM,OACvEE,EAAcT,IAAWO,GAAc,WAAa,YAAcA,GAAc,IAAM,QAE5F,OACEvB,EAAC,OAAI,IAAKkB,EAAK,UAAWd,EAAG,gBAAiBK,CAAS,EAAI,GAAGQ,EAC3D,SAAAI,EACCrB,EAAC,SACC,IAAKwB,EACL,OAAQC,EACR,UAAWrB,EAAG,yBAA0BM,CAAc,EACtD,MAAOE,EACP,KAAMC,EACN,YAAaC,EACb,SAAUC,EACV,aAAYQ,GAAc,KAAO,GACnC,EAEAvB,EAACG,EAAA,CACC,UAAU,YACV,aAAcC,EAAG,yBAA0BO,CAAY,EACvD,IAAKL,GAAS,KAAO,GACrB,OAAQ,GAAGA,GAAS,KAAO,EAAE,MAAMC,GAAU,MAAQC,GAAa,KAAO,GAAG,UAAUA,GAAa,KAAO,EAAE,OAC9G,EAEJ,CAEJ,CACF,EAEAH,EAAM,YAAc,QAEpB,IAAOqB,EAAQrB",
6
+ "names": ["jsx", "React", "useMediaQuery", "Picture", "cn", "Media", "pcImage", "padImage", "mobileImage", "className", "videoClassName", "imgClassName", "muted", "loop", "playsInline", "autoPlay", "poster", "props", "ref", "isMobile", "isPad", "hasVideo", "media", "currentMedia", "videoSrc", "imagePoster", "Media_default"]
7
+ }
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+ import type { Media } from '../../types/props.js';
3
+ /**
4
+ * PromotionalBar 业务组件数据接口
5
+ */
6
+ export interface PromotionalBarData {
7
+ title?: string;
8
+ /** 组件标题 */
9
+ subtitle?: string;
10
+ /** 组件内容标题 */
11
+ contentTitle?: string;
12
+ /** 组件内容描述 */
13
+ contentDesc?: string;
14
+ /** 按钮文本 */
15
+ buttonText?: string;
16
+ /** 按钮链接 */
17
+ buttonLink?: string;
18
+ /** 背景图片 */
19
+ bgImage1919?: Media;
20
+ bgImage1439?: Media;
21
+ bgImage1023?: Media;
22
+ bgImage767?: Media;
23
+ bgImage390?: Media;
24
+ }
25
+ export interface PromotionalBarProps extends React.HTMLAttributes<HTMLDivElement> {
26
+ /** 业务数据 */
27
+ data: PromotionalBarData;
28
+ }
29
+ /**
30
+ * PromotionalBar - 推广栏
31
+ *
32
+ * @description 推广栏
33
+ */
34
+ declare const PromotionalBar: React.ForwardRefExoticComponent<PromotionalBarProps & React.RefAttributes<HTMLDivElement>>;
35
+ export default PromotionalBar;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as e,jsxs as p}from"react/jsx-runtime";import*as i from"react";import{cn as x}from"../../helpers/index.js";import{Heading as d,Button as b,Picture as f,Container as v}from"../../components/index.js";const s=i.forwardRef(({className:m,data:t,...c},u)=>{const{bgImage1919:o,bgImage1439:a,bgImage1023:l,bgImage767:r,bgImage390:n}=t,g=i.useMemo(()=>`${o?.url}, ${a?.url} 1919, ${l?.url} 1439, ${r?.url} 1023, ${n?.url} 767`,[o?.url,a?.url,l?.url,r?.url,n?.url]);return e("div",{ref:u,className:x("w-full",m),...c,children:e(v,{className:"laptop:h-[192px] lg-desktop:h-[240px] h-[240px]",children:p("div",{className:"promotional-bar-content rounded-box relative h-full overflow-hidden",children:[p("div",{className:"laptop:px-8 laptop:justify-center lg-desktop:max-w-[620px] laptop:max-w-[392px] desktop:max-w-[584px] laptop:py-0 relative z-20 flex h-full flex-col p-4",children:[t.contentTitle&&e(d,{className:"text-[#F5F6F7]",size:3,children:t.contentTitle}),t.contentDesc&&e("p",{className:"laptop:text-[16px] laptop:line-clamp-2 lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#F5F6F7]",children:t.contentDesc}),e("div",{className:"laptop:mt-4 mt-1",children:t.buttonText&&e(b,{as:"a",variant:"link",className:"!p-0 text-[#F5F6F7]",href:t.buttonLink,children:t.buttonText})})]}),e(f,{source:g,className:"absolute inset-0 z-10",imgClassName:"h-full object-cover"})]})})})});s.displayName="PromotionalBar";var M=s;export{M as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/PromotionalBar/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Heading, Button, Picture, Container } from '../../components/index.js'\nimport type { Media } from '../../types/props.js'\n\n/**\n * PromotionalBar \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface PromotionalBarData {\n title?: string\n /** \u7EC4\u4EF6\u6807\u9898 */\n subtitle?: string\n /** \u7EC4\u4EF6\u5185\u5BB9\u6807\u9898 */\n contentTitle?: string\n /** \u7EC4\u4EF6\u5185\u5BB9\u63CF\u8FF0 */\n contentDesc?: string\n /** \u6309\u94AE\u6587\u672C */\n buttonText?: string\n /** \u6309\u94AE\u94FE\u63A5 */\n buttonLink?: string\n /** \u80CC\u666F\u56FE\u7247 */\n bgImage1919?: Media\n bgImage1439?: Media\n bgImage1023?: Media\n bgImage767?: Media\n bgImage390?: Media\n}\n\nexport interface PromotionalBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: PromotionalBarData\n}\n\n/**\n * PromotionalBar - \u63A8\u5E7F\u680F\n *\n * @description \u63A8\u5E7F\u680F\n */\nconst PromotionalBar = React.forwardRef<HTMLDivElement, PromotionalBarProps>(({ className, data, ...props }, ref) => {\n const { bgImage1919, bgImage1439, bgImage1023, bgImage767, bgImage390 } = data\n const pictureSource = React.useMemo(() => {\n return `${bgImage1919?.url}, ${bgImage1439?.url} 1919, ${bgImage1023?.url} 1439, ${bgImage767?.url} 1023, ${bgImage390?.url} 767`\n }, [bgImage1919?.url, bgImage1439?.url, bgImage1023?.url, bgImage767?.url, bgImage390?.url])\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n {/* \u63A8\u5E7F\u680F\u5185\u5BB9\u533A\u57DF - \u6839\u636E\u5177\u4F53\u4E1A\u52A1\u9700\u6C42\u5B9A\u5236 */}\n <Container className=\"laptop:h-[192px] lg-desktop:h-[240px] h-[240px]\">\n <div className=\"promotional-bar-content rounded-box relative h-full overflow-hidden\">\n <div className=\"laptop:px-8 laptop:justify-center lg-desktop:max-w-[620px] laptop:max-w-[392px] desktop:max-w-[584px] laptop:py-0 relative z-20 flex h-full flex-col p-4\">\n {data.contentTitle && (\n <Heading className=\"text-[#F5F6F7]\" size={3}>\n {data.contentTitle}\n </Heading>\n )}\n {data.contentDesc && (\n <p className=\"laptop:text-[16px] laptop:line-clamp-2 lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#F5F6F7]\">\n {data.contentDesc}\n </p>\n )}\n <div className=\"laptop:mt-4 mt-1\">\n {data.buttonText && (\n <Button as=\"a\" variant=\"link\" className=\"!p-0 text-[#F5F6F7]\" href={data.buttonLink}>\n {data.buttonText}\n </Button>\n )}\n </div>\n </div>\n <Picture source={pictureSource} className=\"absolute inset-0 z-10\" imgClassName=\"h-full object-cover\" />\n </div>\n </Container>\n </div>\n )\n})\n\nPromotionalBar.displayName = 'PromotionalBar'\nexport default PromotionalBar\n"],
5
+ "mappings": "aAkDU,OAEI,OAAAA,EAFJ,QAAAC,MAAA,oBAhDV,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAS,WAAAC,EAAS,UAAAC,EAAQ,WAAAC,EAAS,aAAAC,MAAiB,4BAoCpD,MAAMC,EAAiBN,EAAM,WAAgD,CAAC,CAAE,UAAAO,EAAW,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAAQ,CACnH,KAAM,CAAE,YAAAC,EAAa,YAAAC,EAAa,YAAAC,EAAa,WAAAC,EAAY,WAAAC,CAAW,EAAIP,EACpEQ,EAAgBhB,EAAM,QAAQ,IAC3B,GAAGW,GAAa,GAAG,KAAKC,GAAa,GAAG,UAAUC,GAAa,GAAG,UAAUC,GAAY,GAAG,UAAUC,GAAY,GAAG,OAC1H,CAACJ,GAAa,IAAKC,GAAa,IAAKC,GAAa,IAAKC,GAAY,IAAKC,GAAY,GAAG,CAAC,EAC3F,OACEjB,EAAC,OAAI,IAAKY,EAAK,UAAWT,EAAG,SAAUM,CAAS,EAAI,GAAGE,EAErD,SAAAX,EAACO,EAAA,CAAU,UAAU,kDACnB,SAAAN,EAAC,OAAI,UAAU,sEACb,UAAAA,EAAC,OAAI,UAAU,2JACZ,UAAAS,EAAK,cACJV,EAACI,EAAA,CAAQ,UAAU,iBAAiB,KAAM,EACvC,SAAAM,EAAK,aACR,EAEDA,EAAK,aACJV,EAAC,KAAE,UAAU,mHACV,SAAAU,EAAK,YACR,EAEFV,EAAC,OAAI,UAAU,mBACZ,SAAAU,EAAK,YACJV,EAACK,EAAA,CAAO,GAAG,IAAI,QAAQ,OAAO,UAAU,sBAAsB,KAAMK,EAAK,WACtE,SAAAA,EAAK,WACR,EAEJ,GACF,EACAV,EAACM,EAAA,CAAQ,OAAQY,EAAe,UAAU,wBAAwB,aAAa,sBAAsB,GACvG,EACF,EACF,CAEJ,CAAC,EAEDV,EAAe,YAAc,iBAC7B,IAAOW,EAAQX",
6
+ "names": ["jsx", "jsxs", "React", "cn", "Heading", "Button", "Picture", "Container", "PromotionalBar", "className", "data", "props", "ref", "bgImage1919", "bgImage1439", "bgImage1023", "bgImage767", "bgImage390", "pictureSource", "PromotionalBar_default"]
7
+ }
@@ -0,0 +1,61 @@
1
+ import * as React from 'react';
2
+ import type { Media as MediaType, Theme } from '../../types/props.js';
3
+ import type { ButtonProps } from '../../components/button.js';
4
+ export type SecondaryBannerSemanticName = 'root' | 'title' | 'superTitle' | 'subtitle' | 'content' | 'buttonGroup' | 'primaryButton' | 'secondaryButton';
5
+ /**
6
+ * SecondaryBanner 业务组件数据接口
7
+ */
8
+ export interface SecondaryBannerData {
9
+ /** 主标题*/
10
+ title?: string;
11
+ /**
12
+ * 上标题/引导标题
13
+ * 通常用于分类、引导性文字
14
+ */
15
+ superTitle?: string;
16
+ /**
17
+ * 副标题/描述文字
18
+ * 通常用于补充说明、详细描述
19
+ */
20
+ subtitle?: string;
21
+ /**
22
+ * 尺寸:
23
+ * sm: 小尺寸用于筛选页面
24
+ * base: 基础尺寸用于
25
+ * lg: 大尺寸用于专题页
26
+ * xlg: 活动页(通栏)
27
+ */
28
+ size?: 'sm' | 'base' | 'lg' | 'xlg';
29
+ pcImage?: MediaType;
30
+ padImage?: MediaType;
31
+ mobileImage?: MediaType;
32
+ /** 结束时间(ISO 字符串) */
33
+ endDate?: string;
34
+ /** 结束时间时区(如: America/Los_Angeles) */
35
+ endDate_tz?: string;
36
+ dateFormat?: string;
37
+ /** 主按钮配置 */
38
+ primaryButton?: {
39
+ text: string;
40
+ link?: string;
41
+ onClick?: () => void;
42
+ } & Omit<ButtonProps, 'children'>;
43
+ /** 次级按钮配置 */
44
+ secondaryButton?: {
45
+ text: string;
46
+ link?: string;
47
+ onClick?: () => void;
48
+ } & Omit<ButtonProps, 'children'>;
49
+ iconArray?: Array<MediaType>;
50
+ theme?: Theme;
51
+ }
52
+ export interface SecondaryBannerProps extends React.HTMLAttributes<HTMLElement> {
53
+ /** 业务数据 */
54
+ data: SecondaryBannerData;
55
+ classNames?: Partial<Record<SecondaryBannerSemanticName, string>>;
56
+ }
57
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<SecondaryBannerProps & React.RefAttributes<HTMLElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
58
+ className?: string;
59
+ data?: Record<string, any>;
60
+ }, "ref"> & React.RefAttributes<any>>;
61
+ export default _default;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as t,jsxs as s}from"react/jsx-runtime";import*as d from"react";import{cva as S}from"class-variance-authority";import{cn as n}from"../../helpers/index.js";import{Text as B,Button as h,Heading as P,Picture as D}from"../../components/index.js";import A from"../HeroBanner/Countdown.js";import{withLayout as j}from"../../shared/Styles.js";import L from"../Media/index.js";import{sizeMap as H}from"../../components/button.js";const K=({size:l="base"})=>{const{width:a,height:e}=H[l];return t("svg",{width:a,height:e,viewBox:"0 0 20 20",fill:"currentcolor",xmlns:"http://www.w3.org/2000/svg",children:t("path",{d:"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z",fill:"currentcolor"})})},R=S("text-info-primary relative w-full",{variants:{size:{sm:"tablet:aspect-[768/480] laptop:aspect-[1024/400] desktop:aspect-[1440/384] lg-desktop:aspect-[1920/480] aspect-[390/480]",base:"tablet:aspect-[768/660] laptop:aspect-[1024/432] desktop:aspect-[1440/576] lg-desktop:aspect-[1920/720] aspect-[390/660]",lg:"tablet:aspect-[768/660] laptop:aspect-[1024/520] desktop:aspect-[1440/700] lg-desktop:aspect-[1920/930] aspect-[390/660]",xlg:"tablet:aspect-[768/660] laptop:aspect-[1024/520] desktop:aspect-[1440/700] lg-desktop:aspect-[1920/930] aspect-[390/660] overflow-visible"}},defaultVariants:{size:"base"}}),T=d.forwardRef(({className:l,classNames:a={},data:e,...w},I)=>{const{pcImage:m,padImage:u,mobileImage:b,endDate:g,endDate_tz:z,dateFormat:C,size:y="base",iconArray:p,theme:M="light",primaryButton:o,secondaryButton:i}=e,V=m?.alt||u?.alt||b?.alt||"",[$,F]=d.useState(!1),c=d.useId(),r=e.title?`${c}-title`:void 0,f=e.subtitle?`${c}-subtitle`:void 0,x=e.superTitle?`${c}-super-title`:void 0,N=[x,f].filter(Boolean).join(" ")||void 0;return s("section",{ref:I,role:"banner","aria-labelledby":r,"aria-describedby":N,className:n({"aiui-dark":M==="dark"},R({size:y}),l,a?.root),...w,children:[t(L,{pcImage:m,padImage:u,mobileImage:b,className:"absolute inset-0 size-full object-cover",imgClassName:"object-cover",videoClassName:"object-cover",muted:!0,loop:!0,playsInline:!0,autoPlay:!0}),s("div",{className:n("banner-content laptop:top-1/2 laptop:-translate-y-1/2 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] absolute top-24 z-10 flex flex-col items-start justify-center px-[16px] text-left",a?.content),children:[s("div",{className:"banner-inner-title desktop:gap-2 flex flex-col items-start gap-1",children:[e.superTitle&&t(B,{as:"p",size:2,id:x,className:n("banner-super-title opacity-75",a?.superTitle),children:e.superTitle}),e.title&&t(P,{as:"h1",size:["xlg","lg"].includes(y)?5:4,weight:"bold",id:r,className:n("banner-title ",a?.title),children:e.title}),e.subtitle&&t(B,{as:"p",size:3,id:f,className:n("banner-subtitle",a?.subtitle),children:e.subtitle})]}),g&&t("div",{className:"banner-countdown mt-3",role:"timer","aria-label":"event countdown",children:t(A,{endDate:g,endDate_tz:z,dateFormat:C})}),s("div",{className:n("banner-cta-group lg-desktop:mt-[32px] lg-desktop:gap-3 mt-6 flex gap-2",a?.buttonGroup),children:[i?.text&&t(h,{variant:"secondary",onClick:i.onClick,className:n("",a?.secondaryButton),"aria-describedby":r,...i.link?{as:"a",href:i.link}:{},children:i.text}),o?.text&&t(h,{onClick:o.onClick,className:n("",a?.primaryButton),"aria-describedby":r,...o.link?{as:"a",href:o.link}:{},children:o.text})]}),Array.isArray(p)&&p.length>0&&t("div",{className:"banner-icons desktop:mt-3 lg-desktop:mt-4 mt-2 flex items-center gap-2",role:"group","aria-label":"brand icons",children:p.map((k,v)=>t(D,{source:k.url,alt:k.alt||`icon ${v+1}`,role:"img",className:"h-auto max-w-none"},v))})]})]})});T.displayName="SecondaryBanner";var Q=j(T);export{Q as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/SecondaryBanner/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { cn } from '../../helpers/index.js'\nimport type { Media as MediaType, Theme } from '../../types/props.js'\nimport { Text, Button, Heading, Picture } from '../../components/index.js'\nimport Countdown from '../HeroBanner/Countdown.js'\nimport { withLayout } from '../../shared/Styles.js'\nimport Media from '../Media/index.js'\nimport type { ButtonProps } from '../../components/button.js'\nimport { sizeMap } from '../../components/button.js'\n\nexport type SecondaryBannerSemanticName =\n | 'root'\n | 'title'\n | 'superTitle'\n | 'subtitle'\n | 'content'\n | 'buttonGroup'\n | 'primaryButton'\n | 'secondaryButton'\n\n// \u64AD\u653E\u6309\u94AE\u56FE\u6807\u7EC4\u4EF6\nconst PlayButtonAppendIcon = ({ size = 'base' }: { size: 'base' | 'lg' | 'sm' }) => {\n const { width, height } = sizeMap[size]\n return (\n <svg width={width} height={height} viewBox=\"0 0 20 20\" fill=\"currentcolor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.9599 9.30662C14.4547 9.63647 14.4547 10.3635 13.9599 10.6934L6.29558 15.8029C5.74179 16.1721 5 15.7751 5 15.1096V4.89042C5 4.22484 5.74179 3.82785 6.29558 4.19705L13.9599 9.30662Z\"\n fill=\"currentcolor\"\n />\n </svg>\n )\n}\n\nconst secondaryBannerVariants = cva(\n // \u57FA\u7840\u6837\u5F0F\n 'text-info-primary relative w-full',\n {\n variants: {\n size: {\n sm: 'tablet:aspect-[768/480] laptop:aspect-[1024/400] desktop:aspect-[1440/384] lg-desktop:aspect-[1920/480] aspect-[390/480]',\n base: 'tablet:aspect-[768/660] laptop:aspect-[1024/432] desktop:aspect-[1440/576] lg-desktop:aspect-[1920/720] aspect-[390/660]',\n lg: 'tablet:aspect-[768/660] laptop:aspect-[1024/520] desktop:aspect-[1440/700] lg-desktop:aspect-[1920/930] aspect-[390/660]',\n xlg: 'tablet:aspect-[768/660] laptop:aspect-[1024/520] desktop:aspect-[1440/700] lg-desktop:aspect-[1920/930] aspect-[390/660] overflow-visible',\n },\n },\n defaultVariants: {\n size: 'base',\n },\n }\n)\n\n/**\n * SecondaryBanner \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface SecondaryBannerData {\n /** \u4E3B\u6807\u9898*/\n title?: string\n /**\n * \u4E0A\u6807\u9898/\u5F15\u5BFC\u6807\u9898\n * \u901A\u5E38\u7528\u4E8E\u5206\u7C7B\u3001\u5F15\u5BFC\u6027\u6587\u5B57\n */\n superTitle?: string\n /**\n * \u526F\u6807\u9898/\u63CF\u8FF0\u6587\u5B57\n * \u901A\u5E38\u7528\u4E8E\u8865\u5145\u8BF4\u660E\u3001\u8BE6\u7EC6\u63CF\u8FF0\n */\n subtitle?: string\n /**\n * \u5C3A\u5BF8:\n * sm: \u5C0F\u5C3A\u5BF8\u7528\u4E8E\u7B5B\u9009\u9875\u9762\n * base: \u57FA\u7840\u5C3A\u5BF8\u7528\u4E8E\n * lg: \u5927\u5C3A\u5BF8\u7528\u4E8E\u4E13\u9898\u9875\n * xlg: \u6D3B\u52A8\u9875\uFF08\u901A\u680F\uFF09\n */\n size?: 'sm' | 'base' | 'lg' | 'xlg'\n pcImage?: MediaType\n padImage?: MediaType\n mobileImage?: MediaType\n\n /** \u7ED3\u675F\u65F6\u95F4\uFF08ISO \u5B57\u7B26\u4E32\uFF09 */\n endDate?: string\n /** \u7ED3\u675F\u65F6\u95F4\u65F6\u533A\uFF08\u5982: America/Los_Angeles\uFF09 */\n endDate_tz?: string\n dateFormat?: string\n\n /** \u4E3B\u6309\u94AE\u914D\u7F6E */\n primaryButton?: {\n text: string\n link?: string\n onClick?: () => void\n } & Omit<ButtonProps, 'children'>\n /** \u6B21\u7EA7\u6309\u94AE\u914D\u7F6E */\n secondaryButton?: {\n text: string\n link?: string\n onClick?: () => void\n } & Omit<ButtonProps, 'children'>\n\n iconArray?: Array<MediaType>\n theme?: Theme\n}\n\nexport interface SecondaryBannerProps extends React.HTMLAttributes<HTMLElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: SecondaryBannerData\n classNames?: Partial<Record<SecondaryBannerSemanticName, string>>\n}\n\n/**\n * SecondaryBanner - \u6B21\u7EA7\u6A2A\u5E45banner\n *\n * @description \u662F\u6307\u7528\u6237\u8FDB\u5165\u4E8C\u7EA7\u9875\u9762\u540E\uFF0C\u65E0\u9700\u6EDA\u52A8\u9875\u9762\u5C31\u80FD\u5728\u7B2C\u4E00\u5C4F\uFF08\u5373\"\u9996\u5C4F\"\uFF09\u770B\u5230\u7684\u3001\u901A\u5E38\u6A2A\u8DE8\u6574\u4E2A\u6D4F\u89C8\u5668\u7A97\u53E3\u5BBD\u5EA6\u7684\u6838\u5FC3\u89C6\u89C9\u533A\u57DF\u3002\n */\nconst SecondaryBanner = React.forwardRef<HTMLElement, SecondaryBannerProps>(\n ({ className, classNames = {}, data, ...props }, ref) => {\n const {\n pcImage,\n padImage,\n mobileImage,\n endDate,\n endDate_tz,\n dateFormat,\n size = 'base',\n iconArray: icons,\n theme = 'light',\n primaryButton,\n secondaryButton,\n } = data\n const alt = pcImage?.alt || padImage?.alt || mobileImage?.alt || ''\n\n // \u89C6\u9891\u5F39\u7A97\u72B6\u6001\n const [visible, setVisible] = React.useState<boolean>(false)\n\n // \u751F\u6210\u552F\u4E00ID\u7528\u4E8E\u53EF\u8BBF\u95EE\u6027\n const bannerId = React.useId()\n const titleId = data.title ? `${bannerId}-title` : undefined\n const subtitleId = data.subtitle ? `${bannerId}-subtitle` : undefined\n const superTitleId = data.superTitle ? `${bannerId}-super-title` : undefined\n\n // \u6784\u5EFAaria-describedby\n const describedBy = [superTitleId, subtitleId].filter(Boolean).join(' ') || undefined\n\n return (\n <section\n ref={ref}\n role=\"banner\"\n aria-labelledby={titleId}\n aria-describedby={describedBy}\n className={cn(\n {\n 'aiui-dark': theme === 'dark',\n },\n secondaryBannerVariants({ size: size }),\n className,\n classNames?.root\n )}\n {...props}\n >\n <Media\n pcImage={pcImage}\n padImage={padImage}\n mobileImage={mobileImage}\n className=\"absolute inset-0 size-full object-cover\"\n imgClassName=\"object-cover\"\n videoClassName=\"object-cover\"\n muted={true}\n loop={true}\n playsInline={true}\n autoPlay={true}\n />\n <div\n className={cn(\n 'banner-content laptop:top-1/2 laptop:-translate-y-1/2 tablet:px-[32px] laptop:px-[64px] lg-desktop:px-[calc(50%-832px)] absolute top-24 z-10 flex flex-col items-start justify-center px-[16px] text-left',\n classNames?.content\n )}\n >\n <div className=\"banner-inner-title desktop:gap-2 flex flex-col items-start gap-1\">\n {data.superTitle && (\n <Text\n as=\"p\"\n size={2}\n id={superTitleId}\n className={cn('banner-super-title opacity-75', classNames?.superTitle)}\n >\n {data.superTitle}\n </Text>\n )}\n\n {data.title && (\n <Heading\n as=\"h1\"\n size={['xlg', 'lg'].includes(size) ? 5 : 4}\n weight=\"bold\"\n id={titleId}\n className={cn('banner-title ', classNames?.title)}\n >\n {data.title}\n </Heading>\n )}\n\n {data.subtitle && (\n <Text as=\"p\" size={3} id={subtitleId} className={cn('banner-subtitle', classNames?.subtitle)}>\n {data.subtitle}\n </Text>\n )}\n </div>\n\n {endDate && (\n <div className=\"banner-countdown mt-3\" role=\"timer\" aria-label=\"event countdown\">\n <Countdown endDate={endDate} endDate_tz={endDate_tz} dateFormat={dateFormat} />\n </div>\n )}\n\n <div\n className={cn(\n 'banner-cta-group lg-desktop:mt-[32px] lg-desktop:gap-3 mt-6 flex gap-2',\n classNames?.buttonGroup\n )}\n >\n {secondaryButton?.text && (\n <Button\n variant=\"secondary\"\n onClick={secondaryButton.onClick}\n className={cn('', classNames?.secondaryButton)}\n aria-describedby={titleId}\n {...(secondaryButton.link ? { as: 'a', href: secondaryButton.link } : {})}\n >\n {secondaryButton.text}\n </Button>\n )}\n {primaryButton?.text && (\n <Button\n onClick={primaryButton.onClick}\n className={cn('', classNames?.primaryButton)}\n aria-describedby={titleId}\n {...(primaryButton.link ? { as: 'a', href: primaryButton.link } : {})}\n >\n {primaryButton.text}\n </Button>\n )}\n </div>\n\n {Array.isArray(icons) && icons.length > 0 && (\n <div\n className=\"banner-icons desktop:mt-3 lg-desktop:mt-4 mt-2 flex items-center gap-2\"\n role=\"group\"\n aria-label=\"brand icons\"\n >\n {icons.map((icon, index) => (\n <Picture\n key={index}\n source={icon.url}\n alt={icon.alt || `icon ${index + 1}`}\n role=\"img\"\n className=\"h-auto max-w-none\"\n />\n ))}\n </div>\n )}\n </div>\n </section>\n )\n }\n)\n\nSecondaryBanner.displayName = 'SecondaryBanner'\nexport default withLayout(SecondaryBanner)\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "cva", "cn", "Text", "Button", "Heading", "Picture", "Countdown", "withLayout", "Media", "sizeMap", "PlayButtonAppendIcon", "size", "width", "height", "secondaryBannerVariants", "SecondaryBanner", "className", "classNames", "data", "props", "ref", "pcImage", "padImage", "mobileImage", "endDate", "endDate_tz", "dateFormat", "icons", "theme", "primaryButton", "secondaryButton", "alt", "visible", "setVisible", "bannerId", "titleId", "subtitleId", "superTitleId", "describedBy", "icon", "index", "SecondaryBanner_default"]
7
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * StockShelf 业务组件数据接口
4
+ */
5
+ export interface StockShelfData {
6
+ /** 组件标题 */
7
+ title?: string;
8
+ /** 组件描述 */
9
+ description?: string;
10
+ }
11
+ export interface StockShelfProps extends React.HTMLAttributes<HTMLDivElement> {
12
+ /** 业务数据 */
13
+ data: StockShelfData;
14
+ }
15
+ /**
16
+ * StockShelf - 库存货架
17
+ *
18
+ * @description 能够实时显示商品库存信息和会员价的货架
19
+ */
20
+ declare const StockShelf: React.ForwardRefExoticComponent<StockShelfProps & React.RefAttributes<HTMLDivElement>>;
21
+ export default StockShelf;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as c from"react";import{cn as r}from"../../helpers/index.js";const l=c.forwardRef(({className:o,data:t,...s},i)=>a("div",{ref:i,className:r("w-full",o),...s,children:[t.title&&e("h2",{className:"mb-4 text-2xl font-bold",children:t.title}),t.description&&e("p",{className:"mb-6 text-gray-600",children:t.description}),e("div",{className:"stock-shelf-content",children:e("p",{className:"text-gray-500",children:"\u5E93\u5B58\u8D27\u67B6\u4E1A\u52A1\u5185\u5BB9\u533A\u57DF"})})]}));l.displayName="StockShelf";var n=l;export{n as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/StockShelf/index.tsx"],
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\n\n/**\n * StockShelf \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface StockShelfData {\n /** \u7EC4\u4EF6\u6807\u9898 */\n title?: string\n /** \u7EC4\u4EF6\u63CF\u8FF0 */\n description?: string\n}\n\nexport interface StockShelfProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: StockShelfData\n}\n\n/**\n * StockShelf - \u5E93\u5B58\u8D27\u67B6\n *\n * @description \u80FD\u591F\u5B9E\u65F6\u663E\u793A\u5546\u54C1\u5E93\u5B58\u4FE1\u606F\u548C\u4F1A\u5458\u4EF7\u7684\u8D27\u67B6\n */\nconst StockShelf = React.forwardRef<HTMLDivElement, StockShelfProps>(({ className, data, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n {data.title && <h2 className=\"mb-4 text-2xl font-bold\">{data.title}</h2>}\n {data.description && <p className=\"mb-6 text-gray-600\">{data.description}</p>}\n\n {/* \u5E93\u5B58\u8D27\u67B6\u5185\u5BB9\u533A\u57DF - \u6839\u636E\u5177\u4F53\u4E1A\u52A1\u9700\u6C42\u5B9A\u5236 */}\n <div className=\"stock-shelf-content\">\n <p className=\"text-gray-500\">\u5E93\u5B58\u8D27\u67B6\u4E1A\u52A1\u5185\u5BB9\u533A\u57DF</p>\n </div>\n </div>\n )\n})\n\nStockShelf.displayName = 'StockShelf'\nexport default StockShelf\n"],
5
+ "mappings": "aA2BI,OACiB,OAAAA,EADjB,QAAAC,MAAA,oBAzBJ,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBAsBnB,MAAMC,EAAaF,EAAM,WAA4C,CAAC,CAAE,UAAAG,EAAW,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAEjGP,EAAC,OAAI,IAAKO,EAAK,UAAWL,EAAG,SAAUE,CAAS,EAAI,GAAGE,EACpD,UAAAD,EAAK,OAASN,EAAC,MAAG,UAAU,0BAA2B,SAAAM,EAAK,MAAM,EAClEA,EAAK,aAAeN,EAAC,KAAE,UAAU,qBAAsB,SAAAM,EAAK,YAAY,EAGzEN,EAAC,OAAI,UAAU,sBACb,SAAAA,EAAC,KAAE,UAAU,gBAAgB,wEAAU,EACzC,GACF,CAEH,EAEDI,EAAW,YAAc,aACzB,IAAOK,EAAQL",
6
+ "names": ["jsx", "jsxs", "React", "cn", "StockShelf", "className", "data", "props", "ref", "StockShelf_default"]
7
+ }
@@ -55,6 +55,11 @@ export { default as GiftBox } from './GiftBox/index.js';
55
55
  export { default as SelectStore } from './SelectStore/index.js';
56
56
  export { default as DownLoad } from './DownLoad/index.js';
57
57
  export { default as FootCharger } from './FootCharger/index.js';
58
+ export { default as AnchorNavigation } from './AnchorNavigation/index.js';
59
+ export { default as PromotionalBar } from './PromotionalBar/index.js';
60
+ export { default as EventSchedule } from './EventSchedule/index.js';
61
+ export { default as SecondaryBanner } from './SecondaryBanner/index.js';
62
+ export { default as BuyOneGetOneShelf } from './BuyOneGetOneShelf/index.js';
58
63
  export declare const PAYLOAD_COMPONENT_MAP: {
59
64
  'ipc-aplusdesc': string;
60
65
  'ipc-banner': string;
@@ -1,2 +1,2 @@
1
- import{default as t}from"./BrandEquity/index.js";import{default as p}from"./MemberEquity/index.js";import{default as f}from"./Slogan/index.js";import{default as c}from"./Title/index.js";import{default as s}from"./Spacer/index.js";import{default as m}from"./ShelfDisplay/index.js";import{default as h}from"./Evaluate/index.js";import{default as y}from"./Category/index.js";import{default as g}from"./HeroBanner/index.js";import{default as B}from"./AccordionCards/index.js";import{default as G}from"./Graphic/index.js";import{default as q}from"./MediaPlayerBase/index.js";import{default as v}from"./MediaPlayerSticky/index.js";import{default as A}from"./MediaPlayerMulti/index.js";import{default as E}from"./Marquee/index.js";import{default as F}from"./WhyChoose/index.js";import{default as O}from"./Faq/index.js";import{MarqueeItem as H,MarqueeImageContent as N,MarqueeTextContent as _}from"./Marquee/index.js";import{default as I}from"./MultiLayoutGraphicBlock/index.js";import{default as z}from"./GraphicAttractionBlock/index.js";import{default as Y}from"./HeaderNavigation/index.js";import{default as K}from"./FooterNavigation/index.js";import{default as U}from"./SearchPage/index.js";import{IPC_SEARCH_PAGE as X,SearchPageTabType as Z}from"./SearchPage/types.js";import{withLayout as ee}from"../shared/Styles.js";import{default as re}from"./AiuiProvider/index.js";import{default as oe}from"./Tabs/index.js";import{default as le}from"./CreativeModule/index.js";import{default as ie}from"./GraphicOverlay/index.js";import{default as ue}from"./Specs/index.js";import{default as de}from"./TabsGroup/index.js";import{default as xe}from"./Listing/BizProductProvider.js";import{default as ne}from"./Listing/components/PurchaseBar/index.js";import{default as Pe}from"./Listing/components/PurchaseBar/ProductActions/index.js";import{default as Me}from"./Listing/components/ProductCard/index.js";import{default as Se}from"./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js";import{default as be}from"./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js";import{default as Ce}from"./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js";import{default as ke}from"./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js";import{default as Te}from"./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js";import{default as De}from"./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js";import{default as Le}from"./Listing/components/ProductCard/ProductGridBox.js";import{default as we}from"./Listing/components/ProductCard/ProductGallery/index.js";import{default as Ne}from"./Listing/components/ProductCard/ProductDetail/index.js";import{default as je}from"./Listing/components/ProductCard/ProductSummary/index.js";import{default as We}from"./Listing/components/ProductCard/ProductDetail/BenefitsTab.js";import{default as Re}from"./Listing/components/PaidShipping/index.js";import{default as Je}from"./GraphicMore/index.js";import{default as Qe}from"./Features/index.js";import{default as Ve}from"./AplusDesc/index.js";import{default as Ze}from"./GiftBox/index.js";import{default as ea}from"./SelectStore/index.js";import{default as ra}from"./DownLoad/index.js";import{default as oa}from"./FootCharger/index.js";const e={"ipc-aplusdesc":"AplusDesc","ipc-banner":"Banner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"Tabs","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose"};export{B as AccordionCards,re as AiuiProvider,Ve as AplusDesc,We as BenefitsTab,xe as BizProductProvider,t as BrandEquity,y as Category,le as CreativeModule,ra as DownLoad,h as Evaluate,O as Faq,Qe as Features,oa as FootCharger,K as FooterNavigation,Ze as GiftBox,G as Graphic,z as GraphicAttractionBlock,Je as GraphicMore,ie as GraphicOverlay,Y as HeaderNavigation,g as HeroBanner,X as IPC_SEARCH_PAGE,E as Marquee,N as MarqueeImageContent,H as MarqueeItem,_ as MarqueeTextContent,q as MediaPlayerBase,A as MediaPlayerMulti,v as MediaPlayerSticky,p as MemberEquity,I as MultiLayoutGraphicBlock,e as PAYLOAD_COMPONENT_MAP,Re as PaidShipping,Pe as ProductActions,Se as ProductBenefitsTabs,De as ProductBundle,Me as ProductCard,Ne as ProductDetail,ke as ProductExchangePurchase,Ce as ProductFreeGift,we as ProductGallery,Le as ProductGridBox,be as ProductHighlight,Te as ProductOptions,je as ProductSummary,ne as PurchaseBar,U as SearchPage,Z as SearchPageTabType,ea as SelectStore,m as ShelfDisplay,f as Slogan,s as Spacer,ue as Specs,de as TabGroup,oe as Tabs,c as Title,F as WhyChoose,ee as withLayout};
1
+ import{default as o}from"./BrandEquity/index.js";import{default as p}from"./MemberEquity/index.js";import{default as l}from"./Slogan/index.js";import{default as c}from"./Title/index.js";import{default as s}from"./Spacer/index.js";import{default as m}from"./ShelfDisplay/index.js";import{default as n}from"./Evaluate/index.js";import{default as y}from"./Category/index.js";import{default as g}from"./HeroBanner/index.js";import{default as M}from"./AccordionCards/index.js";import{default as G}from"./Graphic/index.js";import{default as q}from"./MediaPlayerBase/index.js";import{default as C}from"./MediaPlayerSticky/index.js";import{default as k}from"./MediaPlayerMulti/index.js";import{default as E}from"./Marquee/index.js";import{default as F}from"./WhyChoose/index.js";import{default as O}from"./Faq/index.js";import{MarqueeItem as N,MarqueeImageContent as H,MarqueeTextContent as _}from"./Marquee/index.js";import{default as I}from"./MultiLayoutGraphicBlock/index.js";import{default as z}from"./GraphicAttractionBlock/index.js";import{default as Y}from"./HeaderNavigation/index.js";import{default as K}from"./FooterNavigation/index.js";import{default as U}from"./SearchPage/index.js";import{IPC_SEARCH_PAGE as X,SearchPageTabType as Z}from"./SearchPage/types.js";import{withLayout as ee}from"../shared/Styles.js";import{default as re}from"./AiuiProvider/index.js";import{default as te}from"./Tabs/index.js";import{default as fe}from"./CreativeModule/index.js";import{default as ie}from"./GraphicOverlay/index.js";import{default as ue}from"./Specs/index.js";import{default as de}from"./TabsGroup/index.js";import{default as xe}from"./Listing/BizProductProvider.js";import{default as he}from"./Listing/components/PurchaseBar/index.js";import{default as Pe}from"./Listing/components/PurchaseBar/ProductActions/index.js";import{default as Be}from"./Listing/components/ProductCard/index.js";import{default as Se}from"./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js";import{default as be}from"./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js";import{default as ve}from"./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js";import{default as Ae}from"./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js";import{default as Te}from"./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js";import{default as De}from"./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js";import{default as Le}from"./Listing/components/ProductCard/ProductGridBox.js";import{default as we}from"./Listing/components/ProductCard/ProductGallery/index.js";import{default as He}from"./Listing/components/ProductCard/ProductDetail/index.js";import{default as je}from"./Listing/components/ProductCard/ProductSummary/index.js";import{default as We}from"./Listing/components/ProductCard/ProductDetail/BenefitsTab.js";import{default as Re}from"./Listing/components/PaidShipping/index.js";import{default as Je}from"./GraphicMore/index.js";import{default as Qe}from"./Features/index.js";import{default as Ve}from"./AplusDesc/index.js";import{default as Ze}from"./GiftBox/index.js";import{default as ea}from"./SelectStore/index.js";import{default as ra}from"./DownLoad/index.js";import{default as ta}from"./FootCharger/index.js";import{default as fa}from"./AnchorNavigation/index.js";import{default as ia}from"./PromotionalBar/index.js";import{default as ua}from"./EventSchedule/index.js";import{default as da}from"./SecondaryBanner/index.js";import{default as xa}from"./BuyOneGetOneShelf/index.js";const e={"ipc-aplusdesc":"AplusDesc","ipc-banner":"Banner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"Tabs","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose"};export{M as AccordionCards,re as AiuiProvider,fa as AnchorNavigation,Ve as AplusDesc,We as BenefitsTab,xe as BizProductProvider,o as BrandEquity,xa as BuyOneGetOneShelf,y as Category,fe as CreativeModule,ra as DownLoad,n as Evaluate,ua as EventSchedule,O as Faq,Qe as Features,ta as FootCharger,K as FooterNavigation,Ze as GiftBox,G as Graphic,z as GraphicAttractionBlock,Je as GraphicMore,ie as GraphicOverlay,Y as HeaderNavigation,g as HeroBanner,X as IPC_SEARCH_PAGE,E as Marquee,H as MarqueeImageContent,N as MarqueeItem,_ as MarqueeTextContent,q as MediaPlayerBase,k as MediaPlayerMulti,C as MediaPlayerSticky,p as MemberEquity,I as MultiLayoutGraphicBlock,e as PAYLOAD_COMPONENT_MAP,Re as PaidShipping,Pe as ProductActions,Se as ProductBenefitsTabs,De as ProductBundle,Be as ProductCard,He as ProductDetail,Ae as ProductExchangePurchase,ve as ProductFreeGift,we as ProductGallery,Le as ProductGridBox,be as ProductHighlight,Te as ProductOptions,je as ProductSummary,ia as PromotionalBar,he as PurchaseBar,U as SearchPage,Z as SearchPageTabType,da as SecondaryBanner,ea as SelectStore,m as ShelfDisplay,l as Slogan,s as Spacer,ue as Specs,de as TabGroup,te as Tabs,c as Title,F as WhyChoose,ee as withLayout};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/biz-components/index.ts"],
4
- "sourcesContent": ["export { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'\n\nexport { default as BizProductProvider } from './Listing/BizProductProvider.js'\nexport { default as PurchaseBar } from './Listing/components/PurchaseBar/index.js'\nexport { default as ProductActions } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport { default as ProductCard } from './Listing/components/ProductCard/index.js'\nexport { default as ProductBenefitsTabs } from './Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js'\nexport { default as ProductHighlight } from './Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js'\nexport { default as ProductFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js'\nexport { default as ProductExchangePurchase } from './Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js'\nexport { default as ProductOptions } from './Listing/components/ProductCard/ProductDetail/ProductOptions/index.js'\nexport { default as ProductBundle } from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport { default as ProductGridBox } from './Listing/components/ProductCard/ProductGridBox.js'\nexport { default as ProductGallery } from './Listing/components/ProductCard/ProductGallery/index.js'\nexport { default as ProductDetail } from './Listing/components/ProductCard/ProductDetail/index.js'\nexport { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js'\nexport { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js'\nexport { default as PaidShipping } from './Listing/components/PaidShipping/index.js'\n\nexport { default as GraphicMore } from './GraphicMore/index.js'\nexport { default as Features } from './Features/index.js'\nexport { default as AplusDesc } from './AplusDesc/index.js'\nexport { default as GiftBox } from './GiftBox/index.js'\nexport { default as SelectStore } from './SelectStore/index.js'\nexport { default as DownLoad } from './DownLoad/index.js'\nexport { default as FootCharger } from './FootCharger/index.js'\n\nexport const PAYLOAD_COMPONENT_MAP = {\n 'ipc-aplusdesc': 'AplusDesc',\n 'ipc-banner': 'Banner',\n 'ipc-brand-equity': 'BrandEquity',\n 'ipc-category': 'Category',\n 'ipc-collection-banner': 'CollectionBanner',\n 'ipc-collection-shelves': 'CollectionShelves',\n 'ipc-creativemodule': 'CreativeModule',\n 'ipc-download': 'DownLoad',\n 'ipc-evaluate': 'Evaluate',\n 'ipc-faq': 'Faq',\n 'ipc-features': 'Features',\n 'ipc-footcharger': 'FootCharger',\n 'ipc-ga-block': 'GraphicAttractionBlock',\n 'ipc-giftbox': 'GiftBox',\n 'ipc-graphic': 'Graphic',\n 'ipc-graphicmore': 'GraphicMore',\n 'ipc-graphicoverlay': 'GraphicOverlay',\n 'ipc-marquee': 'Marquee',\n 'ipc-mediaplayerbase': 'MediaPlayerBase',\n 'ipc-mediaplayermulti': 'MediaPlayerMulti',\n 'ipc-mediaplayersticky': 'MediaPlayerSticky',\n 'ipc-member-equity': 'MemberEquity',\n 'ipc-mlg-block': 'MultiLayoutGraphicBlock',\n 'ipc-search-page-tabs': 'SearchPageBlock',\n 'ipc-selectstore': 'SelectStore',\n 'ipc-shelfdisplay': 'ShelfDisplay',\n 'ipc-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'Tabs',\n 'ipc-text-marquee': 'TextMarquee',\n 'ipc-title': 'Title',\n 'ipc-whychoose': 'WhyChoose',\n}\n"],
5
- "mappings": "AAAA,OAAoB,WAAXA,MAA8B,yBACvC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAAwB,mBACjC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA6B,wBACtC,OAAoB,WAAXA,MAAiC,4BAC1C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAAkC,6BAC3C,OAAoB,WAAXA,MAAoC,+BAC7C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAA4B,uBACrC,OAAoB,WAAXA,MAAsB,iBAC/B,OAAS,eAAAC,EAAa,uBAAAC,EAAqB,sBAAAC,MAA0B,qBACrE,OAAoB,WAAXH,MAA0C,qCAEnD,OAAoB,WAAXA,MAAyC,oCAElD,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA6B,wBAEtC,OAAS,mBAAAI,EAAiB,qBAAAC,MAAyB,wBAEnD,OAAS,cAAAC,OAAkB,sBAC3B,OAAoB,WAAXN,OAA+B,0BACxC,OAAoB,WAAXA,OAAuB,kBAChC,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAwB,mBACjC,OAAoB,WAAXA,OAA2B,uBAEpC,OAAoB,WAAXA,OAAqC,kCAC9C,OAAoB,WAAXA,OAA8B,4CACvC,OAAoB,WAAXA,OAAiC,2DAC1C,OAAoB,WAAXA,OAA8B,4CACvC,OAAoB,WAAXA,OAAsC,8EAC/C,OAAoB,WAAXA,OAAmC,2EAC5C,OAAoB,WAAXA,OAAkC,0EAC3C,OAAoB,WAAXA,OAA0C,kFACnD,OAAoB,WAAXA,OAAiC,yEAC1C,OAAoB,WAAXA,OAAgC,wEACzC,OAAoB,WAAXA,OAAiC,qDAC1C,OAAoB,WAAXA,OAAiC,2DAC1C,OAAoB,WAAXA,OAAgC,0DACzC,OAAoB,WAAXA,OAAiC,2DAC1C,OAAoB,WAAXA,OAA8B,gEACvC,OAAoB,WAAXA,OAA+B,6CAExC,OAAoB,WAAXA,OAA8B,yBACvC,OAAoB,WAAXA,OAA2B,sBACpC,OAAoB,WAAXA,OAA4B,uBACrC,OAAoB,WAAXA,OAA0B,qBACnC,OAAoB,WAAXA,OAA8B,yBACvC,OAAoB,WAAXA,OAA2B,sBACpC,OAAoB,WAAXA,OAA8B,yBAEhC,MAAMO,EAAwB,CACnC,gBAAiB,YACjB,aAAc,SACd,mBAAoB,cACpB,eAAgB,WAChB,wBAAyB,mBACzB,yBAA0B,oBAC1B,qBAAsB,iBACtB,eAAgB,WAChB,eAAgB,WAChB,UAAW,MACX,eAAgB,WAChB,kBAAmB,cACnB,eAAgB,yBAChB,cAAe,UACf,cAAe,UACf,kBAAmB,cACnB,qBAAsB,iBACtB,cAAe,UACf,sBAAuB,kBACvB,uBAAwB,mBACxB,wBAAyB,oBACzB,oBAAqB,eACrB,gBAAiB,0BACjB,uBAAwB,kBACxB,kBAAmB,cACnB,mBAAoB,eACpB,aAAc,SACd,aAAc,SACd,YAAa,QACb,WAAY,OACZ,mBAAoB,cACpB,YAAa,QACb,gBAAiB,WACnB",
4
+ "sourcesContent": ["export { default as BrandEquity } from './BrandEquity/index.js'\nexport { default as MemberEquity } from './MemberEquity/index.js'\nexport { default as Slogan } from './Slogan/index.js'\nexport { default as Title } from './Title/index.js'\nexport { default as Spacer } from './Spacer/index.js'\nexport { default as ShelfDisplay } from './ShelfDisplay/index.js'\nexport { default as Evaluate } from './Evaluate/index.js'\nexport { default as Category } from './Category/index.js'\nexport { default as HeroBanner } from './HeroBanner/index.js'\nexport { default as AccordionCards } from './AccordionCards/index.js'\nexport { default as Graphic } from './Graphic/index.js'\nexport { default as MediaPlayerBase } from './MediaPlayerBase/index.js'\nexport { default as MediaPlayerSticky } from './MediaPlayerSticky/index.js'\nexport { default as MediaPlayerMulti } from './MediaPlayerMulti/index.js'\nexport { default as Marquee } from './Marquee/index.js'\nexport { default as WhyChoose } from './WhyChoose/index.js'\nexport { default as Faq } from './Faq/index.js'\nexport { MarqueeItem, MarqueeImageContent, MarqueeTextContent } from './Marquee/index.js'\nexport { default as MultiLayoutGraphicBlock } from './MultiLayoutGraphicBlock/index.js'\nexport type { MultiLayoutGraphicBlockProps } from './MultiLayoutGraphicBlock/index.js'\nexport { default as GraphicAttractionBlock } from './GraphicAttractionBlock/index.js'\nexport type { GraphicAttractionBlockProps } from './GraphicAttractionBlock/index.js'\nexport { default as HeaderNavigation } from './HeaderNavigation/index.js'\nexport { default as FooterNavigation } from './FooterNavigation/index.js'\nexport { default as SearchPage } from './SearchPage/index.js'\nexport type { SearchPageProps } from './SearchPage/types.js'\nexport { IPC_SEARCH_PAGE, SearchPageTabType } from './SearchPage/types.js'\n\nexport { withLayout } from '../shared/Styles.js'\nexport { default as AiuiProvider } from './AiuiProvider/index.js'\nexport { default as Tabs } from './Tabs/index.js'\nexport { default as CreativeModule } from './CreativeModule/index.js'\nexport { default as GraphicOverlay } from './GraphicOverlay/index.js'\nexport { default as Specs } from './Specs/index.js'\nexport { default as TabGroup } from './TabsGroup/index.js'\n\nexport { default as BizProductProvider } from './Listing/BizProductProvider.js'\nexport { default as PurchaseBar } from './Listing/components/PurchaseBar/index.js'\nexport { default as ProductActions } from './Listing/components/PurchaseBar/ProductActions/index.js'\nexport { default as ProductCard } from './Listing/components/ProductCard/index.js'\nexport { default as ProductBenefitsTabs } from './Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js'\nexport { default as ProductHighlight } from './Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js'\nexport { default as ProductFreeGift } from './Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js'\nexport { default as ProductExchangePurchase } from './Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js'\nexport { default as ProductOptions } from './Listing/components/ProductCard/ProductDetail/ProductOptions/index.js'\nexport { default as ProductBundle } from './Listing/components/ProductCard/ProductDetail/ProductBundle/index.js'\nexport { default as ProductGridBox } from './Listing/components/ProductCard/ProductGridBox.js'\nexport { default as ProductGallery } from './Listing/components/ProductCard/ProductGallery/index.js'\nexport { default as ProductDetail } from './Listing/components/ProductCard/ProductDetail/index.js'\nexport { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js'\nexport { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js'\nexport { default as PaidShipping } from './Listing/components/PaidShipping/index.js'\n\nexport { default as GraphicMore } from './GraphicMore/index.js'\nexport { default as Features } from './Features/index.js'\nexport { default as AplusDesc } from './AplusDesc/index.js'\nexport { default as GiftBox } from './GiftBox/index.js'\nexport { default as SelectStore } from './SelectStore/index.js'\nexport { default as DownLoad } from './DownLoad/index.js'\nexport { default as FootCharger } from './FootCharger/index.js'\nexport { default as AnchorNavigation } from './AnchorNavigation/index.js'\nexport { default as PromotionalBar } from './PromotionalBar/index.js'\nexport { default as EventSchedule } from './EventSchedule/index.js'\nexport { default as SecondaryBanner } from './SecondaryBanner/index.js'\nexport { default as BuyOneGetOneShelf } from './BuyOneGetOneShelf/index.js'\n\nexport const PAYLOAD_COMPONENT_MAP = {\n 'ipc-aplusdesc': 'AplusDesc',\n 'ipc-banner': 'Banner',\n 'ipc-brand-equity': 'BrandEquity',\n 'ipc-category': 'Category',\n 'ipc-collection-banner': 'CollectionBanner',\n 'ipc-collection-shelves': 'CollectionShelves',\n 'ipc-creativemodule': 'CreativeModule',\n 'ipc-download': 'DownLoad',\n 'ipc-evaluate': 'Evaluate',\n 'ipc-faq': 'Faq',\n 'ipc-features': 'Features',\n 'ipc-footcharger': 'FootCharger',\n 'ipc-ga-block': 'GraphicAttractionBlock',\n 'ipc-giftbox': 'GiftBox',\n 'ipc-graphic': 'Graphic',\n 'ipc-graphicmore': 'GraphicMore',\n 'ipc-graphicoverlay': 'GraphicOverlay',\n 'ipc-marquee': 'Marquee',\n 'ipc-mediaplayerbase': 'MediaPlayerBase',\n 'ipc-mediaplayermulti': 'MediaPlayerMulti',\n 'ipc-mediaplayersticky': 'MediaPlayerSticky',\n 'ipc-member-equity': 'MemberEquity',\n 'ipc-mlg-block': 'MultiLayoutGraphicBlock',\n 'ipc-search-page-tabs': 'SearchPageBlock',\n 'ipc-selectstore': 'SelectStore',\n 'ipc-shelfdisplay': 'ShelfDisplay',\n 'ipc-slogan': 'Slogan',\n 'ipc-spacer': 'Spacer',\n 'ipc-specs': 'Specs',\n 'ipc-tabs': 'Tabs',\n 'ipc-text-marquee': 'TextMarquee',\n 'ipc-title': 'Title',\n 'ipc-whychoose': 'WhyChoose',\n}\n"],
5
+ "mappings": "AAAA,OAAoB,WAAXA,MAA8B,yBACvC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAAwB,mBACjC,OAAoB,WAAXA,MAAyB,oBAClC,OAAoB,WAAXA,MAA+B,0BACxC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA2B,sBACpC,OAAoB,WAAXA,MAA6B,wBACtC,OAAoB,WAAXA,MAAiC,4BAC1C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAAkC,6BAC3C,OAAoB,WAAXA,MAAoC,+BAC7C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA0B,qBACnC,OAAoB,WAAXA,MAA4B,uBACrC,OAAoB,WAAXA,MAAsB,iBAC/B,OAAS,eAAAC,EAAa,uBAAAC,EAAqB,sBAAAC,MAA0B,qBACrE,OAAoB,WAAXH,MAA0C,qCAEnD,OAAoB,WAAXA,MAAyC,oCAElD,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAAmC,8BAC5C,OAAoB,WAAXA,MAA6B,wBAEtC,OAAS,mBAAAI,EAAiB,qBAAAC,MAAyB,wBAEnD,OAAS,cAAAC,OAAkB,sBAC3B,OAAoB,WAAXN,OAA+B,0BACxC,OAAoB,WAAXA,OAAuB,kBAChC,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAwB,mBACjC,OAAoB,WAAXA,OAA2B,uBAEpC,OAAoB,WAAXA,OAAqC,kCAC9C,OAAoB,WAAXA,OAA8B,4CACvC,OAAoB,WAAXA,OAAiC,2DAC1C,OAAoB,WAAXA,OAA8B,4CACvC,OAAoB,WAAXA,OAAsC,8EAC/C,OAAoB,WAAXA,OAAmC,2EAC5C,OAAoB,WAAXA,OAAkC,0EAC3C,OAAoB,WAAXA,OAA0C,kFACnD,OAAoB,WAAXA,OAAiC,yEAC1C,OAAoB,WAAXA,OAAgC,wEACzC,OAAoB,WAAXA,OAAiC,qDAC1C,OAAoB,WAAXA,OAAiC,2DAC1C,OAAoB,WAAXA,OAAgC,0DACzC,OAAoB,WAAXA,OAAiC,2DAC1C,OAAoB,WAAXA,OAA8B,gEACvC,OAAoB,WAAXA,OAA+B,6CAExC,OAAoB,WAAXA,OAA8B,yBACvC,OAAoB,WAAXA,OAA2B,sBACpC,OAAoB,WAAXA,OAA4B,uBACrC,OAAoB,WAAXA,OAA0B,qBACnC,OAAoB,WAAXA,OAA8B,yBACvC,OAAoB,WAAXA,OAA2B,sBACpC,OAAoB,WAAXA,OAA8B,yBACvC,OAAoB,WAAXA,OAAmC,8BAC5C,OAAoB,WAAXA,OAAiC,4BAC1C,OAAoB,WAAXA,OAAgC,2BACzC,OAAoB,WAAXA,OAAkC,6BAC3C,OAAoB,WAAXA,OAAoC,+BAEtC,MAAMO,EAAwB,CACnC,gBAAiB,YACjB,aAAc,SACd,mBAAoB,cACpB,eAAgB,WAChB,wBAAyB,mBACzB,yBAA0B,oBAC1B,qBAAsB,iBACtB,eAAgB,WAChB,eAAgB,WAChB,UAAW,MACX,eAAgB,WAChB,kBAAmB,cACnB,eAAgB,yBAChB,cAAe,UACf,cAAe,UACf,kBAAmB,cACnB,qBAAsB,iBACtB,cAAe,UACf,sBAAuB,kBACvB,uBAAwB,mBACxB,wBAAyB,oBACzB,oBAAqB,eACrB,gBAAiB,0BACjB,uBAAwB,kBACxB,kBAAmB,cACnB,mBAAoB,eACpB,aAAc,SACd,aAAc,SACd,YAAa,QACb,WAAY,OACZ,mBAAoB,cACpB,YAAa,QACb,gBAAiB,WACnB",
6
6
  "names": ["default", "MarqueeItem", "MarqueeImageContent", "MarqueeTextContent", "IPC_SEARCH_PAGE", "SearchPageTabType", "withLayout", "PAYLOAD_COMPONENT_MAP"]
7
7
  }
@@ -3,7 +3,9 @@ import React from 'react';
3
3
  import HeroBanner from '../biz-components/HeroBanner/HeroBanner.js';
4
4
  declare const meta: {
5
5
  title: string;
6
- component: React.ForwardRefExoticComponent<Omit<Omit<import("../biz-components/HeroBanner/types.js").HeroBannerProps & React.RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
6
+ component: React.ForwardRefExoticComponent<Omit<Omit<import("../biz-components/HeroBanner/types.js").HeroBannerProps & {
7
+ classNames?: Partial<Record<import("../biz-components/HeroBanner/HeroBanner.js").HeroBannerSemanticName, string>>;
8
+ } & React.RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps & import("../shared/Styles.js").ContainerProps> & {
7
9
  className?: string;
8
10
  data?: Record<string, any>;
9
11
  }, "ref"> & React.RefAttributes<any>>;
@@ -25,4 +27,5 @@ export declare const MultiBanner: () => import("react/jsx-runtime").JSX.Element;
25
27
  export declare const WithoutSecondaryButton: Story;
26
28
  export declare const WithVideoModal: Story;
27
29
  export declare const WithYoutubeVideo: Story;
30
+ export declare const WithSemanticClassNames: Story;
28
31
  export declare const ScrollableBackgroundVideo: () => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
- import{jsx as t,jsxs as a}from"react/jsx-runtime";import"react";import i from"../biz-components/HeroBanner/HeroBanner.js";const r={title:"Biz-Components/HeroBanner",component:i,parameters:{layout:"fullscreen",docs:{description:{component:`
1
+ import{jsx as t,jsxs as a}from"react/jsx-runtime";import"react";import i from"../biz-components/HeroBanner/HeroBanner.js";const m={title:"Biz-Components/HeroBanner",component:i,parameters:{layout:"fullscreen",docs:{description:{component:`
2
2
  HeroBanner \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u7F51\u7AD9\u7684\u4E3B\u8981\u5185\u5BB9\u533A\u57DF\uFF0C\u901A\u5E38\u5305\u542B\u6807\u9898\u3001\u526F\u6807\u9898\u548C\u884C\u52A8\u6309\u94AE\u3002
3
3
 
4
4
  ### \u7279\u70B9
@@ -7,5 +7,5 @@ HeroBanner \u7EC4\u4EF6\u7528\u4E8E\u5C55\u793A\u7F51\u7AD9\u7684\u4E3B\u8981\u5
7
7
  - \u53EF\u914D\u7F6E\u4E3B\u6309\u94AE\u548C\u6B21\u8981\u6309\u94AE
8
8
  - \u53EF\u914D\u7F6E\u6A21\u5757\u8DF3\u8F6C\u94FE\u63A5
9
9
  - \u652F\u6301\u5E95\u90E8\u7279\u6027\u5217\u8868
10
- `}}},tags:["autodocs"]};var p=r;const e="https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aee13b30b2c77fc8d0a46e4f19fa48cb_6a25debf-f95e-4ca6-990b-babcad65216c.png?v=1745468206",c="https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aee13b30b2c77fc8d0a46e4f19fa48cb_6a25debf-f95e-4ca6-990b-babcad65216c.png?v=1745468206",o="https://cdn.shopify.com/s/files/1/0517/6767/3016/files/87e32d61fc407d5e6c8aff00f3453072.jpg?v=1745999899",m={args:{data:{title:"Anker Laptop Power",subtitle:"Anker Prime 240W GaN Desktop Charger (4 Ports)",pcImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},theme:"light",blockLink:"/this-is-block-link",primaryButton:{text:"Shop Now",link:"/this-is-shop-now-link"},secondaryButton:{text:"Learn More",link:"/this-is-learn-more-link"},caption:[{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"},{title:"Anker Prime 27,650mAh Power Bank (250W)"},{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"}],endDate:"2025-11-15T03:32:00.000Z",endDate_tz:"America/Sao_Paulo",dateFormat:'{"day":"Day","hour":"Hours","minute":"Mins","second":"Secs"}'}}},l={args:{data:{title:"Power Your Life",subtitle:"Experience the next generation of charging technology with our innovative solutions designed for modern life.",pcImage:{url:o,alt:"dark background",thumbnailURL:o,mimeType:"image/jpeg"},mobileImage:{url:o,alt:"dark background",thumbnailURL:o,mimeType:"image/jpeg"},theme:"dark",primaryButton:{text:"Shop Now"},secondaryButton:{text:"Learn More"},caption:[{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"},{title:"Anker Prime 27,650mAh Power Bank (250W)"},{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"}]}}},b=()=>a("div",{className:"flex flex-col",children:[t(i,{data:{...m.args.data,size:"sm"}}),t(i,{data:{...l.args.data,size:"sm"},className:"mt-[8px]"})]}),u={args:{data:{title:"Future of Charging",subtitle:"Step into the future with our revolutionary charging solutions that redefine the way you power your devices.",pcImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},theme:"light",primaryButton:{text:"Shop Now"},caption:[{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"},{title:"Anker Prime 27,650mAh Power Bank (250W)"},{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"}]}}},h={args:{data:{title:"Experience Anker Innovation",subtitle:"Watch our latest product demo and discover the future of charging technology",pcImage:{url:e,alt:"tech background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"tech background mobile",thumbnailURL:e,mimeType:"image/jpeg"},theme:"dark",primaryButton:{text:"Shop Now",link:"/shop"},secondaryButton:{text:"Learn More",link:"/learn-more",isShowPlayVideoButton:!0,playVideoButtonText:"Watch Demo",playIcon:!0,videoUrl:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"product demo video",thumbnailURL:e,mimeType:"video/mp4"}},caption:[{title:"Anker Prime 240W GaN Desktop Charger"},{title:"Anker PowerCore 27,650mAh Power Bank"},{title:"Anker Wireless Charging Station"}]}}},g={args:{data:{title:"Anker Prime Series",subtitle:"See our Prime series in action. Experience the power that drives innovation.",pcImage:{url:e,alt:"anker products",thumbnailURL:e,mimeType:"image/jpeg"},padImage:{url:e,alt:"anker products pad",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"anker products mobile",thumbnailURL:e,mimeType:"image/jpeg"},theme:"light",primaryButton:{text:"Buy Now",link:"/buy"},secondaryButton:{text:"Explore",link:"/explore",isShowPlayVideoButton:!0,playVideoButtonText:"Watch on YouTube",youtubeId:"dQw4w9WgXcQ"},caption:[{title:"Prime 240W Desktop Charger"},{title:"Prime 27,650mAh Power Bank"},{title:"Prime 100W Wireless Charger"}]}}},y=()=>a("div",{className:"min-h-[500vh]",children:[t(i,{data:{theme:"dark",title:"Powered by Innovation",subtitle:"Scroll down to test IntersectionObserver - videos play only when in viewport and restart from beginning each time.",pcImage:{url:e,alt:"fallback background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"fallback background mobile",thumbnailURL:e,mimeType:"image/jpeg"},pcVideo:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"background video desktop",thumbnailURL:e,mimeType:"video/mp4"},padVideo:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"background video tablet",thumbnailURL:e,mimeType:"video/mp4"},mobileVideo:{url:"https://sample-videos.com/zip/10/mp4/SampleVideo_640x360_1mb.mp4",alt:"background video mobile",thumbnailURL:e,mimeType:"video/mp4"},isShowVideo:!0,primaryButton:{text:"First Video",link:"/first"},secondaryButton:{text:"Learn More",link:"/learn"},caption:[{title:"IntersectionObserver Controlled"},{title:"Auto Play on Viewport Entry"},{title:"Restart from Beginning"}]}}),t("div",{className:"bg-gradient-to-b from-gray-900 to-black py-20 text-white",children:a("div",{className:"container mx-auto max-w-4xl px-4",children:[t("h2",{className:"mb-8 text-center text-4xl font-bold",children:"IntersectionObserver \u89C6\u9891\u63A7\u5236"}),a("div",{className:"space-y-8",children:[a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u667A\u80FD\u89C6\u9891\u64AD\u653E"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u89C6\u9891\u53EA\u5728\u8FDB\u5165\u89C6\u7A97\u65F6\u64AD\u653E\uFF0C\u79BB\u5F00\u89C6\u7A97\u65F6\u81EA\u52A8\u6682\u505C\u3002\u6BCF\u6B21\u91CD\u65B0\u8FDB\u5165\u89C6\u7A97\u90FD\u4F1A\u4ECE\u5934\u5F00\u59CB\u64AD\u653E\uFF0C\u63D0\u4F9B\u4E00\u81F4\u7684\u89C2\u770B\u4F53\u9A8C\u3002\u4F7F\u7528 IntersectionObserver API \u5B9E\u73B0\u7CBE\u51C6\u7684\u89C6\u7A97\u68C0\u6D4B\u3002"})]}),a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u6027\u80FD\u4F18\u5316"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u4E0D\u5728\u89C6\u7A97\u5185\u7684\u89C6\u9891\u4F1A\u6682\u505C\u64AD\u653E\uFF0C\u51CF\u5C11CPU\u548C\u5185\u5B58\u5360\u7528\u3002\u63D0\u524D50px\u5F00\u59CB\u68C0\u6D4B\uFF0C \u786E\u4FDD\u89C6\u9891\u5728\u7528\u6237\u770B\u5230\u65F6\u5DF2\u7ECF\u51C6\u5907\u5C31\u7EEA\u3002threshold\u8BBE\u7F6E\u4E3A0.1\uFF0C\u5F5310%\u5143\u7D20\u53EF\u89C1\u65F6\u89E6\u53D1\u3002"})]})]})]})}),t(i,{data:{title:"Second Video Banner",subtitle:"This is the second video to test multiple banners with IntersectionObserver.",pcImage:{url:o,alt:"second banner background",thumbnailURL:o,mimeType:"image/jpeg"},mobileImage:{url:o,alt:"second banner mobile",thumbnailURL:o,mimeType:"image/jpeg"},pcVideo:{url:"https://sample-videos.com/zip/10/mp4/SampleVideo_1280x720_2mb.mp4",alt:"second video desktop",thumbnailURL:o,mimeType:"video/mp4"},padVideo:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"second video tablet",thumbnailURL:o,mimeType:"video/mp4"},mobileVideo:{url:"https://sample-videos.com/zip/10/mp4/SampleVideo_640x360_1mb.mp4",alt:"second video mobile",thumbnailURL:o,mimeType:"video/mp4"},isShowVideo:!0,primaryButton:{text:"Second Video",link:"/second"},secondaryButton:{text:"Explore More",link:"/explore"},caption:[{title:"Independent Video Control"},{title:"Pause When Out of View"},{title:"Resource Efficient"}]}}),t("div",{className:"bg-gradient-to-b from-black to-gray-900 py-20 text-white",children:a("div",{className:"container mx-auto max-w-4xl px-4",children:[t("h2",{className:"mb-8 text-center text-4xl font-bold",children:"\u591A\u89C6\u9891\u7BA1\u7406"}),a("div",{className:"space-y-8",children:[a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u72EC\u7ACB\u63A7\u5236"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u6BCF\u4E2A\u89C6\u9891banner\u90FD\u6709\u72EC\u7ACB\u7684IntersectionObserver\uFF0C\u4E92\u4E0D\u5E72\u6270\u3002 \u5F53\u4E00\u4E2A\u89C6\u9891\u64AD\u653E\u65F6\uFF0C\u5176\u4ED6\u4E0D\u5728\u89C6\u7A97\u5185\u7684\u89C6\u9891\u4F1A\u4FDD\u6301\u6682\u505C\u72B6\u6001\u3002"})]}),a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u7528\u6237\u4F53\u9A8C"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u6EDA\u52A8\u65F6\u7528\u6237\u770B\u5230\u7684\u6BCF\u4E2A\u89C6\u9891\u90FD\u4F1A\u4ECE\u5934\u5F00\u59CB\u64AD\u653E\uFF0C\u63D0\u4F9B\u5B8C\u6574\u7684\u89C2\u770B\u4F53\u9A8C\u3002 \u79BB\u5F00\u89C6\u7A97\u65F6\u6682\u505C\u53EF\u4EE5\u8282\u7701\u8BBE\u5907\u8D44\u6E90\u548C\u7F51\u7EDC\u6D41\u91CF\u3002"})]})]})]})}),t(i,{data:{title:"Third Video Experience",subtitle:"Final banner to demonstrate seamless video management across multiple sections.",pcImage:{url:e,alt:"third banner background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"third banner mobile",thumbnailURL:e,mimeType:"image/jpeg"},pcVideo:{url:"https://cdn.shopify.com/videos/c/o/v/c84b5ba3176f47a79d843d334812d645.mp4",alt:"third video desktop",thumbnailURL:e,mimeType:"video/mp4"},padVideo:{url:"https://cdn.shopify.com/videos/c/o/v/c84b5ba3176f47a79d843d334812d645.mp4",alt:"third video tablet",thumbnailURL:e,mimeType:"video/mp4"},mobileVideo:{url:"https://cdn.shopify.com/videos/c/o/v/50981dfe2910408fa76436ca394cbc6f.mp4",alt:"third video mobile",thumbnailURL:e,mimeType:"video/mp4"},theme:"dark",isShowVideo:!0,primaryButton:{text:"Third Video",link:"/third"},secondaryButton:{text:"Complete Test",link:"/complete"},caption:[{title:"Seamless Performance"},{title:"Multiple Video Management"},{title:"Optimized for All Devices"}]}}),t("div",{className:"bg-black py-20 text-white",children:a("div",{className:"container mx-auto px-4 text-center",children:[t("h2",{className:"mb-4 text-3xl font-bold",children:"IntersectionObserver \u6D4B\u8BD5\u5B8C\u6210"}),t("p",{className:"mb-8 text-gray-400",children:"\u6EDA\u52A8\u56DE\u9876\u90E8\u518D\u6B21\u6D4B\u8BD5\u89C6\u9891\u8FDB\u5165\u548C\u79BB\u5F00\u89C6\u7A97\u7684\u6548\u679C"}),a("div",{className:"mx-auto grid max-w-4xl grid-cols-1 gap-8 md:grid-cols-3",children:[a("div",{className:"rounded border border-gray-700 p-6",children:[t("h4",{className:"mb-2 text-lg font-semibold",children:"\u667A\u80FD\u64AD\u653E"}),t("p",{className:"text-sm text-gray-400",children:"\u8FDB\u5165\u89C6\u7A97\u81EA\u52A8\u64AD\u653E\uFF0C\u79BB\u5F00\u81EA\u52A8\u6682\u505C"})]}),a("div",{className:"rounded border border-gray-700 p-6",children:[t("h4",{className:"mb-2 text-lg font-semibold",children:"\u4ECE\u5934\u64AD\u653E"}),t("p",{className:"text-sm text-gray-400",children:"\u6BCF\u6B21\u8FDB\u5165\u89C6\u7A97\u90FD\u4ECE\u89C6\u9891\u5F00\u5934\u5F00\u59CB"})]}),a("div",{className:"rounded border border-gray-700 p-6",children:[t("h4",{className:"mb-2 text-lg font-semibold",children:"\u6027\u80FD\u4F18\u5316"}),t("p",{className:"text-sm text-gray-400",children:"\u591A\u89C6\u9891\u72EC\u7ACB\u63A7\u5236\uFF0C\u8D44\u6E90\u9AD8\u6548\u5229\u7528"})]})]})]})})]});export{l as DarkTheme,m as LightTheme,b as MultiBanner,y as ScrollableBackgroundVideo,h as WithVideoModal,g as WithYoutubeVideo,u as WithoutSecondaryButton,p as default};
10
+ `}}},tags:["autodocs"]};var p=m;const e="https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aee13b30b2c77fc8d0a46e4f19fa48cb_6a25debf-f95e-4ca6-990b-babcad65216c.png?v=1745468206",c="https://cdn.shopify.com/s/files/1/0521/9411/5753/files/aee13b30b2c77fc8d0a46e4f19fa48cb_6a25debf-f95e-4ca6-990b-babcad65216c.png?v=1745468206",o="https://cdn.shopify.com/s/files/1/0517/6767/3016/files/87e32d61fc407d5e6c8aff00f3453072.jpg?v=1745999899",r={args:{data:{title:"Anker Laptop Power",subtitle:"Anker Prime 240W GaN Desktop Charger (4 Ports)",pcImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},theme:"light",blockLink:"/this-is-block-link",primaryButton:{text:"Shop Now",link:"/this-is-shop-now-link"},secondaryButton:{text:"Learn More",link:"/this-is-learn-more-link"},caption:[{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"},{title:"Anker Prime 27,650mAh Power Bank (250W)"},{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"}],endDate:"2025-11-15T03:32:00.000Z",endDate_tz:"America/Sao_Paulo",dateFormat:'{"day":"Day","hour":"Hours","minute":"Mins","second":"Secs"}'}}},n={args:{data:{title:"Power Your Life",subtitle:"Experience the next generation of charging technology with our innovative solutions designed for modern life.",pcImage:{url:o,alt:"dark background",thumbnailURL:o,mimeType:"image/jpeg"},mobileImage:{url:o,alt:"dark background",thumbnailURL:o,mimeType:"image/jpeg"},theme:"dark",primaryButton:{text:"Shop Now"},secondaryButton:{text:"Learn More"},caption:[{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"},{title:"Anker Prime 27,650mAh Power Bank (250W)"},{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"}]}}},b=()=>a("div",{className:"flex flex-col",children:[t(i,{data:{...r.args.data,size:"sm"}}),t(i,{data:{...n.args.data,size:"sm"},className:"mt-[8px]"})]}),u={args:{data:{title:"Future of Charging",subtitle:"Step into the future with our revolutionary charging solutions that redefine the way you power your devices.",pcImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"default background",thumbnailURL:e,mimeType:"image/jpeg"},theme:"light",primaryButton:{text:"Shop Now"},caption:[{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"},{title:"Anker Prime 27,650mAh Power Bank (250W)"},{title:"Anker Prime 240W GaN Desktop Charger (4 Ports)"}]}}},g={args:{data:{title:"Experience Anker Innovation",subtitle:"Watch our latest product demo and discover the future of charging technology",pcImage:{url:e,alt:"tech background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"tech background mobile",thumbnailURL:e,mimeType:"image/jpeg"},theme:"dark",primaryButton:{text:"Shop Now",link:"/shop"},secondaryButton:{text:"Learn More",link:"/learn-more",isShowPlayVideoButton:!0,playVideoButtonText:"Watch Demo",playIcon:!0,videoUrl:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"product demo video",thumbnailURL:e,mimeType:"video/mp4"}},caption:[{title:"Anker Prime 240W GaN Desktop Charger"},{title:"Anker PowerCore 27,650mAh Power Bank"},{title:"Anker Wireless Charging Station"}]}}},h={args:{data:{title:"Anker Prime Series",subtitle:"See our Prime series in action. Experience the power that drives innovation.",pcImage:{url:e,alt:"anker products",thumbnailURL:e,mimeType:"image/jpeg"},padImage:{url:e,alt:"anker products pad",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"anker products mobile",thumbnailURL:e,mimeType:"image/jpeg"},theme:"light",primaryButton:{text:"Buy Now",link:"/buy"},secondaryButton:{text:"Explore",link:"/explore",isShowPlayVideoButton:!0,playVideoButtonText:"Watch on YouTube",youtubeId:"dQw4w9WgXcQ"},caption:[{title:"Prime 240W Desktop Charger"},{title:"Prime 27,650mAh Power Bank"},{title:"Prime 100W Wireless Charger"}]}}},y={args:{data:r.args.data,classNames:{root:"",title:" text-red-500",subtitle:"text-blue-500",buttonGroup:"justify-left mt-[200px]",primaryButton:"shadow-lg",secondaryButton:"custom-secondary-btn",captionGroup:"bg-black/40"}}},v=()=>a("div",{className:"min-h-[500vh]",children:[t(i,{data:{theme:"dark",title:"Powered by Innovation",subtitle:"Scroll down to test IntersectionObserver - videos play only when in viewport and restart from beginning each time.",pcImage:{url:e,alt:"fallback background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"fallback background mobile",thumbnailURL:e,mimeType:"image/jpeg"},pcVideo:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"background video desktop",thumbnailURL:e,mimeType:"video/mp4"},padVideo:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"background video tablet",thumbnailURL:e,mimeType:"video/mp4"},mobileVideo:{url:"https://sample-videos.com/zip/10/mp4/SampleVideo_640x360_1mb.mp4",alt:"background video mobile",thumbnailURL:e,mimeType:"video/mp4"},isShowVideo:!0,primaryButton:{text:"First Video",link:"/first"},secondaryButton:{text:"Learn More",link:"/learn"},caption:[{title:"IntersectionObserver Controlled"},{title:"Auto Play on Viewport Entry"},{title:"Restart from Beginning"}]}}),t("div",{className:"bg-gradient-to-b from-gray-900 to-black py-20 text-white",children:a("div",{className:"container mx-auto max-w-4xl px-4",children:[t("h2",{className:"mb-8 text-center text-4xl font-bold",children:"IntersectionObserver \u89C6\u9891\u63A7\u5236"}),a("div",{className:"space-y-8",children:[a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u667A\u80FD\u89C6\u9891\u64AD\u653E"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u89C6\u9891\u53EA\u5728\u8FDB\u5165\u89C6\u7A97\u65F6\u64AD\u653E\uFF0C\u79BB\u5F00\u89C6\u7A97\u65F6\u81EA\u52A8\u6682\u505C\u3002\u6BCF\u6B21\u91CD\u65B0\u8FDB\u5165\u89C6\u7A97\u90FD\u4F1A\u4ECE\u5934\u5F00\u59CB\u64AD\u653E\uFF0C\u63D0\u4F9B\u4E00\u81F4\u7684\u89C2\u770B\u4F53\u9A8C\u3002\u4F7F\u7528 IntersectionObserver API \u5B9E\u73B0\u7CBE\u51C6\u7684\u89C6\u7A97\u68C0\u6D4B\u3002"})]}),a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u6027\u80FD\u4F18\u5316"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u4E0D\u5728\u89C6\u7A97\u5185\u7684\u89C6\u9891\u4F1A\u6682\u505C\u64AD\u653E\uFF0C\u51CF\u5C11CPU\u548C\u5185\u5B58\u5360\u7528\u3002\u63D0\u524D50px\u5F00\u59CB\u68C0\u6D4B\uFF0C \u786E\u4FDD\u89C6\u9891\u5728\u7528\u6237\u770B\u5230\u65F6\u5DF2\u7ECF\u51C6\u5907\u5C31\u7EEA\u3002threshold\u8BBE\u7F6E\u4E3A0.1\uFF0C\u5F5310%\u5143\u7D20\u53EF\u89C1\u65F6\u89E6\u53D1\u3002"})]})]})]})}),t(i,{data:{title:"Second Video Banner",subtitle:"This is the second video to test multiple banners with IntersectionObserver.",pcImage:{url:o,alt:"second banner background",thumbnailURL:o,mimeType:"image/jpeg"},mobileImage:{url:o,alt:"second banner mobile",thumbnailURL:o,mimeType:"image/jpeg"},pcVideo:{url:"https://sample-videos.com/zip/10/mp4/SampleVideo_1280x720_2mb.mp4",alt:"second video desktop",thumbnailURL:o,mimeType:"video/mp4"},padVideo:{url:"https://cdn.shopify.com/videos/c/o/v/8b833ba483e64ba5839f55c455d91f2c.mp4",alt:"second video tablet",thumbnailURL:o,mimeType:"video/mp4"},mobileVideo:{url:"https://sample-videos.com/zip/10/mp4/SampleVideo_640x360_1mb.mp4",alt:"second video mobile",thumbnailURL:o,mimeType:"video/mp4"},isShowVideo:!0,primaryButton:{text:"Second Video",link:"/second"},secondaryButton:{text:"Explore More",link:"/explore"},caption:[{title:"Independent Video Control"},{title:"Pause When Out of View"},{title:"Resource Efficient"}]}}),t("div",{className:"bg-gradient-to-b from-black to-gray-900 py-20 text-white",children:a("div",{className:"container mx-auto max-w-4xl px-4",children:[t("h2",{className:"mb-8 text-center text-4xl font-bold",children:"\u591A\u89C6\u9891\u7BA1\u7406"}),a("div",{className:"space-y-8",children:[a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u72EC\u7ACB\u63A7\u5236"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u6BCF\u4E2A\u89C6\u9891banner\u90FD\u6709\u72EC\u7ACB\u7684IntersectionObserver\uFF0C\u4E92\u4E0D\u5E72\u6270\u3002 \u5F53\u4E00\u4E2A\u89C6\u9891\u64AD\u653E\u65F6\uFF0C\u5176\u4ED6\u4E0D\u5728\u89C6\u7A97\u5185\u7684\u89C6\u9891\u4F1A\u4FDD\u6301\u6682\u505C\u72B6\u6001\u3002"})]}),a("div",{className:"rounded-lg bg-gray-800 p-8",children:[t("h3",{className:"mb-4 text-2xl font-semibold",children:"\u7528\u6237\u4F53\u9A8C"}),t("p",{className:"leading-relaxed text-gray-300",children:"\u6EDA\u52A8\u65F6\u7528\u6237\u770B\u5230\u7684\u6BCF\u4E2A\u89C6\u9891\u90FD\u4F1A\u4ECE\u5934\u5F00\u59CB\u64AD\u653E\uFF0C\u63D0\u4F9B\u5B8C\u6574\u7684\u89C2\u770B\u4F53\u9A8C\u3002 \u79BB\u5F00\u89C6\u7A97\u65F6\u6682\u505C\u53EF\u4EE5\u8282\u7701\u8BBE\u5907\u8D44\u6E90\u548C\u7F51\u7EDC\u6D41\u91CF\u3002"})]})]})]})}),t(i,{data:{title:"Third Video Experience",subtitle:"Final banner to demonstrate seamless video management across multiple sections.",pcImage:{url:e,alt:"third banner background",thumbnailURL:e,mimeType:"image/jpeg"},mobileImage:{url:e,alt:"third banner mobile",thumbnailURL:e,mimeType:"image/jpeg"},pcVideo:{url:"https://cdn.shopify.com/videos/c/o/v/c84b5ba3176f47a79d843d334812d645.mp4",alt:"third video desktop",thumbnailURL:e,mimeType:"video/mp4"},padVideo:{url:"https://cdn.shopify.com/videos/c/o/v/c84b5ba3176f47a79d843d334812d645.mp4",alt:"third video tablet",thumbnailURL:e,mimeType:"video/mp4"},mobileVideo:{url:"https://cdn.shopify.com/videos/c/o/v/50981dfe2910408fa76436ca394cbc6f.mp4",alt:"third video mobile",thumbnailURL:e,mimeType:"video/mp4"},theme:"dark",isShowVideo:!0,primaryButton:{text:"Third Video",link:"/third"},secondaryButton:{text:"Complete Test",link:"/complete"},caption:[{title:"Seamless Performance"},{title:"Multiple Video Management"},{title:"Optimized for All Devices"}]}}),t("div",{className:"bg-black py-20 text-white",children:a("div",{className:"container mx-auto px-4 text-center",children:[t("h2",{className:"mb-4 text-3xl font-bold",children:"IntersectionObserver \u6D4B\u8BD5\u5B8C\u6210"}),t("p",{className:"mb-8 text-gray-400",children:"\u6EDA\u52A8\u56DE\u9876\u90E8\u518D\u6B21\u6D4B\u8BD5\u89C6\u9891\u8FDB\u5165\u548C\u79BB\u5F00\u89C6\u7A97\u7684\u6548\u679C"}),a("div",{className:"mx-auto grid max-w-4xl grid-cols-1 gap-8 md:grid-cols-3",children:[a("div",{className:"rounded border border-gray-700 p-6",children:[t("h4",{className:"mb-2 text-lg font-semibold",children:"\u667A\u80FD\u64AD\u653E"}),t("p",{className:"text-sm text-gray-400",children:"\u8FDB\u5165\u89C6\u7A97\u81EA\u52A8\u64AD\u653E\uFF0C\u79BB\u5F00\u81EA\u52A8\u6682\u505C"})]}),a("div",{className:"rounded border border-gray-700 p-6",children:[t("h4",{className:"mb-2 text-lg font-semibold",children:"\u4ECE\u5934\u64AD\u653E"}),t("p",{className:"text-sm text-gray-400",children:"\u6BCF\u6B21\u8FDB\u5165\u89C6\u7A97\u90FD\u4ECE\u89C6\u9891\u5F00\u5934\u5F00\u59CB"})]}),a("div",{className:"rounded border border-gray-700 p-6",children:[t("h4",{className:"mb-2 text-lg font-semibold",children:"\u6027\u80FD\u4F18\u5316"}),t("p",{className:"text-sm text-gray-400",children:"\u591A\u89C6\u9891\u72EC\u7ACB\u63A7\u5236\uFF0C\u8D44\u6E90\u9AD8\u6548\u5229\u7528"})]})]})]})})]});export{n as DarkTheme,r as LightTheme,b as MultiBanner,v as ScrollableBackgroundVideo,y as WithSemanticClassNames,g as WithVideoModal,h as WithYoutubeVideo,u as WithoutSecondaryButton,p as default};
11
11
  //# sourceMappingURL=HeroBanner.stories.js.map