@anker-in/headless-ui 1.1.17-alpha.1766575112329 → 1.1.17-alpha.1766632484945

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 (27) hide show
  1. package/dist/cjs/biz-components/AnchorNavigation/index.d.ts +6 -0
  2. package/dist/cjs/biz-components/AnchorNavigation/index.js +1 -1
  3. package/dist/cjs/biz-components/AnchorNavigation/index.js.map +3 -3
  4. package/dist/cjs/biz-components/EventSchedule/index.d.ts +23 -34
  5. package/dist/cjs/biz-components/EventSchedule/index.js +1 -1
  6. package/dist/cjs/biz-components/EventSchedule/index.js.map +3 -3
  7. package/dist/cjs/biz-components/PromotionalBar/index.d.ts +21 -14
  8. package/dist/cjs/biz-components/PromotionalBar/index.js +1 -1
  9. package/dist/cjs/biz-components/PromotionalBar/index.js.map +3 -3
  10. package/dist/cjs/stories/eventSchedule.stories.js +1 -1
  11. package/dist/cjs/stories/eventSchedule.stories.js.map +2 -2
  12. package/dist/cjs/stories/promotionalBar.stories.js +1 -1
  13. package/dist/cjs/stories/promotionalBar.stories.js.map +2 -2
  14. package/dist/esm/biz-components/AnchorNavigation/index.d.ts +6 -0
  15. package/dist/esm/biz-components/AnchorNavigation/index.js +1 -1
  16. package/dist/esm/biz-components/AnchorNavigation/index.js.map +3 -3
  17. package/dist/esm/biz-components/EventSchedule/index.d.ts +23 -34
  18. package/dist/esm/biz-components/EventSchedule/index.js +1 -1
  19. package/dist/esm/biz-components/EventSchedule/index.js.map +3 -3
  20. package/dist/esm/biz-components/PromotionalBar/index.d.ts +21 -14
  21. package/dist/esm/biz-components/PromotionalBar/index.js +1 -1
  22. package/dist/esm/biz-components/PromotionalBar/index.js.map +3 -3
  23. package/dist/esm/stories/eventSchedule.stories.js +1 -1
  24. package/dist/esm/stories/eventSchedule.stories.js.map +2 -2
  25. package/dist/esm/stories/promotionalBar.stories.js +1 -1
  26. package/dist/esm/stories/promotionalBar.stories.js.map +2 -2
  27. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/eventSchedule.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport React from 'react'\n\nimport EventSchedule, { type EventScheduleData } from '../biz-components/EventSchedule/index.js'\n\n// \u6A21\u62DF\u56FE\u6807\u7EC4\u4EF6\nconst CalendarIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.833 3.333h-11.666c-.92 0-1.667.746-1.667 1.667v11.667c0 .92.746 1.666 1.667 1.666h11.666c.92 0 1.667-.746 1.667-1.666V5c0-.921-.746-1.667-1.667-1.667z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.333 1.667V5M6.667 1.667V5M2.5 8.333h15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nconst ClockIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18.333a8.333 8.333 0 100-16.666 8.333 8.333 0 000 16.666z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 5v5l3.333 1.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nconst GiftIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.667 10v6.667c0 .442-.176.866-.489 1.179-.313.312-.737.488-1.178.488H5c-.442 0-.866-.176-1.179-.488A1.667 1.667 0 013.333 16.667V10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.333 5.833v4.167H1.667V5.833c0-.442.175-.866.488-1.178.313-.313.737-.489 1.179-.489h13.333c.441 0 .865.176 1.178.489.313.312.489.736.489 1.178zM10 18.333V4.167\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 4.167H6.25A2.083 2.083 0 014.167 2.083c0-1.15.933-2.083 2.083-2.083C8.333 0 10 4.167 10 4.167zM10 4.167h3.75a2.083 2.083 0 002.083-2.084c0-1.15-.933-2.083-2.083-2.083C11.667 0 10 4.167 10 4.167z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n// \u6A21\u62DF\u4E1A\u52A1\u6570\u636E\nconst mockData: EventScheduleData = {\n scheduleList: [\n {\n title: '\u65E9\u9E1F\u4E13\u5C5E\u798F\u5229',\n startDate: '2024-12-01',\n endDate: '2024-12-15',\n items: [\n {\n icon: <CalendarIcon />,\n label: '12\u67081\u65E5 - 12\u670815\u65E5',\n },\n {\n icon: <ClockIcon />,\n label: '\u9650\u65F6\u4F18\u60E0 48 \u5C0F\u65F6',\n },\n {\n icon: <GiftIcon />,\n label: '\u8D2D\u4E70\u5373\u9001\u7CBE\u7F8E\u793C\u54C1',\n },\n ],\n },\n {\n title: '\u5723\u8BDE\u7279\u60E0\u6D3B\u52A8',\n startDate: '2024-12-16',\n endDate: '2024-12-31',\n items: [\n {\n icon: <CalendarIcon />,\n label: '12\u670816\u65E5 - 12\u670831\u65E5',\n },\n {\n icon: <ClockIcon />,\n label: '\u5168\u5929\u5019\u4F18\u60E0',\n },\n {\n icon: <GiftIcon />,\n label: '\u6EE1\u989D\u8D60\u9001\u5723\u8BDE\u793C\u76D2',\n },\n ],\n },\n ],\n backgroundImage: {\n active: {\n mobile: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_1.jpg?v=1766391000',\n laptop: 'https://example.com/laptop.jpg',\n desktop:\n 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_1_c4d0ec1e-5484-46be-af8c-273935f4ba28.jpg?v=1766398957',\n lgDesktop:\n 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_1_44d92293-1f4b-483a-8233-6277b0437e7c.jpg?v=1766391004',\n },\n inactive: {\n mobile: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_2.jpg?v=1766390999',\n laptop: 'https://example.com/laptop.jpg',\n desktop:\n 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_2_99fd4944-58ee-4c90-9b0d-b758926386fe.jpg?v=1766398957',\n lgDesktop:\n 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_2_844d5e75-a3d2-4f2b-b1a6-cad60c67c871.jpg?v=1766391005',\n },\n },\n}\n\n// \u4E09\u4E2A\u6D3B\u52A8\u7684\u6570\u636E\nconst threeEventsData: EventScheduleData = {\n scheduleList: [\n {\n title: '\u65B0\u5E74\u9884\u70ED\u6D3B\u52A8',\n startDate: '2024-12-01',\n endDate: '2024-12-10',\n items: [\n {\n icon: <CalendarIcon />,\n label: '12\u67081\u65E5 - 12\u670810\u65E5',\n },\n {\n icon: <ClockIcon />,\n label: '\u6BCF\u65E5\u4E0A\u534810\u70B9\u5F00\u62A2',\n },\n {\n icon: <GiftIcon />,\n label: '\u524D100\u540D\u9001\u795E\u79D8\u793C\u7269',\n },\n ],\n },\n {\n title: '\u5723\u8BDE\u72C2\u6B22',\n startDate: '2024-12-11',\n endDate: '2024-12-25',\n items: [\n {\n icon: <CalendarIcon />,\n label: '12\u670811\u65E5 - 12\u670825\u65E5',\n },\n {\n icon: <ClockIcon />,\n label: '\u5168\u5929\u4F18\u60E0\u4E0D\u95F4\u65AD',\n },\n {\n icon: <GiftIcon />,\n label: '\u6EE1\u51CF\u6D3B\u52A8\u6700\u9AD8\u7701500',\n },\n ],\n },\n {\n title: '\u8DE8\u5E74\u7279\u60E0',\n startDate: '2024-12-26',\n endDate: '2025-01-01',\n items: [\n {\n icon: <CalendarIcon />,\n label: '12\u670826\u65E5 - 1\u67081\u65E5',\n },\n {\n icon: <ClockIcon />,\n label: '\u5012\u8BA1\u65F6\u7279\u60E0',\n },\n {\n icon: <GiftIcon />,\n label: '\u65B0\u5E74\u793C\u5305\u9650\u91CF\u62A2\u8D2D',\n },\n ],\n },\n ],\n}\n\nconst meta = {\n title: 'Biz Components/EventSchedule',\n component: EventSchedule,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: '\u6D3B\u52A8\u65E5\u7A0B\u7EC4\u4EF6 - \u5C55\u793A\u6D3B\u52A8\u65F6\u95F4\u8F74\u548C\u8BE6\u7EC6\u4FE1\u606F\u5361\u7247\uFF0C\u652F\u6301\u591A\u4E2A\u6D3B\u52A8\u540C\u65F6\u5C55\u793A\uFF0C\u5E26\u6709\u6FC0\u6D3B\u72B6\u6001\u6307\u793A',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n data: {\n description: '\u4E1A\u52A1\u6570\u636E\uFF0C\u5305\u542B\u65E5\u7A0B\u5217\u8868',\n control: { type: 'object' },\n },\n 'data.showTimeline': {\n description: '\u662F\u5426\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u9ED8\u8BA4\u4E3A true',\n control: { type: 'boolean' },\n table: {\n defaultValue: { summary: 'true' },\n type: { summary: 'boolean' },\n },\n },\n className: {\n description: '\u81EA\u5B9A\u4E49\u6837\u5F0F\u7C7B\u540D',\n control: { type: 'text' },\n },\n },\n} satisfies Meta<typeof EventSchedule>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\n/**\n * \u9ED8\u8BA4\u5C55\u793A - \u4E24\u4E2A\u6D3B\u52A8\n */\nexport const Default: Story = {\n args: {\n data: mockData,\n },\n}\n\n/**\n * \u4E09\u4E2A\u6D3B\u52A8\u5C55\u793A\n */\nexport const ThreeEvents: Story = {\n args: {\n data: threeEventsData,\n },\n}\n\n/**\n * \u5355\u4E2A\u6D3B\u52A8\n */\nexport const SingleEvent: Story = {\n args: {\n data: {\n scheduleList: [\n {\n title: '\u9650\u65F6\u79D2\u6740\u6D3B\u52A8',\n startDate: '2025-12-23',\n endDate: '2025-12-23',\n items: [\n {\n icon: <CalendarIcon />,\n label: '12\u67081\u65E5\u5168\u5929',\n },\n {\n icon: <ClockIcon />,\n label: '\u6BCF\u5C0F\u65F6\u6574\u70B9\u5F00\u62A2',\n },\n {\n icon: <GiftIcon />,\n label: '\u79D2\u6740\u4EF7\u4F4E\u81F33\u6298',\n },\n ],\n },\n ],\n },\n },\n}\n\n/**\n * \u81EA\u52A8\u5224\u65AD\u6FC0\u6D3B\u72B6\u6001 - \u6839\u636E\u5F53\u524D\u65F6\u95F4\u81EA\u52A8\u5224\u65AD\u54EA\u4E2A\u6D3B\u52A8\u662F\u6FC0\u6D3B\u72B6\u6001\n * \u8FD9\u4E2A\u793A\u4F8B\u5C55\u793A\u4E86\u7EC4\u4EF6\u5982\u4F55\u6839\u636E startDate \u548C endDate \u81EA\u52A8\u5224\u65AD\u6D3B\u52A8\u662F\u5426\u6FC0\u6D3B\n */\nexport const AutoActiveStatus: Story = {\n args: {\n data: {\n scheduleList: [\n {\n title: '\u5DF2\u7ED3\u675F\u7684\u6D3B\u52A8',\n startDate: '2024-01-01',\n endDate: '2024-01-31',\n items: [\n {\n icon: <CalendarIcon />,\n label: '1\u67081\u65E5 - 1\u670831\u65E5',\n },\n {\n icon: <ClockIcon />,\n label: '\u5DF2\u7ED3\u675F',\n },\n {\n icon: <GiftIcon />,\n label: '\u611F\u8C22\u53C2\u4E0E',\n },\n ],\n },\n {\n title: '\u8FDB\u884C\u4E2D\u7684\u6D3B\u52A8',\n startDate: '2025-01-01',\n endDate: '2025-12-31',\n items: [\n {\n icon: <CalendarIcon />,\n label: '2025\u5E74\u5168\u5E74',\n },\n {\n icon: <ClockIcon />,\n label: '\u6B63\u5728\u8FDB\u884C\u4E2D',\n },\n {\n icon: <GiftIcon />,\n label: '\u9650\u65F6\u4F18\u60E0',\n },\n ],\n },\n {\n title: '\u5373\u5C06\u5F00\u59CB\u7684\u6D3B\u52A8',\n startDate: '2026-01-01',\n endDate: '2026-12-31',\n items: [\n {\n icon: <CalendarIcon />,\n label: '2026\u5E74\u5F00\u59CB',\n },\n {\n icon: <ClockIcon />,\n label: '\u656C\u8BF7\u671F\u5F85',\n },\n {\n icon: <GiftIcon />,\n label: '\u8D85\u503C\u798F\u5229',\n },\n ],\n },\n ],\n },\n },\n}\n\n/**\n * \u9690\u85CF\u65F6\u95F4\u8F74 - \u4E0D\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u53EA\u663E\u793A\u6D3B\u52A8\u5361\u7247\n */\nexport const WithoutTimeline: Story = {\n args: {\n data: {\n ...mockData,\n showTimeline: false,\n },\n },\n}\n\n/**\n * \u9690\u85CF\u65F6\u95F4\u8F74 - \u4E09\u4E2A\u6D3B\u52A8\n */\nexport const ThreeEventsWithoutTimeline: Story = {\n args: {\n data: {\n ...threeEventsData,\n showTimeline: false,\n },\n },\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,YAAAC,EAAA,gBAAAC,EAAA,gBAAAC,EAAA,+BAAAC,EAAA,oBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAT,GAOE,IAAAU,EAAA,6BANFC,EAAkB,iBAElBC,EAAsD,uDAGtD,MAAMC,EAAe,OACnB,QAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAChE,oBAAC,QACC,EAAE,6JACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACjB,KACA,OAAC,QACC,EAAE,6CACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACjB,GACF,EAGIC,EAAY,OAChB,QAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAChE,oBAAC,QACC,EAAE,gEACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACjB,KACA,OAAC,QACC,EAAE,sBACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACjB,GACF,EAGIC,EAAW,OACf,QAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAChE,oBAAC,QACC,EAAE,yIACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACjB,KACA,OAAC,QACC,EAAE,qKACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACjB,KACA,OAAC,QACC,EAAE,yMACF,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACjB,GACF,EAIIC,EAA8B,CAClC,aAAc,CACZ,CACE,MAAO,uCACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACH,EAAA,EAAa,EACpB,MAAO,oCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,0CACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,kDACT,CACF,CACF,EACA,CACE,MAAO,uCACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACF,EAAA,EAAa,EACpB,MAAO,qCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,gCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,kDACT,CACF,CACF,CACF,EACA,gBAAiB,CACf,OAAQ,CACN,OAAQ,gFACR,OAAQ,iCACR,QACE,qHACF,UACE,oHACJ,EACA,SAAU,CACR,OAAQ,gFACR,OAAQ,iCACR,QACE,qHACF,UACE,oHACJ,CACF,CACF,EAGME,EAAqC,CACzC,aAAc,CACZ,CACE,MAAO,uCACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACJ,EAAA,EAAa,EACpB,MAAO,oCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,8CACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,+CACT,CACF,CACF,EACA,CACE,MAAO,2BACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACF,EAAA,EAAa,EACpB,MAAO,qCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,4CACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,+CACT,CACF,CACF,EACA,CACE,MAAO,2BACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACF,EAAA,EAAa,EACpB,MAAO,mCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,gCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,kDACT,CACF,CACF,CACF,CACF,EAEMG,EAAO,CACX,MAAO,+BACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,qPACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,EACjB,SAAU,CACR,KAAM,CACJ,YAAa,qEACb,QAAS,CAAE,KAAM,QAAS,CAC5B,EACA,oBAAqB,CACnB,YAAa,0EACb,QAAS,CAAE,KAAM,SAAU,EAC3B,MAAO,CACL,aAAc,CAAE,QAAS,MAAO,EAChC,KAAM,CAAE,QAAS,SAAU,CAC7B,CACF,EACA,UAAW,CACT,YAAa,6CACb,QAAS,CAAE,KAAM,MAAO,CAC1B,CACF,CACF,EAEA,IAAOX,EAAQU,EAMR,MAAMf,EAAiB,CAC5B,KAAM,CACJ,KAAMa,CACR,CACF,EAKaX,EAAqB,CAChC,KAAM,CACJ,KAAMY,CACR,CACF,EAKab,EAAqB,CAChC,KAAM,CACJ,KAAM,CACJ,aAAc,CACZ,CACE,MAAO,uCACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACS,EAAA,EAAa,EACpB,MAAO,6BACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,4CACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,uCACT,CACF,CACF,CACF,CACF,CACF,CACF,EAMab,EAA0B,CACrC,KAAM,CACJ,KAAM,CACJ,aAAc,CACZ,CACE,MAAO,uCACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACW,EAAA,EAAa,EACpB,MAAO,kCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,oBACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,0BACT,CACF,CACF,EACA,CACE,MAAO,uCACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACF,EAAA,EAAa,EACpB,MAAO,wBACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,gCACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,0BACT,CACF,CACF,EACA,CACE,MAAO,6CACP,UAAW,aACX,QAAS,aACT,MAAO,CACL,CACE,QAAM,OAACF,EAAA,EAAa,EACpB,MAAO,wBACT,EACA,CACE,QAAM,OAACC,EAAA,EAAU,EACjB,MAAO,0BACT,EACA,CACE,QAAM,OAACC,EAAA,EAAS,EAChB,MAAO,0BACT,CACF,CACF,CACF,CACF,CACF,CACF,EAKaR,EAAyB,CACpC,KAAM,CACJ,KAAM,CACJ,GAAGS,EACH,aAAc,EAChB,CACF,CACF,EAKaV,EAAoC,CAC/C,KAAM,CACJ,KAAM,CACJ,GAAGW,EACH,aAAc,EAChB,CACF,CACF",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\nimport React from 'react'\n\nimport EventSchedule, { type EventScheduleData } from '../biz-components/EventSchedule/index.js'\n\n// \u6A21\u62DF\u56FE\u6807\u7EC4\u4EF6\nconst CalendarIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M15.833 3.333h-11.666c-.92 0-1.667.746-1.667 1.667v11.667c0 .92.746 1.666 1.667 1.666h11.666c.92 0 1.667-.746 1.667-1.666V5c0-.921-.746-1.667-1.667-1.667z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M13.333 1.667V5M6.667 1.667V5M2.5 8.333h15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nconst ClockIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 18.333a8.333 8.333 0 100-16.666 8.333 8.333 0 000 16.666z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 5v5l3.333 1.667\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\nconst GiftIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M16.667 10v6.667c0 .442-.176.866-.489 1.179-.313.312-.737.488-1.178.488H5c-.442 0-.866-.176-1.179-.488A1.667 1.667 0 013.333 16.667V10\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18.333 5.833v4.167H1.667V5.833c0-.442.175-.866.488-1.178.313-.313.737-.489 1.179-.489h13.333c.441 0 .865.176 1.178.489.313.312.489.736.489 1.178zM10 18.333V4.167\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M10 4.167H6.25A2.083 2.083 0 014.167 2.083c0-1.15.933-2.083 2.083-2.083C8.333 0 10 4.167 10 4.167zM10 4.167h3.75a2.083 2.083 0 002.083-2.084c0-1.15-.933-2.083-2.083-2.083C11.667 0 10 4.167 10 4.167z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n\n// \u6A21\u62DF\u4E1A\u52A1\u6570\u636E\nconst mockData: EventScheduleData = {\n scheduleList: [\n {\n title: '\u65E9\u9E1F\u4E13\u5C5E\u798F\u5229',\n startDate: '2024-12-01',\n endDate: '2024-12-15',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '12\u67081\u65E5 - 12\u670815\u65E5',\n },\n {\n // icon: <ClockIcon />,\n label: '\u9650\u65F6\u4F18\u60E0 48 \u5C0F\u65F6',\n },\n {\n // icon: <GiftIcon />,\n label: '\u8D2D\u4E70\u5373\u9001\u7CBE\u7F8E\u793C\u54C1',\n },\n ],\n },\n {\n title: '\u5723\u8BDE\u7279\u60E0\u6D3B\u52A8',\n startDate: '2024-12-16',\n endDate: '2024-12-31',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '12\u670816\u65E5 - 12\u670831\u65E5',\n },\n {\n // icon: <ClockIcon />,\n label: '\u5168\u5929\u5019\u4F18\u60E0',\n },\n {\n // icon: <GiftIcon />,\n label: '\u6EE1\u989D\u8D60\u9001\u5723\u8BDE\u793C\u76D2',\n },\n ],\n },\n ],\n backgroundImage: {\n active: {\n mobile: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_1.jpg?v=1766391000',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n laptop: {\n url: 'https://example.com/laptop.jpg',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n desktop:\n {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_1_c4d0ec1e-5484-46be-af8c-273935f4ba28.jpg?v=1766398957',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n lgDesktop:\n {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_1_44d92293-1f4b-483a-8233-6277b0437e7c.jpg?v=1766391004',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n },\n inactive: {\n mobile: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_2.jpg?v=1766390999',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n laptop: {\n url: 'https://example.com/laptop.jpg',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n desktop:\n {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_2_99fd4944-58ee-4c90-9b0d-b758926386fe.jpg?v=1766398957',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n lgDesktop:\n {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/1_2_2_844d5e75-a3d2-4f2b-b1a6-cad60c67c871.jpg?v=1766391005',\n alt: 'Event schedule image',\n thumbnailURL: 'https://example.com/laptop.jpg',\n mimeType: 'image/jpeg',\n },\n },\n },\n}\n\n// \u4E09\u4E2A\u6D3B\u52A8\u7684\u6570\u636E\nconst threeEventsData: EventScheduleData = {\n scheduleList: [\n {\n title: '\u65B0\u5E74\u9884\u70ED\u6D3B\u52A8',\n startDate: '2024-12-01',\n endDate: '2024-12-10',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '12\u67081\u65E5 - 12\u670810\u65E5',\n },\n {\n // icon: <ClockIcon />,\n label: '\u6BCF\u65E5\u4E0A\u534810\u70B9\u5F00\u62A2',\n },\n {\n // icon: <GiftIcon />,\n label: '\u524D100\u540D\u9001\u795E\u79D8\u793C\u7269',\n },\n ],\n },\n {\n title: '\u5723\u8BDE\u72C2\u6B22',\n startDate: '2024-12-11',\n endDate: '2024-12-25',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '12\u670811\u65E5 - 12\u670825\u65E5',\n },\n {\n // icon: <ClockIcon />,\n label: '\u5168\u5929\u4F18\u60E0\u4E0D\u95F4\u65AD',\n },\n {\n // icon: <GiftIcon />,\n label: '\u6EE1\u51CF\u6D3B\u52A8\u6700\u9AD8\u7701500',\n },\n ],\n },\n {\n title: '\u8DE8\u5E74\u7279\u60E0',\n startDate: '2024-12-26',\n endDate: '2025-01-01',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '12\u670826\u65E5 - 1\u67081\u65E5',\n },\n {\n // icon: <ClockIcon />,\n label: '\u5012\u8BA1\u65F6\u7279\u60E0',\n },\n {\n // icon: <GiftIcon />,\n label: '\u65B0\u5E74\u793C\u5305\u9650\u91CF\u62A2\u8D2D',\n },\n ],\n },\n ],\n}\n\nconst meta = {\n title: 'Biz Components/EventSchedule',\n component: EventSchedule,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: '\u6D3B\u52A8\u65E5\u7A0B\u7EC4\u4EF6 - \u5C55\u793A\u6D3B\u52A8\u65F6\u95F4\u8F74\u548C\u8BE6\u7EC6\u4FE1\u606F\u5361\u7247\uFF0C\u652F\u6301\u591A\u4E2A\u6D3B\u52A8\u540C\u65F6\u5C55\u793A\uFF0C\u5E26\u6709\u6FC0\u6D3B\u72B6\u6001\u6307\u793A',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n data: {\n description: '\u4E1A\u52A1\u6570\u636E\uFF0C\u5305\u542B\u65E5\u7A0B\u5217\u8868',\n control: { type: 'object' },\n },\n 'data.showTimeline': {\n description: '\u662F\u5426\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u9ED8\u8BA4\u4E3A true',\n control: { type: 'boolean' },\n table: {\n defaultValue: { summary: 'true' },\n type: { summary: 'boolean' },\n },\n },\n className: {\n description: '\u81EA\u5B9A\u4E49\u6837\u5F0F\u7C7B\u540D',\n control: { type: 'text' },\n },\n },\n} satisfies Meta<typeof EventSchedule>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\n/**\n * \u9ED8\u8BA4\u5C55\u793A - \u4E24\u4E2A\u6D3B\u52A8\n */\nexport const Default: Story = {\n args: {\n data: mockData,\n },\n}\n\n/**\n * \u4E09\u4E2A\u6D3B\u52A8\u5C55\u793A\n */\nexport const ThreeEvents: Story = {\n args: {\n data: threeEventsData,\n },\n}\n\n/**\n * \u5355\u4E2A\u6D3B\u52A8\n */\nexport const SingleEvent: Story = {\n args: {\n data: {\n scheduleList: [\n {\n title: '\u9650\u65F6\u79D2\u6740\u6D3B\u52A8',\n startDate: '2025-12-23',\n endDate: '2025-12-23',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '12\u67081\u65E5\u5168\u5929',\n },\n {\n // icon: <ClockIcon />,\n label: '\u6BCF\u5C0F\u65F6\u6574\u70B9\u5F00\u62A2',\n },\n {\n // icon: <GiftIcon />,\n label: '\u79D2\u6740\u4EF7\u4F4E\u81F33\u6298',\n },\n ],\n },\n ],\n },\n },\n}\n\n/**\n * \u81EA\u52A8\u5224\u65AD\u6FC0\u6D3B\u72B6\u6001 - \u6839\u636E\u5F53\u524D\u65F6\u95F4\u81EA\u52A8\u5224\u65AD\u54EA\u4E2A\u6D3B\u52A8\u662F\u6FC0\u6D3B\u72B6\u6001\n * \u8FD9\u4E2A\u793A\u4F8B\u5C55\u793A\u4E86\u7EC4\u4EF6\u5982\u4F55\u6839\u636E startDate \u548C endDate \u81EA\u52A8\u5224\u65AD\u6D3B\u52A8\u662F\u5426\u6FC0\u6D3B\n */\nexport const AutoActiveStatus: Story = {\n args: {\n data: {\n scheduleList: [\n {\n title: '\u5DF2\u7ED3\u675F\u7684\u6D3B\u52A8',\n startDate: '2024-01-01',\n endDate: '2024-01-31',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '1\u67081\u65E5 - 1\u670831\u65E5',\n },\n {\n // icon: <ClockIcon />,\n label: '\u5DF2\u7ED3\u675F',\n },\n {\n // icon: <GiftIcon />,\n label: '\u611F\u8C22\u53C2\u4E0E',\n },\n ],\n },\n {\n title: '\u8FDB\u884C\u4E2D\u7684\u6D3B\u52A8',\n startDate: '2025-01-01',\n endDate: '2025-12-31',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '2025\u5E74\u5168\u5E74',\n },\n {\n // icon: <ClockIcon />,\n label: '\u6B63\u5728\u8FDB\u884C\u4E2D',\n },\n {\n // icon: <GiftIcon />,\n label: '\u9650\u65F6\u4F18\u60E0',\n },\n ],\n },\n {\n title: '\u5373\u5C06\u5F00\u59CB\u7684\u6D3B\u52A8',\n startDate: '2026-01-01',\n endDate: '2026-12-31',\n items: [\n {\n // icon: <CalendarIcon />,\n label: '2026\u5E74\u5F00\u59CB',\n },\n {\n // icon: <ClockIcon />,\n label: '\u656C\u8BF7\u671F\u5F85',\n },\n {\n // icon: <GiftIcon />,\n label: '\u8D85\u503C\u798F\u5229',\n },\n ],\n },\n ],\n },\n },\n}\n\n/**\n * \u9690\u85CF\u65F6\u95F4\u8F74 - \u4E0D\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u53EA\u663E\u793A\u6D3B\u52A8\u5361\u7247\n */\nexport const WithoutTimeline: Story = {\n args: {\n data: {\n ...mockData,\n showTimeline: false,\n },\n },\n}\n\n/**\n * \u9690\u85CF\u65F6\u95F4\u8F74 - \u4E09\u4E2A\u6D3B\u52A8\n */\nexport const ThreeEventsWithoutTimeline: Story = {\n args: {\n data: {\n ...threeEventsData,\n showTimeline: false,\n },\n },\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["eventSchedule_stories_exports", "__export", "AutoActiveStatus", "Default", "SingleEvent", "ThreeEvents", "ThreeEventsWithoutTimeline", "WithoutTimeline", "eventSchedule_stories_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_EventSchedule", "CalendarIcon", "ClockIcon", "GiftIcon", "mockData", "threeEventsData", "meta", "EventSchedule"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var r=Object.create;var p=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var u=(o,t)=>{for(var s in t)p(o,s,{get:t[s],enumerable:!0})},n=(o,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of c(t))!m.call(o,e)&&e!==s&&p(o,e,{get:()=>t[e],enumerable:!(i=a(t,e))||i.enumerable});return o};var d=(o,t,s)=>(s=o!=null?r(f(o)):{},n(t||!o||!o.__esModule?p(s,"default",{value:o,enumerable:!0}):s,o)),h=o=>n(p({},"__esModule",{value:!0}),o);var S={};u(S,{Default:()=>b,FullFeatures:()=>D,ResponsiveBackground:()=>G,WithoutButton:()=>k,default:()=>j});module.exports=h(S);var l=d(require("../biz-components/PromotionalBar/index.js"));const g={contentTitle:"Special Promotion",contentDesc:"Get amazing deals on our best-selling products this season",buttonText:"Shop Now",buttonLink:"#",backgroundImage:{mobile:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",tablet:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",laptop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",desktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",lgDesktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189"}},y={contentTitle:"Exclusive Offer",contentDesc:"Limited time deals with free shipping on orders over $50",buttonText:"Learn More",buttonLink:"#",backgroundImage:{mobile:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",tablet:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",laptop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",desktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",lgDesktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189"}},v={title:"Biz Components/PromotionalBar",component:l.default,parameters:{layout:"fullscreen",docs:{description:{component:"\u63A8\u5E7F\u680F\u7EC4\u4EF6 - \u652F\u6301\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u3001\u6807\u9898\u3001\u63CF\u8FF0\u548C\u884C\u52A8\u6309\u94AE"}}},tags:["autodocs"],argTypes:{data:{description:"\u4E1A\u52A1\u6570\u636E\uFF0C\u5305\u542B\u6807\u9898\u3001\u63CF\u8FF0\u3001\u6309\u94AE\u548C\u80CC\u666F\u56FE\u7247"}},args:{data:g}};var j=v;const b={args:{}},G={args:{data:y}},k={args:{data:{contentTitle:"New Arrivals",contentDesc:"Check out our latest collection of premium products",backgroundImage:{mobile:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",tablet:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",laptop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",desktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",lgDesktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189"}}}},D={args:{data:{contentTitle:"Up to 50% Off",contentDesc:"Enjoy massive discounts on thousands of items. Limited time offer!",buttonText:"Shop Now",buttonLink:"/sale",backgroundImage:{mobile:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",tablet:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",laptop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",desktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",lgDesktop:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189"}}}};
1
+ "use strict";var m=Object.create;var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var c=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},l=(o,e,t,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of n(e))!g.call(o,i)&&i!==t&&s(o,i,{get:()=>e[i],enumerable:!(p=r(e,i))||p.enumerable});return o};var u=(o,e,t)=>(t=o!=null?m(f(o)):{},l(e||!o||!o.__esModule?s(t,"default",{value:o,enumerable:!0}):t,o)),h=o=>l(s({},"__esModule",{value:!0}),o);var L={};c(L,{Default:()=>v,FullFeatures:()=>P,ResponsiveBackground:()=>G,WithoutButton:()=>T,default:()=>b});module.exports=h(L);var a=u(require("../biz-components/PromotionalBar/index.js"));const y={contentTitle:"Special Promotion",contentDesc:"Get amazing deals on our best-selling products this season",buttonText:"Shop Now",buttonLink:"#",backgroundImage:{mobile:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",mimeType:"image/jpeg"},tablet:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",mimeType:"image/jpeg"},laptop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",mimeType:"image/jpeg"},desktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",mimeType:"image/jpeg"},lgDesktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",mimeType:"image/jpeg"}}},d={contentTitle:"Exclusive Offer",contentDesc:"Limited time deals with free shipping on orders over $50",buttonText:"Learn More",buttonLink:"#",backgroundImage:{mobile:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",mimeType:"image/jpeg"},tablet:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",mimeType:"image/jpeg"},laptop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",mimeType:"image/jpeg"},desktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",mimeType:"image/jpeg"},lgDesktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",mimeType:"image/jpeg"}}},j={title:"Biz Components/PromotionalBar",component:a.default,parameters:{layout:"fullscreen",docs:{description:{component:"\u63A8\u5E7F\u680F\u7EC4\u4EF6 - \u652F\u6301\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u3001\u6807\u9898\u3001\u63CF\u8FF0\u548C\u884C\u52A8\u6309\u94AE"}}},tags:["autodocs"],argTypes:{data:{description:"\u4E1A\u52A1\u6570\u636E\uFF0C\u5305\u542B\u6807\u9898\u3001\u63CF\u8FF0\u3001\u6309\u94AE\u548C\u80CC\u666F\u56FE\u7247"}},args:{data:y}};var b=j;const v={args:{}},G={args:{data:d}},T={args:{data:{contentTitle:"New Arrivals",contentDesc:"Check out our latest collection of premium products",backgroundImage:{mobile:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",mimeType:"image/jpeg"},tablet:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",mimeType:"image/jpeg"},laptop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",mimeType:"image/jpeg"},desktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",mimeType:"image/jpeg"},lgDesktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",mimeType:"image/jpeg"}}}}},P={args:{data:{contentTitle:"Up to 50% Off",contentDesc:"Enjoy massive discounts on thousands of items. Limited time offer!",buttonText:"Shop Now",buttonLink:"/sale",backgroundImage:{mobile:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188",mimeType:"image/jpeg"},tablet:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189",mimeType:"image/jpeg"},laptop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189",mimeType:"image/jpeg"},desktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189",mimeType:"image/jpeg"},lgDesktop:{url:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",alt:"Promotional bar image",thumbnailURL:"https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189",mimeType:"image/jpeg"}}}}};
2
2
  //# sourceMappingURL=promotionalBar.stories.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/stories/promotionalBar.stories.tsx"],
4
- "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\n\nimport PromotionalBar, { type PromotionalBarData } from '../biz-components/PromotionalBar/index.js'\n\n// \u6A21\u62DF\u4E1A\u52A1\u6570\u636E - \u4F7F\u7528\u5355\u4E00\u80CC\u666F\u56FE\u7247\nconst mockData: PromotionalBarData = {\n contentTitle: 'Special Promotion',\n contentDesc: 'Get amazing deals on our best-selling products this season',\n buttonText: 'Shop Now',\n buttonLink: '#',\n backgroundImage: {\n mobile: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n tablet: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n laptop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n desktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n lgDesktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n },\n}\n\n// \u4F7F\u7528\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\nconst responsiveData: PromotionalBarData = {\n contentTitle: 'Exclusive Offer',\n contentDesc: 'Limited time deals with free shipping on orders over $50',\n buttonText: 'Learn More',\n buttonLink: '#',\n backgroundImage: {\n mobile: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n tablet: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n laptop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n desktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n lgDesktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n },\n}\n\nconst meta = {\n title: 'Biz Components/PromotionalBar',\n component: PromotionalBar,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: '\u63A8\u5E7F\u680F\u7EC4\u4EF6 - \u652F\u6301\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u3001\u6807\u9898\u3001\u63CF\u8FF0\u548C\u884C\u52A8\u6309\u94AE',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n data: {\n description: '\u4E1A\u52A1\u6570\u636E\uFF0C\u5305\u542B\u6807\u9898\u3001\u63CF\u8FF0\u3001\u6309\u94AE\u548C\u80CC\u666F\u56FE\u7247',\n },\n },\n args: {\n data: mockData,\n },\n} satisfies Meta<typeof PromotionalBar>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\n/**\n * \u9ED8\u8BA4\u5C55\u793A - \u4F7F\u7528\u5355\u4E00\u80CC\u666F\u56FE\u7247 URL\n */\nexport const Default: Story = {\n args: {},\n}\n\n/**\n * \u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247 - \u4E0D\u540C\u5C4F\u5E55\u5C3A\u5BF8\u663E\u793A\u4E0D\u540C\u56FE\u7247\n */\nexport const ResponsiveBackground: Story = {\n args: {\n data: responsiveData,\n },\n}\n\n/**\n * \u65E0\u6309\u94AE - \u4EC5\u663E\u793A\u6807\u9898\u548C\u63CF\u8FF0\n */\nexport const WithoutButton: Story = {\n args: {\n data: {\n contentTitle: 'New Arrivals',\n contentDesc: 'Check out our latest collection of premium products',\n backgroundImage: {\n mobile: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n tablet: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n laptop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n desktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n lgDesktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n },\n },\n },\n}\n\n/**\n * \u5B8C\u6574\u529F\u80FD\u5C55\u793A\n */\nexport const FullFeatures: Story = {\n args: {\n data: {\n contentTitle: 'Up to 50% Off',\n contentDesc: 'Enjoy massive discounts on thousands of items. Limited time offer!',\n buttonText: 'Shop Now',\n buttonLink: '/sale',\n backgroundImage: {\n mobile: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n tablet: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n laptop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n desktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n lgDesktop: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n },\n },\n },\n}\n"],
5
- "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,iBAAAC,EAAA,yBAAAC,EAAA,kBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAP,GAEA,IAAAQ,EAAwD,wDAGxD,MAAMC,EAA+B,CACnC,aAAc,oBACd,YAAa,6DACb,WAAY,WACZ,WAAY,IACZ,gBAAiB,CACf,OAAQ,gFACR,OAAQ,kFACR,OAAQ,kFACR,QAAS,kFACT,UAAW,iFACb,CACF,EAGMC,EAAqC,CACzC,aAAc,kBACd,YAAa,2DACb,WAAY,aACZ,WAAY,IACZ,gBAAiB,CACf,OAAQ,gFACR,OAAQ,kFACR,OAAQ,kFACR,QAAS,kFACT,UAAW,iFACb,CACF,EAEMC,EAAO,CACX,MAAO,gCACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,2JACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,EACjB,SAAU,CACR,KAAM,CACJ,YAAa,0HACf,CACF,EACA,KAAM,CACJ,KAAMH,CACR,CACF,EAEA,IAAOH,EAAQK,EAMR,MAAMT,EAAiB,CAC5B,KAAM,CAAC,CACT,EAKaE,EAA8B,CACzC,KAAM,CACJ,KAAMM,CACR,CACF,EAKaL,EAAuB,CAClC,KAAM,CACJ,KAAM,CACJ,aAAc,eACd,YAAa,sDACb,gBAAiB,CACf,OAAQ,gFACR,OAAQ,kFACR,OAAQ,kFACR,QAAS,kFACT,UAAW,iFACb,CACF,CACF,CACF,EAKaF,EAAsB,CACjC,KAAM,CACJ,KAAM,CACJ,aAAc,gBACd,YAAa,qEACb,WAAY,WACZ,WAAY,QACZ,gBAAiB,CACf,OAAQ,gFACR,OAAQ,kFACR,OAAQ,kFACR,QAAS,kFACT,UAAW,iFACb,CACF,CACF,CACF",
4
+ "sourcesContent": ["import type { Meta, StoryObj } from '@storybook/react'\n\nimport PromotionalBar, { type PromotionalBarData } from '../biz-components/PromotionalBar/index.js'\n\n// \u6A21\u62DF\u4E1A\u52A1\u6570\u636E - \u4F7F\u7528\u5355\u4E00\u80CC\u666F\u56FE\u7247\nconst mockData: PromotionalBarData = {\n contentTitle: 'Special Promotion',\n contentDesc: 'Get amazing deals on our best-selling products this season',\n buttonText: 'Shop Now',\n buttonLink: '#',\n backgroundImage: {\n mobile: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n mimeType: 'image/jpeg',\n },\n tablet: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n laptop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n desktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n lgDesktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n },\n}\n\n// \u4F7F\u7528\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\nconst responsiveData: PromotionalBarData = {\n contentTitle: 'Exclusive Offer',\n contentDesc: 'Limited time deals with free shipping on orders over $50',\n buttonText: 'Learn More',\n buttonLink: '#',\n backgroundImage: {\n mobile: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n mimeType: 'image/jpeg',\n },\n tablet: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n laptop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n desktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n lgDesktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n },\n}\n\nconst meta = {\n title: 'Biz Components/PromotionalBar',\n component: PromotionalBar,\n parameters: {\n layout: 'fullscreen',\n docs: {\n description: {\n component: '\u63A8\u5E7F\u680F\u7EC4\u4EF6 - \u652F\u6301\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u3001\u6807\u9898\u3001\u63CF\u8FF0\u548C\u884C\u52A8\u6309\u94AE',\n },\n },\n },\n tags: ['autodocs'],\n argTypes: {\n data: {\n description: '\u4E1A\u52A1\u6570\u636E\uFF0C\u5305\u542B\u6807\u9898\u3001\u63CF\u8FF0\u3001\u6309\u94AE\u548C\u80CC\u666F\u56FE\u7247',\n },\n },\n args: {\n data: mockData,\n },\n} satisfies Meta<typeof PromotionalBar>\n\nexport default meta\ntype Story = StoryObj<typeof meta>\n\n/**\n * \u9ED8\u8BA4\u5C55\u793A - \u4F7F\u7528\u5355\u4E00\u80CC\u666F\u56FE\u7247 URL\n */\nexport const Default: Story = {\n args: {},\n}\n\n/**\n * \u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247 - \u4E0D\u540C\u5C4F\u5E55\u5C3A\u5BF8\u663E\u793A\u4E0D\u540C\u56FE\u7247\n */\nexport const ResponsiveBackground: Story = {\n args: {\n data: responsiveData,\n },\n}\n\n/**\n * \u65E0\u6309\u94AE - \u4EC5\u663E\u793A\u6807\u9898\u548C\u63CF\u8FF0\n */\nexport const WithoutButton: Story = {\n args: {\n data: {\n contentTitle: 'New Arrivals',\n contentDesc: 'Check out our latest collection of premium products',\n backgroundImage: {\n mobile: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n mimeType: 'image/jpeg',\n },\n tablet: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n laptop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n desktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n lgDesktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n },\n },\n },\n}\n\n/**\n * \u5B8C\u6574\u529F\u80FD\u5C55\u793A\n */\nexport const FullFeatures: Story = {\n args: {\n data: {\n contentTitle: 'Up to 50% Off',\n contentDesc: 'Enjoy massive discounts on thousands of items. Limited time offer!',\n buttonText: 'Shop Now',\n buttonLink: '/sale',\n backgroundImage: {\n mobile: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group.jpg?v=1765273188',\n mimeType: 'image/jpeg',\n },\n tablet: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-1.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n laptop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-2.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n desktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-3.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n lgDesktop: {\n url: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n alt: 'Promotional bar image',\n thumbnailURL: 'https://cdn.shopify.com/s/files/1/0501/7678/6607/files/Group-4.jpg?v=1765273189',\n mimeType: 'image/jpeg',\n },\n },\n },\n },\n}\n"],
5
+ "mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,iBAAAC,EAAA,yBAAAC,EAAA,kBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAP,GAEA,IAAAQ,EAAwD,wDAGxD,MAAMC,EAA+B,CACnC,aAAc,oBACd,YAAa,6DACb,WAAY,WACZ,WAAY,IACZ,gBAAiB,CACf,OAAQ,CACN,IAAK,gFACL,IAAK,wBACL,aAAc,gFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,QAAS,CACP,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,UAAW,CACT,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,CACF,CACF,EAGMC,EAAqC,CACzC,aAAc,kBACd,YAAa,2DACb,WAAY,aACZ,WAAY,IACZ,gBAAiB,CACf,OAAQ,CACN,IAAK,gFACL,IAAK,wBACL,aAAc,gFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,QAAS,CACP,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,UAAW,CACT,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,CACF,CACF,EAEMC,EAAO,CACX,MAAO,gCACP,UAAW,EAAAC,QACX,WAAY,CACV,OAAQ,aACR,KAAM,CACJ,YAAa,CACX,UAAW,2JACb,CACF,CACF,EACA,KAAM,CAAC,UAAU,EACjB,SAAU,CACR,KAAM,CACJ,YAAa,0HACf,CACF,EACA,KAAM,CACJ,KAAMH,CACR,CACF,EAEA,IAAOH,EAAQK,EAMR,MAAMT,EAAiB,CAC5B,KAAM,CAAC,CACT,EAKaE,EAA8B,CACzC,KAAM,CACJ,KAAMM,CACR,CACF,EAKaL,EAAuB,CAClC,KAAM,CACJ,KAAM,CACJ,aAAc,eACd,YAAa,sDACb,gBAAiB,CACf,OAAQ,CACN,IAAK,gFACL,IAAK,wBACL,aAAc,gFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,QAAS,CACP,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,UAAW,CACT,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,CACF,CACF,CACF,CACF,EAKaF,EAAsB,CACjC,KAAM,CACJ,KAAM,CACJ,aAAc,gBACd,YAAa,qEACb,WAAY,WACZ,WAAY,QACZ,gBAAiB,CACf,OAAQ,CACN,IAAK,gFACL,IAAK,wBACL,aAAc,gFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,OAAQ,CACN,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,QAAS,CACP,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,EACA,UAAW,CACT,IAAK,kFACL,IAAK,wBACL,aAAc,kFACd,SAAU,YACZ,CACF,CACF,CACF,CACF",
6
6
  "names": ["promotionalBar_stories_exports", "__export", "Default", "FullFeatures", "ResponsiveBackground", "WithoutButton", "promotionalBar_stories_default", "__toCommonJS", "import_PromotionalBar", "mockData", "responsiveData", "meta", "PromotionalBar"]
7
7
  }
@@ -1,5 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
+ export interface AnchorNavigationSemanticName {
4
+ root: 'root';
5
+ content: 'content';
6
+ item: 'item';
7
+ }
3
8
  /**
4
9
  * 导航项对齐方向样式变体
5
10
  */
@@ -23,6 +28,7 @@ export interface AnchorNavigationData {
23
28
  export interface AnchorNavigationProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof anchorNavigationVariants> {
24
29
  /** 业务数据 */
25
30
  data: AnchorNavigationData;
31
+ classNames?: Partial<Record<keyof AnchorNavigationSemanticName, string>>;
26
32
  }
27
33
  /**
28
34
  * AnchorNavigation - 锚点导航
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as i}from"react/jsx-runtime";import*as o from"react";import{cn as l}from"../../helpers/utils.js";import{Container as k}from"../../components/container.js";import{cva as m}from"class-variance-authority";import I from"./useAnchorPosition.js";const N=m("anchor-navigation-content desktop:gap-6 flex items-center gap-4 overflow-x-auto [&::-webkit-scrollbar]:hidden",{variants:{alignment:{start:"justify-start",center:"justify-center",end:"justify-end"}},defaultVariants:{alignment:"start"}}),y=m("sticky top-0 z-10 w-full",{variants:{theme:{light:"bg-white",dark:"bg-[#1E2024]"}},defaultVariants:{theme:"light"}}),g=o.forwardRef(({className:h,data:s,...u},b)=>{const{alignment:v="start",theme:f="light"}=s,p=I(s.sectionIds?.map(t=>t.targetId)||[]),c=o.useRef(null),d=o.useRef([]),A=o.useCallback(t=>{const r=d.current[t];if(r&&c.current){const e=c.current,n=r,a=n.offsetLeft-e.offsetWidth/2+n.offsetWidth/2;e.scrollTo({left:a,behavior:"smooth"})}},[]);return i("div",{ref:b,className:l(y({theme:f}),h),...u,children:i(k,{children:i("div",{ref:c,className:l(N({alignment:v})),children:s.sectionIds?.map((t,r)=>{const e=p===t.targetId,n=f==="dark";return i("button",{ref:a=>{a&&(d.current[r]=a)},onClick:()=>{A(r),document.getElementById(t.targetId)?.scrollIntoView({behavior:"smooth"})},className:l("anchor-navigation-item desktop:py-4 shrink-0 border-b-4 border-b-transparent py-3 text-base font-bold",{"text-[#4A4C56]":!n&&!e,"border-b-brand text-[#080A0F]":!n&&e,"text-[#8A8D92]":n&&!e,"border-b-brand text-white":n&&e}),children:t.label},t.targetId)})})})})});g.displayName="AnchorNavigation";var D=g;export{D as default};
1
+ "use client";import{jsx as d}from"react/jsx-runtime";import*as r from"react";import{cn as l}from"../../helpers/utils.js";import{cva as p}from"class-variance-authority";import x from"./useAnchorPosition.js";const k=p("anchor-navigation-content desktop:gap-6 flex items-center gap-4 overflow-x-auto [&::-webkit-scrollbar]:hidden",{variants:{alignment:{start:"justify-start",center:"justify-center",end:"justify-end"}},defaultVariants:{alignment:"start"}}),A=p("tablet:px-8 laptop:px-16 desktop:px-16 lg-desktop:px-[calc(50%-832px)] sticky top-0 z-[60] w-full px-4",{variants:{theme:{light:"bg-white",dark:"bg-[#1E2024]"}},defaultVariants:{theme:"light"}}),g=r.forwardRef(({classNames:i={},data:s},h)=>{const{alignment:u="start",theme:f="light"}=s,v=x(s.sectionIds?.map(t=>t.targetId)||[]),c=r.useRef(null),m=r.useRef([]),b=r.useCallback(t=>{const o=m.current[t];if(o&&c.current){const e=c.current,n=o,a=n.offsetLeft-e.offsetWidth/2+n.offsetWidth/2;e.scrollTo({left:a,behavior:"smooth"})}},[]);return d("div",{ref:h,className:l(A({theme:f}),i?.root),children:d("div",{ref:c,className:l(k({alignment:u}),i?.content),children:s.sectionIds?.map((t,o)=>{const e=v===t.targetId,n=f==="dark";return d("button",{ref:a=>{a&&(m.current[o]=a)},onClick:()=>{b(o),document.getElementById(t.targetId)?.scrollIntoView({behavior:"smooth"})},className:l("anchor-navigation-item desktop:py-4 shrink-0 border-b-4 border-b-transparent py-3 text-base font-bold",{"text-[#4A4C56]":!n&&!e,"border-b-brand text-[#080A0F]":!n&&e,"text-[#8A8D92]":n&&!e,"border-b-brand text-white":n&&e},i?.item),children:t.label},t.targetId)})})})});g.displayName="AnchorNavigation";var R=g;export{R as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/AnchorNavigation/index.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport { Container } from '../../components/container.js'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport useAnchorPosition from './useAnchorPosition.js'\n\n/**\n * \u5BFC\u822A\u9879\u5BF9\u9F50\u65B9\u5411\u6837\u5F0F\u53D8\u4F53\n */\nconst anchorNavigationVariants = cva(\n 'anchor-navigation-content desktop:gap-6 flex items-center gap-4 overflow-x-auto [&::-webkit-scrollbar]:hidden',\n {\n variants: {\n alignment: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n },\n },\n defaultVariants: {\n alignment: 'start',\n },\n }\n)\n\n/**\n * \u5BB9\u5668\u4E3B\u9898\u6837\u5F0F\u53D8\u4F53\n */\nconst containerVariants = cva('sticky top-0 z-10 w-full', {\n variants: {\n theme: {\n light: 'bg-white',\n dark: 'bg-[#1E2024]',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n})\n\n/**\n * AnchorNavigation \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface AnchorNavigationData {\n /** \u951A\u70B9\u5217\u8868 */\n sectionIds: {\n targetId: string\n label: string\n }[]\n /** \u5BFC\u822A\u9879\u6C34\u5E73\u5BF9\u9F50\u65B9\u5F0F */\n alignment?: 'start' | 'center' | 'end'\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n}\n\nexport interface AnchorNavigationProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof anchorNavigationVariants> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: AnchorNavigationData\n}\n\n/**\n * AnchorNavigation - \u951A\u70B9\u5BFC\u822A\n *\n * @description \u951A\u70B9\u5BFC\u822A\n */\nconst AnchorNavigation = React.forwardRef<HTMLDivElement, AnchorNavigationProps>(\n ({ className, data, ...props }, ref) => {\n const { alignment = 'start', theme = 'light' } = data\n const activeId = useAnchorPosition(data.sectionIds?.map(item => item.targetId) || [])\n const containerRef = React.useRef<HTMLDivElement>(null)\n const sectionRefs = React.useRef<HTMLButtonElement[]>([])\n\n const autoScrollToActiveItem = React.useCallback((activeIdIndex: number) => {\n const curRef = sectionRefs.current[activeIdIndex]\n\n if (curRef && containerRef.current) {\n const container = containerRef.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\n return (\n <div ref={ref} className={cn(containerVariants({ theme }), className)} {...props}>\n <Container>\n <div ref={containerRef} className={cn(anchorNavigationVariants({ alignment }))}>\n {data.sectionIds?.map((item, index) => {\n const isActive = activeId === item.targetId\n const isDark = theme === 'dark'\n\n return (\n <button\n key={item.targetId}\n ref={el => {\n if (el) {\n sectionRefs.current[index] = el\n }\n }}\n onClick={() => {\n autoScrollToActiveItem(index)\n document.getElementById(item.targetId)?.scrollIntoView({ behavior: 'smooth' })\n }}\n className={cn(\n 'anchor-navigation-item desktop:py-4 shrink-0 border-b-4 border-b-transparent py-3 text-base font-bold',\n {\n // Light theme colors\n 'text-[#4A4C56]': !isDark && !isActive,\n 'border-b-brand text-[#080A0F]': !isDark && isActive,\n // Dark theme colors\n 'text-[#8A8D92]': isDark && !isActive,\n 'border-b-brand text-white': isDark && isActive,\n }\n )}\n >\n {item.label}\n </button>\n )\n })}\n </div>\n </Container>\n </div>\n )\n }\n)\n\nAnchorNavigation.displayName = 'AnchorNavigation'\nexport default AnchorNavigation\n"],
5
- "mappings": "aAmGgB,cAAAA,MAAA,oBAjGhB,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAS,aAAAC,MAAiB,gCAC1B,OAAS,OAAAC,MAA8B,2BACvC,OAAOC,MAAuB,yBAK9B,MAAMC,EAA2BF,EAC/B,gHACA,CACE,SAAU,CACR,UAAW,CACT,MAAO,gBACP,OAAQ,iBACR,IAAK,aACP,CACF,EACA,gBAAiB,CACf,UAAW,OACb,CACF,CACF,EAKMG,EAAoBH,EAAI,2BAA4B,CACxD,SAAU,CACR,MAAO,CACL,MAAO,WACP,KAAM,cACR,CACF,EACA,gBAAiB,CACf,MAAO,OACT,CACF,CAAC,EA4BKI,EAAmBP,EAAM,WAC7B,CAAC,CAAE,UAAAQ,EAAW,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAAQ,CACtC,KAAM,CAAE,UAAAC,EAAY,QAAS,MAAAC,EAAQ,OAAQ,EAAIJ,EAC3CK,EAAWV,EAAkBK,EAAK,YAAY,IAAIM,GAAQA,EAAK,QAAQ,GAAK,CAAC,CAAC,EAC9EC,EAAehB,EAAM,OAAuB,IAAI,EAChDiB,EAAcjB,EAAM,OAA4B,CAAC,CAAC,EAElDkB,EAAyBlB,EAAM,YAAamB,GAA0B,CAC1E,MAAMC,EAASH,EAAY,QAAQE,CAAa,EAEhD,GAAIC,GAAUJ,EAAa,QAAS,CAClC,MAAMK,EAAYL,EAAa,QACzBM,EAASF,EACTG,EAAaD,EAAO,WAAaD,EAAU,YAAc,EAAIC,EAAO,YAAc,EAExFD,EAAU,SAAS,CACjB,KAAME,EACN,SAAU,QACZ,CAAC,CACH,CACF,EAAG,CAAC,CAAC,EAEL,OACExB,EAAC,OAAI,IAAKY,EAAK,UAAWV,EAAGK,EAAkB,CAAE,MAAAO,CAAM,CAAC,EAAGL,CAAS,EAAI,GAAGE,EACzE,SAAAX,EAACG,EAAA,CACC,SAAAH,EAAC,OAAI,IAAKiB,EAAc,UAAWf,EAAGI,EAAyB,CAAE,UAAAO,CAAU,CAAC,CAAC,EAC1E,SAAAH,EAAK,YAAY,IAAI,CAACM,EAAMS,IAAU,CACrC,MAAMC,EAAWX,IAAaC,EAAK,SAC7BW,EAASb,IAAU,OAEzB,OACEd,EAAC,UAEC,IAAK4B,GAAM,CACLA,IACFV,EAAY,QAAQO,CAAK,EAAIG,EAEjC,EACA,QAAS,IAAM,CACbT,EAAuBM,CAAK,EAC5B,SAAS,eAAeT,EAAK,QAAQ,GAAG,eAAe,CAAE,SAAU,QAAS,CAAC,CAC/E,EACA,UAAWd,EACT,wGACA,CAEE,iBAAkB,CAACyB,GAAU,CAACD,EAC9B,gCAAiC,CAACC,GAAUD,EAE5C,iBAAkBC,GAAU,CAACD,EAC7B,4BAA6BC,GAAUD,CACzC,CACF,EAEC,SAAAV,EAAK,OAtBDA,EAAK,QAuBZ,CAEJ,CAAC,EACH,EACF,EACF,CAEJ,CACF,EAEAR,EAAiB,YAAc,mBAC/B,IAAOqB,EAAQrB",
6
- "names": ["jsx", "React", "cn", "Container", "cva", "useAnchorPosition", "anchorNavigationVariants", "containerVariants", "AnchorNavigation", "className", "data", "props", "ref", "alignment", "theme", "activeId", "item", "containerRef", "sectionRefs", "autoScrollToActiveItem", "activeIdIndex", "curRef", "container", "button", "scrollLeft", "index", "isActive", "isDark", "el", "AnchorNavigation_default"]
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/utils.js'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport useAnchorPosition from './useAnchorPosition.js'\n\nexport interface AnchorNavigationSemanticName {\n root: 'root'\n content: 'content'\n item: 'item'\n}\n\n/**\n * \u5BFC\u822A\u9879\u5BF9\u9F50\u65B9\u5411\u6837\u5F0F\u53D8\u4F53\n */\nconst anchorNavigationVariants = cva(\n 'anchor-navigation-content desktop:gap-6 flex items-center gap-4 overflow-x-auto [&::-webkit-scrollbar]:hidden',\n {\n variants: {\n alignment: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n },\n },\n defaultVariants: {\n alignment: 'start',\n },\n }\n)\n\n/**\n * \u5BB9\u5668\u4E3B\u9898\u6837\u5F0F\u53D8\u4F53\n */\nconst containerVariants = cva(\n 'tablet:px-8 laptop:px-16 desktop:px-16 lg-desktop:px-[calc(50%-832px)] sticky top-0 z-[60] w-full px-4',\n {\n variants: {\n theme: {\n light: 'bg-white',\n dark: 'bg-[#1E2024]',\n },\n },\n defaultVariants: {\n theme: 'light',\n },\n }\n)\n\n/**\n * AnchorNavigation \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface AnchorNavigationData {\n /** \u951A\u70B9\u5217\u8868 */\n sectionIds: {\n targetId: string\n label: string\n }[]\n /** \u5BFC\u822A\u9879\u6C34\u5E73\u5BF9\u9F50\u65B9\u5F0F */\n alignment?: 'start' | 'center' | 'end'\n /** \u4E3B\u9898\u6A21\u5F0F */\n theme?: 'light' | 'dark'\n}\n\nexport interface AnchorNavigationProps\n extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof anchorNavigationVariants> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: AnchorNavigationData\n classNames?: Partial<Record<keyof AnchorNavigationSemanticName, string>>\n}\n\n/**\n * AnchorNavigation - \u951A\u70B9\u5BFC\u822A\n *\n * @description \u951A\u70B9\u5BFC\u822A\n */\nconst AnchorNavigation = React.forwardRef<HTMLDivElement, AnchorNavigationProps>(({ classNames = {}, data }, ref) => {\n const { alignment = 'start', theme = 'light' } = data\n const activeId = useAnchorPosition(data.sectionIds?.map(item => item.targetId) || [])\n const containerRef = React.useRef<HTMLDivElement>(null)\n const sectionRefs = React.useRef<HTMLButtonElement[]>([])\n\n const autoScrollToActiveItem = React.useCallback((activeIdIndex: number) => {\n const curRef = sectionRefs.current[activeIdIndex]\n\n if (curRef && containerRef.current) {\n const container = containerRef.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\n return (\n <div ref={ref} className={cn(containerVariants({ theme }), classNames?.root)}>\n <div ref={containerRef} className={cn(anchorNavigationVariants({ alignment }), classNames?.content)}>\n {data.sectionIds?.map((item, index) => {\n const isActive = activeId === item.targetId\n const isDark = theme === 'dark'\n\n return (\n <button\n key={item.targetId}\n ref={el => {\n if (el) {\n sectionRefs.current[index] = el\n }\n }}\n onClick={() => {\n autoScrollToActiveItem(index)\n document.getElementById(item.targetId)?.scrollIntoView({ behavior: 'smooth' })\n }}\n className={cn(\n 'anchor-navigation-item desktop:py-4 shrink-0 border-b-4 border-b-transparent py-3 text-base font-bold',\n {\n // Light theme colors\n 'text-[#4A4C56]': !isDark && !isActive,\n 'border-b-brand text-[#080A0F]': !isDark && isActive,\n // Dark theme colors\n 'text-[#8A8D92]': isDark && !isActive,\n 'border-b-brand text-white': isDark && isActive,\n },\n classNames?.item\n )}\n >\n {item.label}\n </button>\n )\n })}\n </div>\n </div>\n )\n})\n\nAnchorNavigation.displayName = 'AnchorNavigation'\nexport default AnchorNavigation\n"],
5
+ "mappings": "aA0GY,cAAAA,MAAA,oBAxGZ,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAS,OAAAC,MAA8B,2BACvC,OAAOC,MAAuB,yBAW9B,MAAMC,EAA2BF,EAC/B,gHACA,CACE,SAAU,CACR,UAAW,CACT,MAAO,gBACP,OAAQ,iBACR,IAAK,aACP,CACF,EACA,gBAAiB,CACf,UAAW,OACb,CACF,CACF,EAKMG,EAAoBH,EACxB,yGACA,CACE,SAAU,CACR,MAAO,CACL,MAAO,WACP,KAAM,cACR,CACF,EACA,gBAAiB,CACf,MAAO,OACT,CACF,CACF,EA6BMI,EAAmBN,EAAM,WAAkD,CAAC,CAAE,WAAAO,EAAa,CAAC,EAAG,KAAAC,CAAK,EAAGC,IAAQ,CACnH,KAAM,CAAE,UAAAC,EAAY,QAAS,MAAAC,EAAQ,OAAQ,EAAIH,EAC3CI,EAAWT,EAAkBK,EAAK,YAAY,IAAIK,GAAQA,EAAK,QAAQ,GAAK,CAAC,CAAC,EAC9EC,EAAed,EAAM,OAAuB,IAAI,EAChDe,EAAcf,EAAM,OAA4B,CAAC,CAAC,EAElDgB,EAAyBhB,EAAM,YAAaiB,GAA0B,CAC1E,MAAMC,EAASH,EAAY,QAAQE,CAAa,EAEhD,GAAIC,GAAUJ,EAAa,QAAS,CAClC,MAAMK,EAAYL,EAAa,QACzBM,EAASF,EACTG,EAAaD,EAAO,WAAaD,EAAU,YAAc,EAAIC,EAAO,YAAc,EAExFD,EAAU,SAAS,CACjB,KAAME,EACN,SAAU,QACZ,CAAC,CACH,CACF,EAAG,CAAC,CAAC,EAEL,OACEtB,EAAC,OAAI,IAAKU,EAAK,UAAWR,EAAGI,EAAkB,CAAE,MAAAM,CAAM,CAAC,EAAGJ,GAAY,IAAI,EACzE,SAAAR,EAAC,OAAI,IAAKe,EAAc,UAAWb,EAAGG,EAAyB,CAAE,UAAAM,CAAU,CAAC,EAAGH,GAAY,OAAO,EAC/F,SAAAC,EAAK,YAAY,IAAI,CAACK,EAAMS,IAAU,CACrC,MAAMC,EAAWX,IAAaC,EAAK,SAC7BW,EAASb,IAAU,OAEzB,OACEZ,EAAC,UAEC,IAAK0B,GAAM,CACLA,IACFV,EAAY,QAAQO,CAAK,EAAIG,EAEjC,EACA,QAAS,IAAM,CACbT,EAAuBM,CAAK,EAC5B,SAAS,eAAeT,EAAK,QAAQ,GAAG,eAAe,CAAE,SAAU,QAAS,CAAC,CAC/E,EACA,UAAWZ,EACT,wGACA,CAEE,iBAAkB,CAACuB,GAAU,CAACD,EAC9B,gCAAiC,CAACC,GAAUD,EAE5C,iBAAkBC,GAAU,CAACD,EAC7B,4BAA6BC,GAAUD,CACzC,EACAhB,GAAY,IACd,EAEC,SAAAM,EAAK,OAvBDA,EAAK,QAwBZ,CAEJ,CAAC,EACH,EACF,CAEJ,CAAC,EAEDP,EAAiB,YAAc,mBAC/B,IAAOoB,EAAQpB",
6
+ "names": ["jsx", "React", "cn", "cva", "useAnchorPosition", "anchorNavigationVariants", "containerVariants", "AnchorNavigation", "classNames", "data", "ref", "alignment", "theme", "activeId", "item", "containerRef", "sectionRefs", "autoScrollToActiveItem", "activeIdIndex", "curRef", "container", "button", "scrollLeft", "index", "isActive", "isDark", "el", "AnchorNavigation_default"]
7
7
  }
@@ -1,26 +1,27 @@
1
1
  import * as React from 'react';
2
+ import type { Media } from '../../types/props.js';
2
3
  export type EventScheduleSemanticName = 'root' | 'timeline' | 'eventScheduleCard';
3
4
  /**
4
5
  * 响应式背景图片配置
5
6
  */
6
7
  export interface ResponsiveBackgroundImage {
7
8
  /** 移动端图片 (<1024px) */
8
- mobile?: string;
9
+ mobile?: Media;
9
10
  /** 笔记本图片 (1025-1440px) */
10
- laptop?: string;
11
+ laptop?: Media;
11
12
  /** 桌面图片 (1441-1920px) */
12
- desktop?: string;
13
+ desktop?: Media;
13
14
  /** 超大桌面图片 (≥1921px) */
14
- lgDesktop?: string;
15
+ lgDesktop?: Media;
15
16
  }
16
17
  /**
17
18
  * 状态化背景图片配置
18
19
  */
19
20
  export interface StateBackgroundImage {
20
21
  /** 激活状态的背景图片 */
21
- active: string | ResponsiveBackgroundImage;
22
+ active: ResponsiveBackgroundImage;
22
23
  /** 非激活状态的背景图片 */
23
- inactive: string | ResponsiveBackgroundImage;
24
+ inactive: ResponsiveBackgroundImage;
24
25
  }
25
26
  /**
26
27
  * 活动日程项数据接口
@@ -35,7 +36,7 @@ export interface EventScheduleItem {
35
36
  /** 详细信息列表 */
36
37
  items: {
37
38
  /** 图标 (SVG 字符串或 URL) */
38
- icon: React.ReactNode;
39
+ icon?: Media;
39
40
  /** 文本内容 */
40
41
  label: string;
41
42
  }[];
@@ -49,48 +50,36 @@ export interface EventScheduleData {
49
50
  /**
50
51
  * 背景图片配置,支持响应式图片和状态化图片
51
52
  * 可以传入:
52
- * 1. 字符串(单一图片URL)
53
- * 2. ResponsiveBackgroundImage(多尺寸图片)
54
- * 3. StateBackgroundImage(激活/非激活状态图片)
55
- *
56
- * @example
57
- * // 单一图片
58
- * backgroundImage: "https://example.com/image.jpg"
53
+ * 1. ResponsiveBackgroundImage(多尺寸 Media 对象)
54
+ * 2. StateBackgroundImage(激活/非激活状态的响应式图片)
59
55
  *
60
56
  * @example
61
57
  * // 响应式图片
62
58
  * backgroundImage: {
63
- * mobile: "https://example.com/mobile.jpg",
64
- * laptop: "https://example.com/laptop.jpg",
65
- * desktop: "https://example.com/desktop.jpg",
66
- * lgDesktop: "https://example.com/lg-desktop.jpg"
67
- * }
68
- *
69
- * @example
70
- * // 状态化图片(单一URL)
71
- * backgroundImage: {
72
- * active: "https://example.com/active.jpg",
73
- * inactive: "https://example.com/inactive.jpg"
59
+ * mobile: { url: "https://example.com/mobile.jpg", alt: "...", ... },
60
+ * laptop: { url: "https://example.com/laptop.jpg", alt: "...", ... },
61
+ * desktop: { url: "https://example.com/desktop.jpg", alt: "...", ... },
62
+ * lgDesktop: { url: "https://example.com/lg-desktop.jpg", alt: "...", ... }
74
63
  * }
75
64
  *
76
65
  * @example
77
66
  * // 状态化 + 响应式图片
78
67
  * backgroundImage: {
79
68
  * active: {
80
- * mobile: "https://example.com/active-mobile.jpg",
81
- * laptop: "https://example.com/active-laptop.jpg",
82
- * desktop: "https://example.com/active-desktop.jpg",
83
- * lgDesktop: "https://example.com/active-lg-desktop.jpg"
69
+ * mobile: { url: "https://example.com/active-mobile.jpg", alt: "...", ... },
70
+ * laptop: { url: "https://example.com/active-laptop.jpg", alt: "...", ... },
71
+ * desktop: { url: "https://example.com/active-desktop.jpg", alt: "...", ... },
72
+ * lgDesktop: { url: "https://example.com/active-lg-desktop.jpg", alt: "...", ... }
84
73
  * },
85
74
  * inactive: {
86
- * mobile: "https://example.com/inactive-mobile.jpg",
87
- * laptop: "https://example.com/inactive-laptop.jpg",
88
- * desktop: "https://example.com/inactive-desktop.jpg",
89
- * lgDesktop: "https://example.com/inactive-lg-desktop.jpg"
75
+ * mobile: { url: "https://example.com/inactive-mobile.jpg", alt: "...", ... },
76
+ * laptop: { url: "https://example.com/inactive-laptop.jpg", alt: "...", ... },
77
+ * desktop: { url: "https://example.com/inactive-desktop.jpg", alt: "...", ... },
78
+ * lgDesktop: { url: "https://example.com/inactive-lg-desktop.jpg", alt: "...", ... }
90
79
  * }
91
80
  * }
92
81
  */
93
- backgroundImage?: string | ResponsiveBackgroundImage | StateBackgroundImage;
82
+ backgroundImage?: ResponsiveBackgroundImage | StateBackgroundImage;
94
83
  /** 是否显示时间轴,默认为 true */
95
84
  showTimeline?: boolean;
96
85
  }
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as i,jsxs as o}from"react/jsx-runtime";import*as d from"react";import{cn as l}from"../../helpers/index.js";import{Text as w,Picture as h}from"../../components/index.js";import{Swiper as x,SwiperSlide as S}from"swiper/react";import u from"dayjs";const B=(e,t)=>{const n=u(),a=u(e).startOf("day"),s=u(t).endOf("day");return n.isAfter(a)&&n.isBefore(s)},E=e=>B(e.startDate,e.endDate),N=({active:e,className:t})=>o("div",{className:l("relative my-1 flex h-2 flex-1 items-center justify-center",t),children:[i("div",{className:l("h-2 w-full ",{"bg-[#F6CD4E] rounded-full":e,"bg-[#EAEAEC]":!e})}),i("div",{className:"absolute inset-0 flex items-center justify-center",children:i("div",{className:l("size-4 rounded-full border-2 transition-colors",{"border-[#F6CD4E] bg-[#F6CD4E]":e,"border-[#EAEAEC] bg-[#EAEAEC]":!e})})})]}),k=e=>typeof e=="object"&&("active"in e||"inactive"in e),g=e=>{if(!e)return;if(typeof e=="string")return e;const{mobile:t,laptop:n,desktop:a,lgDesktop:s}=e,r=[];return s&&r.push(s),a&&r.push(`${a} 1920`),n&&r.push(`${n} 1440`),t&&r.push(`${t} 1024`),r.length>0?r.join(", "):void 0},b=(e,t)=>{if(e){if(k(e)){const n=t?e.active:e.inactive;return g(n)}return g(e)}},I=({active:e,item:t,backgroundImage:n,className:a})=>{const s=d.useMemo(()=>b(n,e),[n,e]);return o("div",{className:l("rounded-box laptop:h-[160px] relative flex h-[120px] min-w-0 flex-1 flex-col justify-between gap-2 overflow-hidden",a),children:[i(h,{source:s,alt:"",className:"absolute inset-0 z-10",imgClassName:"h-full object-cover"}),o("div",{className:"relative z-20 size-full p-4",children:[i("h2",{className:l("desktop:text-[24px] text-[20px] font-bold leading-[1.2] text-[#080A0F]"),dangerouslySetInnerHTML:{__html:t.title}}),i("div",{className:"flex flex-col gap-0.5",children:t.items.map((r,c)=>o("div",{className:"flex items-center gap-2",children:[r.icon&&i("div",{className:"desktop:size-6 size-5 shrink-0",children:i("img",{src:r.icon,alt:"",className:"size-full"})}),i(w,{html:r.label,className:l("desktop:text-[18px] flex-1 text-[14px] font-bold leading-[1.4] text-[#080A0F]")})]},c))})]})]})},f=d.forwardRef(({classNames:e={},data:t,...n},a)=>{const s=d.useMemo(()=>t?.scheduleList?.length||2,[t?.scheduleList]),r=d.useMemo(()=>{switch(s){case 2:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:2},1024:{spaceBetween:16},1440:{spaceBetween:16,slidesPerView:2}};case 3:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:2.4},1024:{slidesPerView:s,spaceBetween:16},1440:{spaceBetween:16,slidesPerView:s}};case 4:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:2.4},1024:{slidesPerView:3.2,spaceBetween:16},1440:{slidesPerView:s}};default:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:1},1024:{slidesPerView:s,spaceBetween:16},1440:{slidesPerView:s}}}},[s]),c=t.showTimeline!==!1;return i("div",{ref:a,className:l("desktop:px-16 laptop:px-16 tablet:px-8 w-full overflow-hidden px-4",e?.root),...n,children:i("div",{className:"flex w-full flex-col gap-4",children:i(x,{breakpoints:r,className:"w-full !overflow-visible",children:t.scheduleList.map((p,v)=>{const m=E(p);return o(S,{children:[c&&i(N,{active:m}),i(I,{active:m,className:c?"mt-4":"",item:p,backgroundImage:t.backgroundImage})]},"SwiperSlideItem"+v)})})})})});f.displayName="EventSchedule";var D=f;export{D as default};
1
+ "use client";import{jsx as n,jsxs as d}from"react/jsx-runtime";import*as u from"react";import{cn as o}from"../../helpers/index.js";import{Text as S,Picture as v,Heading as k}from"../../components/index.js";import{Swiper as B,SwiperSlide as b}from"swiper/react";import m from"dayjs";const E=(e,t)=>{const r=m(),i=m(e).startOf("day"),l=m(t).endOf("day");return r.isAfter(i)&&r.isBefore(l)},I=e=>E(e.startDate,e.endDate),N=({active:e,className:t})=>d("div",{className:o("relative my-1 flex h-2 flex-1 items-center justify-center",t),children:[n("div",{className:o("h-2 w-full ",{"bg-[#F6CD4E] rounded-full":e,"bg-[#EAEAEC]":!e})}),n("div",{className:"absolute inset-0 flex items-center justify-center",children:n("div",{className:o("size-4 rounded-full border-2 transition-colors",{"border-[#F6CD4E] bg-[#F6CD4E]":e,"border-[#EAEAEC] bg-[#EAEAEC]":!e})})})]}),P=e=>typeof e=="object"&&("active"in e||"inactive"in e),w=e=>{if(!e)return;const{mobile:t,laptop:r,desktop:i,lgDesktop:l}=e,s=[],a=x=>x?.url,p=a(l),c=a(i),f=a(r),g=a(t);return p&&s.push(p),c&&s.push(`${c} 1920`),f&&s.push(`${f} 1440`),g&&s.push(`${g} 1024`),s.length>0?s.join(", "):void 0},R=(e,t)=>{if(e){if(P(e)){const r=t?e.active:e.inactive;return w(r)}return w(e)}},V=({active:e,item:t,backgroundImage:r,className:i})=>{const l=u.useMemo(()=>R(r,e),[r,e]);return d("div",{className:o("rounded-box laptop:h-[160px] relative flex h-[120px] min-w-0 flex-1 flex-col justify-between gap-2 overflow-hidden",i),children:[n(v,{source:l,alt:"",className:"absolute inset-0 z-10",imgClassName:"h-full object-cover"}),d("div",{className:"relative z-20 size-full p-4",children:[n(k,{html:t.title,className:o("desktop:text-[24px] text-[20px] font-bold leading-[1.2] text-[#080A0F]")}),n("div",{className:"flex flex-col gap-0.5",children:t.items.map((s,a)=>d("div",{className:"flex items-center gap-2",children:[s.icon&&n("div",{className:"desktop:size-6 size-5 shrink-0",children:n(v,{source:s.icon.url,alt:s.icon.alt,className:"size-full"})}),n(S,{html:s.label,className:o("desktop:text-[18px] flex-1 text-[14px] font-bold leading-[1.4] text-[#080A0F]")})]},a))})]})]})},h=u.forwardRef(({classNames:e={},data:t},r)=>{const i=u.useMemo(()=>t?.scheduleList?.length||2,[t?.scheduleList]),l=u.useMemo(()=>{switch(i){case 2:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:2},1024:{spaceBetween:16},1440:{spaceBetween:16,slidesPerView:2}};case 3:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:2.4},1024:{slidesPerView:i,spaceBetween:16},1440:{spaceBetween:16,slidesPerView:i}};case 4:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:2.4},1024:{slidesPerView:3.2,spaceBetween:16},1440:{slidesPerView:i}};default:return{0:{slidesPerView:1.17,spaceBetween:12},768:{slidesPerView:1},1024:{slidesPerView:i,spaceBetween:16},1440:{slidesPerView:i}}}},[i]),s=t.showTimeline!==!1;return n("div",{ref:r,className:o("tablet:px-8 laptop:px-16 desktop:px-16 lg-desktop:px-[calc(50%-832px)] flex w-full flex-col gap-4 overflow-hidden px-4",e?.root),children:n(B,{breakpoints:l,className:"w-full !overflow-visible",children:t.scheduleList.map((a,p)=>{const c=I(a);return d(b,{children:[s&&n(N,{className:e?.timeline,active:c}),n(V,{active:c,className:o(s?"mt-4":"",e?.eventScheduleCard),item:a,backgroundImage:t.backgroundImage})]},"SwiperSlideItem"+p)})})})});h.displayName="EventSchedule";var C=h;export{C as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/EventSchedule/index.tsx"],
4
- "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Text, Picture } from '../../components/index.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport dayjs from 'dayjs'\n\nexport type EventScheduleSemanticName = 'root' | 'timeline' | 'eventScheduleCard'\n\n/**\n * \u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u914D\u7F6E\n */\nexport interface ResponsiveBackgroundImage {\n /** \u79FB\u52A8\u7AEF\u56FE\u7247 (<1024px) */\n mobile?: string\n /** \u7B14\u8BB0\u672C\u56FE\u7247 (1025-1440px) */\n laptop?: string\n /** \u684C\u9762\u56FE\u7247 (1441-1920px) */\n desktop?: string\n /** \u8D85\u5927\u684C\u9762\u56FE\u7247 (\u22651921px) */\n lgDesktop?: string\n}\n\n/**\n * \u72B6\u6001\u5316\u80CC\u666F\u56FE\u7247\u914D\u7F6E\n */\nexport interface StateBackgroundImage {\n /** \u6FC0\u6D3B\u72B6\u6001\u7684\u80CC\u666F\u56FE\u7247 */\n active: string | ResponsiveBackgroundImage\n /** \u975E\u6FC0\u6D3B\u72B6\u6001\u7684\u80CC\u666F\u56FE\u7247 */\n inactive: string | ResponsiveBackgroundImage\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u9879\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleItem {\n /** \u6807\u9898 */\n title: string\n /** \u5F00\u59CB\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-01'\uFF09 */\n startDate: string\n /** \u7ED3\u675F\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-31'\uFF09 */\n endDate: string\n /** \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */\n items: {\n /** \u56FE\u6807 (SVG \u5B57\u7B26\u4E32\u6216 URL) */\n icon: React.ReactNode\n /** \u6587\u672C\u5185\u5BB9 */\n label: string\n }[]\n}\n\n/**\n * EventSchedule \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleData {\n /** \u65E5\u7A0B\u5217\u8868 */\n scheduleList: EventScheduleItem[]\n /**\n * \u80CC\u666F\u56FE\u7247\u914D\u7F6E\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u56FE\u7247\u548C\u72B6\u6001\u5316\u56FE\u7247\n * \u53EF\u4EE5\u4F20\u5165\uFF1A\n * 1. \u5B57\u7B26\u4E32\uFF08\u5355\u4E00\u56FE\u7247URL\uFF09\n * 2. ResponsiveBackgroundImage\uFF08\u591A\u5C3A\u5BF8\u56FE\u7247\uFF09\n * 3. StateBackgroundImage\uFF08\u6FC0\u6D3B/\u975E\u6FC0\u6D3B\u72B6\u6001\u56FE\u7247\uFF09\n *\n * @example\n * // \u5355\u4E00\u56FE\u7247\n * backgroundImage: \"https://example.com/image.jpg\"\n *\n * @example\n * // \u54CD\u5E94\u5F0F\u56FE\u7247\n * backgroundImage: {\n * mobile: \"https://example.com/mobile.jpg\",\n * laptop: \"https://example.com/laptop.jpg\",\n * desktop: \"https://example.com/desktop.jpg\",\n * lgDesktop: \"https://example.com/lg-desktop.jpg\"\n * }\n *\n * @example\n * // \u72B6\u6001\u5316\u56FE\u7247\uFF08\u5355\u4E00URL\uFF09\n * backgroundImage: {\n * active: \"https://example.com/active.jpg\",\n * inactive: \"https://example.com/inactive.jpg\"\n * }\n *\n * @example\n * // \u72B6\u6001\u5316 + \u54CD\u5E94\u5F0F\u56FE\u7247\n * backgroundImage: {\n * active: {\n * mobile: \"https://example.com/active-mobile.jpg\",\n * laptop: \"https://example.com/active-laptop.jpg\",\n * desktop: \"https://example.com/active-desktop.jpg\",\n * lgDesktop: \"https://example.com/active-lg-desktop.jpg\"\n * },\n * inactive: {\n * mobile: \"https://example.com/inactive-mobile.jpg\",\n * laptop: \"https://example.com/inactive-laptop.jpg\",\n * desktop: \"https://example.com/inactive-desktop.jpg\",\n * lgDesktop: \"https://example.com/inactive-lg-desktop.jpg\"\n * }\n * }\n */\n backgroundImage?: string | ResponsiveBackgroundImage | StateBackgroundImage\n /** \u662F\u5426\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u9ED8\u8BA4\u4E3A true */\n showTimeline?: boolean\n}\n\nexport interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: EventScheduleData\n classNames?: Partial<Record<EventScheduleSemanticName, string>>\n}\n\n/**\n * \u5224\u65AD\u5F53\u524D\u65F6\u95F4\u662F\u5426\u5728\u6307\u5B9A\u7684\u65F6\u95F4\u533A\u95F4\u5185\n * @param startDate \u5F00\u59CB\u65E5\u671F\n * @param endDate \u7ED3\u675F\u65E5\u671F\n * @returns \u662F\u5426\u5728\u533A\u95F4\u5185\n */\nconst isInTimeRange = (startDate: string, endDate: string): boolean => {\n const now = dayjs()\n const start = dayjs(startDate).startOf('day')\n const end = dayjs(endDate).endOf('day')\n return now.isAfter(start) && now.isBefore(end)\n}\n\n/**\n * \u83B7\u53D6\u6D3B\u52A8\u9879\u7684\u6FC0\u6D3B\u72B6\u6001\n * @param item \u6D3B\u52A8\u9879\n * @returns \u662F\u5426\u6FC0\u6D3B\n */\nconst getItemActiveStatus = (item: EventScheduleItem): boolean => {\n // \u5426\u5219\u6839\u636E\u65F6\u95F4\u533A\u95F4\u81EA\u52A8\u5224\u65AD\n return isInTimeRange(item.startDate, item.endDate)\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6\n */\nconst TimelineNode = ({ active, className }: { active: boolean; className?: string }) => {\n return (\n <div className={cn('relative my-1 flex h-2 flex-1 items-center justify-center', className)}>\n {/* \u8FDB\u5EA6\u6761 */}\n <div\n className={cn('h-2 w-full ', {\n 'bg-[#F6CD4E] rounded-full': active,\n 'bg-[#EAEAEC]': !active,\n })}\n />\n {/* \u65F6\u95F4\u8282\u70B9 */}\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div\n className={cn('size-4 rounded-full border-2 transition-colors', {\n 'border-[#F6CD4E] bg-[#F6CD4E]': active,\n 'border-[#EAEAEC] bg-[#EAEAEC]': !active,\n })}\n />\n </div>\n </div>\n )\n}\n\n/**\n * \u5224\u65AD\u662F\u5426\u4E3A\u72B6\u6001\u5316\u80CC\u666F\u56FE\u7247\u914D\u7F6E\n * @param obj \u5F85\u68C0\u67E5\u7684\u5BF9\u8C61\n * @returns \u662F\u5426\u4E3AStateBackgroundImage\u7C7B\u578B\n */\nconst isStateBackgroundImage = (\n obj: string | ResponsiveBackgroundImage | StateBackgroundImage\n): obj is StateBackgroundImage => {\n return typeof obj === 'object' && ('active' in obj || 'inactive' in obj)\n}\n\n/**\n * \u5C06\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u5BF9\u8C61\u8F6C\u6362\u4E3APicture\u7EC4\u4EF6\u6240\u9700\u7684\u5B57\u7B26\u4E32\u683C\u5F0F\n * @param backgroundImage \u80CC\u666F\u56FE\u7247\u914D\u7F6E\n * @returns Picture\u7EC4\u4EF6\u53EF\u7528\u7684source\u5B57\u7B26\u4E32\n */\nconst convertResponsiveImageToString = (backgroundImage: string | ResponsiveBackgroundImage): string | undefined => {\n if (!backgroundImage) return undefined\n if (typeof backgroundImage === 'string') return backgroundImage\n\n const { mobile, laptop, desktop, lgDesktop } = backgroundImage\n const parts: string[] = []\n\n // \u9ED8\u8BA4\u56FE\u7247\uFF08\u6700\u5927\u5C3A\u5BF8\uFF09\u653E\u5728\u6700\u524D\u9762\uFF0C\u4E0D\u9700\u8981\u65AD\u70B9\n if (lgDesktop) parts.push(lgDesktop)\n\n // \u6309\u65AD\u70B9\u4ECE\u5927\u5230\u5C0F\u6DFB\u52A0\n if (desktop) parts.push(`${desktop} 1920`)\n if (laptop) parts.push(`${laptop} 1440`)\n if (mobile) parts.push(`${mobile} 1024`)\n\n return parts.length > 0 ? parts.join(', ') : undefined\n}\n\n/**\n * \u6839\u636E\u6FC0\u6D3B\u72B6\u6001\u83B7\u53D6\u5BF9\u5E94\u7684\u80CC\u666F\u56FE\u7247\n * @param backgroundImage \u80CC\u666F\u56FE\u7247\u914D\u7F6E\n * @param isActive \u662F\u5426\u6FC0\u6D3B\u72B6\u6001\n * @returns Picture\u7EC4\u4EF6\u53EF\u7528\u7684source\u5B57\u7B26\u4E32\n */\nconst formatBackgroundImage = (\n backgroundImage: string | ResponsiveBackgroundImage | StateBackgroundImage | undefined,\n isActive: boolean\n): string | undefined => {\n if (!backgroundImage) return undefined\n\n // \u5982\u679C\u662F\u72B6\u6001\u5316\u80CC\u666F\u56FE\u7247\uFF0C\u6839\u636E\u6FC0\u6D3B\u72B6\u6001\u9009\u62E9\u5BF9\u5E94\u7684\u56FE\u7247\n if (isStateBackgroundImage(backgroundImage)) {\n const stateImage = isActive ? backgroundImage.active : backgroundImage.inactive\n return convertResponsiveImageToString(stateImage)\n }\n\n // \u5426\u5219\u76F4\u63A5\u8F6C\u6362\n return convertResponsiveImageToString(backgroundImage)\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u5361\u7247\u7EC4\u4EF6\n */\nconst EventScheduleCard = ({\n active,\n item,\n backgroundImage,\n className,\n}: {\n active: boolean\n item: EventScheduleItem\n backgroundImage: string | ResponsiveBackgroundImage | StateBackgroundImage | undefined\n className?: string\n}) => {\n const pictureSource = React.useMemo(() => {\n return formatBackgroundImage(backgroundImage, active)\n }, [backgroundImage, active])\n\n return (\n <div\n className={cn(\n 'rounded-box laptop:h-[160px] relative flex h-[120px] min-w-0 flex-1 flex-col justify-between gap-2 overflow-hidden',\n className\n )}\n >\n <Picture source={pictureSource} alt=\"\" className=\"absolute inset-0 z-10\" imgClassName=\"h-full object-cover\" />\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"relative z-20 size-full p-4\">\n <h2\n className={cn('desktop:text-[24px] text-[20px] font-bold leading-[1.2] text-[#080A0F]')}\n dangerouslySetInnerHTML={{ __html: item.title }}\n />\n {/* \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */}\n <div className=\"flex flex-col gap-0.5\">\n {item.items.map((detail, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n {/* \u56FE\u6807 */}\n {detail.icon && (\n <div className=\"desktop:size-6 size-5 shrink-0\">\n <img src={detail.icon as string} alt=\"\" className=\"size-full\" />\n </div>\n )}\n {/* \u6587\u672C */}\n <Text\n html={detail.label}\n className={cn('desktop:text-[18px] flex-1 text-[14px] font-bold leading-[1.4] text-[#080A0F]')}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * EventSchedule - \u6D3B\u52A8\u65E5\u7A0B\u7EC4\u4EF6\n *\n * @description \u663E\u793A\u6D3B\u52A8\u65E5\u7A0B\u65F6\u95F4\u8F74\u548C\u6D3B\u52A8\u5361\u7247\u5217\u8868\n */\nconst EventSchedule = React.forwardRef<HTMLDivElement, EventScheduleProps>(\n ({ classNames = {}, data, ...props }, ref) => {\n const itemsPerRow = React.useMemo(() => {\n return data?.scheduleList?.length || 2\n }, [data?.scheduleList])\n\n // \u6839\u636E itemsPerRow \u914D\u7F6E\u54CD\u5E94\u5F0F\u65AD\u70B9\n const swiperBreakpoints = React.useMemo(() => {\n switch (itemsPerRow) {\n case 2:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 2,\n },\n 1024: {\n spaceBetween: 16,\n },\n 1440: {\n spaceBetween: 16,\n slidesPerView: 2,\n },\n }\n case 3:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 2.4,\n },\n 1024: {\n slidesPerView: itemsPerRow,\n spaceBetween: 16,\n },\n 1440: {\n spaceBetween: 16,\n slidesPerView: itemsPerRow,\n },\n }\n case 4:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 2.4,\n },\n 1024: {\n slidesPerView: 3.2,\n spaceBetween: 16,\n },\n 1440: {\n slidesPerView: itemsPerRow,\n },\n }\n default:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 1,\n },\n 1024: {\n slidesPerView: itemsPerRow,\n spaceBetween: 16,\n },\n 1440: {\n slidesPerView: itemsPerRow,\n },\n }\n }\n }, [itemsPerRow])\n\n const showTimeline = data.showTimeline !== false // \u9ED8\u8BA4\u4E3A true\n\n return (\n <div\n ref={ref}\n className={cn('desktop:px-16 laptop:px-16 tablet:px-8 w-full overflow-hidden px-4', classNames?.root)}\n {...props}\n >\n <div className=\"flex w-full flex-col gap-4\">\n <Swiper breakpoints={swiperBreakpoints} className=\"w-full !overflow-visible\">\n {data.scheduleList.map((item, index) => {\n const isActive = getItemActiveStatus(item)\n return (\n <SwiperSlide key={'SwiperSlideItem' + index}>\n {/* \u65F6\u95F4\u8F74 */}\n {showTimeline && <TimelineNode active={isActive} />}\n <EventScheduleCard\n active={isActive}\n className={showTimeline ? 'mt-4' : ''}\n item={item}\n backgroundImage={data.backgroundImage}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n </div>\n </div>\n )\n }\n)\n\nEventSchedule.displayName = 'EventSchedule'\nexport default EventSchedule\n\n// \u5BFC\u51FA\u7C7B\u578B\u4F9B\u5916\u90E8\u4F7F\u7528\n// export type { ResponsiveBackgroundImage, StateBackgroundImage, EventScheduleItem, EventScheduleData, EventScheduleProps }\n"],
5
- "mappings": "aA8II,OAEE,OAAAA,EAFF,QAAAC,MAAA,oBA5IJ,UAAYC,MAAW,QACvB,OAAS,MAAAC,MAAU,yBACnB,OAAS,QAAAC,EAAM,WAAAC,MAAe,4BAC9B,OAAS,UAAAC,EAAQ,eAAAC,MAAmB,eACpC,OAAOC,MAAW,QAkHlB,MAAMC,EAAgB,CAACC,EAAmBC,IAA6B,CACrE,MAAMC,EAAMJ,EAAM,EACZK,EAAQL,EAAME,CAAS,EAAE,QAAQ,KAAK,EACtCI,EAAMN,EAAMG,CAAO,EAAE,MAAM,KAAK,EACtC,OAAOC,EAAI,QAAQC,CAAK,GAAKD,EAAI,SAASE,CAAG,CAC/C,EAOMC,EAAuBC,GAEpBP,EAAcO,EAAK,UAAWA,EAAK,OAAO,EAM7CC,EAAe,CAAC,CAAE,OAAAC,EAAQ,UAAAC,CAAU,IAEtClB,EAAC,OAAI,UAAWE,EAAG,4DAA6DgB,CAAS,EAEvF,UAAAnB,EAAC,OACC,UAAWG,EAAG,cAAe,CAC3B,4BAA6Be,EAC7B,eAAgB,CAACA,CACnB,CAAC,EACH,EAEAlB,EAAC,OAAI,UAAU,oDACb,SAAAA,EAAC,OACC,UAAWG,EAAG,iDAAkD,CAC9D,gCAAiCe,EACjC,gCAAiC,CAACA,CACpC,CAAC,EACH,EACF,GACF,EASEE,EACJC,GAEO,OAAOA,GAAQ,WAAa,WAAYA,GAAO,aAAcA,GAQhEC,EAAkCC,GAA4E,CAClH,GAAI,CAACA,EAAiB,OACtB,GAAI,OAAOA,GAAoB,SAAU,OAAOA,EAEhD,KAAM,CAAE,OAAAC,EAAQ,OAAAC,EAAQ,QAAAC,EAAS,UAAAC,CAAU,EAAIJ,EACzCK,EAAkB,CAAC,EAGzB,OAAID,GAAWC,EAAM,KAAKD,CAAS,EAG/BD,GAASE,EAAM,KAAK,GAAGF,CAAO,OAAO,EACrCD,GAAQG,EAAM,KAAK,GAAGH,CAAM,OAAO,EACnCD,GAAQI,EAAM,KAAK,GAAGJ,CAAM,OAAO,EAEhCI,EAAM,OAAS,EAAIA,EAAM,KAAK,IAAI,EAAI,MAC/C,EAQMC,EAAwB,CAC5BN,EACAO,IACuB,CACvB,GAAKP,EAGL,IAAIH,EAAuBG,CAAe,EAAG,CAC3C,MAAMQ,EAAaD,EAAWP,EAAgB,OAASA,EAAgB,SACvE,OAAOD,EAA+BS,CAAU,CAClD,CAGA,OAAOT,EAA+BC,CAAe,EACvD,EAKMS,EAAoB,CAAC,CACzB,OAAAd,EACA,KAAAF,EACA,gBAAAO,EACA,UAAAJ,CACF,IAKM,CACJ,MAAMc,EAAgB/B,EAAM,QAAQ,IAC3B2B,EAAsBN,EAAiBL,CAAM,EACnD,CAACK,EAAiBL,CAAM,CAAC,EAE5B,OACEjB,EAAC,OACC,UAAWE,EACT,qHACAgB,CACF,EAEA,UAAAnB,EAACK,EAAA,CAAQ,OAAQ4B,EAAe,IAAI,GAAG,UAAU,wBAAwB,aAAa,sBAAsB,EAE5GhC,EAAC,OAAI,UAAU,8BACb,UAAAD,EAAC,MACC,UAAWG,EAAG,wEAAwE,EACtF,wBAAyB,CAAE,OAAQa,EAAK,KAAM,EAChD,EAEAhB,EAAC,OAAI,UAAU,wBACZ,SAAAgB,EAAK,MAAM,IAAI,CAACkB,EAAQC,IACvBlC,EAAC,OAAgB,UAAU,0BAExB,UAAAiC,EAAO,MACNlC,EAAC,OAAI,UAAU,iCACb,SAAAA,EAAC,OAAI,IAAKkC,EAAO,KAAgB,IAAI,GAAG,UAAU,YAAY,EAChE,EAGFlC,EAACI,EAAA,CACC,KAAM8B,EAAO,MACb,UAAW/B,EAAG,+EAA+E,EAC/F,IAXQgC,CAYV,CACD,EACH,GACF,GACF,CAEJ,EAOMC,EAAgBlC,EAAM,WAC1B,CAAC,CAAE,WAAAmC,EAAa,CAAC,EAAG,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAAQ,CAC5C,MAAMC,EAAcvC,EAAM,QAAQ,IACzBoC,GAAM,cAAc,QAAU,EACpC,CAACA,GAAM,YAAY,CAAC,EAGjBI,EAAoBxC,EAAM,QAAQ,IAAM,CAC5C,OAAQuC,EAAa,CACnB,IAAK,GACH,MAAO,CACL,EAAG,CACD,cAAe,KACf,aAAc,EAChB,EACA,IAAK,CACH,cAAe,CACjB,EACA,KAAM,CACJ,aAAc,EAChB,EACA,KAAM,CACJ,aAAc,GACd,cAAe,CACjB,CACF,EACF,IAAK,GACH,MAAO,CACL,EAAG,CACD,cAAe,KACf,aAAc,EAChB,EACA,IAAK,CACH,cAAe,GACjB,EACA,KAAM,CACJ,cAAeA,EACf,aAAc,EAChB,EACA,KAAM,CACJ,aAAc,GACd,cAAeA,CACjB,CACF,EACF,IAAK,GACH,MAAO,CACL,EAAG,CACD,cAAe,KACf,aAAc,EAChB,EACA,IAAK,CACH,cAAe,GACjB,EACA,KAAM,CACJ,cAAe,IACf,aAAc,EAChB,EACA,KAAM,CACJ,cAAeA,CACjB,CACF,EACF,QACE,MAAO,CACL,EAAG,CACD,cAAe,KACf,aAAc,EAChB,EACA,IAAK,CACH,cAAe,CACjB,EACA,KAAM,CACJ,cAAeA,EACf,aAAc,EAChB,EACA,KAAM,CACJ,cAAeA,CACjB,CACF,CACJ,CACF,EAAG,CAACA,CAAW,CAAC,EAEVE,EAAeL,EAAK,eAAiB,GAE3C,OACEtC,EAAC,OACC,IAAKwC,EACL,UAAWrC,EAAG,qEAAsEkC,GAAY,IAAI,EACnG,GAAGE,EAEJ,SAAAvC,EAAC,OAAI,UAAU,6BACb,SAAAA,EAACM,EAAA,CAAO,YAAaoC,EAAmB,UAAU,2BAC/C,SAAAJ,EAAK,aAAa,IAAI,CAACtB,EAAMmB,IAAU,CACtC,MAAML,EAAWf,EAAoBC,CAAI,EACzC,OACEf,EAACM,EAAA,CAEE,UAAAoC,GAAgB3C,EAACiB,EAAA,CAAa,OAAQa,EAAU,EACjD9B,EAACgC,EAAA,CACC,OAAQF,EACR,UAAWa,EAAe,OAAS,GACnC,KAAM3B,EACN,gBAAiBsB,EAAK,gBACxB,IARgB,kBAAoBH,CAStC,CAEJ,CAAC,EACH,EACF,EACF,CAEJ,CACF,EAEAC,EAAc,YAAc,gBAC5B,IAAOQ,EAAQR",
6
- "names": ["jsx", "jsxs", "React", "cn", "Text", "Picture", "Swiper", "SwiperSlide", "dayjs", "isInTimeRange", "startDate", "endDate", "now", "start", "end", "getItemActiveStatus", "item", "TimelineNode", "active", "className", "isStateBackgroundImage", "obj", "convertResponsiveImageToString", "backgroundImage", "mobile", "laptop", "desktop", "lgDesktop", "parts", "formatBackgroundImage", "isActive", "stateImage", "EventScheduleCard", "pictureSource", "detail", "index", "EventSchedule", "classNames", "data", "props", "ref", "itemsPerRow", "swiperBreakpoints", "showTimeline", "EventSchedule_default"]
4
+ "sourcesContent": ["'use client'\n\nimport * as React from 'react'\nimport { cn } from '../../helpers/index.js'\nimport { Text, Picture, Heading } from '../../components/index.js'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport dayjs from 'dayjs'\nimport type { Media } from '../../types/props.js'\nexport type EventScheduleSemanticName = 'root' | 'timeline' | 'eventScheduleCard'\n\n/**\n * \u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u914D\u7F6E\n */\nexport interface ResponsiveBackgroundImage {\n /** \u79FB\u52A8\u7AEF\u56FE\u7247 (<1024px) */\n mobile?: Media\n /** \u7B14\u8BB0\u672C\u56FE\u7247 (1025-1440px) */\n laptop?: Media\n /** \u684C\u9762\u56FE\u7247 (1441-1920px) */\n desktop?: Media\n /** \u8D85\u5927\u684C\u9762\u56FE\u7247 (\u22651921px) */\n lgDesktop?: Media\n}\n\n/**\n * \u72B6\u6001\u5316\u80CC\u666F\u56FE\u7247\u914D\u7F6E\n */\nexport interface StateBackgroundImage {\n /** \u6FC0\u6D3B\u72B6\u6001\u7684\u80CC\u666F\u56FE\u7247 */\n active: ResponsiveBackgroundImage\n /** \u975E\u6FC0\u6D3B\u72B6\u6001\u7684\u80CC\u666F\u56FE\u7247 */\n inactive: ResponsiveBackgroundImage\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u9879\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleItem {\n /** \u6807\u9898 */\n title: string\n /** \u5F00\u59CB\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-01'\uFF09 */\n startDate: string\n /** \u7ED3\u675F\u65E5\u671F\uFF08ISO 8601 \u683C\u5F0F\u6216\u4EFB\u4F55 dayjs \u652F\u6301\u7684\u683C\u5F0F\uFF0C\u5982 '2024-12-31'\uFF09 */\n endDate: string\n /** \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */\n items: {\n /** \u56FE\u6807 (SVG \u5B57\u7B26\u4E32\u6216 URL) */\n icon?: Media\n /** \u6587\u672C\u5185\u5BB9 */\n label: string\n }[]\n}\n\n/**\n * EventSchedule \u4E1A\u52A1\u7EC4\u4EF6\u6570\u636E\u63A5\u53E3\n */\nexport interface EventScheduleData {\n /** \u65E5\u7A0B\u5217\u8868 */\n scheduleList: EventScheduleItem[]\n /**\n * \u80CC\u666F\u56FE\u7247\u914D\u7F6E\uFF0C\u652F\u6301\u54CD\u5E94\u5F0F\u56FE\u7247\u548C\u72B6\u6001\u5316\u56FE\u7247\n * \u53EF\u4EE5\u4F20\u5165\uFF1A\n * 1. ResponsiveBackgroundImage\uFF08\u591A\u5C3A\u5BF8 Media \u5BF9\u8C61\uFF09\n * 2. StateBackgroundImage\uFF08\u6FC0\u6D3B/\u975E\u6FC0\u6D3B\u72B6\u6001\u7684\u54CD\u5E94\u5F0F\u56FE\u7247\uFF09\n *\n * @example\n * // \u54CD\u5E94\u5F0F\u56FE\u7247\n * backgroundImage: {\n * mobile: { url: \"https://example.com/mobile.jpg\", alt: \"...\", ... },\n * laptop: { url: \"https://example.com/laptop.jpg\", alt: \"...\", ... },\n * desktop: { url: \"https://example.com/desktop.jpg\", alt: \"...\", ... },\n * lgDesktop: { url: \"https://example.com/lg-desktop.jpg\", alt: \"...\", ... }\n * }\n *\n * @example\n * // \u72B6\u6001\u5316 + \u54CD\u5E94\u5F0F\u56FE\u7247\n * backgroundImage: {\n * active: {\n * mobile: { url: \"https://example.com/active-mobile.jpg\", alt: \"...\", ... },\n * laptop: { url: \"https://example.com/active-laptop.jpg\", alt: \"...\", ... },\n * desktop: { url: \"https://example.com/active-desktop.jpg\", alt: \"...\", ... },\n * lgDesktop: { url: \"https://example.com/active-lg-desktop.jpg\", alt: \"...\", ... }\n * },\n * inactive: {\n * mobile: { url: \"https://example.com/inactive-mobile.jpg\", alt: \"...\", ... },\n * laptop: { url: \"https://example.com/inactive-laptop.jpg\", alt: \"...\", ... },\n * desktop: { url: \"https://example.com/inactive-desktop.jpg\", alt: \"...\", ... },\n * lgDesktop: { url: \"https://example.com/inactive-lg-desktop.jpg\", alt: \"...\", ... }\n * }\n * }\n */\n backgroundImage?: ResponsiveBackgroundImage | StateBackgroundImage\n /** \u662F\u5426\u663E\u793A\u65F6\u95F4\u8F74\uFF0C\u9ED8\u8BA4\u4E3A true */\n showTimeline?: boolean\n}\n\nexport interface EventScheduleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \u4E1A\u52A1\u6570\u636E */\n data: EventScheduleData\n classNames?: Partial<Record<EventScheduleSemanticName, string>>\n}\n\n/**\n * \u5224\u65AD\u5F53\u524D\u65F6\u95F4\u662F\u5426\u5728\u6307\u5B9A\u7684\u65F6\u95F4\u533A\u95F4\u5185\n * @param startDate \u5F00\u59CB\u65E5\u671F\n * @param endDate \u7ED3\u675F\u65E5\u671F\n * @returns \u662F\u5426\u5728\u533A\u95F4\u5185\n */\nconst isInTimeRange = (startDate: string, endDate: string): boolean => {\n const now = dayjs()\n const start = dayjs(startDate).startOf('day')\n const end = dayjs(endDate).endOf('day')\n return now.isAfter(start) && now.isBefore(end)\n}\n\n/**\n * \u83B7\u53D6\u6D3B\u52A8\u9879\u7684\u6FC0\u6D3B\u72B6\u6001\n * @param item \u6D3B\u52A8\u9879\n * @returns \u662F\u5426\u6FC0\u6D3B\n */\nconst getItemActiveStatus = (item: EventScheduleItem): boolean => {\n // \u5426\u5219\u6839\u636E\u65F6\u95F4\u533A\u95F4\u81EA\u52A8\u5224\u65AD\n return isInTimeRange(item.startDate, item.endDate)\n}\n\n/**\n * \u65F6\u95F4\u8F74\u8282\u70B9\u7EC4\u4EF6\n */\nconst TimelineNode = ({ active, className }: { active: boolean; className?: string }) => {\n return (\n <div className={cn('relative my-1 flex h-2 flex-1 items-center justify-center', className)}>\n {/* \u8FDB\u5EA6\u6761 */}\n <div\n className={cn('h-2 w-full ', {\n 'bg-[#F6CD4E] rounded-full': active,\n 'bg-[#EAEAEC]': !active,\n })}\n />\n {/* \u65F6\u95F4\u8282\u70B9 */}\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div\n className={cn('size-4 rounded-full border-2 transition-colors', {\n 'border-[#F6CD4E] bg-[#F6CD4E]': active,\n 'border-[#EAEAEC] bg-[#EAEAEC]': !active,\n })}\n />\n </div>\n </div>\n )\n}\n\n/**\n * \u5224\u65AD\u662F\u5426\u4E3A\u72B6\u6001\u5316\u80CC\u666F\u56FE\u7247\u914D\u7F6E\n * @param obj \u5F85\u68C0\u67E5\u7684\u5BF9\u8C61\n * @returns \u662F\u5426\u4E3AStateBackgroundImage\u7C7B\u578B\n */\nconst isStateBackgroundImage = (obj: ResponsiveBackgroundImage | StateBackgroundImage): obj is StateBackgroundImage => {\n return typeof obj === 'object' && ('active' in obj || 'inactive' in obj)\n}\n\n/**\n * \u5C06\u54CD\u5E94\u5F0F\u80CC\u666F\u56FE\u7247\u5BF9\u8C61\u8F6C\u6362\u4E3APicture\u7EC4\u4EF6\u6240\u9700\u7684\u5B57\u7B26\u4E32\u683C\u5F0F\n * @param backgroundImage \u80CC\u666F\u56FE\u7247\u914D\u7F6E\n * @returns Picture\u7EC4\u4EF6\u53EF\u7528\u7684source\u5B57\u7B26\u4E32\n */\nconst convertResponsiveImageToString = (backgroundImage: ResponsiveBackgroundImage): string | undefined => {\n if (!backgroundImage) return undefined\n\n const { mobile, laptop, desktop, lgDesktop } = backgroundImage\n const parts: string[] = []\n\n // \u8F85\u52A9\u51FD\u6570\uFF1A\u4ECE Media \u5BF9\u8C61\u4E2D\u63D0\u53D6 URL\n const getUrl = (media: Media | undefined): string | undefined => {\n return media?.url\n }\n\n // \u83B7\u53D6\u5404\u5C3A\u5BF8\u7684 URL\n const lgDesktopUrl = getUrl(lgDesktop)\n const desktopUrl = getUrl(desktop)\n const laptopUrl = getUrl(laptop)\n const mobileUrl = getUrl(mobile)\n\n // \u9ED8\u8BA4\u56FE\u7247\uFF08\u6700\u5927\u5C3A\u5BF8\uFF09\u653E\u5728\u6700\u524D\u9762\uFF0C\u4E0D\u9700\u8981\u65AD\u70B9\n if (lgDesktopUrl) parts.push(lgDesktopUrl)\n\n // \u6309\u65AD\u70B9\u4ECE\u5927\u5230\u5C0F\u6DFB\u52A0\n if (desktopUrl) parts.push(`${desktopUrl} 1920`)\n if (laptopUrl) parts.push(`${laptopUrl} 1440`)\n if (mobileUrl) parts.push(`${mobileUrl} 1024`)\n\n return parts.length > 0 ? parts.join(', ') : undefined\n}\n\n/**\n * \u6839\u636E\u6FC0\u6D3B\u72B6\u6001\u83B7\u53D6\u5BF9\u5E94\u7684\u80CC\u666F\u56FE\u7247\n * @param backgroundImage \u80CC\u666F\u56FE\u7247\u914D\u7F6E\n * @param isActive \u662F\u5426\u6FC0\u6D3B\u72B6\u6001\n * @returns Picture\u7EC4\u4EF6\u53EF\u7528\u7684source\u5B57\u7B26\u4E32\n */\nconst formatBackgroundImage = (\n backgroundImage: ResponsiveBackgroundImage | StateBackgroundImage | undefined,\n isActive: boolean\n): string | undefined => {\n if (!backgroundImage) return undefined\n\n // \u5982\u679C\u662F\u72B6\u6001\u5316\u80CC\u666F\u56FE\u7247\uFF0C\u6839\u636E\u6FC0\u6D3B\u72B6\u6001\u9009\u62E9\u5BF9\u5E94\u7684\u56FE\u7247\n if (isStateBackgroundImage(backgroundImage)) {\n const stateImage = isActive ? backgroundImage.active : backgroundImage.inactive\n return convertResponsiveImageToString(stateImage)\n }\n\n // \u5426\u5219\u76F4\u63A5\u8F6C\u6362\n return convertResponsiveImageToString(backgroundImage)\n}\n\n/**\n * \u6D3B\u52A8\u65E5\u7A0B\u5361\u7247\u7EC4\u4EF6\n */\nconst EventScheduleCard = ({\n active,\n item,\n backgroundImage,\n className,\n}: {\n active: boolean\n item: EventScheduleItem\n backgroundImage: ResponsiveBackgroundImage | StateBackgroundImage | undefined\n className?: string\n}) => {\n const pictureSource = React.useMemo(() => {\n return formatBackgroundImage(backgroundImage, active)\n }, [backgroundImage, active])\n\n return (\n <div\n className={cn(\n 'rounded-box laptop:h-[160px] relative flex h-[120px] min-w-0 flex-1 flex-col justify-between gap-2 overflow-hidden',\n className\n )}\n >\n <Picture source={pictureSource} alt=\"\" className=\"absolute inset-0 z-10\" imgClassName=\"h-full object-cover\" />\n {/* \u5185\u5BB9\u533A\u57DF */}\n <div className=\"relative z-20 size-full p-4\">\n <Heading\n html={item.title}\n className={cn('desktop:text-[24px] text-[20px] font-bold leading-[1.2] text-[#080A0F]')}\n />\n {/* \u8BE6\u7EC6\u4FE1\u606F\u5217\u8868 */}\n <div className=\"flex flex-col gap-0.5\">\n {item.items.map((detail, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n {/* \u56FE\u6807 */}\n {detail.icon && (\n <div className=\"desktop:size-6 size-5 shrink-0\">\n <Picture source={detail.icon.url} alt={detail.icon.alt} className=\"size-full\" />\n </div>\n )}\n {/* \u6587\u672C */}\n <Text\n html={detail.label}\n className={cn('desktop:text-[18px] flex-1 text-[14px] font-bold leading-[1.4] text-[#080A0F]')}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * EventSchedule - \u6D3B\u52A8\u65E5\u7A0B\u7EC4\u4EF6\n *\n * @description \u663E\u793A\u6D3B\u52A8\u65E5\u7A0B\u65F6\u95F4\u8F74\u548C\u6D3B\u52A8\u5361\u7247\u5217\u8868\n */\nconst EventSchedule = React.forwardRef<HTMLDivElement, EventScheduleProps>(({ classNames = {}, data }, ref) => {\n const itemsPerRow = React.useMemo(() => {\n return data?.scheduleList?.length || 2\n }, [data?.scheduleList])\n\n // \u6839\u636E itemsPerRow \u914D\u7F6E\u54CD\u5E94\u5F0F\u65AD\u70B9\n const swiperBreakpoints = React.useMemo(() => {\n switch (itemsPerRow) {\n case 2:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 2,\n },\n 1024: {\n spaceBetween: 16,\n },\n 1440: {\n spaceBetween: 16,\n slidesPerView: 2,\n },\n }\n case 3:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 2.4,\n },\n 1024: {\n slidesPerView: itemsPerRow,\n spaceBetween: 16,\n },\n 1440: {\n spaceBetween: 16,\n slidesPerView: itemsPerRow,\n },\n }\n case 4:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 2.4,\n },\n 1024: {\n slidesPerView: 3.2,\n spaceBetween: 16,\n },\n 1440: {\n slidesPerView: itemsPerRow,\n },\n }\n default:\n return {\n 0: {\n slidesPerView: 1.17,\n spaceBetween: 12,\n },\n 768: {\n slidesPerView: 1,\n },\n 1024: {\n slidesPerView: itemsPerRow,\n spaceBetween: 16,\n },\n 1440: {\n slidesPerView: itemsPerRow,\n },\n }\n }\n }, [itemsPerRow])\n\n const showTimeline = data.showTimeline !== false // \u9ED8\u8BA4\u4E3A true\n\n return (\n <div\n ref={ref}\n className={cn(\n 'tablet:px-8 laptop:px-16 desktop:px-16 lg-desktop:px-[calc(50%-832px)] flex w-full flex-col gap-4 overflow-hidden px-4',\n classNames?.root\n )}\n >\n <Swiper breakpoints={swiperBreakpoints} className=\"w-full !overflow-visible\">\n {data.scheduleList.map((item, index) => {\n const isActive = getItemActiveStatus(item)\n return (\n <SwiperSlide key={'SwiperSlideItem' + index}>\n {/* \u65F6\u95F4\u8F74 */}\n {showTimeline && <TimelineNode className={classNames?.timeline} active={isActive} />}\n <EventScheduleCard\n active={isActive}\n className={cn(showTimeline ? 'mt-4' : '', classNames?.eventScheduleCard)}\n item={item}\n backgroundImage={data.backgroundImage}\n />\n </SwiperSlide>\n )\n })}\n </Swiper>\n </div>\n )\n})\n\nEventSchedule.displayName = 'EventSchedule'\nexport default EventSchedule\n\n// \u5BFC\u51FA\u7C7B\u578B\u4F9B\u5916\u90E8\u4F7F\u7528\n// export type { ResponsiveBackgroundImage, StateBackgroundImage, EventScheduleItem, EventScheduleData, EventScheduleProps }\n"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "React", "cn", "Text", "Picture", "Heading", "Swiper", "SwiperSlide", "dayjs", "isInTimeRange", "startDate", "endDate", "now", "start", "end", "getItemActiveStatus", "item", "TimelineNode", "active", "className", "isStateBackgroundImage", "obj", "convertResponsiveImageToString", "backgroundImage", "mobile", "laptop", "desktop", "lgDesktop", "parts", "getUrl", "media", "lgDesktopUrl", "desktopUrl", "laptopUrl", "mobileUrl", "formatBackgroundImage", "isActive", "stateImage", "EventScheduleCard", "pictureSource", "detail", "index", "EventSchedule", "classNames", "data", "ref", "itemsPerRow", "swiperBreakpoints", "showTimeline", "EventSchedule_default"]
7
7
  }
@@ -1,18 +1,26 @@
1
1
  import * as React from 'react';
2
+ import type { Media } from '../../types/props.js';
3
+ export interface PromotionalBarSemanticName {
4
+ root: 'root';
5
+ content: 'content';
6
+ title: 'title';
7
+ description: 'description';
8
+ button: 'button';
9
+ }
2
10
  /**
3
11
  * 响应式背景图片配置
4
12
  */
5
13
  export interface ResponsiveBackgroundImage {
6
14
  /** 移动端图片 (<768px) */
7
- mobile?: string;
15
+ mobile?: Media;
8
16
  /** 平板图片 (768-1440px) */
9
- tablet?: string;
17
+ tablet?: Media;
10
18
  /** 笔记本图片 (1025-1440px) */
11
- laptop?: string;
19
+ laptop?: Media;
12
20
  /** 桌面图片 (1441-1920px) */
13
- desktop?: string;
21
+ desktop?: Media;
14
22
  /** 超大桌面图片 (≥1921px) */
15
- lgDesktop?: string;
23
+ lgDesktop?: Media;
16
24
  }
17
25
  /**
18
26
  * PromotionalBar 业务组件数据接口
@@ -26,17 +34,16 @@ export interface PromotionalBarData {
26
34
  buttonText?: string;
27
35
  /** 按钮链接 */
28
36
  buttonLink?: string;
29
- /** 背景图片 - 支持字符串或响应式图片对象 */
30
- backgroundImage?: string | ResponsiveBackgroundImage;
37
+ /** 背景图片 - 响应式图片对象 */
38
+ backgroundImage?: ResponsiveBackgroundImage;
31
39
  }
32
40
  export interface PromotionalBarProps extends React.HTMLAttributes<HTMLDivElement> {
33
41
  /** 业务数据 */
34
42
  data: PromotionalBarData;
43
+ classNames?: Partial<Record<keyof PromotionalBarSemanticName, string>>;
35
44
  }
36
- /**
37
- * PromotionalBar - 推广栏
38
- *
39
- * @description 推广栏
40
- */
41
- declare const PromotionalBar: React.ForwardRefExoticComponent<PromotionalBarProps & React.RefAttributes<HTMLDivElement>>;
42
- export default PromotionalBar;
45
+ declare const _default: React.ForwardRefExoticComponent<Omit<Omit<PromotionalBarProps & React.RefAttributes<HTMLDivElement>, keyof import("../../shared/Styles.js").StylesProps> & Partial<import("../../shared/Styles.js").StylesProps & import("../../shared/Styles.js").ContainerProps> & {
46
+ className?: string | undefined;
47
+ data?: Record<string, any> | undefined;
48
+ }, "ref"> & React.RefAttributes<any>>;
49
+ export default _default;
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as r,jsxs as c}from"react/jsx-runtime";import*as a from"react";import{cn as u}from"../../helpers/index.js";import{Heading as m,Button as f,Picture as d,Container as g}from"../../components/index.js";const x=p=>{if(!p)return;if(typeof p=="string")return p;const{mobile:t,tablet:i,laptop:n,desktop:o,lgDesktop:s}=p,e=[];return s?e.push(s):o?e.push(o):n?e.push(n):i?e.push(i):t&&e.push(t),o&&s&&e.push(`${o} 1920`),n&&(o||s)&&e.push(`${n} 1440`),i&&(n||o||s)&&e.push(`${i} 1024`),t&&(i||n||o||s)&&e.push(`${t} 768`),e.length>0?e.join(", "):void 0},l=a.forwardRef(({className:p,data:t,...i},n)=>{const{backgroundImage:o}=t,s=a.useMemo(()=>x(o),[o]);return r("div",{ref:n,className:u("w-full",p),...i,children:r(g,{className:"laptop:h-[192px] lg-desktop:h-[240px] h-[240px]",children:c("div",{className:"promotional-bar-content rounded-box relative h-full overflow-hidden",children:[c("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&&r(m,{className:"text-[#F5F6F7]",size:3,children:t.contentTitle}),t.contentDesc&&r("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}),r("div",{className:"laptop:mt-4 mt-1",children:t.buttonText&&r(f,{as:"a",variant:"link",className:"!p-0 text-[#F5F6F7]",href:t.buttonLink,children:t.buttonText})})]}),r(d,{source:s,className:"absolute inset-0 z-10",imgClassName:"h-full object-cover"})]})})})});l.displayName="PromotionalBar";var b=l;export{b as default};
1
+ "use client";import{jsx as a,jsxs as x}from"react/jsx-runtime";import*as f from"react";import{cn as p}from"../../helpers/index.js";import{Heading as v,Button as k,Picture as B}from"../../components/index.js";import{withLayout as M}from"../../shared/Styles.js";const P=o=>{if(!o)return;const{mobile:e,tablet:m,laptop:c,desktop:d,lgDesktop:b}=o,t=[],s=h=>h?.url,i=s(b),n=s(d),r=s(c),l=s(m),u=s(e);return i?t.push(i):n?t.push(n):r?t.push(r):l?t.push(l):u&&t.push(u),n&&i&&t.push(`${n} 1920`),r&&(n||i)&&t.push(`${r} 1440`),l&&(r||n||i)&&t.push(`${l} 1024`),u&&(l||r||n||i)&&t.push(`${u} 768`),t.length>0?t.join(", "):void 0},g=f.forwardRef(({classNames:o,data:e},m)=>{const{backgroundImage:c}=e,d=f.useMemo(()=>P(c),[c]);return a("div",{ref:m,className:p("laptop:h-[192px] lg-desktop:h-[240px] h-[240px]",o?.root),children:x("div",{className:"promotional-bar-content rounded-box relative h-full overflow-hidden",children:[x("div",{className:p("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",o?.content),children:[e.contentTitle&&a(v,{className:p("text-[#F5F6F7]",o?.title),html:e.contentTitle,size:3}),e.contentDesc&&a("p",{className:p("laptop:text-[16px] laptop:line-clamp-2 lg-desktop:text-[18px] text-[14px] font-bold leading-[1.4] text-[#F5F6F7]",o?.description),dangerouslySetInnerHTML:{__html:e.contentDesc}}),a("div",{className:"laptop:mt-4 mt-1",children:e.buttonText&&a(k,{as:"a",variant:"link",className:p("!p-0 text-[#F5F6F7]",o?.button),href:e.buttonLink,children:e.buttonText})})]}),a(B,{source:d,className:"absolute inset-0 z-10",imgClassName:"h-full object-cover"})]})})});g.displayName="PromotionalBar";var y=M(g);export{y as default};
2
2
  //# sourceMappingURL=index.js.map