@anker-in/headless-ui 0.0.27-alpha.51 → 0.0.27-alpha.53

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 (89) hide show
  1. package/dist/cjs/biz-components/BrandEquity/BrandEquity.d.ts +1 -0
  2. package/dist/cjs/biz-components/Category/SwiperCategory.d.ts +16 -0
  3. package/dist/cjs/biz-components/Category/SwiperCategory.js +2 -0
  4. package/dist/cjs/biz-components/Category/SwiperCategory.js.map +7 -0
  5. package/dist/cjs/biz-components/Category/index.d.ts +1 -0
  6. package/dist/cjs/biz-components/Category/index.js +1 -1
  7. package/dist/cjs/biz-components/Category/index.js.map +3 -3
  8. package/dist/cjs/biz-components/Evaluate/index.d.ts +1 -0
  9. package/dist/cjs/biz-components/Graphic/index.d.ts +1 -0
  10. package/dist/cjs/biz-components/GraphicAttractionBlock/index.d.ts +1 -0
  11. package/dist/cjs/biz-components/HeroBanner/HeroBanner.d.ts +1 -0
  12. package/dist/cjs/biz-components/Marquee/index.d.ts +1 -0
  13. package/dist/cjs/biz-components/MediaPlayerBase/index.d.ts +1 -0
  14. package/dist/cjs/biz-components/MediaPlayerMulti/index.d.ts +1 -0
  15. package/dist/cjs/biz-components/MemberEquity/index.d.ts +1 -0
  16. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +1 -0
  17. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
  18. package/dist/cjs/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +2 -2
  19. package/dist/cjs/biz-components/Shelf/Shelf.d.ts +1 -0
  20. package/dist/cjs/biz-components/ShelfDisplay/index.d.ts +1 -0
  21. package/dist/cjs/biz-components/Slogan/index.d.ts +1 -0
  22. package/dist/cjs/biz-components/Slogan/index.js +1 -1
  23. package/dist/cjs/biz-components/Slogan/index.js.map +2 -2
  24. package/dist/cjs/biz-components/Tabs/Tabs.d.ts +1 -0
  25. package/dist/cjs/biz-components/Title/index.d.ts +1 -0
  26. package/dist/cjs/shared/Styles.d.ts +2 -1
  27. package/dist/cjs/shared/Styles.js +1 -1
  28. package/dist/cjs/shared/Styles.js.map +3 -3
  29. package/dist/cjs/shared/getKeyPropsString.d.ts +4 -0
  30. package/dist/cjs/shared/getKeyPropsString.js +2 -0
  31. package/dist/cjs/shared/getKeyPropsString.js.map +7 -0
  32. package/dist/cjs/shared/simpleHash.d.ts +1 -0
  33. package/dist/cjs/shared/simpleHash.js +2 -0
  34. package/dist/cjs/shared/simpleHash.js.map +7 -0
  35. package/dist/cjs/stories/HeroBanner.stories.d.ts +1 -0
  36. package/dist/cjs/stories/brandEquity.stories.d.ts +1 -0
  37. package/dist/cjs/stories/category.stories.d.ts +1 -0
  38. package/dist/cjs/stories/evaluate.stories.d.ts +1 -0
  39. package/dist/cjs/stories/graphic.stories.d.ts +2 -1
  40. package/dist/cjs/stories/marquee.stories.d.ts +1 -0
  41. package/dist/cjs/stories/mediaplayerMulti.stories.d.ts +1 -0
  42. package/dist/cjs/stories/shelf.stories.d.ts +1 -0
  43. package/dist/cjs/stories/shelfDisplay.stories.d.ts +1 -0
  44. package/dist/cjs/stories/slogan.stories.d.ts +1 -0
  45. package/dist/esm/biz-components/BrandEquity/BrandEquity.d.ts +1 -0
  46. package/dist/esm/biz-components/Category/SwiperCategory.d.ts +16 -0
  47. package/dist/esm/biz-components/Category/SwiperCategory.js +2 -0
  48. package/dist/esm/biz-components/Category/SwiperCategory.js.map +7 -0
  49. package/dist/esm/biz-components/Category/index.d.ts +1 -0
  50. package/dist/esm/biz-components/Category/index.js +1 -1
  51. package/dist/esm/biz-components/Category/index.js.map +3 -3
  52. package/dist/esm/biz-components/Evaluate/index.d.ts +1 -0
  53. package/dist/esm/biz-components/Graphic/index.d.ts +1 -0
  54. package/dist/esm/biz-components/GraphicAttractionBlock/index.d.ts +1 -0
  55. package/dist/esm/biz-components/HeroBanner/HeroBanner.d.ts +1 -0
  56. package/dist/esm/biz-components/Marquee/index.d.ts +1 -0
  57. package/dist/esm/biz-components/MediaPlayerBase/index.d.ts +1 -0
  58. package/dist/esm/biz-components/MediaPlayerMulti/index.d.ts +1 -0
  59. package/dist/esm/biz-components/MemberEquity/index.d.ts +1 -0
  60. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.d.ts +1 -0
  61. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js +1 -1
  62. package/dist/esm/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.js.map +2 -2
  63. package/dist/esm/biz-components/Shelf/Shelf.d.ts +1 -0
  64. package/dist/esm/biz-components/ShelfDisplay/index.d.ts +1 -0
  65. package/dist/esm/biz-components/Slogan/index.d.ts +1 -0
  66. package/dist/esm/biz-components/Slogan/index.js +1 -1
  67. package/dist/esm/biz-components/Slogan/index.js.map +2 -2
  68. package/dist/esm/biz-components/Tabs/Tabs.d.ts +1 -0
  69. package/dist/esm/biz-components/Title/index.d.ts +1 -0
  70. package/dist/esm/shared/Styles.d.ts +2 -1
  71. package/dist/esm/shared/Styles.js +1 -1
  72. package/dist/esm/shared/Styles.js.map +3 -3
  73. package/dist/esm/shared/getKeyPropsString.d.ts +4 -0
  74. package/dist/esm/shared/getKeyPropsString.js +2 -0
  75. package/dist/esm/shared/getKeyPropsString.js.map +7 -0
  76. package/dist/esm/shared/simpleHash.d.ts +1 -0
  77. package/dist/esm/shared/simpleHash.js +2 -0
  78. package/dist/esm/shared/simpleHash.js.map +7 -0
  79. package/dist/esm/stories/HeroBanner.stories.d.ts +1 -0
  80. package/dist/esm/stories/brandEquity.stories.d.ts +1 -0
  81. package/dist/esm/stories/category.stories.d.ts +1 -0
  82. package/dist/esm/stories/evaluate.stories.d.ts +1 -0
  83. package/dist/esm/stories/graphic.stories.d.ts +2 -1
  84. package/dist/esm/stories/marquee.stories.d.ts +1 -0
  85. package/dist/esm/stories/mediaplayerMulti.stories.d.ts +1 -0
  86. package/dist/esm/stories/shelf.stories.d.ts +1 -0
  87. package/dist/esm/stories/shelfDisplay.stories.d.ts +1 -0
  88. package/dist/esm/stories/slogan.stories.d.ts +1 -0
  89. package/package.json +1 -1
@@ -5,6 +5,7 @@ declare const meta: {
5
5
  component: {
6
6
  (props: Omit<import("react-fast-marquee").MarqueeProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
7
7
  className?: string;
8
+ data?: Record<string, any>;
8
9
  }): import("react/jsx-runtime").JSX.Element;
9
10
  displayName: string;
10
11
  };
@@ -4,6 +4,7 @@ declare const meta: {
4
4
  component: {
5
5
  (props: Omit<import("../biz-components/MediaPlayerMulti/types.js").MediaPlayerMultiProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
6
6
  className?: string;
7
+ data?: Record<string, any>;
7
8
  }): import("react/jsx-runtime").JSX.Element;
8
9
  displayName: string;
9
10
  };
@@ -4,6 +4,7 @@ declare const meta: {
4
4
  component: {
5
5
  (props: Omit<import("../biz-components/Shelf/types.js").ShelfProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
6
6
  className?: string;
7
+ data?: Record<string, any>;
7
8
  }): import("react/jsx-runtime").JSX.Element;
8
9
  displayName: string;
9
10
  };
@@ -4,6 +4,7 @@ declare const meta: {
4
4
  component: {
5
5
  (props: Omit<import("../biz-components/ShelfDisplay/index.js").ShelfDisplayProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
6
6
  className?: string;
7
+ data?: Record<string, any>;
7
8
  }): import("react/jsx-runtime").JSX.Element;
8
9
  displayName: string;
9
10
  };
@@ -5,6 +5,7 @@ declare const meta: {
5
5
  component: {
6
6
  (props: Omit<import("../biz-components/Slogan/types.js").SloganProps & React.RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
7
7
  className?: string;
8
+ data?: Record<string, any>;
8
9
  }): import("react/jsx-runtime").JSX.Element;
9
10
  displayName: string;
10
11
  };
@@ -19,6 +19,7 @@ export interface BrandEquityProps extends ComponentCommonProps {
19
19
  declare const _default: {
20
20
  (props: Omit<BrandEquityProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
21
21
  className?: string;
22
+ data?: Record<string, any>;
22
23
  }): import("react/jsx-runtime").JSX.Element;
23
24
  displayName: string;
24
25
  };
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ export interface SwiperBoxProps {
3
+ data: {
4
+ list: any[];
5
+ configuration?: any;
6
+ };
7
+ id: string;
8
+ className?: string;
9
+ breakpoints?: Record<number, Object>;
10
+ Slide: React.ComponentType<{
11
+ data: any;
12
+ configuration?: any;
13
+ }>;
14
+ }
15
+ declare const SwiperBox: React.ForwardRefExoticComponent<SwiperBoxProps & React.RefAttributes<HTMLDivElement>>;
16
+ export default SwiperBox;
@@ -0,0 +1,2 @@
1
+ "use client";import{jsx as e}from"react/jsx-runtime";import n from"react";import"../../helpers/utils.js";import{Swiper as p,SwiperSlide as l}from"swiper/react";import{Pagination as f,FreeMode as d,Mousewheel as w}from"swiper/modules";const r=n.forwardRef(({data:i,Slide:o,id:a})=>e(p,{freeMode:!0,mousewheel:{forceToAxis:!0},className:"!overflow-visible",modules:[d,w,f],breakpoints:{0:{spaceBetween:16,slidesPerView:1,freeMode:!1},374:{spaceBetween:16,freeMode:!1,slidesPerView:1},768:{spaceBetween:16,freeMode:!1,slidesPerView:6}},children:i?.list?.map((s,t)=>e(l,{className:"!flex !h-[unset]",children:e(o,{data:s,configuration:i?.configuration})},a+"SwiperSlide"+t))}));r.displayName="SwiperBox";var x=r;export{x as default};
2
+ //# sourceMappingURL=SwiperCategory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/biz-components/Category/SwiperCategory.tsx"],
4
+ "sourcesContent": ["'use client'\nimport React from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Pagination, FreeMode, Mousewheel } from 'swiper/modules'\n\nexport interface SwiperBoxProps {\n data: {\n list: any[]\n configuration?: any\n }\n id: string\n className?: string\n breakpoints?: Record<number, Object>\n Slide: React.ComponentType<{ data: any; configuration?: any }>\n}\n\nconst SwiperBox = React.forwardRef<HTMLDivElement, SwiperBoxProps>(({ data, Slide, id }) => {\n return (\n <Swiper\n freeMode={true}\n mousewheel={{\n forceToAxis: true,\n }}\n className=\"!overflow-visible\"\n modules={[FreeMode, Mousewheel, Pagination]}\n breakpoints={{\n 0: {\n spaceBetween: 16,\n slidesPerView: 1,\n freeMode: false,\n },\n 374: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 1,\n },\n 768: {\n spaceBetween: 16,\n freeMode: false,\n slidesPerView: 6,\n },\n }}\n >\n {data?.list?.map((item, jIndex) => (\n <SwiperSlide key={id + 'SwiperSlide' + jIndex} className=\"!flex !h-[unset]\">\n <Slide data={item} configuration={data?.configuration} />\n </SwiperSlide>\n ))}\n </Swiper>\n )\n})\n\nSwiperBox.displayName = 'SwiperBox'\n\nexport default SwiperBox\n"],
5
+ "mappings": "aA8CU,cAAAA,MAAA,oBA7CV,OAAOC,MAAW,QAClB,MAAmB,yBACnB,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eACpC,OAAS,cAAAC,EAAY,YAAAC,EAAU,cAAAC,MAAkB,iBAajD,MAAMC,EAAYN,EAAM,WAA2C,CAAC,CAAE,KAAAO,EAAM,MAAAC,EAAO,GAAAC,CAAG,IAElFV,EAACE,EAAA,CACC,SAAU,GACV,WAAY,CACV,YAAa,EACf,EACA,UAAU,oBACV,QAAS,CAACG,EAAUC,EAAYF,CAAU,EAC1C,YAAa,CACX,EAAG,CACD,aAAc,GACd,cAAe,EACf,SAAU,EACZ,EACA,IAAK,CACH,aAAc,GACd,SAAU,GACV,cAAe,CACjB,EACA,IAAK,CACH,aAAc,GACd,SAAU,GACV,cAAe,CACjB,CACF,EAEC,SAAAI,GAAM,MAAM,IAAI,CAACG,EAAMC,IACtBZ,EAACG,EAAA,CAA8C,UAAU,mBACvD,SAAAH,EAACS,EAAA,CAAM,KAAME,EAAM,cAAeH,GAAM,cAAe,GADvCE,EAAK,cAAgBE,CAEvC,CACD,EACH,CAEH,EAEDL,EAAU,YAAc,YAExB,IAAOM,EAAQN",
6
+ "names": ["jsx", "React", "Swiper", "SwiperSlide", "Pagination", "FreeMode", "Mousewheel", "SwiperBox", "data", "Slide", "id", "item", "jIndex", "SwiperCategory_default"]
7
+ }
@@ -22,6 +22,7 @@ export interface CategoryProps {
22
22
  declare const _default: {
23
23
  (props: Omit<CategoryProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
24
24
  className?: string;
25
+ data?: Record<string, any>;
25
26
  }): import("react/jsx-runtime").JSX.Element;
26
27
  displayName: string;
27
28
  };
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,jsxs as a}from"react/jsx-runtime";import"react";import{cn as o}from"../../helpers/utils.js";import l from"../../components/picture.js";import{withStyles as p}from"../../shared/Styles.js";import n from"../Title/index.js";import c from"../SwiperBox/index.js";const d=({data:e,configuration:r})=>a("div",{className:o("box-border flex w-full flex-col overflow-hidden bg-[#EAEAEC]","laptop:p-6 desktop:p-8 cursor-pointer p-4 hover:bg-[#FFFFFF]",r?.shape==="round"?"rounded-[16px]":"rounded-none"),children:[t(l,{className:"tablet:h-[146px] mb-2 flex h-[74px] w-full items-center object-cover",source:e?.image}),t("p",{className:"tablet:text-lg flex-1 text-center text-sm font-semibold",children:e?.name})]}),m=({data:e,buildData:r,className:s="",key:i})=>a("div",{className:o("w-full",s),children:[e?.title&&t(n,{data:{title:e?.title}}),t(c,{className:"!overflow-visible",id:"Category"+i,data:{list:e?.products,configuration:{shape:e?.shape}},Slide:d,breakpoints:{0:{spaceBetween:"12px",freeMode:!1,slidesPerView:1},374:{spaceBetween:"12px",freeMode:!1,slidesPerView:3.3},768:{spaceBetween:"16px",freeMode:!1,slidesPerView:6}}})]});var h=p(m);export{h as default};
1
+ "use client";import{Fragment as c,jsx as t,jsxs as s}from"react/jsx-runtime";import"react";import{cn as l}from"../../helpers/utils.js";import n from"../../components/picture.js";import{withStyles as p}from"../../shared/Styles.js";import m from"../Title/index.js";import i from"./SwiperCategory.js";const u=(e,a)=>{const r=[];for(let o=0;o<e.length;o+=a)r.push(e.slice(o,o+a));return r},f=({data:e,configuration:a})=>s("div",{className:l("box-border flex w-full flex-col overflow-hidden bg-[#EAEAEC]","laptop:p-6 desktop:p-8 cursor-pointer p-4 hover:bg-[#FFFFFF]",a?.shape==="round"?"rounded-[16px]":"rounded-none"),children:[t(n,{className:"tablet:h-[146px] mb-2 flex h-[74px] w-full items-center object-cover",source:e?.image}),t("p",{className:"tablet:text-lg flex-1 text-center text-sm font-semibold",children:e?.name})]}),g=({data:e,configuration:a})=>t("div",{className:"grid grid-cols-2 gap-3",children:e?.map((r,o)=>s("div",{className:l("box-border max-h-[126px] w-full overflow-hidden bg-[#EAEAEC]","cursor-pointer px-3 py-4 hover:bg-[#FFFFFF]",a?.shape==="round"?"rounded-[16px]":"rounded-none"),children:[t(n,{className:"mb-2 flex h-[74px] w-full items-center object-cover",source:r?.image}),t("p",{className:"flex-1 truncate text-center text-sm font-semibold",children:r?.name})]},`${r?.name}${o}`))}),x=({data:e,configuration:a})=>s(c,{children:[t("div",{className:"tablet:block hidden",children:t("div",{className:"mx-auto flex w-full gap-4",children:e?.map((r,o)=>s("div",{className:l("box-border flex w-[calc(20%-12px)] shrink-0 flex-col overflow-hidden bg-[#EAEAEC]","laptop:p-6 desktop:p-8 cursor-pointer p-4 hover:bg-[#FFFFFF]",a?.shape==="round"?"rounded-[16px]":"rounded-none"),children:[t(n,{className:"tablet:h-[146px] mb-2 flex h-[74px] w-full items-center object-cover",source:r?.image}),t("p",{className:"tablet:text-lg flex-1 text-center text-sm font-semibold",children:r?.name})]},o))})}),t("div",{className:"tablet:hidden block",children:t("div",{className:"grid grid-cols-2 gap-3",children:e?.map((r,o)=>s("div",{className:l("box-border flex w-full shrink-0 flex-col items-center justify-center overflow-hidden bg-[#EAEAEC]","cursor-pointer p-4 hover:bg-[#FFFFFF]",o===0?"row-span-2":"",a?.shape==="round"?"rounded-[16px]":"rounded-none"),children:[t(n,{className:l("mb-2 flex h-[74px] w-full items-center object-cover",o===0?"h-[140px]":"h-[74px]"),source:r?.image}),t("p",{className:"line-clamp-2 flex-1 text-center text-sm font-semibold",children:r?.name})]},o))})})]}),b=({data:e,buildData:a,className:r="",key:o})=>{const d=e?.products?.length<=5;return s("div",{className:l("w-full",r),children:[e?.title&&t(m,{data:{title:e?.title}}),d?t(x,{data:e?.products,configuration:{shape:e?.shape}}):s(c,{children:[t("div",{className:"tablet:block hidden",children:t(i,{id:`Category${o}`,Slide:f,data:{list:e?.products,configuration:{shape:e?.shape}}})}),t("div",{className:"tablet:hidden block overflow-hidden",children:t(i,{id:`Category1${o}`,Slide:g,data:{list:u(e?.products,6),configuration:{shape:e?.shape}}})})]})]})};var k=p(b);export{k as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Category/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport { withStyles } from '../../shared/Styles.js'\nimport Title from '../Title/index.js'\nimport SwiperBox from '../SwiperBox/index.js'\n\nexport interface CategoryItem {\n /** \u4EA7\u54C1\u56FE\u7247*/\n image: string\n name: string\n}\n\nexport interface CategoryProps {\n className?: string\n /** \u4E3B\u9898\u8272*/\n theme?: 'light' | 'dark'\n data: {\n products: CategoryItem[]\n /** \u5361\u7247\u5F62\u72B6 */\n shape?: 'round' | 'square'\n title?: string\n }\n buildData?: {\n categories: any[]\n products: any[]\n }\n key?: string\n}\n\nconst CategoryItem = ({ data, configuration }: { data: CategoryItem; configuration?: any }) => {\n return (\n <div\n className={cn(\n 'box-border flex w-full flex-col overflow-hidden bg-[#EAEAEC]',\n 'laptop:p-6 desktop:p-8 cursor-pointer p-4 hover:bg-[#FFFFFF]',\n configuration?.shape === 'round' ? 'rounded-[16px]' : 'rounded-none'\n )}\n >\n <Picture className=\"tablet:h-[146px] mb-2 flex h-[74px] w-full items-center object-cover\" source={data?.image} />\n <p className=\"tablet:text-lg flex-1 text-center text-sm font-semibold\">{data?.name}</p>\n </div>\n )\n}\n\nconst Category: React.FC<CategoryProps> = ({ data, buildData, className = '', key }) => {\n return (\n <div className={cn('w-full', className)}>\n {data?.title && <Title data={{ title: data?.title }} />}\n <SwiperBox\n className=\"!overflow-visible\"\n id={'Category' + key}\n data={{ list: data?.products, configuration: { shape: data?.shape } }}\n Slide={CategoryItem}\n breakpoints={{\n 0: {\n spaceBetween: '12px',\n freeMode: false,\n slidesPerView: 1,\n },\n 374: {\n spaceBetween: '12px',\n freeMode: false,\n slidesPerView: 3.3,\n },\n 768: {\n spaceBetween: '16px',\n freeMode: false,\n slidesPerView: 6,\n },\n }}\n />\n </div>\n )\n}\n\nexport default withStyles(Category)\n"],
5
- "mappings": "aAiCI,OAOE,OAAAA,EAPF,QAAAC,MAAA,oBAhCJ,MAAkB,QAClB,OAAS,MAAAC,MAAU,yBACnB,OAAOC,MAAa,8BACpB,OAAS,cAAAC,MAAkB,yBAC3B,OAAOC,MAAW,oBAClB,OAAOC,MAAe,wBAyBtB,MAAMC,EAAe,CAAC,CAAE,KAAAC,EAAM,cAAAC,CAAc,IAExCR,EAAC,OACC,UAAWC,EACT,+DACA,+DACAO,GAAe,QAAU,QAAU,iBAAmB,cACxD,EAEA,UAAAT,EAACG,EAAA,CAAQ,UAAU,uEAAuE,OAAQK,GAAM,MAAO,EAC/GR,EAAC,KAAE,UAAU,0DAA2D,SAAAQ,GAAM,KAAK,GACrF,EAIEE,EAAoC,CAAC,CAAE,KAAAF,EAAM,UAAAG,EAAW,UAAAC,EAAY,GAAI,IAAAC,CAAI,IAE9EZ,EAAC,OAAI,UAAWC,EAAG,SAAUU,CAAS,EACnC,UAAAJ,GAAM,OAASR,EAACK,EAAA,CAAM,KAAM,CAAE,MAAOG,GAAM,KAAM,EAAG,EACrDR,EAACM,EAAA,CACC,UAAU,oBACV,GAAI,WAAaO,EACjB,KAAM,CAAE,KAAML,GAAM,SAAU,cAAe,CAAE,MAAOA,GAAM,KAAM,CAAE,EACpE,MAAOD,EACP,YAAa,CACX,EAAG,CACD,aAAc,OACd,SAAU,GACV,cAAe,CACjB,EACA,IAAK,CACH,aAAc,OACd,SAAU,GACV,cAAe,GACjB,EACA,IAAK,CACH,aAAc,OACd,SAAU,GACV,cAAe,CACjB,CACF,EACF,GACF,EAIJ,IAAOO,EAAQV,EAAWM,CAAQ",
6
- "names": ["jsx", "jsxs", "cn", "Picture", "withStyles", "Title", "SwiperBox", "CategoryItem", "data", "configuration", "Category", "buildData", "className", "key", "Category_default"]
4
+ "sourcesContent": ["'use client'\nimport React from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport Picture from '../../components/picture.js'\nimport { withStyles } from '../../shared/Styles.js'\nimport Title from '../Title/index.js'\nimport SwiperBox from './SwiperCategory.js'\n\nexport interface CategoryItem {\n /** \u4EA7\u54C1\u56FE\u7247*/\n image: string\n name: string\n}\n\nexport interface CategoryProps {\n className?: string\n /** \u4E3B\u9898\u8272*/\n theme?: 'light' | 'dark'\n data: {\n products: CategoryItem[]\n /** \u5361\u7247\u5F62\u72B6 */\n shape?: 'round' | 'square'\n title?: string\n }\n buildData?: {\n categories: any[]\n products: any[]\n }\n key?: string\n}\n\nconst chunkArray = (arr: any[], size: number) => {\n const chunks = []\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size))\n }\n return chunks\n}\n\nconst CategoryPcItem = ({ data, configuration }: { data: CategoryItem; configuration?: any }) => {\n return (\n <div\n className={cn(\n 'box-border flex w-full flex-col overflow-hidden bg-[#EAEAEC]',\n 'laptop:p-6 desktop:p-8 cursor-pointer p-4 hover:bg-[#FFFFFF]',\n configuration?.shape === 'round' ? 'rounded-[16px]' : 'rounded-none'\n )}\n >\n <Picture className=\"tablet:h-[146px] mb-2 flex h-[74px] w-full items-center object-cover\" source={data?.image} />\n <p className=\"tablet:text-lg flex-1 text-center text-sm font-semibold\">{data?.name}</p>\n </div>\n )\n}\n\nconst CategoryMobileItem = ({ data, configuration }: { data: CategoryItem[]; configuration?: any }) => {\n return (\n <div className=\"grid grid-cols-2 gap-3\">\n {data?.map((item, index) => {\n return (\n <div\n key={`${item?.name}${index}`}\n className={cn(\n 'box-border max-h-[126px] w-full overflow-hidden bg-[#EAEAEC]',\n 'cursor-pointer px-3 py-4 hover:bg-[#FFFFFF]',\n configuration?.shape === 'round' ? 'rounded-[16px]' : 'rounded-none'\n )}\n >\n <Picture className=\"mb-2 flex h-[74px] w-full items-center object-cover\" source={item?.image} />\n <p className=\"flex-1 truncate text-center text-sm font-semibold\">{item?.name}</p>\n </div>\n )\n })}\n </div>\n )\n}\n\nconst SoundCoreCategoryItem = ({ data, configuration }: { data: CategoryItem[]; configuration?: any }) => {\n return (\n <>\n <div className=\"tablet:block hidden\">\n <div className=\"mx-auto flex w-full gap-4\">\n {data?.map((item, index) => {\n return (\n <div\n key={index}\n className={cn(\n 'box-border flex w-[calc(20%-12px)] shrink-0 flex-col overflow-hidden bg-[#EAEAEC]',\n 'laptop:p-6 desktop:p-8 cursor-pointer p-4 hover:bg-[#FFFFFF]',\n configuration?.shape === 'round' ? 'rounded-[16px]' : 'rounded-none'\n )}\n >\n <Picture\n className=\"tablet:h-[146px] mb-2 flex h-[74px] w-full items-center object-cover\"\n source={item?.image}\n />\n <p className=\"tablet:text-lg flex-1 text-center text-sm font-semibold\">{item?.name}</p>\n </div>\n )\n })}\n </div>\n </div>\n <div className=\"tablet:hidden block\">\n <div className=\"grid grid-cols-2 gap-3\">\n {data?.map((item, index) => {\n return (\n <div\n key={index}\n className={cn(\n 'box-border flex w-full shrink-0 flex-col items-center justify-center overflow-hidden bg-[#EAEAEC]',\n 'cursor-pointer p-4 hover:bg-[#FFFFFF]',\n index === 0 ? 'row-span-2' : '',\n configuration?.shape === 'round' ? 'rounded-[16px]' : 'rounded-none'\n )}\n >\n <Picture\n className={cn(\n 'mb-2 flex h-[74px] w-full items-center object-cover',\n index === 0 ? 'h-[140px]' : 'h-[74px]'\n )}\n source={item?.image}\n />\n <p className=\"line-clamp-2 flex-1 text-center text-sm font-semibold\">{item?.name}</p>\n </div>\n )\n })}\n </div>\n </div>\n </>\n )\n}\n\nconst Category: React.FC<CategoryProps> = ({ data, buildData, className = '', key }) => {\n // soundcore\u54C1\u724C\u54C1\u7C7B\u4E0D\u8D85\u8FC75\u4E2A\uFF0C\u5355\u72EC\u505A\u6837\u5F0F\u5904\u7406\n const isSoundCore = data?.products?.length <= 5\n return (\n <div className={cn('w-full', className)}>\n {data?.title && <Title data={{ title: data?.title }} />}\n {isSoundCore ? (\n <SoundCoreCategoryItem data={data?.products} configuration={{ shape: data?.shape }} />\n ) : (\n <>\n <div className=\"tablet:block hidden\">\n <SwiperBox\n id={`Category${key}`}\n Slide={CategoryPcItem}\n data={{ list: data?.products, configuration: { shape: data?.shape } }}\n />\n </div>\n <div className=\"tablet:hidden block overflow-hidden\">\n <SwiperBox\n id={`Category1${key}`}\n Slide={CategoryMobileItem}\n data={{ list: chunkArray(data?.products, 6), configuration: { shape: data?.shape } }}\n />\n </div>\n </>\n )}\n </div>\n )\n}\n\nexport default withStyles(Category)\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "cn", "Picture", "withStyles", "Title", "SwiperBox", "chunkArray", "arr", "size", "chunks", "i", "CategoryPcItem", "data", "configuration", "CategoryMobileItem", "item", "index", "SoundCoreCategoryItem", "Category", "buildData", "className", "key", "isSoundCore", "Category_default"]
7
7
  }
@@ -26,6 +26,7 @@ export interface EvaluateProps {
26
26
  declare const _default: {
27
27
  (props: Omit<EvaluateProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
28
28
  className?: string;
29
+ data?: Record<string, any>;
29
30
  }): import("react/jsx-runtime").JSX.Element;
30
31
  displayName: string;
31
32
  };
@@ -15,6 +15,7 @@ export interface GraphicProps extends ComponentCommonProps {
15
15
  declare const _default: {
16
16
  (props: Omit<GraphicProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
17
17
  className?: string;
18
+ data?: Record<string, any>;
18
19
  }): import("react/jsx-runtime").JSX.Element;
19
20
  displayName: string;
20
21
  };
@@ -20,6 +20,7 @@ interface GraphicAttractionBlockProps extends ComponentCommonProps {
20
20
  declare const _default: {
21
21
  (props: Omit<GraphicAttractionBlockProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
22
22
  className?: string;
23
+ data?: Record<string, any>;
23
24
  }): import("react/jsx-runtime").JSX.Element;
24
25
  displayName: string;
25
26
  };
@@ -3,6 +3,7 @@ import type { HeroBannerProps } from './types.js';
3
3
  declare const _default: {
4
4
  (props: Omit<HeroBannerProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
5
5
  className?: string;
6
+ data?: Record<string, any>;
6
7
  }): import("react/jsx-runtime").JSX.Element;
7
8
  displayName: string;
8
9
  };
@@ -26,6 +26,7 @@ declare const MarqueeTextContent: React.ForwardRefExoticComponent<MarqueeTextCon
26
26
  declare const _default: {
27
27
  (props: Omit<FastMarqueeProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
28
28
  className?: string;
29
+ data?: Record<string, any>;
29
30
  }): import("react/jsx-runtime").JSX.Element;
30
31
  displayName: string;
31
32
  };
@@ -2,6 +2,7 @@ import type { MediaPlayerBaseProps } from './types.js';
2
2
  declare const _default: {
3
3
  (props: Omit<MediaPlayerBaseProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
4
4
  className?: string;
5
+ data?: Record<string, any>;
5
6
  }): import("react/jsx-runtime").JSX.Element;
6
7
  displayName: string;
7
8
  };
@@ -2,6 +2,7 @@ import type { MediaPlayerMultiProps } from './types.js';
2
2
  declare const _default: {
3
3
  (props: Omit<MediaPlayerMultiProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
4
4
  className?: string;
5
+ data?: Record<string, any>;
5
6
  }): import("react/jsx-runtime").JSX.Element;
6
7
  displayName: string;
7
8
  };
@@ -2,6 +2,7 @@ import type { MemberEquityProps } from './types.js';
2
2
  declare const _default: {
3
3
  (props: Omit<MemberEquityProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
4
4
  className?: string;
5
+ data?: Record<string, any>;
5
6
  }): import("react/jsx-runtime").JSX.Element;
6
7
  displayName: string;
7
8
  };
@@ -3,6 +3,7 @@ import type { MultiLayoutGraphicBlockProps } from './types';
3
3
  declare const _default: {
4
4
  (props: Omit<MultiLayoutGraphicBlockProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
5
5
  className?: string;
6
+ data?: Record<string, any>;
6
7
  }): import("react/jsx-runtime").JSX.Element;
7
8
  displayName: string;
8
9
  };
@@ -1,2 +1,2 @@
1
- import{Fragment as T,jsx as e,jsxs as l}from"react/jsx-runtime";import v from"react";import{withStyles as I}from"../../shared/Styles.js";import B from"../../components/picture.js";import C from"../../components/button.js";import{Heading as G}from"../../components/heading.js";import{Text as w}from"../../components/text.js";import{Carousel as y,CarouselContent as k,CarouselItem as N}from"../../components/carousel.js";import{Grid as g,GridItem as d}from"../../components/gird.js";import L from"../Title/index.js";import{cn as M}from"../../helpers/utils.js";import{Tabs as P,TabsList as R,TabsTrigger as S,TabsContent as z}from"../../components/tabs.js";const p=({item:f,shape:h="square"})=>{const{theme:m="light",title:c,description:b,imageUrl:i,primaryButton:s,secondaryButton:r}=f;return l("div",{className:M("item-wrapper relative w-full",{"rounded-box":h==="rounded","aiui-dark":m==="dark"},"text-info-primary"),children:[e(B,{source:i?.url,className:"inset-0",style:{aspectRatio:`${i?.width}/${i?.height}`}}),l("div",{className:"laptop:p-6 desktop:p-[32px] absolute inset-x-0 bottom-0 flex flex-col gap-6 p-3",children:[l("div",{children:[e(G,{size:3,className:"item-title",html:c}),e(w,{size:2,className:"item-description",html:b})]}),l("div",{className:"flex gap-[16px]",children:[r&&e(C,{variant:"secondary",asChild:!0,children:e("a",{href:r.link,children:r.text})}),s&&e(C,{variant:"primary",asChild:!0,children:e("a",{href:s.link,children:s.text})})]})]})]})},H=v.forwardRef((f,h)=>{const{shape:m,sectionTitle:c,groupByTab:b=!1,items:i=[],carousel:s}=f.data,r=t=>{switch(t){case"full":return 12;case"half":return 6;case"one-third":return 4}},u=i.map(t=>t.tabName).filter(Boolean).filter((t,a,o)=>o.indexOf(t)===a),x=u.map(t=>({tabName:t,items:i.filter(a=>a.tabName===t)})).reduce((t,a)=>(t[a.tabName]=a.items,t),{});return l("section",{"data-ui-component-id":"MultiLayoutGraphicBlock",ref:h,className:"text-info-primary",children:[c&&e(L,{data:{title:c},className:"section-title"}),b?l(P,{shape:m,align:"left",defaultValue:u[0],children:[e(R,{children:u.map((t,a)=>e(S,{value:t,children:t},a))}),u.map((t,a)=>e(z,{value:t,className:"desktop:mt-[36px] mt-[24px] w-full",children:l(T,{children:[l(g,{className:"w-full",children:[x[t].map((o,n)=>e(d,{span:r(o.width??"full"),className:"laptop:block hidden",children:e(p,{item:o})},n)),e(d,{className:"laptop:hidden block",span:12,children:e(y,{className:"",children:e(k,{className:"flex",children:x[t].map((o,n)=>e(N,{className:"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5",children:e(p,{item:o,shape:m})},n))})})})]}),s&&s?.items.length>0?e(y,{className:"laptop:mt-4 mt-3",children:e(k,{className:"flex",children:s.items.map((o,n)=>e(N,{className:"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5",children:e(p,{item:o,shape:m})},n))})}):null]})},a))]}):l(T,{children:[l(g,{className:"w-full",children:[i.map((t,a)=>e(d,{span:r(t.width??"full"),className:"laptop:block hidden",children:e(p,{item:t})},a)),i.map((t,a)=>e(d,{span:r("full"),className:"laptop:hidden block",children:e(p,{item:t})},a))]}),s&&s?.items.length>0?e(y,{className:"laptop:mt-4 mt-3",children:e(k,{className:"flex",children:s.items.map((t,a)=>e(N,{className:"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5",children:e(p,{item:t,shape:m})},a))})}):null]})]})});var Q=I(H);export{Q as default};
1
+ import{Fragment as v,jsx as e,jsxs as l}from"react/jsx-runtime";import T from"react";import{withStyles as I}from"../../shared/Styles.js";import w from"../../components/picture.js";import C from"../../components/button.js";import{Heading as B}from"../../components/heading.js";import{Text as G}from"../../components/text.js";import{Carousel as y,CarouselContent as N,CarouselItem as k}from"../../components/carousel.js";import{Grid as g,GridItem as d}from"../../components/gird.js";import L from"../Title/index.js";import{cn as M}from"../../helpers/utils.js";import{Tabs as P,TabsList as R,TabsTrigger as S,TabsContent as z}from"../../components/tabs.js";const p=({item:f,shape:h="square"})=>{const{theme:m="light",title:c,description:b,imageUrl:i,primaryButton:s,secondaryButton:r}=f;return l("div",{className:M("item-wrapper group relative w-full",{"rounded-box":h==="rounded","aiui-dark":m==="dark"},"text-info-primary"),children:[e(w,{source:i?.url,className:"inset-0 overflow-hidden",imgClassName:"transition-all duration-300 group-hover:scale-105",style:{aspectRatio:`${i?.width}/${i?.height}`}}),l("div",{className:"laptop:p-6 desktop:p-[32px] absolute inset-x-0 bottom-0 flex flex-col gap-6 p-3",children:[l("div",{children:[e(B,{size:3,className:"item-title",html:c}),e(G,{size:2,className:"item-description",html:b})]}),l("div",{className:"flex gap-[16px]",children:[r&&e(C,{variant:"secondary",asChild:!0,children:e("a",{href:r.link,children:r.text})}),s&&e(C,{variant:"primary",asChild:!0,children:e("a",{href:s.link,children:s.text})})]})]})]})},H=T.forwardRef((f,h)=>{const{shape:m,sectionTitle:c,groupByTab:b=!1,items:i=[],carousel:s}=f.data,r=t=>{switch(t){case"full":return 12;case"half":return 6;case"one-third":return 4}},u=i.map(t=>t.tabName).filter(Boolean).filter((t,a,o)=>o.indexOf(t)===a),x=u.map(t=>({tabName:t,items:i.filter(a=>a.tabName===t)})).reduce((t,a)=>(t[a.tabName]=a.items,t),{});return l("section",{"data-ui-component-id":"MultiLayoutGraphicBlock",ref:h,className:"text-info-primary",children:[c&&e(L,{data:{title:c},className:"section-title"}),b?l(P,{shape:m,align:"left",defaultValue:u[0],children:[e(R,{children:u.map((t,a)=>e(S,{value:t,children:t},a))}),u.map((t,a)=>e(z,{value:t,className:"desktop:mt-[36px] mt-[24px] w-full",children:l(v,{children:[l(g,{className:"w-full",children:[x[t].map((o,n)=>e(d,{span:r(o.width??"full"),className:"laptop:block hidden",children:e(p,{item:o})},n)),e(d,{className:"laptop:hidden block",span:12,children:e(y,{className:"",children:e(N,{className:"flex",children:x[t].map((o,n)=>e(k,{className:"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5",children:e(p,{item:o,shape:m})},n))})})})]}),s&&s?.items.length>0?e(y,{className:"laptop:mt-4 mt-3",children:e(N,{className:"flex",children:s.items.map((o,n)=>e(k,{className:"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5",children:e(p,{item:o,shape:m})},n))})}):null]})},a))]}):l(v,{children:[l(g,{className:"w-full",children:[i.map((t,a)=>e(d,{span:r(t.width??"full"),className:"laptop:block hidden",children:e(p,{item:t})},a)),i.map((t,a)=>e(d,{span:r("full"),className:"laptop:hidden block",children:e(p,{item:t})},a))]}),s&&s?.items.length>0?e(y,{className:"laptop:mt-4 mt-3",children:e(N,{className:"flex",children:s.items.map((t,a)=>e(k,{className:"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5",children:e(p,{item:t,shape:m})},a))})}):null]})]})});var Q=I(H);export{Q as default};
2
2
  //# sourceMappingURL=MultiLayoutGraphicBlock.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/MultiLayoutGraphicBlock/MultiLayoutGraphicBlock.tsx"],
4
- "sourcesContent": ["import React from 'react'\nimport type { MultiLayoutGraphicBlockProps, Item } from './types'\nimport { withStyles } from '../../shared/Styles.js'\nimport Picture from '../../components/picture.js'\nimport Button from '../../components/button.js'\nimport { Heading } from '../../components/heading.js'\nimport { Text } from '../../components/text.js'\nimport { Carousel, CarouselContent, CarouselItem } from '../../components/carousel.js'\nimport { Grid, GridItem } from '../../components/gird.js'\nimport Title from '../Title/index.js'\nimport type { Shape } from '../../types/props'\nimport { cn } from '../../helpers/utils.js'\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../../components/tabs.js'\nconst ItemBlock = ({ item, shape = 'square' }: { item: Item } & { shape?: Shape }) => {\n const { theme = 'light', title, description, imageUrl, primaryButton, secondaryButton } = item\n\n return (\n <div\n className={cn(\n `item-wrapper relative w-full`,\n {\n 'rounded-box': shape === 'rounded',\n 'aiui-dark': theme === 'dark',\n },\n 'text-info-primary'\n )}\n >\n <Picture\n source={imageUrl?.url}\n className=\"inset-0\"\n style={{ aspectRatio: `${imageUrl?.width}/${imageUrl?.height}` }}\n />\n <div className=\"laptop:p-6 desktop:p-[32px] absolute inset-x-0 bottom-0 flex flex-col gap-6 p-3\">\n <div>\n <Heading size={3} className=\"item-title\" html={title} />\n <Text size={2} className=\"item-description\" html={description} />\n </div>\n <div className=\"flex gap-[16px]\">\n {secondaryButton && (\n <Button variant=\"secondary\" asChild>\n <a href={secondaryButton.link}>{secondaryButton.text}</a>\n </Button>\n )}\n {primaryButton && (\n <Button variant=\"primary\" asChild>\n <a href={primaryButton.link}>{primaryButton.text}</a>\n </Button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nconst MultiLayoutGraphicBlock = React.forwardRef<HTMLDivElement, MultiLayoutGraphicBlockProps>((props, ref) => {\n const { shape, sectionTitle, groupByTab = false, items = [], carousel } = props.data\n\n const getSpan = (width: 'full' | 'half' | 'one-third') => {\n switch (width) {\n case 'full':\n return 12\n case 'half':\n return 6\n case 'one-third':\n return 4\n }\n }\n\n const tabNames = items\n .map(item => item.tabName)\n .filter(Boolean)\n .filter((item, index, arr) => arr.indexOf(item) === index) as string[]\n\n const tabItemsMaps = tabNames\n .map(tabName => ({\n tabName,\n items: items.filter(item => item.tabName === tabName),\n }))\n .reduce(\n (acc, cur) => {\n acc[cur.tabName] = cur.items\n return acc\n },\n {} as Record<string, (Item & { width?: 'full' | 'half' | 'one-third' })[]>\n )\n\n return (\n <section data-ui-component-id=\"MultiLayoutGraphicBlock\" ref={ref} className=\"text-info-primary\">\n {sectionTitle && <Title data={{ title: sectionTitle }} className=\"section-title\" />}\n\n {groupByTab ? (\n <Tabs shape={shape} align=\"left\" defaultValue={tabNames[0]!}>\n <TabsList>\n {tabNames.map((tabName, index) => (\n <TabsTrigger key={index} value={tabName!}>\n {tabName}\n </TabsTrigger>\n ))}\n </TabsList>\n {tabNames.map((tabName, index) => (\n <TabsContent key={index} value={tabName!} className=\"desktop:mt-[36px] mt-[24px] w-full\">\n <>\n <Grid className=\"w-full\">\n {tabItemsMaps[tabName].map((item, index) => (\n <GridItem key={index} span={getSpan(item.width ?? 'full')} className=\"laptop:block hidden\">\n <ItemBlock item={item} />\n </GridItem>\n ))}\n {\n <GridItem className=\"laptop:hidden block\" span={12}>\n <Carousel className=\"\">\n <CarouselContent className=\"flex\">\n {tabItemsMaps[tabName].map((item, index) => (\n <CarouselItem key={index} className=\"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5\">\n <ItemBlock item={item} shape={shape} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </GridItem>\n }\n </Grid>\n {carousel && carousel?.items.length > 0 ? (\n <Carousel className=\"laptop:mt-4 mt-3\">\n <CarouselContent className=\"flex\">\n {carousel.items.map((item, index) => (\n <CarouselItem key={index} className=\"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5\">\n <ItemBlock item={item} shape={shape} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n ) : null}\n </>\n </TabsContent>\n ))}\n </Tabs>\n ) : (\n <>\n <Grid className=\"w-full\">\n {items.map((item, index) => (\n <GridItem key={index} span={getSpan(item.width ?? 'full')} className=\"laptop:block hidden\">\n <ItemBlock item={item} />\n </GridItem>\n ))}\n {items.map((item, index) => (\n <GridItem key={index} span={getSpan('full')} className=\"laptop:hidden block\">\n <ItemBlock item={item} />\n </GridItem>\n ))}\n </Grid>\n {carousel && carousel?.items.length > 0 ? (\n <Carousel className=\"laptop:mt-4 mt-3\">\n <CarouselContent className=\"flex\">\n {carousel.items.map((item, index) => (\n <CarouselItem key={index} className=\"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5\">\n <ItemBlock item={item} shape={shape} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n ) : null}\n </>\n )}\n </section>\n )\n})\n\nexport default withStyles(MultiLayoutGraphicBlock)\nexport type { MultiLayoutGraphicBlockProps }\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React from 'react'\nimport type { MultiLayoutGraphicBlockProps, Item } from './types'\nimport { withStyles } from '../../shared/Styles.js'\nimport Picture from '../../components/picture.js'\nimport Button from '../../components/button.js'\nimport { Heading } from '../../components/heading.js'\nimport { Text } from '../../components/text.js'\nimport { Carousel, CarouselContent, CarouselItem } from '../../components/carousel.js'\nimport { Grid, GridItem } from '../../components/gird.js'\nimport Title from '../Title/index.js'\nimport type { Shape } from '../../types/props'\nimport { cn } from '../../helpers/utils.js'\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../../components/tabs.js'\nconst ItemBlock = ({ item, shape = 'square' }: { item: Item } & { shape?: Shape }) => {\n const { theme = 'light', title, description, imageUrl, primaryButton, secondaryButton } = item\n\n return (\n <div\n className={cn(\n `item-wrapper group relative w-full`,\n {\n 'rounded-box': shape === 'rounded',\n 'aiui-dark': theme === 'dark',\n },\n 'text-info-primary'\n )}\n >\n <Picture\n source={imageUrl?.url}\n className=\"inset-0 overflow-hidden\"\n imgClassName=\"transition-all duration-300 group-hover:scale-105\"\n style={{ aspectRatio: `${imageUrl?.width}/${imageUrl?.height}` }}\n />\n <div className=\"laptop:p-6 desktop:p-[32px] absolute inset-x-0 bottom-0 flex flex-col gap-6 p-3\">\n <div>\n <Heading size={3} className=\"item-title\" html={title} />\n <Text size={2} className=\"item-description\" html={description} />\n </div>\n <div className=\"flex gap-[16px]\">\n {secondaryButton && (\n <Button variant=\"secondary\" asChild>\n <a href={secondaryButton.link}>{secondaryButton.text}</a>\n </Button>\n )}\n {primaryButton && (\n <Button variant=\"primary\" asChild>\n <a href={primaryButton.link}>{primaryButton.text}</a>\n </Button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nconst MultiLayoutGraphicBlock = React.forwardRef<HTMLDivElement, MultiLayoutGraphicBlockProps>((props, ref) => {\n const { shape, sectionTitle, groupByTab = false, items = [], carousel } = props.data\n\n const getSpan = (width: 'full' | 'half' | 'one-third') => {\n switch (width) {\n case 'full':\n return 12\n case 'half':\n return 6\n case 'one-third':\n return 4\n }\n }\n\n const tabNames = items\n .map(item => item.tabName)\n .filter(Boolean)\n .filter((item, index, arr) => arr.indexOf(item) === index) as string[]\n\n const tabItemsMaps = tabNames\n .map(tabName => ({\n tabName,\n items: items.filter(item => item.tabName === tabName),\n }))\n .reduce(\n (acc, cur) => {\n acc[cur.tabName] = cur.items\n return acc\n },\n {} as Record<string, (Item & { width?: 'full' | 'half' | 'one-third' })[]>\n )\n\n return (\n <section data-ui-component-id=\"MultiLayoutGraphicBlock\" ref={ref} className=\"text-info-primary\">\n {sectionTitle && <Title data={{ title: sectionTitle }} className=\"section-title\" />}\n\n {groupByTab ? (\n <Tabs shape={shape} align=\"left\" defaultValue={tabNames[0]!}>\n <TabsList>\n {tabNames.map((tabName, index) => (\n <TabsTrigger key={index} value={tabName!}>\n {tabName}\n </TabsTrigger>\n ))}\n </TabsList>\n {tabNames.map((tabName, index) => (\n <TabsContent key={index} value={tabName!} className=\"desktop:mt-[36px] mt-[24px] w-full\">\n <>\n <Grid className=\"w-full\">\n {tabItemsMaps[tabName].map((item, index) => (\n <GridItem key={index} span={getSpan(item.width ?? 'full')} className=\"laptop:block hidden\">\n <ItemBlock item={item} />\n </GridItem>\n ))}\n {\n <GridItem className=\"laptop:hidden block\" span={12}>\n <Carousel className=\"\">\n <CarouselContent className=\"flex\">\n {tabItemsMaps[tabName].map((item, index) => (\n <CarouselItem key={index} className=\"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5\">\n <ItemBlock item={item} shape={shape} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n </GridItem>\n }\n </Grid>\n {carousel && carousel?.items.length > 0 ? (\n <Carousel className=\"laptop:mt-4 mt-3\">\n <CarouselContent className=\"flex\">\n {carousel.items.map((item, index) => (\n <CarouselItem key={index} className=\"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5\">\n <ItemBlock item={item} shape={shape} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n ) : null}\n </>\n </TabsContent>\n ))}\n </Tabs>\n ) : (\n <>\n <Grid className=\"w-full\">\n {items.map((item, index) => (\n <GridItem key={index} span={getSpan(item.width ?? 'full')} className=\"laptop:block hidden\">\n <ItemBlock item={item} />\n </GridItem>\n ))}\n {items.map((item, index) => (\n <GridItem key={index} span={getSpan('full')} className=\"laptop:hidden block\">\n <ItemBlock item={item} />\n </GridItem>\n ))}\n </Grid>\n {carousel && carousel?.items.length > 0 ? (\n <Carousel className=\"laptop:mt-4 mt-3\">\n <CarouselContent className=\"flex\">\n {carousel.items.map((item, index) => (\n <CarouselItem key={index} className=\"tablet:basis-2/5 laptop:basis-[32%] flex basis-4/5\">\n <ItemBlock item={item} shape={shape} />\n </CarouselItem>\n ))}\n </CarouselContent>\n </Carousel>\n ) : null}\n </>\n )}\n </section>\n )\n})\n\nexport default withStyles(MultiLayoutGraphicBlock)\nexport type { MultiLayoutGraphicBlockProps }\n"],
5
+ "mappings": "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",
6
6
  "names": ["Fragment", "jsx", "jsxs", "React", "withStyles", "Picture", "Button", "Heading", "Text", "Carousel", "CarouselContent", "CarouselItem", "Grid", "GridItem", "Title", "cn", "Tabs", "TabsList", "TabsTrigger", "TabsContent", "ItemBlock", "item", "shape", "theme", "title", "description", "imageUrl", "primaryButton", "secondaryButton", "MultiLayoutGraphicBlock", "props", "ref", "sectionTitle", "groupByTab", "items", "carousel", "getSpan", "width", "tabNames", "index", "arr", "tabItemsMaps", "tabName", "acc", "cur", "MultiLayoutGraphicBlock_default"]
7
7
  }
@@ -2,6 +2,7 @@ import type { ShelfProps } from './types.js';
2
2
  declare const _default: {
3
3
  (props: Omit<ShelfProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
4
4
  className?: string;
5
+ data?: Record<string, any>;
5
6
  }): import("react/jsx-runtime").JSX.Element;
6
7
  displayName: string;
7
8
  };
@@ -53,6 +53,7 @@ export interface ShelfDisplayProps {
53
53
  declare const _default: {
54
54
  (props: Omit<ShelfDisplayProps, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
55
55
  className?: string;
56
+ data?: Record<string, any>;
56
57
  }): import("react/jsx-runtime").JSX.Element;
57
58
  displayName: string;
58
59
  };
@@ -3,6 +3,7 @@ import type { SloganProps } from './types.js';
3
3
  declare const _default: {
4
4
  (props: Omit<SloganProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
5
5
  className?: string;
6
+ data?: Record<string, any>;
6
7
  }): import("react/jsx-runtime").JSX.Element;
7
8
  displayName: string;
8
9
  };
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as n,jsxs as G}from"react/jsx-runtime";import s,{useRef as D}from"react";import{useGSAP as $}from"@gsap/react";import{gsap as y}from"gsap";import{SplitText as N}from"gsap/SplitText";import{ScrollTrigger as S}from"gsap/ScrollTrigger";import{cn as I}from"../../helpers/utils.js";import{Heading as j,Text as z}from"../../components/index.js";import{withStyles as L}from"../../shared/Styles.js";y.registerPlugin(N,S);function U(a=[],i=3){const p=[];for(let r=0;r<a.length;r+=i)p.push(a.slice(r,r+i));return p}const E=s.forwardRef(({data:a,className:i},p)=>{const{title:r,features:c=[],featureChunkSize:T=3}=a,[g,k]=s.useState(0),[R,d]=s.useState(!0),u=U(c,T),x=u.length,o=c.length>T,F=o?[...u,u[0]]:u,h=40;s.useEffect(()=>{if(!o)return;const t=setInterval(()=>{k(e=>e+1),d(!0)},3e3);return()=>clearInterval(t)},[x,o]),s.useEffect(()=>{if(o)if(g===x){const t=setTimeout(()=>{d(!1),k(0)},500);return()=>clearTimeout(t)}else d(!0)},[g,x,o]);const f=D(null),m=D(null);return $(()=>{if(!f.current)return;m.current=new N(f.current,{type:"words",wordsClass:"word"});const t=m.current.words;return y.set(t,{opacity:0}),S.create({trigger:f.current,start:"top 80%",end:"top 50%",scrub:!0,onUpdate:e=>{const w=e.progress,l=t.length,H=1/l,b=.5;t.forEach((P,A)=>{const C=A/l*(1-b),M=H*(1+b);let v=(w-C)/M;v=Math.max(0,Math.min(v,1)),y.set(P,{opacity:v})})}}),()=>{m.current&&m.current.revert(),S.getAll().forEach(e=>e.kill())}},[]),G("div",{ref:p,className:I("laptop:flex-row laptop:items-end laptop:justify-between text-info-primary desktop:min-h-[64px] lg-desktop:min-h-[128px] flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center",i),children:[n(j,{ref:f,as:"h2",size:2,weight:"bold",align:"left",className:"slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none text-[#1D1D1F]",children:r}),c&&c.length>0&&n("div",{className:"relative w-full max-w-[500px] overflow-hidden",style:{height:`${h}px`},children:n("div",{className:I(["flex flex-col",R?"transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]":"!transition-none"]),style:{transform:`translateY(-${g*h}px)`},children:F.map((t,e)=>n("div",{className:"flex w-full flex-row items-stretch gap-3 overflow-hidden",style:{height:`${h}px`},children:t.map((w,l)=>G(s.Fragment,{children:[l>0&&n("div",{className:"slogan-feature-divider w-px self-stretch bg-[#D9D9D9]"}),n(z,{align:"left",as:"p",className:"slogan-feature-text tablet:text-[13px] laptop:text-[14px] line-clamp-2 text-[12px] font-medium leading-[1.4] text-[#1D1D1F]",html:w.title})]},l))},e))})})]})});E.displayName="Slogan";var W=L(E);export{W as default};
1
+ "use client";import{jsx as n,jsxs as G}from"react/jsx-runtime";import s,{useRef as D}from"react";import{useGSAP as $}from"@gsap/react";import{gsap as y}from"gsap";import{SplitText as N}from"gsap/SplitText";import{ScrollTrigger as S}from"gsap/ScrollTrigger";import{cn as I}from"../../helpers/utils.js";import{Heading as j,Text as z}from"../../components/index.js";import{withStyles as L}from"../../shared/Styles.js";y.registerPlugin(N,S);function U(a=[],i=3){const p=[];for(let r=0;r<a.length;r+=i)p.push(a.slice(r,r+i));return p}const E=s.forwardRef(({data:a,className:i=""},p)=>{const{title:r,features:c=[],featureChunkSize:T=3}=a,[g,b]=s.useState(0),[R,d]=s.useState(!0),u=U(c,T),x=u.length,o=c.length>T,F=o?[...u,u[0]]:u,h=40;s.useEffect(()=>{if(!o)return;const t=setInterval(()=>{b(e=>e+1),d(!0)},3e3);return()=>clearInterval(t)},[x,o]),s.useEffect(()=>{if(o)if(g===x){const t=setTimeout(()=>{d(!1),b(0)},500);return()=>clearTimeout(t)}else d(!0)},[g,x,o]);const f=D(null),m=D(null);return $(()=>{if(!f.current)return;m.current=new N(f.current,{type:"words",wordsClass:"word"});const t=m.current.words;return y.set(t,{opacity:0}),S.create({trigger:f.current,start:"top 80%",end:"top 50%",scrub:!0,onUpdate:e=>{const w=e.progress,l=t.length,H=1/l,k=.5;t.forEach((P,A)=>{const C=A/l*(1-k),M=H*(1+k);let v=(w-C)/M;v=Math.max(0,Math.min(v,1)),y.set(P,{opacity:v})})}}),()=>{m.current&&m.current.revert(),S.getAll().forEach(e=>e.kill())}},[]),G("div",{ref:p,className:I("laptop:flex-row laptop:items-end laptop:justify-between text-info-primary laptop:min-h-[64px] lg-desktop:min-h-[128px] flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center",i),children:[n(j,{ref:f,as:"h2",size:2,weight:"bold",align:"left",className:"slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none text-[#1D1D1F]",children:r}),c&&c.length>0&&n("div",{className:"relative w-full max-w-[500px] overflow-hidden",style:{height:`${h}px`},children:n("div",{className:I(["flex flex-col",R?"transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]":"!transition-none"]),style:{transform:`translateY(-${g*h}px)`},children:F.map((t,e)=>n("div",{className:"flex w-full flex-row items-stretch gap-3 overflow-hidden",style:{height:`${h}px`},children:t.map((w,l)=>G(s.Fragment,{children:[l>0&&n("div",{className:"slogan-feature-divider w-px self-stretch bg-[#D9D9D9]"}),n(z,{align:"left",as:"p",className:"slogan-feature-text tablet:text-[13px] laptop:text-[14px] line-clamp-2 text-[12px] font-medium leading-[1.4] text-[#1D1D1F]",html:w.title})]},l))},e))})})]})});E.displayName="Slogan";var W=L(E);export{W as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/Slogan/index.tsx"],
4
- "sourcesContent": ["'use client'\nimport React, { useRef } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/SplitText'\nimport { ScrollTrigger } from 'gsap/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { withStyles } from '../../shared/Styles.js'\nimport type { SloganProps } from './types.js'\n\ngsap.registerPlugin(SplitText, ScrollTrigger)\n\nfunction chunkArray(array: { title: string }[] = [], size: number = 3) {\n const result = []\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size))\n }\n return result\n}\n\nconst Slogan = React.forwardRef<HTMLDivElement, SloganProps>(({ data, className }, ref) => {\n const { title, features = [], featureChunkSize = 3 } = data\n const [groupIndex, setGroupIndex] = React.useState(0)\n const [isTransitioning, setIsTransitioning] = React.useState(true)\n const featuresGroups = chunkArray(features, featureChunkSize)\n const totalGroups = featuresGroups.length\n const needCarousel = features.length > featureChunkSize\n const displayGroups = needCarousel ? [...featuresGroups, featuresGroups[0]] : featuresGroups\n const groupHeight = 40\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u542F\u7528\u5B9A\u65F6\u5668\n React.useEffect(() => {\n if (!needCarousel) return\n const timer = setInterval(() => {\n setGroupIndex(i => i + 1)\n setIsTransitioning(true)\n }, 3000)\n return () => clearInterval(timer)\n }, [totalGroups, needCarousel])\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u5904\u7406\u65E0\u7F1D\u8DF3\u8F6C\n React.useEffect(() => {\n if (!needCarousel) return\n if (groupIndex === totalGroups) {\n const handle = setTimeout(() => {\n setIsTransitioning(false)\n setGroupIndex(0)\n }, 500) // 500ms\u7B49\u4E8E\u52A8\u753B\u65F6\u957F\n return () => clearTimeout(handle)\n } else {\n setIsTransitioning(true)\n }\n }, [groupIndex, totalGroups, needCarousel])\n\n // \u6807\u9898\u52A8\u753B\u903B\u8F91\u4FDD\u6301\u4E0D\u53D8\n const titleRef = useRef(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n useGSAP(() => {\n if (!titleRef.current) return\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'top 80%',\n end: 'top 50%',\n scrub: true,\n onUpdate: self => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word, i) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach(t => t.kill())\n }\n }, [])\n\n return (\n <div\n ref={ref}\n className={cn(\n 'laptop:flex-row laptop:items-end laptop:justify-between text-info-primary desktop:min-h-[64px] lg-desktop:min-h-[128px] flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center',\n className\n )}\n >\n <Heading\n ref={titleRef}\n as=\"h2\"\n size={2}\n weight={'bold'}\n align={'left'}\n className=\"slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none text-[#1D1D1F]\"\n >\n {title}\n </Heading>\n {features && features.length > 0 && (\n <div className=\"relative w-full max-w-[500px] overflow-hidden\" style={{ height: `${groupHeight}px` }}>\n <div\n className={cn([\n 'flex flex-col',\n isTransitioning ? 'transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]' : '!transition-none',\n ])}\n style={{\n transform: `translateY(-${groupIndex * groupHeight}px)`,\n }}\n >\n {displayGroups.map((group, idx) => (\n <div\n className=\"flex w-full flex-row items-stretch gap-3 overflow-hidden\"\n style={{ height: `${groupHeight}px` }}\n key={idx}\n >\n {group.map((feature, index) => (\n <React.Fragment key={index}>\n {index > 0 && <div className=\"slogan-feature-divider w-px self-stretch bg-[#D9D9D9]\" />}\n <Text\n align=\"left\"\n as=\"p\"\n className=\"slogan-feature-text tablet:text-[13px] laptop:text-[14px] line-clamp-2 text-[12px] font-medium leading-[1.4] text-[#1D1D1F]\"\n html={feature.title}\n />\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n})\n\nSlogan.displayName = 'Slogan'\n\nexport default withStyles(Slogan)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use client'\nimport React, { useRef } from 'react'\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport { SplitText } from 'gsap/SplitText'\nimport { ScrollTrigger } from 'gsap/ScrollTrigger'\nimport { cn } from '../../helpers/utils.js'\nimport { Heading, Text } from '../../components/index.js'\nimport { withStyles } from '../../shared/Styles.js'\nimport type { SloganProps } from './types.js'\n\ngsap.registerPlugin(SplitText, ScrollTrigger)\n\nfunction chunkArray(array: { title: string }[] = [], size: number = 3) {\n const result = []\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size))\n }\n return result\n}\n\nconst Slogan = React.forwardRef<HTMLDivElement, SloganProps>(({ data, className = '' }, ref) => {\n const { title, features = [], featureChunkSize = 3 } = data\n const [groupIndex, setGroupIndex] = React.useState(0)\n const [isTransitioning, setIsTransitioning] = React.useState(true)\n const featuresGroups = chunkArray(features, featureChunkSize)\n const totalGroups = featuresGroups.length\n const needCarousel = features.length > featureChunkSize\n const displayGroups = needCarousel ? [...featuresGroups, featuresGroups[0]] : featuresGroups\n const groupHeight = 40\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u542F\u7528\u5B9A\u65F6\u5668\n React.useEffect(() => {\n if (!needCarousel) return\n const timer = setInterval(() => {\n setGroupIndex(i => i + 1)\n setIsTransitioning(true)\n }, 3000)\n return () => clearInterval(timer)\n }, [totalGroups, needCarousel])\n\n // \u53EA\u5728\u9700\u8981\u8F6E\u64AD\u65F6\u5904\u7406\u65E0\u7F1D\u8DF3\u8F6C\n React.useEffect(() => {\n if (!needCarousel) return\n if (groupIndex === totalGroups) {\n const handle = setTimeout(() => {\n setIsTransitioning(false)\n setGroupIndex(0)\n }, 500) // 500ms\u7B49\u4E8E\u52A8\u753B\u65F6\u957F\n return () => clearTimeout(handle)\n } else {\n setIsTransitioning(true)\n }\n }, [groupIndex, totalGroups, needCarousel])\n\n // \u6807\u9898\u52A8\u753B\u903B\u8F91\u4FDD\u6301\u4E0D\u53D8\n const titleRef = useRef(null)\n const splitTextInstance = useRef<SplitText | null>(null)\n useGSAP(() => {\n if (!titleRef.current) return\n splitTextInstance.current = new SplitText(titleRef.current, {\n type: 'words',\n wordsClass: 'word',\n })\n const words = splitTextInstance.current.words\n gsap.set(words, { opacity: 0 })\n ScrollTrigger.create({\n trigger: titleRef.current,\n start: 'top 80%',\n end: 'top 50%',\n scrub: true,\n onUpdate: self => {\n const progress = self.progress\n const total = words.length\n const interval = 1 / total\n const overlap = 0.5\n words.forEach((word, i) => {\n const start = (i / total) * (1 - overlap)\n const width = interval * (1 + overlap)\n let opacity = (progress - start) / width\n opacity = Math.max(0, Math.min(opacity, 1))\n gsap.set(word, { opacity })\n })\n },\n })\n return () => {\n splitTextInstance.current && splitTextInstance.current.revert()\n ScrollTrigger.getAll().forEach(t => t.kill())\n }\n }, [])\n\n return (\n <div\n ref={ref}\n className={cn(\n 'laptop:flex-row laptop:items-end laptop:justify-between text-info-primary laptop:min-h-[64px] lg-desktop:min-h-[128px] flex h-auto w-full flex-col items-start justify-center gap-[24px] text-center',\n className\n )}\n >\n <Heading\n ref={titleRef}\n as=\"h2\"\n size={2}\n weight={'bold'}\n align={'left'}\n className=\"slogan-title laptop:text-[40px] desktop:text-[48px] lg-desktop:text-[64px] text-[40px] !leading-none text-[#1D1D1F]\"\n >\n {title}\n </Heading>\n {features && features.length > 0 && (\n <div className=\"relative w-full max-w-[500px] overflow-hidden\" style={{ height: `${groupHeight}px` }}>\n <div\n className={cn([\n 'flex flex-col',\n isTransitioning ? 'transition-transform duration-500 ease-[cubic-bezier(.4,0,.2,1)]' : '!transition-none',\n ])}\n style={{\n transform: `translateY(-${groupIndex * groupHeight}px)`,\n }}\n >\n {displayGroups.map((group, idx) => (\n <div\n className=\"flex w-full flex-row items-stretch gap-3 overflow-hidden\"\n style={{ height: `${groupHeight}px` }}\n key={idx}\n >\n {group.map((feature, index) => (\n <React.Fragment key={index}>\n {index > 0 && <div className=\"slogan-feature-divider w-px self-stretch bg-[#D9D9D9]\" />}\n <Text\n align=\"left\"\n as=\"p\"\n className=\"slogan-feature-text tablet:text-[13px] laptop:text-[14px] line-clamp-2 text-[12px] font-medium leading-[1.4] text-[#1D1D1F]\"\n html={feature.title}\n />\n </React.Fragment>\n ))}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n})\n\nSlogan.displayName = 'Slogan'\n\nexport default withStyles(Slogan)\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "React", "useRef", "useGSAP", "gsap", "SplitText", "ScrollTrigger", "cn", "Heading", "Text", "withStyles", "chunkArray", "array", "size", "result", "i", "Slogan", "data", "className", "ref", "title", "features", "featureChunkSize", "groupIndex", "setGroupIndex", "isTransitioning", "setIsTransitioning", "featuresGroups", "totalGroups", "needCarousel", "displayGroups", "groupHeight", "timer", "handle", "titleRef", "splitTextInstance", "words", "self", "progress", "total", "interval", "overlap", "word", "start", "width", "opacity", "t", "group", "idx", "feature", "index", "Slogan_default"]
7
7
  }
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  declare const _default: {
4
4
  (props: Omit<TabsProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
5
5
  className?: string;
6
+ data?: Record<string, any>;
6
7
  }): import("react/jsx-runtime").JSX.Element;
7
8
  displayName: string;
8
9
  };
@@ -3,6 +3,7 @@ import type { TitleProps } from './types.js';
3
3
  declare const _default: {
4
4
  (props: Omit<TitleProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps> & {
5
5
  className?: string;
6
+ data?: Record<string, any>;
6
7
  }): import("react/jsx-runtime").JSX.Element;
7
8
  displayName: string;
8
9
  };
@@ -15,7 +15,7 @@ export declare const getStylesProps: <T extends Record<string, unknown>>(props:
15
15
  * 样式 Hook,返回样式类名和样式组件
16
16
  * @param styleProps - 样式属性
17
17
  */
18
- export declare const useStyles: (styleProps: Partial<StylesProps>) => {
18
+ export declare const useStyles: (styleProps: Partial<StylesProps>, data?: Record<string, any>) => {
19
19
  readonly className: `block-${string} `;
20
20
  readonly StyleComponent: import("react/jsx-runtime").JSX.Element;
21
21
  readonly uid: string;
@@ -28,6 +28,7 @@ export declare const useStyles: (styleProps: Partial<StylesProps>) => {
28
28
  export declare function withStyles<P extends object>(WrappedComponent: React.ComponentType<P>, defaultStyleProps?: Partial<StylesProps>): {
29
29
  (props: Omit<P, keyof StylesProps> & Partial<StylesProps> & {
30
30
  className?: string;
31
+ data?: Record<string, any>;
31
32
  }): import("react/jsx-runtime").JSX.Element;
32
33
  displayName: string;
33
34
  };
@@ -1,2 +1,2 @@
1
- import{Fragment as d,jsx as o,jsxs as m}from"react/jsx-runtime";import{useMemo as r}from"react";const a=()=>`style_${Math.random().toString(36).substring(2,9)}_${Date.now().toString(36)}`,y=t=>{const{style:e,uid:s,disabled:n}=t;return{style:e,uid:s,disabled:n}},u=({style:t,uid:e=a(),disabled:s=!1})=>!t||s?null:o("style",{suppressHydrationWarning:!0,"data-style-id":e,children:`.block-${e} { ${t} }`}),S=t=>{const e=r(()=>t?.uid||a(),[t?.uid]),s=r(()=>o(u,{...t,uid:e}),[t,e]);return{className:`block-${e} `,StyleComponent:s,uid:e}};function g(t,e){const s=function(n){const l={...e,...y(n)},{className:i,StyleComponent:c}=S(l);return m(d,{children:[c,o(t,{...n,className:`${i} ${n.className}`})]})};return s.displayName=t.displayName||t.name||"Component",s}export{y as getStylesProps,S as useStyles,g as withStyles};
1
+ import{Fragment as P,jsx as o,jsxs as g}from"react/jsx-runtime";import{useMemo as r}from"react";import{simpleHash as y}from"./simpleHash.js";import d from"./getKeyPropsString.js";const a=t=>{const e=d(t);return`style_${y(e)}`},m=t=>{const{style:e,uid:s,disabled:n}=t;return{style:e,uid:s,disabled:n}},S=({style:t,uid:e=a({}),disabled:s=!1})=>!t||s?null:o("style",{suppressHydrationWarning:!0,"data-style-id":e,children:`.block-${e} { ${t} }`}),u=(t,e)=>{const s=r(()=>t?.uid||a({...t,data:e}),[e,t]),n=r(()=>o(S,{...t,uid:s}),[t,s]);return{className:`block-${s} `,StyleComponent:n,uid:s}};function b(t,e){const s=function(n){const l={...e,...m(n)},{className:i,StyleComponent:c}=u(l,n.data);return g(P,{children:[c,o(t,{...n,className:`${i} ${n.className}`})]})};return s.displayName=t.displayName||t.name||"Component",s}export{m as getStylesProps,u as useStyles,b as withStyles};
2
2
  //# sourceMappingURL=Styles.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/shared/Styles.tsx"],
4
- "sourcesContent": ["import React, { useMemo } from 'react'\n\nexport interface StylesProps {\n /** \u81EA\u5B9A\u4E49\u6837\u5F0F\u5B57\u7B26\u4E32 */\n style?: string\n /** \u552F\u4E00\u6807\u8BC6\u7B26 */\n uid?: string\n /** \u662F\u5426\u7981\u7528 */\n disabled?: boolean\n}\n\n/**\n * \u751F\u6210\u552F\u4E00\u6807\u8BC6\u7B26\n */\nconst generateUID = () => {\n return `style_${Math.random().toString(36).substring(2, 9)}_${Date.now().toString(36)}`\n}\n\n/**\n * \u4ECE\u7EC4\u4EF6 props \u4E2D\u63D0\u53D6\u6837\u5F0F\u76F8\u5173\u5C5E\u6027\n */\nexport const getStylesProps = <T extends Record<string, unknown>>(props: T & StylesProps): StylesProps => {\n const { style, uid, disabled } = props\n return { style, uid, disabled }\n}\n\n/**\n * \u6837\u5F0F\u6CE8\u5165\u7EC4\u4EF6\n */\nconst Styles: React.FC<StylesProps> = ({ style, uid = generateUID(), disabled = false }) => {\n if (!style || disabled) {\n return null\n }\n\n return <style suppressHydrationWarning data-style-id={uid}>{`.block-${uid} { ${style} }`}</style>\n}\n\n/**\n * \u6837\u5F0F Hook\uFF0C\u8FD4\u56DE\u6837\u5F0F\u7C7B\u540D\u548C\u6837\u5F0F\u7EC4\u4EF6\n * @param styleProps - \u6837\u5F0F\u5C5E\u6027\n */\nexport const useStyles = (styleProps: Partial<StylesProps>) => {\n const uid = useMemo(() => styleProps?.uid || generateUID(), [styleProps?.uid])\n\n const StyleComponent = useMemo(() => <Styles {...styleProps} uid={uid} />, [styleProps, uid])\n\n return {\n className: `block-${uid} `,\n StyleComponent,\n uid,\n } as const\n}\n\n/**\n * \u6837\u5F0F\u9AD8\u9636\u7EC4\u4EF6\uFF0C \u7528\u4E8E\u7ED9\u7EC4\u4EF6\u7528style \u6807\u7B7E\u7684\u5F62\u5F0F\u8FFD\u52A0\u6837\u5F0F\n * @param WrappedComponent - \u9700\u8981\u5305\u88C5\u7684\u7EC4\u4EF6\n * @param defaultStyleProps - \u9ED8\u8BA4\u6837\u5F0F\u5C5E\u6027\n */\nexport function withStyles<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n defaultStyleProps?: Partial<StylesProps>\n) {\n const WithStyles = function (props: Omit<P, keyof StylesProps> & Partial<StylesProps> & { className?: string }) {\n const finalStyleProps = {\n ...defaultStyleProps,\n ...getStylesProps(props),\n }\n\n const { className, StyleComponent } = useStyles(finalStyleProps)\n\n return (\n <>\n {StyleComponent}\n <WrappedComponent {...(props as P)} className={`${className} ${props.className}`} />\n </>\n )\n }\n\n // \u76F4\u63A5\u4F7F\u7528\u539F\u59CB\u7EC4\u4EF6\u7684\u540D\u79F0\n WithStyles.displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component'\n return WithStyles\n}\n"],
5
- "mappings": "AAkCS,OAqCH,YAAAA,EArCG,OAAAC,EAqCH,QAAAC,MArCG,oBAlCT,OAAgB,WAAAC,MAAe,QAc/B,MAAMC,EAAc,IACX,SAAS,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,GAM1EC,EAAqDC,GAAwC,CACxG,KAAM,CAAE,MAAAC,EAAO,IAAAC,EAAK,SAAAC,CAAS,EAAIH,EACjC,MAAO,CAAE,MAAAC,EAAO,IAAAC,EAAK,SAAAC,CAAS,CAChC,EAKMC,EAAgC,CAAC,CAAE,MAAAH,EAAO,IAAAC,EAAMJ,EAAY,EAAG,SAAAK,EAAW,EAAM,IAChF,CAACF,GAASE,EACL,KAGFR,EAAC,SAAM,yBAAwB,GAAC,gBAAeO,EAAM,mBAAUA,CAAG,MAAMD,CAAK,KAAK,EAO9EI,EAAaC,GAAqC,CAC7D,MAAMJ,EAAML,EAAQ,IAAMS,GAAY,KAAOR,EAAY,EAAG,CAACQ,GAAY,GAAG,CAAC,EAEvEC,EAAiBV,EAAQ,IAAMF,EAACS,EAAA,CAAQ,GAAGE,EAAY,IAAKJ,EAAK,EAAI,CAACI,EAAYJ,CAAG,CAAC,EAE5F,MAAO,CACL,UAAW,SAASA,CAAG,IACvB,eAAAK,EACA,IAAAL,CACF,CACF,EAOO,SAASM,EACdC,EACAC,EACA,CACA,MAAMC,EAAa,SAAUX,EAAmF,CAC9G,MAAMY,EAAkB,CACtB,GAAGF,EACH,GAAGX,EAAeC,CAAK,CACzB,EAEM,CAAE,UAAAa,EAAW,eAAAN,CAAe,EAAIF,EAAUO,CAAe,EAE/D,OACEhB,EAAAF,EAAA,CACG,UAAAa,EACDZ,EAACc,EAAA,CAAkB,GAAIT,EAAa,UAAW,GAAGa,CAAS,IAAIb,EAAM,SAAS,GAAI,GACpF,CAEJ,EAGA,OAAAW,EAAW,YAAcF,EAAiB,aAAeA,EAAiB,MAAQ,YAC3EE,CACT",
6
- "names": ["Fragment", "jsx", "jsxs", "useMemo", "generateUID", "getStylesProps", "props", "style", "uid", "disabled", "Styles", "useStyles", "styleProps", "StyleComponent", "withStyles", "WrappedComponent", "defaultStyleProps", "WithStyles", "finalStyleProps", "className"]
4
+ "sourcesContent": ["import React, { useMemo } from 'react'\nimport { simpleHash } from './simpleHash.js'\nimport getKeyPropsString from './getKeyPropsString.js'\n\nexport interface StylesProps {\n /** \u81EA\u5B9A\u4E49\u6837\u5F0F\u5B57\u7B26\u4E32 */\n style?: string\n /** \u552F\u4E00\u6807\u8BC6\u7B26 */\n uid?: string\n /** \u662F\u5426\u7981\u7528 */\n disabled?: boolean\n}\n\n/**\n * \u6839\u636E props \u751F\u6210\u786E\u5B9A\u6027 uid\n */\nconst generateUID = (props: Record<string, any>) => {\n const keyString = getKeyPropsString(props)\n return `style_${simpleHash(keyString)}`\n}\n\n/**\n * \u4ECE\u7EC4\u4EF6 props \u4E2D\u63D0\u53D6\u6837\u5F0F\u76F8\u5173\u5C5E\u6027\n */\nexport const getStylesProps = <T extends Record<string, unknown>>(props: T & StylesProps): StylesProps => {\n const { style, uid, disabled } = props\n return { style, uid, disabled }\n}\n\n/**\n * \u6837\u5F0F\u6CE8\u5165\u7EC4\u4EF6\n */\nconst Styles: React.FC<StylesProps> = ({ style, uid = generateUID({}), disabled = false }) => {\n if (!style || disabled) {\n return null\n }\n\n return <style suppressHydrationWarning data-style-id={uid}>{`.block-${uid} { ${style} }`}</style>\n}\n\n/**\n * \u6837\u5F0F Hook\uFF0C\u8FD4\u56DE\u6837\u5F0F\u7C7B\u540D\u548C\u6837\u5F0F\u7EC4\u4EF6\n * @param styleProps - \u6837\u5F0F\u5C5E\u6027\n */\nexport const useStyles = (styleProps: Partial<StylesProps>, data?: Record<string, any>) => {\n const uid = useMemo(() => styleProps?.uid || generateUID({ ...styleProps, data }), [data, styleProps])\n\n const StyleComponent = useMemo(() => <Styles {...styleProps} uid={uid} />, [styleProps, uid])\n\n return {\n className: `block-${uid} `,\n StyleComponent,\n uid,\n } as const\n}\n\n/**\n * \u6837\u5F0F\u9AD8\u9636\u7EC4\u4EF6\uFF0C \u7528\u4E8E\u7ED9\u7EC4\u4EF6\u7528style \u6807\u7B7E\u7684\u5F62\u5F0F\u8FFD\u52A0\u6837\u5F0F\n * @param WrappedComponent - \u9700\u8981\u5305\u88C5\u7684\u7EC4\u4EF6\n * @param defaultStyleProps - \u9ED8\u8BA4\u6837\u5F0F\u5C5E\u6027\n */\nexport function withStyles<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n defaultStyleProps?: Partial<StylesProps>\n) {\n const WithStyles = function (\n props: Omit<P, keyof StylesProps> & Partial<StylesProps> & { className?: string; data?: Record<string, any> }\n ) {\n const finalStyleProps = {\n ...defaultStyleProps,\n ...getStylesProps(props),\n }\n\n const { className, StyleComponent } = useStyles(finalStyleProps, props.data)\n\n return (\n <>\n {StyleComponent}\n <WrappedComponent {...(props as P)} className={`${className} ${props.className}`} />\n </>\n )\n }\n\n // \u76F4\u63A5\u4F7F\u7528\u539F\u59CB\u7EC4\u4EF6\u7684\u540D\u79F0\n WithStyles.displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component'\n return WithStyles\n}\n"],
5
+ "mappings": "AAqCS,OAuCH,YAAAA,EAvCG,OAAAC,EAuCH,QAAAC,MAvCG,oBArCT,OAAgB,WAAAC,MAAe,QAC/B,OAAS,cAAAC,MAAkB,kBAC3B,OAAOC,MAAuB,yBAc9B,MAAMC,EAAeC,GAA+B,CAClD,MAAMC,EAAYH,EAAkBE,CAAK,EACzC,MAAO,SAASH,EAAWI,CAAS,CAAC,EACvC,EAKaC,EAAqDF,GAAwC,CACxG,KAAM,CAAE,MAAAG,EAAO,IAAAC,EAAK,SAAAC,CAAS,EAAIL,EACjC,MAAO,CAAE,MAAAG,EAAO,IAAAC,EAAK,SAAAC,CAAS,CAChC,EAKMC,EAAgC,CAAC,CAAE,MAAAH,EAAO,IAAAC,EAAML,EAAY,CAAC,CAAC,EAAG,SAAAM,EAAW,EAAM,IAClF,CAACF,GAASE,EACL,KAGFX,EAAC,SAAM,yBAAwB,GAAC,gBAAeU,EAAM,mBAAUA,CAAG,MAAMD,CAAK,KAAK,EAO9EI,EAAY,CAACC,EAAkCC,IAA+B,CACzF,MAAML,EAAMR,EAAQ,IAAMY,GAAY,KAAOT,EAAY,CAAE,GAAGS,EAAY,KAAAC,CAAK,CAAC,EAAG,CAACA,EAAMD,CAAU,CAAC,EAE/FE,EAAiBd,EAAQ,IAAMF,EAACY,EAAA,CAAQ,GAAGE,EAAY,IAAKJ,EAAK,EAAI,CAACI,EAAYJ,CAAG,CAAC,EAE5F,MAAO,CACL,UAAW,SAASA,CAAG,IACvB,eAAAM,EACA,IAAAN,CACF,CACF,EAOO,SAASO,EACdC,EACAC,EACA,CACA,MAAMC,EAAa,SACjBd,EACA,CACA,MAAMe,EAAkB,CACtB,GAAGF,EACH,GAAGX,EAAeF,CAAK,CACzB,EAEM,CAAE,UAAAgB,EAAW,eAAAN,CAAe,EAAIH,EAAUQ,EAAiBf,EAAM,IAAI,EAE3E,OACEL,EAAAF,EAAA,CACG,UAAAiB,EACDhB,EAACkB,EAAA,CAAkB,GAAIZ,EAAa,UAAW,GAAGgB,CAAS,IAAIhB,EAAM,SAAS,GAAI,GACpF,CAEJ,EAGA,OAAAc,EAAW,YAAcF,EAAiB,aAAeA,EAAiB,MAAQ,YAC3EE,CACT",
6
+ "names": ["Fragment", "jsx", "jsxs", "useMemo", "simpleHash", "getKeyPropsString", "generateUID", "props", "keyString", "getStylesProps", "style", "uid", "disabled", "Styles", "useStyles", "styleProps", "data", "StyleComponent", "withStyles", "WrappedComponent", "defaultStyleProps", "WithStyles", "finalStyleProps", "className"]
7
7
  }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 选取关键 props 生成 key 字符串
3
+ */
4
+ export default function getKeyPropsString(props: Record<string, any>): string;
@@ -0,0 +1,2 @@
1
+ function n(e){return["style","className","id","name","type","data"].map(t=>{if(t==="data"&&typeof e[t]=="object"&&e[t]!==null)try{return JSON.stringify(e[t])}catch{return""}return e[t]!==void 0?String(e[t]):""}).join("|")}export{n as default};
2
+ //# sourceMappingURL=getKeyPropsString.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/shared/getKeyPropsString.ts"],
4
+ "sourcesContent": ["/**\n * \u9009\u53D6\u5173\u952E props \u751F\u6210 key \u5B57\u7B26\u4E32\n */\nexport default function getKeyPropsString(props: Record<string, any>): string {\n const keys = ['style', 'className', 'id', 'name', 'type', 'data']\n return keys\n .map(k => {\n if (k === 'data' && typeof props[k] === 'object' && props[k] !== null) {\n try {\n return JSON.stringify(props[k])\n } catch {\n return ''\n }\n }\n return props[k] !== undefined ? String(props[k]) : ''\n })\n .join('|')\n}\n"],
5
+ "mappings": "AAGe,SAARA,EAAmCC,EAAoC,CAE5E,MADa,CAAC,QAAS,YAAa,KAAM,OAAQ,OAAQ,MAAM,EAE7D,IAAIC,GAAK,CACR,GAAIA,IAAM,QAAU,OAAOD,EAAMC,CAAC,GAAM,UAAYD,EAAMC,CAAC,IAAM,KAC/D,GAAI,CACF,OAAO,KAAK,UAAUD,EAAMC,CAAC,CAAC,CAChC,MAAQ,CACN,MAAO,EACT,CAEF,OAAOD,EAAMC,CAAC,IAAM,OAAY,OAAOD,EAAMC,CAAC,CAAC,EAAI,EACrD,CAAC,EACA,KAAK,GAAG,CACb",
6
+ "names": ["getKeyPropsString", "props", "k"]
7
+ }
@@ -0,0 +1 @@
1
+ export declare function simpleHash(str: string): string;
@@ -0,0 +1,2 @@
1
+ function r(n){let t=5381;for(let e=0;e<n.length;e++)t=(t<<5)+t+n.charCodeAt(e);return Math.abs(t).toString(36)}export{r as simpleHash};
2
+ //# sourceMappingURL=simpleHash.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/shared/simpleHash.ts"],
4
+ "sourcesContent": ["export function simpleHash(str: string): string {\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i)\n }\n return Math.abs(hash).toString(36)\n}\n"],
5
+ "mappings": "AAAO,SAASA,EAAWC,EAAqB,CAC9C,IAAIC,EAAO,KACX,QAASC,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC9BD,GAAQA,GAAQ,GAAKA,EAAOD,EAAI,WAAWE,CAAC,EAE9C,OAAO,KAAK,IAAID,CAAI,EAAE,SAAS,EAAE,CACnC",
6
+ "names": ["simpleHash", "str", "hash", "i"]
7
+ }
@@ -5,6 +5,7 @@ declare const meta: {
5
5
  component: {
6
6
  (props: Omit<import("../biz-components/HeroBanner/types.js").HeroBannerProps & import("react").RefAttributes<HTMLDivElement>, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
7
7
  className?: string;
8
+ data?: Record<string, any>;
8
9
  }): import("react/jsx-runtime").JSX.Element;
9
10
  displayName: string;
10
11
  };
@@ -4,6 +4,7 @@ declare const meta: {
4
4
  component: {
5
5
  (props: Omit<import("../biz-components/BrandEquity/BrandEquity.js").BrandEquityProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
6
6
  className?: string;
7
+ data?: Record<string, any>;
7
8
  }): import("react/jsx-runtime").JSX.Element;
8
9
  displayName: string;
9
10
  };
@@ -4,6 +4,7 @@ declare const meta: {
4
4
  component: {
5
5
  (props: Omit<import("../biz-components/Category/index.js").CategoryProps, keyof import("../shared/Styles.js").StylesProps> & Partial<import("../shared/Styles.js").StylesProps> & {
6
6
  className?: string;
7
+ data?: Record<string, any>;
7
8
  }): import("react/jsx-runtime").JSX.Element;
8
9
  displayName: string;
9
10
  };