admin-ui-starter-kit 0.4.5 → 0.6.1
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.
- package/.agents/skills/admin-ui-components/SKILL.md +71 -0
- package/.agents/skills/admin-ui-components/agents/openai.yaml +4 -0
- package/.agents/skills/admin-ui-components/references/selection-checklist.md +23 -0
- package/.agents/skills/admin-ui-consumer-migration/SKILL.md +75 -15
- package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +57 -47
- package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +71 -0
- package/.agents/skills/component-library-rules/SKILL.md +39 -24
- package/.agents/skills/component-library-rules/references/audit-followups.md +6 -5
- package/.agents/skills/component-library-rules/references/base-wrapper.md +1 -1
- package/.agents/skills/component-library-rules/references/components/INDEX.json +30 -18
- package/.agents/skills/component-library-rules/references/components/INDEX.md +30 -12
- package/.agents/skills/component-library-rules/references/components/base__accordion.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__alert.md +3 -3
- package/.agents/skills/component-library-rules/references/components/base__avatar.md +118 -0
- package/.agents/skills/component-library-rules/references/components/base__buttons.md +21 -17
- package/.agents/skills/component-library-rules/references/components/base__cards.md +50 -14
- package/.agents/skills/component-library-rules/references/components/base__carousel.md +5 -5
- package/.agents/skills/component-library-rules/references/components/base__combobox.md +62 -79
- package/.agents/skills/component-library-rules/references/components/base__css-variables.md +810 -0
- package/.agents/skills/component-library-rules/references/components/base__display-utilities.md +427 -0
- package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__forms.md +62 -1
- package/.agents/skills/component-library-rules/references/components/base__icon-badge.md +84 -0
- package/.agents/skills/component-library-rules/references/components/base__item.md +10 -1
- package/.agents/skills/component-library-rules/references/components/base__navigation.md +7 -6
- package/.agents/skills/component-library-rules/references/components/base__spinner.md +2 -0
- package/.agents/skills/component-library-rules/references/components/base__table.md +413 -113
- package/.agents/skills/component-library-rules/references/components/base__tooltip.md +76 -0
- package/.agents/skills/component-library-rules/references/components/composed__admin.md +66 -0
- package/.agents/skills/component-library-rules/references/components/composed__ai.md +34 -2
- package/.agents/skills/component-library-rules/references/components/composed__commerce.md +44 -2
- package/.agents/skills/component-library-rules/references/components/composed__empty-state.md +313 -0
- package/.agents/skills/component-library-rules/references/components/composed__inline-stat.md +63 -0
- package/.agents/skills/component-library-rules/references/components/composed__metadata-list.md +433 -0
- package/.agents/skills/component-library-rules/references/components/composed__onboarding-checklist.md +1 -1
- package/.agents/skills/component-library-rules/references/components/composed__resource-selector-card.md +89 -0
- package/.agents/skills/component-library-rules/references/components/docs__design-system-consistency.md +413 -0
- package/.agents/skills/component-library-rules/references/components/docs__installation.md +221 -0
- package/.agents/skills/component-library-rules/references/components/docs__overview.md +266 -0
- package/.agents/skills/component-library-rules/references/components/docs__refinement-guide.md +280 -0
- package/.agents/skills/component-library-rules/references/components/docs__showcase.md +197 -0
- package/.agents/skills/component-library-rules/references/components/features__activities.md +87 -88
- package/.agents/skills/component-library-rules/references/components/features__ai-chat.md +7 -7
- package/.agents/skills/component-library-rules/references/components/features__data-view.md +175 -0
- package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +51 -55
- package/.agents/skills/component-library-rules/references/components/features__filters.md +69 -0
- package/.agents/skills/component-library-rules/references/components/features__kanban.md +37 -35
- package/.agents/skills/component-library-rules/references/components/features__media-library.md +9 -3
- package/.agents/skills/component-library-rules/references/components/features__overlays.md +1 -1
- package/.agents/skills/component-library-rules/references/components/features__products.md +91 -75
- package/.agents/skills/component-library-rules/references/components/features__resource.md +194 -0
- package/.agents/skills/component-library-rules/references/components/features__schema-form.md +12 -10
- package/.agents/skills/component-library-rules/references/components/features__suggestions.md +6 -6
- package/.agents/skills/component-library-rules/references/components/features__sync.md +30 -12
- package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +14 -14
- package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +224 -188
- package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +2 -2
- package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +41 -6
- package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +218 -14
- package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +4 -4
- package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +4 -4
- package/.agents/skills/component-library-rules/references/components/layout__layout-workspace.md +19 -11
- package/.agents/skills/component-library-rules/references/components/services__actions.md +443 -0
- package/.agents/skills/component-library-rules/references/components/services__hooks.md +326 -0
- package/.agents/skills/component-library-rules/references/components/ui__button.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__empty-item.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__inputs.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__menus.md +15 -9
- package/.agents/skills/component-library-rules/references/components/ui__skeleton.md +3 -3
- package/.agents/skills/component-library-rules/references/consumer-wiring.md +2 -2
- package/.agents/skills/component-library-rules/references/history.md +10 -10
- package/.agents/skills/component-library-rules/references/import-paths.md +3 -3
- package/.agents/skills/component-library-rules/references/item-pattern.md +3 -3
- package/.agents/skills/component-library-rules/references/layout.md +7 -5
- package/.agents/skills/component-library-rules/references/testing.md +5 -5
- package/.agents/skills/component-library-rules/references/ui-provider.md +11 -12
- package/.agents/skills/component-library-rules/references/visual-eval.md +1 -1
- package/.agents/skills/token-system/SKILL.md +81 -0
- package/.agents/skills/token-system/agents/openai.yaml +4 -0
- package/.agents/skills/token-system/references/consumer-overrides.md +68 -0
- package/AGENTS.md +42 -17
- package/CHANGELOG.md +19 -3
- package/COMPONENT_SELECTION.md +46 -9
- package/INTEGRATION.md +113 -23
- package/MIGRATION.md +32 -0
- package/README.md +110 -43
- package/dist/_shared/accordion-B9EjlZLY.js +135 -0
- package/dist/_shared/accordion-B9EjlZLY.js.map +1 -0
- package/dist/_shared/accordion-IFDIc0E7.cjs +2 -0
- package/dist/_shared/accordion-IFDIc0E7.cjs.map +1 -0
- package/dist/_shared/action-menu-B6yFRDz1.cjs +2 -0
- package/dist/_shared/action-menu-B6yFRDz1.cjs.map +1 -0
- package/dist/_shared/action-menu-CNS-fwQr.js +96 -0
- package/dist/_shared/action-menu-CNS-fwQr.js.map +1 -0
- package/dist/_shared/ai-artifact-B3qhuiKC.js +1099 -0
- package/dist/_shared/ai-artifact-B3qhuiKC.js.map +1 -0
- package/dist/_shared/ai-artifact-Dtr0bnVq.cjs +3 -0
- package/dist/_shared/ai-artifact-Dtr0bnVq.cjs.map +1 -0
- package/dist/_shared/alert-V0V36Sny.cjs +2 -0
- package/dist/_shared/alert-V0V36Sny.cjs.map +1 -0
- package/dist/_shared/alert-m-4s0Hqq.js +81 -0
- package/dist/_shared/alert-m-4s0Hqq.js.map +1 -0
- package/dist/_shared/app-shell-D3eGUtL-.js +69 -0
- package/dist/_shared/app-shell-D3eGUtL-.js.map +1 -0
- package/dist/_shared/app-shell-QJHARDMB.cjs +2 -0
- package/dist/_shared/app-shell-QJHARDMB.cjs.map +1 -0
- package/dist/_shared/auth-B_KVUjsB.cjs +2 -0
- package/dist/_shared/auth-B_KVUjsB.cjs.map +1 -0
- package/dist/_shared/auth-C_TgyzDl.js +643 -0
- package/dist/_shared/auth-C_TgyzDl.js.map +1 -0
- package/dist/_shared/avatar-BagPbPuD.js +105 -0
- package/dist/_shared/avatar-BagPbPuD.js.map +1 -0
- package/dist/_shared/avatar-BnKM_o2d.cjs +2 -0
- package/dist/_shared/avatar-BnKM_o2d.cjs.map +1 -0
- package/dist/_shared/badge-BeSKxX1u.cjs +2 -0
- package/dist/_shared/badge-BeSKxX1u.cjs.map +1 -0
- package/dist/_shared/badge-a2Z3K5aQ.js +110 -0
- package/dist/_shared/badge-a2Z3K5aQ.js.map +1 -0
- package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs +2 -0
- package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-B57Unsoe.js +105 -0
- package/dist/_shared/breadcrumbs-B57Unsoe.js.map +1 -0
- package/dist/_shared/button-Bd5bEIiB.cjs +2 -0
- package/dist/_shared/button-Bd5bEIiB.cjs.map +1 -0
- package/dist/_shared/button-DHksjMvc.js +189 -0
- package/dist/_shared/button-DHksjMvc.js.map +1 -0
- package/dist/_shared/buttons-C8jy-jMd.cjs +2 -0
- package/dist/_shared/buttons-C8jy-jMd.cjs.map +1 -0
- package/dist/_shared/buttons-MxvdokeK.js +137 -0
- package/dist/_shared/buttons-MxvdokeK.js.map +1 -0
- package/dist/_shared/card-radio-group-C2p_iBal.cjs +2 -0
- package/dist/_shared/card-radio-group-C2p_iBal.cjs.map +1 -0
- package/dist/_shared/card-radio-group-Fdi1Cz1j.js +150 -0
- package/dist/_shared/card-radio-group-Fdi1Cz1j.js.map +1 -0
- package/dist/_shared/cards-BKFwMTjM.cjs +2 -0
- package/dist/_shared/cards-BKFwMTjM.cjs.map +1 -0
- package/dist/_shared/cards-CtBoSZG9.js +355 -0
- package/dist/_shared/cards-CtBoSZG9.js.map +1 -0
- package/dist/_shared/checkbox-Cbh5x6ad.js +31 -0
- package/dist/_shared/checkbox-Cbh5x6ad.js.map +1 -0
- package/dist/_shared/checkbox-ECGg8wjW.cjs +2 -0
- package/dist/_shared/checkbox-ECGg8wjW.cjs.map +1 -0
- package/dist/_shared/combobox-BIe72dV3.js +954 -0
- package/dist/_shared/combobox-BIe72dV3.js.map +1 -0
- package/dist/_shared/combobox-CJiFDoTi.cjs +2 -0
- package/dist/_shared/combobox-CJiFDoTi.cjs.map +1 -0
- package/dist/_shared/command-ByedBajF.js +39 -0
- package/dist/_shared/command-ByedBajF.js.map +1 -0
- package/dist/_shared/command-EGR0nhGc.cjs +2 -0
- package/dist/_shared/command-EGR0nhGc.cjs.map +1 -0
- package/dist/_shared/comments-C8iXy9XO.cjs +2 -0
- package/dist/_shared/comments-C8iXy9XO.cjs.map +1 -0
- package/dist/_shared/comments-DGBxF9fD.js +952 -0
- package/dist/_shared/comments-DGBxF9fD.js.map +1 -0
- package/dist/_shared/copyable-Dopk9pEJ.js +38 -0
- package/dist/_shared/copyable-Dopk9pEJ.js.map +1 -0
- package/dist/_shared/copyable-rQwxsTJ3.cjs +2 -0
- package/dist/_shared/copyable-rQwxsTJ3.cjs.map +1 -0
- package/dist/_shared/data-display-CRFaMkxT.js +1873 -0
- package/dist/_shared/data-display-CRFaMkxT.js.map +1 -0
- package/dist/_shared/data-display-C_44_V-W.cjs +2 -0
- package/dist/_shared/data-display-C_44_V-W.cjs.map +1 -0
- package/dist/_shared/date-picker-BiUgIkjP.cjs +2 -0
- package/dist/_shared/date-picker-BiUgIkjP.cjs.map +1 -0
- package/dist/_shared/date-picker-DFkLiveH.js +1361 -0
- package/dist/_shared/date-picker-DFkLiveH.js.map +1 -0
- package/dist/_shared/date-pickers-C86tVD8e.cjs +2 -0
- package/dist/_shared/date-pickers-C86tVD8e.cjs.map +1 -0
- package/dist/_shared/date-pickers-D4oxOOHE.js +329 -0
- package/dist/_shared/date-pickers-D4oxOOHE.js.map +1 -0
- package/dist/_shared/display-B0wLVN8t.js +986 -0
- package/dist/_shared/display-B0wLVN8t.js.map +1 -0
- package/dist/_shared/display-Bin2vVex.cjs +2 -0
- package/dist/_shared/display-Bin2vVex.cjs.map +1 -0
- package/dist/_shared/form-sizing-C51oI3Di.js +42 -0
- package/dist/_shared/form-sizing-C51oI3Di.js.map +1 -0
- package/dist/_shared/form-sizing-Co53Drri.cjs +2 -0
- package/dist/_shared/form-sizing-Co53Drri.cjs.map +1 -0
- package/dist/_shared/forms-qnwoUqxf.js +3533 -0
- package/dist/_shared/forms-qnwoUqxf.js.map +1 -0
- package/dist/_shared/forms-rmKcy5uO.cjs +2 -0
- package/dist/_shared/forms-rmKcy5uO.cjs.map +1 -0
- package/dist/_shared/header-CxhEtk9M.cjs +2 -0
- package/dist/_shared/header-CxhEtk9M.cjs.map +1 -0
- package/dist/_shared/header-h3f14vQx.js +447 -0
- package/dist/_shared/header-h3f14vQx.js.map +1 -0
- package/dist/_shared/hooks-CS55-w3h.js +95 -0
- package/dist/_shared/hooks-CS55-w3h.js.map +1 -0
- package/dist/_shared/hooks-sfHAyDgD.cjs +2 -0
- package/dist/_shared/hooks-sfHAyDgD.cjs.map +1 -0
- package/dist/_shared/icon-badge-CU6ZkcER.cjs +2 -0
- package/dist/_shared/icon-badge-CU6ZkcER.cjs.map +1 -0
- package/dist/_shared/icon-badge-dZQPvuas.js +48 -0
- package/dist/_shared/icon-badge-dZQPvuas.js.map +1 -0
- package/dist/_shared/input-CB6hxh-5.cjs +2 -0
- package/dist/_shared/input-CB6hxh-5.cjs.map +1 -0
- package/dist/_shared/input-CfnHBT--.js +182 -0
- package/dist/_shared/input-CfnHBT--.js.map +1 -0
- package/dist/_shared/item-Xs-fgzaT.js +226 -0
- package/dist/_shared/item-Xs-fgzaT.js.map +1 -0
- package/dist/_shared/item-eUP9Rtmg.cjs +2 -0
- package/dist/_shared/item-eUP9Rtmg.cjs.map +1 -0
- package/dist/_shared/layout.types-CYuDZ_4h.cjs +2 -0
- package/dist/_shared/layout.types-CYuDZ_4h.cjs.map +1 -0
- package/dist/_shared/layout.types-j7zZAPtg.js +28 -0
- package/dist/_shared/layout.types-j7zZAPtg.js.map +1 -0
- package/dist/_shared/mentions-BahbwDwU.js +506 -0
- package/dist/_shared/mentions-BahbwDwU.js.map +1 -0
- package/dist/_shared/mentions-aHalksbt.cjs +2 -0
- package/dist/_shared/mentions-aHalksbt.cjs.map +1 -0
- package/dist/_shared/money-display-BLPNMmiT.cjs +2 -0
- package/dist/_shared/money-display-BLPNMmiT.cjs.map +1 -0
- package/dist/_shared/money-display-D_-Cb8-9.js +198 -0
- package/dist/_shared/money-display-D_-Cb8-9.js.map +1 -0
- package/dist/_shared/navigation-BcYAwgzo.js +436 -0
- package/dist/_shared/navigation-BcYAwgzo.js.map +1 -0
- package/dist/_shared/navigation-DAB7uuBj.cjs +2 -0
- package/dist/_shared/navigation-DAB7uuBj.cjs.map +1 -0
- package/dist/_shared/overlays-CdtMAkKG.js +648 -0
- package/dist/_shared/overlays-CdtMAkKG.js.map +1 -0
- package/dist/_shared/overlays-Diy_H0Au.cjs +2 -0
- package/dist/_shared/overlays-Diy_H0Au.cjs.map +1 -0
- package/dist/_shared/page-C6EzwvTz.cjs +2 -0
- package/dist/_shared/page-C6EzwvTz.cjs.map +1 -0
- package/dist/_shared/page-DCW1eWCJ.js +262 -0
- package/dist/_shared/page-DCW1eWCJ.js.map +1 -0
- package/dist/_shared/popover-dWR7-MzY.cjs +2 -0
- package/dist/_shared/popover-dWR7-MzY.cjs.map +1 -0
- package/dist/_shared/popover-menu-qxBZlTck.js +93 -0
- package/dist/_shared/popover-menu-qxBZlTck.js.map +1 -0
- package/dist/_shared/popover-menu-z9QTjl4o.cjs +2 -0
- package/dist/_shared/popover-menu-z9QTjl4o.cjs.map +1 -0
- package/dist/_shared/popover-xVENY0Ax.js +83 -0
- package/dist/_shared/popover-xVENY0Ax.js.map +1 -0
- package/dist/_shared/rich-text-editor-DeIiIDn7.cjs +2 -0
- package/dist/_shared/rich-text-editor-DeIiIDn7.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-VIBlL0x3.js +620 -0
- package/dist/_shared/rich-text-editor-VIBlL0x3.js.map +1 -0
- package/dist/_shared/scroll-area-B32KwU9k.js +43 -0
- package/dist/_shared/scroll-area-B32KwU9k.js.map +1 -0
- package/dist/_shared/scroll-area-CIRXK7s0.cjs +2 -0
- package/dist/_shared/scroll-area-CIRXK7s0.cjs.map +1 -0
- package/dist/_shared/settings-DbAyxMrX.cjs +2 -0
- package/dist/_shared/settings-DbAyxMrX.cjs.map +1 -0
- package/dist/_shared/settings-QOBrbgdN.js +143 -0
- package/dist/_shared/settings-QOBrbgdN.js.map +1 -0
- package/dist/_shared/sidebar-BRg39UF1.js +389 -0
- package/dist/_shared/sidebar-BRg39UF1.js.map +1 -0
- package/dist/_shared/sidebar-Cwhom9QE.cjs +2 -0
- package/dist/_shared/sidebar-Cwhom9QE.cjs.map +1 -0
- package/dist/_shared/sidebar-DfToCaiC.cjs +2 -0
- package/dist/_shared/sidebar-DfToCaiC.cjs.map +1 -0
- package/dist/_shared/sidebar-DhpRdTZH.js +541 -0
- package/dist/_shared/sidebar-DhpRdTZH.js.map +1 -0
- package/dist/_shared/spinner-D35zNriU.cjs +2 -0
- package/dist/_shared/spinner-D35zNriU.cjs.map +1 -0
- package/dist/_shared/spinner-DMC2IIml.js +67 -0
- package/dist/_shared/spinner-DMC2IIml.js.map +1 -0
- package/dist/_shared/table-CUA_A-oO.js +1377 -0
- package/dist/_shared/table-CUA_A-oO.js.map +1 -0
- package/dist/_shared/table-mPchjiRn.cjs +2 -0
- package/dist/_shared/table-mPchjiRn.cjs.map +1 -0
- package/dist/_shared/textarea-B24qgdmd.cjs +2 -0
- package/dist/_shared/textarea-B24qgdmd.cjs.map +1 -0
- package/dist/_shared/textarea-ChLRmmVU.js +118 -0
- package/dist/_shared/textarea-ChLRmmVU.js.map +1 -0
- package/dist/_shared/typography-CO9uwZhF.cjs +2 -0
- package/dist/_shared/typography-CO9uwZhF.cjs.map +1 -0
- package/dist/_shared/typography-DE0NGEIE.js +201 -0
- package/dist/_shared/typography-DE0NGEIE.js.map +1 -0
- package/dist/_shared/ui-provider-DZWtUXf2.cjs +2 -0
- package/dist/_shared/ui-provider-DZWtUXf2.cjs.map +1 -0
- package/dist/_shared/ui-provider-Dj6OSOZi.js +81 -0
- package/dist/_shared/ui-provider-Dj6OSOZi.js.map +1 -0
- package/dist/_shared/workspace-BgtWS9fA.cjs +2 -0
- package/dist/_shared/workspace-BgtWS9fA.cjs.map +1 -0
- package/dist/_shared/workspace-D2jJ0PlS.js +357 -0
- package/dist/_shared/workspace-D2jJ0PlS.js.map +1 -0
- package/dist/components/base/accordion/accordion-variants.d.ts +10 -9
- package/dist/components/base/accordion/accordion-variants.d.ts.map +1 -1
- package/dist/components/base/accordion/accordion.d.ts +1 -1
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +1 -1
- package/dist/components/base/accordion/smart-accordion.d.ts.map +1 -1
- package/dist/components/base/badge/badge.d.ts.map +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/buttons/base-button.d.ts.map +1 -1
- package/dist/components/base/buttons/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/buttons/loader-button.d.ts.map +1 -1
- package/dist/components/base/buttons/page-action-button.d.ts +1 -1
- package/dist/components/base/buttons/page-action-button.d.ts.map +1 -1
- package/dist/components/base/buttons/text-button.d.ts +3 -6
- package/dist/components/base/buttons/text-button.d.ts.map +1 -1
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.tokens.d.ts +3 -4
- package/dist/components/base/cards/smart-card.tokens.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.types.d.ts +4 -4
- package/dist/components/base/cards/smart-card.types.d.ts.map +1 -1
- package/dist/components/base/carousel/index.cjs +1 -1
- package/dist/components/base/carousel/index.cjs.map +1 -1
- package/dist/components/base/carousel/index.js +4 -4
- package/dist/components/base/carousel/index.js.map +1 -1
- package/dist/components/base/combobox/async-resource-combobox.d.ts +41 -0
- package/dist/components/base/combobox/async-resource-combobox.d.ts.map +1 -0
- package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -1
- package/dist/components/base/combobox/components/error-message.d.ts.map +1 -1
- package/dist/components/base/combobox/constants.d.ts +1 -1
- package/dist/components/base/combobox/constants.d.ts.map +1 -1
- package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.d.ts +1 -0
- package/dist/components/base/combobox/index.d.ts.map +1 -1
- package/dist/components/base/combobox/index.js +2 -2
- package/dist/components/base/combobox/types.d.ts +1 -1
- package/dist/components/base/combobox/types.d.ts.map +1 -1
- package/dist/components/base/command/command.d.ts +1 -1
- package/dist/components/base/command/index.cjs +1 -1
- package/dist/components/base/command/index.js +1 -1
- package/dist/components/base/copyable/index.cjs +1 -1
- package/dist/components/base/copyable/index.js +1 -1
- package/dist/components/base/currency/index.cjs +1 -1
- package/dist/components/base/currency/index.js +1 -1
- package/dist/components/base/date-pickers/date-picker.d.ts +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/date-pickers/segmented-time-input.d.ts.map +1 -1
- package/dist/components/base/display/avatar.d.ts +24 -1
- package/dist/components/base/display/avatar.d.ts.map +1 -1
- package/dist/components/base/display/boolean-indicator.d.ts +2 -1
- package/dist/components/base/display/boolean-indicator.d.ts.map +1 -1
- package/dist/components/base/display/chart.cjs +2 -2
- package/dist/components/base/display/chart.cjs.map +1 -1
- package/dist/components/base/display/chart.js +4 -4
- package/dist/components/base/display/chart.js.map +1 -1
- package/dist/components/base/display/date-block.d.ts +2 -1
- package/dist/components/base/display/date-block.d.ts.map +1 -1
- package/dist/components/base/display/empty.d.ts +8 -0
- package/dist/components/base/display/empty.d.ts.map +1 -0
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +2 -1
- package/dist/components/base/display/icon-badge/icon-badge.d.ts.map +1 -1
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.d.ts +1 -7
- package/dist/components/base/display/index.d.ts.map +1 -1
- package/dist/components/base/display/index.js +10 -11
- package/dist/components/base/display/scroll-area.d.ts +10 -1
- package/dist/components/base/display/scroll-area.d.ts.map +1 -1
- package/dist/components/base/display/stacked-avatars.d.ts +2 -1
- package/dist/components/base/display/stacked-avatars.d.ts.map +1 -1
- package/dist/components/base/display/throttle-alert.d.ts +2 -1
- package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts +2 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.cjs.map +1 -1
- package/dist/components/base/event-calendar/index.js +37 -37
- package/dist/components/base/event-calendar/index.js.map +1 -1
- package/dist/components/base/forms/fields/avatar-upload.d.ts +4 -2
- package/dist/components/base/forms/fields/avatar-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/checkbox.d.ts +14 -1
- package/dist/components/base/forms/fields/checkbox.d.ts.map +1 -1
- package/dist/components/base/forms/fields/choice-types.d.ts +3 -2
- package/dist/components/base/forms/fields/choice-types.d.ts.map +1 -1
- package/dist/components/base/forms/fields/coordinates-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/decimal-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/dropzone.d.ts +4 -2
- package/dist/components/base/forms/fields/dropzone.d.ts.map +1 -1
- package/dist/components/base/forms/fields/file-upload.d.ts +2 -1
- package/dist/components/base/forms/fields/file-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/image-upload.d.ts +2 -1
- package/dist/components/base/forms/fields/image-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts +2 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts.map +1 -1
- package/dist/components/base/forms/fields/list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts +2 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts.map +1 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts +2 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/select.d.ts.map +1 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts +2 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/tags-input.d.ts +2 -1
- package/dist/components/base/forms/fields/tags-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/time-picker.d.ts.map +1 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts +2 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/weight-input.d.ts.map +1 -1
- package/dist/components/base/forms/form-sizing.d.ts +8 -0
- package/dist/components/base/forms/form-sizing.d.ts.map +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.d.ts +1 -0
- package/dist/components/base/forms/index.d.ts.map +1 -1
- package/dist/components/base/forms/index.js +7 -8
- package/dist/components/base/forms/workflow.d.ts +47 -0
- package/dist/components/base/forms/workflow.d.ts.map +1 -0
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/base/item/index.cjs +1 -1
- package/dist/components/base/item/index.js +1 -1
- package/dist/components/base/item/item.d.ts.map +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.cjs.map +1 -1
- package/dist/components/base/map/index.js +55 -54
- package/dist/components/base/map/index.js.map +1 -1
- package/dist/components/base/map/map.d.ts.map +1 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts +2 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts.map +1 -1
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +3 -3
- package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
- package/dist/components/base/popover/index.cjs +1 -1
- package/dist/components/base/popover/index.js +1 -1
- package/dist/components/base/popover/popover.d.ts +2 -2
- package/dist/components/base/popover-menu/index.cjs +1 -1
- package/dist/components/base/popover-menu/index.js +1 -1
- package/dist/components/base/sidebar/index.cjs +1 -1
- package/dist/components/base/sidebar/index.js +1 -1
- package/dist/components/base/spinner/index.cjs +1 -1
- package/dist/components/base/spinner/index.js +1 -1
- package/dist/components/base/table/column-visibility-toggle.d.ts.map +1 -1
- package/dist/components/base/table/data-table.d.ts +2 -2
- package/dist/components/base/table/data-table.d.ts.map +1 -1
- package/dist/components/base/table/filter-bar.d.ts.map +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.d.ts +1 -1
- package/dist/components/base/table/index.d.ts.map +1 -1
- package/dist/components/base/table/index.js +2 -2
- package/dist/components/base/table/partials/cell-renderers.d.ts +69 -0
- package/dist/components/base/table/partials/cell-renderers.d.ts.map +1 -1
- package/dist/components/base/table/table-actions.d.ts.map +1 -1
- package/dist/components/base/table/table-header.d.ts.map +1 -1
- package/dist/components/base/table/table-toolbar.d.ts.map +1 -1
- package/dist/components/base/table/table.strings.d.ts.map +1 -1
- package/dist/components/base/table/table.types.d.ts +34 -9
- package/dist/components/base/table/table.types.d.ts.map +1 -1
- package/dist/components/base/toaster/index.cjs +1 -1
- package/dist/components/base/toaster/index.js +1 -1
- package/dist/components/composed/admin/action-surfaces/index.d.ts +118 -0
- package/dist/components/composed/admin/action-surfaces/index.d.ts.map +1 -0
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.cjs.map +1 -1
- package/dist/components/composed/admin/index.d.ts +1 -0
- package/dist/components/composed/admin/index.d.ts.map +1 -1
- package/dist/components/composed/admin/index.js +403 -143
- package/dist/components/composed/admin/index.js.map +1 -1
- package/dist/components/composed/ai/ai-agent/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-agent/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-artifact/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-artifact/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-attachment/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-attachment/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-citation/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-citation/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-classification/ai-classification.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-code-block/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-code-block/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confidence/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-confidence/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confirmation/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-confirmation/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-feedback/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-feedback/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-file-tree/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-file-tree/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-inline-citation/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-inline-citation/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-message-bubble/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-message-bubble/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-package-info/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-package-info/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-reasoning/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-reasoning/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-sources/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-sources/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-summary/ai-summary.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-task/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-task/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-token-usage/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-token-usage/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-tool-call/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-tool-call/types.d.ts.map +1 -1
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.cjs.map +1 -1
- package/dist/components/composed/ai/index.js +111 -105
- package/dist/components/composed/ai/index.js.map +1 -1
- package/dist/components/composed/analytics/activity-heatmap/types.d.ts +2 -1
- package/dist/components/composed/analytics/activity-heatmap/types.d.ts.map +1 -1
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.cjs.map +1 -1
- package/dist/components/composed/analytics/index.js +87 -87
- package/dist/components/composed/analytics/index.js.map +1 -1
- package/dist/components/composed/cards/contact-card/types.d.ts +2 -1
- package/dist/components/composed/cards/contact-card/types.d.ts.map +1 -1
- package/dist/components/composed/cards/course-card/types.d.ts +2 -1
- package/dist/components/composed/cards/course-card/types.d.ts.map +1 -1
- package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/types.d.ts +2 -1
- package/dist/components/composed/cards/giftcard-card/types.d.ts.map +1 -1
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.cjs.map +1 -1
- package/dist/components/composed/cards/index.js +186 -190
- package/dist/components/composed/cards/index.js.map +1 -1
- package/dist/components/composed/cards/vendor-profile/types.d.ts +2 -1
- package/dist/components/composed/cards/vendor-profile/types.d.ts.map +1 -1
- package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -1
- package/dist/components/composed/commerce/address-card/types.d.ts +2 -1
- package/dist/components/composed/commerce/address-card/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/cart-summary/types.d.ts +2 -1
- package/dist/components/composed/commerce/cart-summary/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts.map +1 -1
- package/dist/components/composed/commerce/coupon-input/types.d.ts +2 -1
- package/dist/components/composed/commerce/coupon-input/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/discount-stack/types.d.ts +2 -1
- package/dist/components/composed/commerce/discount-stack/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.js +205 -211
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts.map +1 -1
- package/dist/components/composed/commerce/loyalty-points/types.d.ts +2 -1
- package/dist/components/composed/commerce/loyalty-points/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/order-status/types.d.ts +2 -1
- package/dist/components/composed/commerce/order-status/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/payment-method/types.d.ts +2 -1
- package/dist/components/composed/commerce/payment-method/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/refund-status/refund-status.d.ts.map +1 -1
- package/dist/components/composed/commerce/refund-status/types.d.ts +2 -1
- package/dist/components/composed/commerce/refund-status/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts.map +1 -1
- package/dist/components/composed/commerce/subscription-summary/types.d.ts +2 -1
- package/dist/components/composed/commerce/subscription-summary/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/tax-breakdown/types.d.ts +2 -1
- package/dist/components/composed/commerce/tax-breakdown/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/voucher-entry/types.d.ts +2 -1
- package/dist/components/composed/commerce/voucher-entry/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
- package/dist/components/composed/dark-surfaces/index.js +65 -66
- package/dist/components/composed/dark-surfaces/index.js.map +1 -1
- package/dist/components/composed/data-display/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/empty-state.strings.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/empty-state.types.d.ts +85 -0
- package/dist/components/composed/data-display/empty-state/empty-state.types.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/document-stack.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/inbox-clean.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/search-glass.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/stacked-cards.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/users-circle.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/email-display.d.ts +23 -0
- package/dist/components/composed/data-display/fields/email-display.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/phone-display.d.ts +23 -0
- package/dist/components/composed/data-display/fields/phone-display.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/url-display.d.ts +29 -0
- package/dist/components/composed/data-display/fields/url-display.d.ts.map +1 -0
- package/dist/components/composed/data-display/index.cjs +1 -2
- package/dist/components/composed/data-display/index.d.ts +8 -0
- package/dist/components/composed/data-display/index.d.ts.map +1 -1
- package/dist/components/composed/data-display/index.js +2 -1095
- package/dist/components/composed/data-display/inline-stat/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/inline-stat/inline-stat.d.ts.map +1 -0
- package/dist/components/composed/data-display/invoice-header/types.d.ts +2 -1
- package/dist/components/composed/data-display/invoice-header/types.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-mini/types.d.ts +2 -1
- package/dist/components/composed/data-display/invoice-mini/types.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-table/types.d.ts +2 -1
- package/dist/components/composed/data-display/invoice-table/types.d.ts.map +1 -1
- package/dist/components/composed/data-display/metadata/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -0
- package/dist/components/composed/data-display/metadata/metadata-list.strings.d.ts.map +1 -0
- package/dist/components/composed/data-display/numeric-value/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/numeric-value/numeric-value.d.ts.map +1 -0
- package/dist/components/composed/data-display/resource-selector-card.d.ts +43 -0
- package/dist/components/composed/data-display/resource-selector-card.d.ts.map +1 -0
- package/dist/components/composed/data-display/section-header/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/section-header/section-header.d.ts.map +1 -0
- package/dist/components/composed/data-display/user-cell/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/user-cell/user-cell.d.ts +20 -0
- package/dist/components/composed/data-display/user-cell/user-cell.d.ts.map +1 -0
- package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts +2 -1
- package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts.map +1 -1
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.cjs.map +1 -1
- package/dist/components/composed/navigation/index.js +12 -12
- package/dist/components/composed/navigation/index.js.map +1 -1
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.cjs.map +1 -1
- package/dist/components/composed/onboarding/index.js +3 -3
- package/dist/components/composed/timelines/activity-stream/types.d.ts +2 -1
- package/dist/components/composed/timelines/activity-stream/types.d.ts.map +1 -1
- package/dist/components/composed/timelines/changelog/types.d.ts +2 -1
- package/dist/components/composed/timelines/changelog/types.d.ts.map +1 -1
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.cjs.map +1 -1
- package/dist/components/composed/timelines/index.js +6 -6
- package/dist/components/composed/timelines/index.js.map +1 -1
- package/dist/components/composed/timelines/milestones/types.d.ts +2 -1
- package/dist/components/composed/timelines/milestones/types.d.ts.map +1 -1
- package/dist/components/features/activities/activities.types.d.ts +3 -2
- package/dist/components/features/activities/activities.types.d.ts.map +1 -1
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.cjs.map +1 -1
- package/dist/components/features/activities/index.js +33 -30
- package/dist/components/features/activities/index.js.map +1 -1
- package/dist/components/features/activities/partials/activities-feed-card.d.ts.map +1 -1
- package/dist/components/features/ai-chat/index.cjs +2 -2
- package/dist/components/features/ai-chat/index.cjs.map +1 -1
- package/dist/components/features/ai-chat/index.js +42 -42
- package/dist/components/features/ai-chat/index.js.map +1 -1
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.cjs.map +1 -1
- package/dist/components/features/card/index.js +6 -6
- package/dist/components/features/card/index.js.map +1 -1
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/data-view/data-view.d.ts +6 -0
- package/dist/components/features/data-view/data-view.d.ts.map +1 -0
- package/dist/components/features/data-view/data-view.strings.d.ts +7 -0
- package/dist/components/features/data-view/data-view.strings.d.ts.map +1 -0
- package/dist/components/features/data-view/data-view.types.d.ts +57 -0
- package/dist/components/features/data-view/data-view.types.d.ts.map +1 -0
- package/dist/components/features/data-view/index.cjs +2 -0
- package/dist/components/features/data-view/index.cjs.map +1 -0
- package/dist/components/features/data-view/index.d.ts +4 -0
- package/dist/components/features/data-view/index.d.ts.map +1 -0
- package/dist/components/features/data-view/index.js +146 -0
- package/dist/components/features/data-view/index.js.map +1 -0
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.cjs.map +1 -1
- package/dist/components/features/event-log/index.js +6 -6
- package/dist/components/features/event-log/index.js.map +1 -1
- package/dist/components/features/filters/filter-context.d.ts +5 -0
- package/dist/components/features/filters/filter-context.d.ts.map +1 -1
- package/dist/components/features/filters/filter-layout.d.ts.map +1 -1
- package/dist/components/features/filters/filter-query.d.ts +22 -0
- package/dist/components/features/filters/filter-query.d.ts.map +1 -0
- package/dist/components/features/filters/filters.types.d.ts +1 -1
- package/dist/components/features/filters/filters.types.d.ts.map +1 -1
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.cjs.map +1 -1
- package/dist/components/features/filters/index.d.ts +1 -0
- package/dist/components/features/filters/index.d.ts.map +1 -1
- package/dist/components/features/filters/index.js +394 -286
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/filters/partials/active-filter-item.d.ts.map +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/tags-filter-content.d.ts.map +1 -1
- package/dist/components/features/global-search/global-search.d.ts.map +1 -1
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.cjs.map +1 -1
- package/dist/components/features/global-search/index.js +36 -28
- package/dist/components/features/global-search/index.js.map +1 -1
- package/dist/components/features/global-search/partials/global-search-input.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts.map +1 -1
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.cjs.map +1 -1
- package/dist/components/features/kanban/index.js +5 -5
- package/dist/components/features/kanban/index.js.map +1 -1
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.cjs.map +1 -1
- package/dist/components/features/media-library/index.js +60 -61
- package/dist/components/features/media-library/index.js.map +1 -1
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/products/components/product-contract-overview.d.ts.map +1 -1
- package/dist/components/features/products/components/product-details-card.d.ts.map +1 -1
- package/dist/components/features/products/components/product-quote-preview-card.d.ts.map +1 -1
- package/dist/components/features/products/components/product-readiness-card.d.ts.map +1 -1
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.cjs.map +1 -1
- package/dist/components/features/products/index.js +135 -136
- package/dist/components/features/products/index.js.map +1 -1
- package/dist/components/features/products/products.types.d.ts +1 -1
- package/dist/components/features/products/products.types.d.ts.map +1 -1
- package/dist/components/features/resource/index.cjs +2 -0
- package/dist/components/features/resource/index.cjs.map +1 -0
- package/dist/components/features/resource/index.d.ts +3 -0
- package/dist/components/features/resource/index.d.ts.map +1 -0
- package/dist/components/features/resource/index.js +240 -0
- package/dist/components/features/resource/index.js.map +1 -0
- package/dist/components/features/resource/resource.d.ts +13 -0
- package/dist/components/features/resource/resource.d.ts.map +1 -0
- package/dist/components/features/resource/resource.types.d.ts +87 -0
- package/dist/components/features/resource/resource.types.d.ts.map +1 -0
- package/dist/components/features/rich-text-editor/index.cjs +1 -1
- package/dist/components/features/rich-text-editor/index.js +1 -1
- package/dist/components/features/schema-form/index.cjs +1 -1
- package/dist/components/features/schema-form/index.cjs.map +1 -1
- package/dist/components/features/schema-form/index.js +11 -11
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/features/sync/index.cjs +1 -1
- package/dist/components/features/sync/index.cjs.map +1 -1
- package/dist/components/features/sync/index.js +53 -31
- package/dist/components/features/sync/index.js.map +1 -1
- package/dist/components/features/sync/sync-range-dialog-form.d.ts.map +1 -1
- package/dist/components/features/sync/sync.strings.d.ts +6 -0
- package/dist/components/features/sync/sync.strings.d.ts.map +1 -1
- package/dist/components/layout/app-shell/app-shell.types.d.ts +7 -7
- package/dist/components/layout/app-shell/app-shell.types.d.ts.map +1 -1
- package/dist/components/layout/app-shell/index.cjs +1 -1
- package/dist/components/layout/app-shell/index.d.ts +1 -0
- package/dist/components/layout/app-shell/index.d.ts.map +1 -1
- package/dist/components/layout/app-shell/index.js +2 -2
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts.map +1 -1
- package/dist/components/layout/auth/index.cjs +1 -1
- package/dist/components/layout/auth/index.js +1 -1
- package/dist/components/layout/header/header.types.d.ts +40 -4
- package/dist/components/layout/header/header.types.d.ts.map +1 -1
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.d.ts +5 -1
- package/dist/components/layout/header/index.d.ts.map +1 -1
- package/dist/components/layout/header/index.js +2 -2
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +3 -0
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts.map +1 -0
- package/dist/components/layout/header/partials/header-notifications.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts.map +1 -1
- package/dist/components/layout/header/partials/header-tool-button.d.ts +5 -0
- package/dist/components/layout/header/partials/header-tool-button.d.ts.map +1 -0
- package/dist/components/layout/header/partials/header-tool-popover.d.ts +3 -0
- package/dist/components/layout/header/partials/header-tool-popover.d.ts.map +1 -0
- package/dist/components/layout/header/partials/header-user-menu.d.ts.map +1 -1
- package/dist/components/layout/hooks/index.cjs +1 -1
- package/dist/components/layout/hooks/index.js +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +10 -8
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/page/page.types.d.ts +2 -1
- package/dist/components/layout/page/page.types.d.ts.map +1 -1
- package/dist/components/layout/settings/index.cjs +1 -0
- package/dist/components/layout/settings/index.d.ts +2 -0
- package/dist/components/layout/settings/index.d.ts.map +1 -0
- package/dist/components/layout/settings/index.js +2 -0
- package/dist/components/layout/settings/settings.d.ts +47 -0
- package/dist/components/layout/settings/settings.d.ts.map +1 -0
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +2 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.d.ts +1 -0
- package/dist/components/layout/sidebar/index.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.js +3 -3
- package/dist/components/layout/sidebar/sidebar.d.ts +2 -1
- package/dist/components/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/sidebar.types.d.ts +3 -2
- package/dist/components/layout/sidebar/sidebar.types.d.ts.map +1 -1
- package/dist/components/layout/workspace/index.cjs +1 -1
- package/dist/components/layout/workspace/index.js +1 -1
- package/dist/components/layout/workspace/workspace.d.ts.map +1 -1
- package/dist/components/typography/index.cjs +1 -1
- package/dist/components/typography/index.js +2 -3
- package/dist/components/typography/label.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/dist/lib/ui-provider/defaults.d.ts.map +1 -1
- package/dist/lib/ui-provider/hooks.d.ts +1 -2
- package/dist/lib/ui-provider/hooks.d.ts.map +1 -1
- package/dist/lib/ui-provider/index.cjs +1 -1
- package/dist/lib/ui-provider/index.d.ts +2 -2
- package/dist/lib/ui-provider/index.d.ts.map +1 -1
- package/dist/lib/ui-provider/index.js +2 -2
- package/dist/lib/ui-provider/types.d.ts +13 -14
- package/dist/lib/ui-provider/types.d.ts.map +1 -1
- package/dist/lib/utils.cjs +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +31 -10
- package/dist/lib/utils.js.map +1 -1
- package/dist/services/actions/action-adapters.d.ts +5 -0
- package/dist/services/actions/action-adapters.d.ts.map +1 -1
- package/dist/services/actions/action-provider.d.ts +1 -1
- package/dist/services/actions/action-provider.d.ts.map +1 -1
- package/dist/services/actions/action-store.d.ts.map +1 -1
- package/dist/services/actions/actions.types.d.ts +25 -0
- package/dist/services/actions/actions.types.d.ts.map +1 -1
- package/dist/services/actions/index.cjs +1 -1
- package/dist/services/actions/index.cjs.map +1 -1
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions/index.d.ts.map +1 -1
- package/dist/services/actions/index.js +114 -96
- package/dist/services/actions/index.js.map +1 -1
- package/dist/showcase/assets/AreaChart-CGkuyNyy.js +6 -0
- package/dist/showcase/assets/CSPContext-Bfs88_eg.js +1 -0
- package/dist/showcase/assets/CompositeItem-DAQ048AO.js +1 -0
- package/dist/showcase/assets/CompositeRoot-8-OuCMMq.js +1 -0
- package/dist/showcase/assets/DialogTrigger-1P-jwcoH.js +1 -0
- package/dist/showcase/assets/FieldItemContext-ChrM5Ge4.js +1 -0
- package/dist/showcase/assets/LabelableContext-BDyZArAc.js +1 -0
- package/dist/showcase/assets/PreviewLayout-wYGhlcJt.js +1 -0
- package/dist/showcase/assets/RadioGroup-DuiI4W--.js +1 -0
- package/dist/showcase/assets/ScrollAreaCorner-Df5uTkWT.js +1 -0
- package/dist/showcase/assets/Separator-BuTBo5a_.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-B4S4Fn7d.js +1 -0
- package/dist/showcase/assets/accordion-D3beuJpC.js +171 -0
- package/dist/showcase/assets/accordion-variants-BTMpfSPI.js +1 -0
- package/dist/showcase/assets/action-menu-DsAr1OqF.js +1 -0
- package/dist/showcase/assets/actions-BzyHAEZR.js +310 -0
- package/dist/showcase/assets/activities-BgoelWKu.js +500 -0
- package/dist/showcase/assets/activities-feed-card-DI4MIm3-.js +1 -0
- package/dist/showcase/assets/admin-n-JemkNh.js +140 -0
- package/dist/showcase/assets/ai-BXyk1mT0.js +207 -0
- package/dist/showcase/assets/ai-artifact-C8CmZ94f.js +2 -0
- package/dist/showcase/assets/ai-chat-CTQQ4e4X.js +568 -0
- package/dist/showcase/assets/ai-elements-DGnlBq8E.js +387 -0
- package/dist/showcase/assets/ai-tool-call-bHnWNBtN.js +1 -0
- package/dist/showcase/assets/alert-CIHGXUul.js +62 -0
- package/dist/showcase/assets/alert-N79A6qIx.js +93 -0
- package/dist/showcase/assets/alert-bPnj3_cC.js +1 -0
- package/dist/showcase/assets/api-key-list-Bf1KoRJq.js +1 -0
- package/dist/showcase/assets/api-key-list-DyZ_DaRx.js +73 -0
- package/dist/showcase/assets/app-sidebar-Co0LUSvz.js +1 -0
- package/dist/showcase/assets/arrow-down-BttnoDxP.js +1 -0
- package/dist/showcase/assets/arrow-left-B1kFGJ8v.js +1 -0
- package/dist/showcase/assets/arrow-right-Md96ra7v.js +1 -0
- package/dist/showcase/assets/arrow-up-B9e9cP-q.js +1 -0
- package/dist/showcase/assets/arrow-up-right-BOHJNdrp.js +1 -0
- package/dist/showcase/assets/avatar-CJaCYGWf.js +1 -0
- package/dist/showcase/assets/avatar-CxwFyL4T.js +57 -0
- package/dist/showcase/assets/avatar-D3kvVy00.js +1 -0
- package/dist/showcase/assets/avatar-DKLsNeBi.js +67 -0
- package/dist/showcase/assets/badge-CSMmwDLr.js +31 -0
- package/dist/showcase/assets/badge-check-TQRmqI7C.js +1 -0
- package/dist/showcase/assets/bell-CwRy7zpP.js +1 -0
- package/dist/showcase/assets/bot-Bt02Uzhq.js +1 -0
- package/dist/showcase/assets/box-Bfv5RQBf.js +1 -0
- package/dist/showcase/assets/braces-CxUoAPd4.js +1 -0
- package/dist/showcase/assets/brain-CNapE0CP.js +1 -0
- package/dist/showcase/assets/brand-CBq1YoS0.js +36 -0
- package/dist/showcase/assets/breadcrumb-DRioiUd_.js +1 -0
- package/dist/showcase/assets/breadcrumb-DyXpErBT.js +52 -0
- package/dist/showcase/assets/breadcrumbs-BzHeoItO.js +1 -0
- package/dist/showcase/assets/briefcase-N74Hu0O2.js +1 -0
- package/dist/showcase/assets/building-2-D81ygy-F.js +1 -0
- package/dist/showcase/assets/button-Bgqg7AmN.js +44 -0
- package/dist/showcase/assets/button-group-DPV1XIW3.js +1 -0
- package/dist/showcase/assets/buttons-qpZWlILG.js +272 -0
- package/dist/showcase/assets/calendar-BXG5CwbY.js +1 -0
- package/dist/showcase/assets/calendar-D-CSqGtC.js +16 -0
- package/dist/showcase/assets/calendar-DcYyOrNY.js +1 -0
- package/dist/showcase/assets/calendar-days-CNNiyV9e.js +1 -0
- package/dist/showcase/assets/camera-D0yVo0xC.js +1 -0
- package/dist/showcase/assets/card-Bl-y9-8y.js +1 -0
- package/dist/showcase/assets/card-CH7Ev3xS.js +188 -0
- package/dist/showcase/assets/card-primitives-CiU5lL3a.js +1 -0
- package/dist/showcase/assets/card-radio-group-DpeIWyiO.js +1 -0
- package/dist/showcase/assets/cards-7xave3ub.js +354 -0
- package/dist/showcase/assets/carousel--kHTFkC7.js +449 -0
- package/dist/showcase/assets/cell-renderers-Cx8rAZln.js +1 -0
- package/dist/showcase/assets/chart-DU8INHbt.js +358 -0
- package/dist/showcase/assets/chart-column-Dbekq8cy.js +1 -0
- package/dist/showcase/assets/checkbox-ClPnzko9.js +1 -0
- package/dist/showcase/assets/checkbox-Qhh92dbS.js +1 -0
- package/dist/showcase/assets/chevron-down-BqrI6QzQ.js +1 -0
- package/dist/showcase/assets/chevron-left-TJKYH3rG.js +1 -0
- package/dist/showcase/assets/chevron-up-CPuAmh-d.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-DZB44PVY.js +1 -0
- package/dist/showcase/assets/circle-CY0DkTje.js +1 -0
- package/dist/showcase/assets/circle-alert-9j29FrsT.js +1 -0
- package/dist/showcase/assets/circle-check-BkFKejsY.js +1 -0
- package/dist/showcase/assets/circle-check-big-vu3Znqdx.js +1 -0
- package/dist/showcase/assets/circle-dot-CsBIkbEH.js +1 -0
- package/dist/showcase/assets/circle-question-mark-BRiF5RV4.js +1 -0
- package/dist/showcase/assets/circle-x-BF20gddw.js +1 -0
- package/dist/showcase/assets/clock-3-mhWDhdka.js +1 -0
- package/dist/showcase/assets/clock-Dd-urPd2.js +1 -0
- package/dist/showcase/assets/code-xml-D2f-X63y.js +1 -0
- package/dist/showcase/assets/collapsible-CF0oQTVS.js +1 -0
- package/dist/showcase/assets/collapsible-Ru5-bssh.js +27 -0
- package/dist/showcase/assets/combobox-DpJTW_Rq.js +685 -0
- package/dist/showcase/assets/command-Dno8Ogez.js +1 -0
- package/dist/showcase/assets/command-LRFStKBy.js +1 -0
- package/dist/showcase/assets/comment-composer-Dht7nfbv.js +1 -0
- package/dist/showcase/assets/comment-item-B6IgQsMr.js +1 -0
- package/dist/showcase/assets/comments-B3ksV3Mn.js +357 -0
- package/dist/showcase/assets/commerce-B1_Offbz.js +267 -0
- package/dist/showcase/assets/composite-BjQWIYF-.js +1 -0
- package/dist/showcase/assets/contact-card-Bss4YHZz.js +65 -0
- package/dist/showcase/assets/content-container-D4BM1Zro.js +1 -0
- package/dist/showcase/assets/copyable-C0J88R_R.js +96 -0
- package/dist/showcase/assets/copyable-Dst8oaw5.js +1 -0
- package/dist/showcase/assets/course-card-BuqwjqtO.js +77 -0
- package/dist/showcase/assets/cpu-CFy0M0rN.js +1 -0
- package/dist/showcase/assets/credit-card-CFq0S1Ma.js +1 -0
- package/dist/showcase/assets/css-variables-BAALjDwD.js +1190 -0
- package/dist/showcase/assets/currency-BZzZRv2_.js +149 -0
- package/dist/showcase/assets/dark-surfaces-CVKt2Yww.js +90 -0
- package/dist/showcase/assets/data-view-Be0uoLqL.js +4 -0
- package/dist/showcase/assets/data-view-D6_zyFwk.js +124 -0
- package/dist/showcase/assets/database-DSC-ysYT.js +1 -0
- package/dist/showcase/assets/date-block-Bgu_LMxB.js +1 -0
- package/dist/showcase/assets/date-picker-ByYEZGMg.js +1 -0
- package/dist/showcase/assets/date-pickers-DzSQrvWs.js +73 -0
- package/dist/showcase/assets/dense-info-BhFkOQbt.js +106 -0
- package/dist/showcase/assets/design-system-consistency-D6iCJLcr.js +264 -0
- package/dist/showcase/assets/dialog-C1heXuxu.js +1 -0
- package/dist/showcase/assets/dialog-DzrcsKvl.js +1 -0
- package/dist/showcase/assets/display-utilities-eu-EVMrx.js +267 -0
- package/dist/showcase/assets/dist-BlIID0_L.js +1 -0
- package/dist/showcase/assets/dist-DV4Tv32d.js +45 -0
- package/dist/showcase/assets/dollar-sign-qp4G3P_K.js +1 -0
- package/dist/showcase/assets/download-zlcHjSdS.js +1 -0
- package/dist/showcase/assets/dropdown-menu-DZ47rJaE.js +1 -0
- package/dist/showcase/assets/dropzone-Dx4EqBHu.js +1 -0
- package/dist/showcase/assets/earth-BuXqXHh6.js +1 -0
- package/dist/showcase/assets/ellipsis-DgAjMZHc.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-BA8_YMyV.js +1 -0
- package/dist/showcase/assets/empty-DXjKmyNv.js +1 -0
- package/dist/showcase/assets/empty-item-DIGWYsI0.js +49 -0
- package/dist/showcase/assets/empty-state-BSc0tQNC.js +190 -0
- package/dist/showcase/assets/empty-state-CkixFVN1.js +1 -0
- package/dist/showcase/assets/enhanced-activities-CKbHgR4f.js +357 -0
- package/dist/showcase/assets/enhanced-combobox-DAKQyFUg.js +1 -0
- package/dist/showcase/assets/esm-C3PfkuOc.js +2 -0
- package/dist/showcase/assets/event-calendar-rNju8jaT.js +138 -0
- package/dist/showcase/assets/event-log-BUK1blGb.js +330 -0
- package/dist/showcase/assets/example-PsbgbESI.js +1 -0
- package/dist/showcase/assets/external-link-CgB9zfWz.js +1 -0
- package/dist/showcase/assets/eye-YnIHbdKe.js +1 -0
- package/dist/showcase/assets/feature-announcement-CWwjAPI1.js +34 -0
- package/dist/showcase/assets/file-3Z2xkc-8.js +1 -0
- package/dist/showcase/assets/file-text-BQeGXxPG.js +1 -0
- package/dist/showcase/assets/filter-layout-D7YskzbC.js +1 -0
- package/dist/showcase/assets/filters-2YY_wVwq.js +139 -0
- package/dist/showcase/assets/flag-Bw3wwRgF.js +1 -0
- package/dist/showcase/assets/folder-open-CZ5Bq4lK.js +1 -0
- package/dist/showcase/assets/form-field-AWNJL9FM.js +1 -0
- package/dist/showcase/assets/form-sizing-C3UG5WKC.js +1 -0
- package/dist/showcase/assets/format-DUU7-42g.js +1 -0
- package/dist/showcase/assets/forms-CWJ3HBbk.js +915 -0
- package/dist/showcase/assets/funnel-vxNNph7w.js +1 -0
- package/dist/showcase/assets/generic-DlyFJDj6.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-CibNto5h.js +1 -0
- package/dist/showcase/assets/gift-BjRHqTcQ.js +1 -0
- package/dist/showcase/assets/giftcard-cards-DcujCFff.js +85 -0
- package/dist/showcase/assets/git-branch-B7XnpQE0.js +1 -0
- package/dist/showcase/assets/global-search-CWvNfmpe.js +1 -0
- package/dist/showcase/assets/global-search-Ct7I1Xd2.js +215 -0
- package/dist/showcase/assets/globe-CHleXWd2.js +1 -0
- package/dist/showcase/assets/gradient-card-Bw4oJljh.js +58 -0
- package/dist/showcase/assets/hash-BVGqnm6_.js +1 -0
- package/dist/showcase/assets/header-CgApizpk.js +1 -0
- package/dist/showcase/assets/header-notifications-B2v1Mdri.js +1 -0
- package/dist/showcase/assets/heart-BwvHCA-d.js +1 -0
- package/dist/showcase/assets/hooks-A_AQLIRZ.js +217 -0
- package/dist/showcase/assets/house-opqNxOmP.js +1 -0
- package/dist/showcase/assets/icon-badge-CsG95J1Z.js +37 -0
- package/dist/showcase/assets/icon-badge-ognVhKWR.js +1 -0
- package/dist/showcase/assets/image-apDSlTAx.js +1 -0
- package/dist/showcase/assets/inbox-WrbeTKEw.js +1 -0
- package/dist/showcase/assets/index-CCxHwV7T.css +2 -0
- package/dist/showcase/assets/index-QESvAJrb.js +10 -0
- package/dist/showcase/assets/index.esm-BXmcbSs7.js +1 -0
- package/dist/showcase/assets/inertValue-DrANZiJk.js +1 -0
- package/dist/showcase/assets/info-C3G9KRCx.js +1 -0
- package/dist/showcase/assets/inline-stat-BnjUqzDM.js +15 -0
- package/dist/showcase/assets/inline-stat-CO01t7SJ.js +1 -0
- package/dist/showcase/assets/input-CBJy1dMs.js +1 -0
- package/dist/showcase/assets/input-group-CZyYSq4r.js +47 -0
- package/dist/showcase/assets/input-group-Dfqufdp4.js +1 -0
- package/dist/showcase/assets/input-yYoqWQQ7.js +1 -0
- package/dist/showcase/assets/inputs-Bhw_FGDY.js +155 -0
- package/dist/showcase/assets/installation-DnvS2ZUn.js +134 -0
- package/dist/showcase/assets/invoice-header-B9Ak8GXX.js +36 -0
- package/dist/showcase/assets/invoice-items-DY5zUZhE.js +36 -0
- package/dist/showcase/assets/invoice-mini-BAryECEH.js +14 -0
- package/dist/showcase/assets/invoice-table-BUvjee74.js +30 -0
- package/dist/showcase/assets/isSameDay-DVP1ae2V.js +1 -0
- package/dist/showcase/assets/isToday-CNAQB-p9.js +1 -0
- package/dist/showcase/assets/italic-CjQCLJci.js +1 -0
- package/dist/showcase/assets/item-BMSdEK3V.js +1 -0
- package/dist/showcase/assets/item-D1Jxrpia.js +1 -0
- package/dist/showcase/assets/item-DxPwk321.js +139 -0
- package/dist/showcase/assets/kanban-DXWCGieQ.js +188 -0
- package/dist/showcase/assets/key-round-DpuhXiJQ.js +1 -0
- package/dist/showcase/assets/label-D1wLK5nY.js +1 -0
- package/dist/showcase/assets/languages-CGYZVmbV.js +1 -0
- package/dist/showcase/assets/layers-DJZSVGAu.js +1 -0
- package/dist/showcase/assets/layout-app-shell-UX63nzTO.js +608 -0
- package/dist/showcase/assets/layout-auth-Bav5BBqp.js +790 -0
- package/dist/showcase/assets/layout-containers-DMHD2zdV.js +101 -0
- package/dist/showcase/assets/layout-header-CGesu_kM.js +203 -0
- package/dist/showcase/assets/layout-page-DHXu8SIv.js +314 -0
- package/dist/showcase/assets/layout-primitives-CokzGwd2.js +34 -0
- package/dist/showcase/assets/layout-sidebar-CLUYajcu.js +224 -0
- package/dist/showcase/assets/layout-users-DHUNAnFA.js +117 -0
- package/dist/showcase/assets/layout-workspace-y0v2FpDW.js +191 -0
- package/dist/showcase/assets/lib-g_kR7X9Z.js +1 -0
- package/dist/showcase/assets/list-checks-CXt8visd.js +1 -0
- package/dist/showcase/assets/lock-CpZ5kLUd.js +1 -0
- package/dist/showcase/assets/lock-keyhole-Cy2raRO6.js +1 -0
- package/dist/showcase/assets/mail-Cj6uT4TA.js +1 -0
- package/dist/showcase/assets/mail-check-Di70bdf6.js +1 -0
- package/dist/showcase/assets/map-DMXbG_04.js +124 -0
- package/dist/showcase/assets/map-pin-EKhu7vEj.js +1 -0
- package/dist/showcase/assets/media-library-Dnp9S0oW.js +699 -0
- package/dist/showcase/assets/mention-inline-suggestions-Bp-fVNYF.js +1 -0
- package/dist/showcase/assets/mentions-DNRk30XZ.js +138 -0
- package/dist/showcase/assets/menus-DFURb5VL.js +171 -0
- package/dist/showcase/assets/message-square-DG0qIsG_.js +1 -0
- package/dist/showcase/assets/metadata-list-BhlsEWYT.js +1 -0
- package/dist/showcase/assets/metadata-list-Cb1DQd4S.js +286 -0
- package/dist/showcase/assets/metric-BkzIsP8H.js +1 -0
- package/dist/showcase/assets/metric-bar-CU73nx89.js +1 -0
- package/dist/showcase/assets/metric-grid-BMLMbLjE.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-Dutl5uZo.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-AqG2oyIy.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-CrFHmR2f.js +50 -0
- package/dist/showcase/assets/metrics-comparison-CY-DyLv7.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-BmX_CkiP.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-C1IFjdJN.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-8Kbn034e.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-CodO02yA.js +42 -0
- package/dist/showcase/assets/metrics-overview-CdPqEAAG.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Cw7UMWmb.js +54 -0
- package/dist/showcase/assets/minus-B1es6KJX.js +1 -0
- package/dist/showcase/assets/money-display-CFfUZLus.js +1 -0
- package/dist/showcase/assets/month-year-picker-ChVcYm9f.js +1 -0
- package/dist/showcase/assets/navigation-Boyt1q-1.js +231 -0
- package/dist/showcase/assets/navigation-CThYYxkL.js +90 -0
- package/dist/showcase/assets/navigation-extras-CxLc-Mqx.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-C15gqmFc.js +119 -0
- package/dist/showcase/assets/overflow-tab-bar-B2Htn-Ft.js +1 -0
- package/dist/showcase/assets/overlays-CPZfp0nk.js +159 -0
- package/dist/showcase/assets/overlays-Cpj4akiw.js +408 -0
- package/dist/showcase/assets/overview-BB-Xbkff.js +184 -0
- package/dist/showcase/assets/package-DLn6nx-u.js +1 -0
- package/dist/showcase/assets/package-check-B0wyBUSU.js +1 -0
- package/dist/showcase/assets/page-BPFNsNh7.js +1 -0
- package/dist/showcase/assets/page-action-button-DMS8Vcmz.js +1 -0
- package/dist/showcase/assets/page-header-BGqE9hzO.js +1 -0
- package/dist/showcase/assets/pagination-Be6ynLCp.js +1 -0
- package/dist/showcase/assets/pagination-T4FmLNHn.js +42 -0
- package/dist/showcase/assets/paperclip-B_kxXzSN.js +1 -0
- package/dist/showcase/assets/password-input-qfQ5eIU4.js +1 -0
- package/dist/showcase/assets/pencil-DlDLApli.js +1 -0
- package/dist/showcase/assets/phone-D8tvvbSQ.js +1 -0
- package/dist/showcase/assets/plus-BkhJjfUv.js +1 -0
- package/dist/showcase/assets/popover-BsCx2XMI.js +1 -0
- package/dist/showcase/assets/popover-Bu7aaPjE.js +1 -0
- package/dist/showcase/assets/popover-menu-CD_JfEeq.js +1 -0
- package/dist/showcase/assets/products-BzHX1ta0.js +423 -0
- package/dist/showcase/assets/progress-CpW2ZGAy.js +18 -0
- package/dist/showcase/assets/progress-jIJ_EIKE.js +1 -0
- package/dist/showcase/assets/props-table-CCcohuyT.js +1 -0
- package/dist/showcase/assets/props.generated-cO7HmIpY.json +41578 -0
- package/dist/showcase/assets/quote-Bc9eHVKi.js +1 -0
- package/dist/showcase/assets/react-sKtkuLrH.js +1 -0
- package/dist/showcase/assets/receipt-B77_VWtt.js +1 -0
- package/dist/showcase/assets/receipt-text-BlL_TJsS.js +1 -0
- package/dist/showcase/assets/refinement-guide-BpzOvT_R.js +189 -0
- package/dist/showcase/assets/refresh-cw-CELG4taF.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-LRTUaJTb.js +1 -0
- package/dist/showcase/assets/resource-BT8_ck3n.js +1 -0
- package/dist/showcase/assets/resource-C7J3yZp6.js +139 -0
- package/dist/showcase/assets/resource-selector-card-Ay8ImvKg.js +43 -0
- package/dist/showcase/assets/rich-text-editor-CdGVvtsm.js +143 -0
- package/dist/showcase/assets/rich-text-editor-DVtTVuZ6.js +124 -0
- package/dist/showcase/assets/rotate-ccw-MwEZ1b11.js +1 -0
- package/dist/showcase/assets/route-CgBh1oKF.js +1 -0
- package/dist/showcase/assets/save-BFsAGR7O.js +1 -0
- package/dist/showcase/assets/schema-form-CaF-lBkN.js +327 -0
- package/dist/showcase/assets/scroll-area-BkZULoZA.js +1 -0
- package/dist/showcase/assets/scroll-area-CpDi_6FP.js +32 -0
- package/dist/showcase/assets/section-D-N8Ze16.js +1 -0
- package/dist/showcase/assets/select-C9Mfb_Gj.js +1 -0
- package/dist/showcase/assets/select-ReMZs8K6.js +1 -0
- package/dist/showcase/assets/send-C6PbwpHN.js +1 -0
- package/dist/showcase/assets/separator-CywPSoE0.js +28 -0
- package/dist/showcase/assets/separator-Ha9YxI2x.js +1 -0
- package/dist/showcase/assets/settings-2-CVq5Uyv5.js +1 -0
- package/dist/showcase/assets/settings-DkTHc0Ob.js +1 -0
- package/dist/showcase/assets/sheet-k-P0gWlk.js +1 -0
- package/dist/showcase/assets/shield-Cme7_JJR.js +1 -0
- package/dist/showcase/assets/shield-alert-CxV0S5w0.js +1 -0
- package/dist/showcase/assets/shield-check-BW_7p6Xf.js +1 -0
- package/dist/showcase/assets/shopping-bag-CoR8AMYU.js +1 -0
- package/dist/showcase/assets/showcase-m3FzbvoC.js +132 -0
- package/dist/showcase/assets/sidebar-bz_FzvjM.js +1 -0
- package/dist/showcase/assets/sidebar.context-BWMPnGn6.js +1 -0
- package/dist/showcase/assets/skeleton-BJMnQDgf.js +29 -0
- package/dist/showcase/assets/skeleton-DoWW5XZD.js +1 -0
- package/dist/showcase/assets/slider-BH1Gtp_p.js +1 -0
- package/dist/showcase/assets/smart-card-C6-idFYI.js +1 -0
- package/dist/showcase/assets/sonner-CGZ3FC4U.js +22 -0
- package/dist/showcase/assets/sortable.esm-CE0TA9V_.js +5 -0
- package/dist/showcase/assets/sparkles-8yQFcmte.js +1 -0
- package/dist/showcase/assets/spinner-BYUX0luk.js +30 -0
- package/dist/showcase/assets/spinner-CNveVfOr.js +49 -0
- package/dist/showcase/assets/spinner-CO8LjtjY.js +1 -0
- package/dist/showcase/assets/square-pen-CWylvezY.js +1 -0
- package/dist/showcase/assets/stacked-avatars-DiNA5OJK.js +1 -0
- package/dist/showcase/assets/star-t53uwwyp.js +1 -0
- package/dist/showcase/assets/startOfDay-BKFJecZ3.js +1 -0
- package/dist/showcase/assets/styles-CwpnwrEQ.js +1 -0
- package/dist/showcase/assets/suggestions-CvxZxsmc.js +126 -0
- package/dist/showcase/assets/switch-CewkokYT.js +1 -0
- package/dist/showcase/assets/switch-D-7uqDR8.js +1 -0
- package/dist/showcase/assets/sync-DnBSRAwH.js +124 -0
- package/dist/showcase/assets/table-3cUcSCBR.js +664 -0
- package/dist/showcase/assets/table-actions-CrujG5R-.js +1 -0
- package/dist/showcase/assets/table-ds5oNU0h.js +1 -0
- package/dist/showcase/assets/tabs-C-hJfSn5.js +19 -0
- package/dist/showcase/assets/tabs-GG911oaV.js +1 -0
- package/dist/showcase/assets/tags-input-DBeIaeVn.js +1 -0
- package/dist/showcase/assets/text-button-EZojp9Ye.js +1 -0
- package/dist/showcase/assets/text-link-DcKeYjEX.js +1 -0
- package/dist/showcase/assets/textarea-DgNgSl1g.js +1 -0
- package/dist/showcase/assets/textarea-PXKZSiRa.js +1 -0
- package/dist/showcase/assets/timelines-CaF_Ze8z.js +200 -0
- package/dist/showcase/assets/toggle-group-D_iuhL1G.js +1 -0
- package/dist/showcase/assets/toggles-BKaayRmE.js +71 -0
- package/dist/showcase/assets/toggles-group-DRAksOw2.js +32 -0
- package/dist/showcase/assets/tooltip-B_LnC5D2.js +31 -0
- package/dist/showcase/assets/trash-2-DhUpICQq.js +1 -0
- package/dist/showcase/assets/trending-up-Kfm5l65O.js +1 -0
- package/dist/showcase/assets/truck-D6SGLjv1.js +1 -0
- package/dist/showcase/assets/typography-qEz6MMn9.js +223 -0
- package/dist/showcase/assets/ui-badge-BA334hdB.js +28 -0
- package/dist/showcase/assets/ui-card-CjqUyGvB.js +30 -0
- package/dist/showcase/assets/ui-table-cDgI6WMk.js +42 -0
- package/dist/showcase/assets/upload-tray-BcA-7pqW.js +138 -0
- package/dist/showcase/assets/use-form-field-state-CGGJFfWu.js +1 -0
- package/dist/showcase/assets/use-layout-link-DIUWH-oo.js +1 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-BavpibMb.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-HDEJjv0f.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-CL0pCuxO.js +1 -0
- package/dist/showcase/assets/useCompositeItem-LkMSD9DW.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-C_oLUvf8.js +1 -0
- package/dist/showcase/assets/useControlled-BHUji6Sp.js +1 -0
- package/dist/showcase/assets/useLabelableId-DDpjUdIO.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-DQOSh-Eu.js +1 -0
- package/dist/showcase/assets/useRender-CnmFaF3Y.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-BPFrAxlp.js +1 -0
- package/dist/showcase/assets/useValueChanged-lYlHqRM1.js +1 -0
- package/dist/showcase/assets/user-DLuRcjl0.js +1 -0
- package/dist/showcase/assets/user-plus-B1Pi7SNv.js +1 -0
- package/dist/showcase/assets/users-DAlxvktS.js +1 -0
- package/dist/showcase/assets/vendor-profile-ClJ6G6SO.js +37 -0
- package/dist/showcase/assets/video-DxooIkh-.js +1 -0
- package/dist/showcase/assets/wrench-BiwmotMF.js +1 -0
- package/dist/showcase/assets/x-idpnOHil.js +1 -0
- package/dist/showcase/assets/zap-a90eC6iO.js +1 -0
- package/dist/showcase/index.html +3 -3
- package/dist/style.css +1 -1
- package/package.json +29 -13
- package/scripts/install-skill.mjs +2 -0
- package/scripts/metadata.json +67 -3
- package/scripts/publish-theme.mjs +245 -0
- package/src/App.css +10 -3
- package/src/css/defaults.css +12 -0
- package/src/css/themes/default.css +7 -0
- package/src/css/themes/shadcn.default.css +144 -0
- package/src/css/tokens/compat.css +46 -0
- package/src/css/tokens/components.css +55 -0
- package/src/css/tokens/foundation.css +90 -0
- package/src/css/tokens/layout.css +44 -0
- package/src/css/tokens/primitives.css +263 -0
- package/src/css/tokens/states.css +58 -0
- package/.agents/skills/component-library-rules/references/components/base__display.md +0 -627
- package/.agents/skills/component-library-rules/references/components/base__empty-state.md +0 -310
- package/.agents/skills/component-library-rules/references/components/base__frame.md +0 -235
- package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +0 -430
- package/.agents/skills/component-library-rules/references/components/composed__ai-new.md +0 -221
- package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +0 -295
- package/dist/_shared/accordion-Df1XrCDv.cjs +0 -2
- package/dist/_shared/accordion-Df1XrCDv.cjs.map +0 -1
- package/dist/_shared/accordion-Rzi9wEl6.js +0 -130
- package/dist/_shared/accordion-Rzi9wEl6.js.map +0 -1
- package/dist/_shared/action-menu-CrOJ63Q9.js +0 -96
- package/dist/_shared/action-menu-CrOJ63Q9.js.map +0 -1
- package/dist/_shared/action-menu-D9OowHKx.cjs +0 -2
- package/dist/_shared/action-menu-D9OowHKx.cjs.map +0 -1
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs +0 -3
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +0 -1
- package/dist/_shared/ai-artifact-nlOrSeqT.js +0 -1099
- package/dist/_shared/ai-artifact-nlOrSeqT.js.map +0 -1
- package/dist/_shared/alert-CuIIKJC-.cjs +0 -2
- package/dist/_shared/alert-CuIIKJC-.cjs.map +0 -1
- package/dist/_shared/alert-k60OnTtb.js +0 -81
- package/dist/_shared/alert-k60OnTtb.js.map +0 -1
- package/dist/_shared/app-shell-DqDnnKT4.cjs +0 -2
- package/dist/_shared/app-shell-DqDnnKT4.cjs.map +0 -1
- package/dist/_shared/app-shell-w5h0vEKg.js +0 -69
- package/dist/_shared/app-shell-w5h0vEKg.js.map +0 -1
- package/dist/_shared/auth-C5HawWvp.cjs +0 -2
- package/dist/_shared/auth-C5HawWvp.cjs.map +0 -1
- package/dist/_shared/auth-DnMEJXP9.js +0 -643
- package/dist/_shared/auth-DnMEJXP9.js.map +0 -1
- package/dist/_shared/avatar-0spfQEHG.cjs +0 -2
- package/dist/_shared/avatar-0spfQEHG.cjs.map +0 -1
- package/dist/_shared/avatar-CBi4LGxy.js +0 -52
- package/dist/_shared/avatar-CBi4LGxy.js.map +0 -1
- package/dist/_shared/badge-6WYAMJwA.js +0 -108
- package/dist/_shared/badge-6WYAMJwA.js.map +0 -1
- package/dist/_shared/badge-CBof1rbF.cjs +0 -2
- package/dist/_shared/badge-CBof1rbF.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs +0 -2
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js +0 -111
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js.map +0 -1
- package/dist/_shared/button-BGKY8UY0.js +0 -173
- package/dist/_shared/button-BGKY8UY0.js.map +0 -1
- package/dist/_shared/button-BI347RlM.cjs +0 -2
- package/dist/_shared/button-BI347RlM.cjs.map +0 -1
- package/dist/_shared/buttons-PL-TGJ32.js +0 -143
- package/dist/_shared/buttons-PL-TGJ32.js.map +0 -1
- package/dist/_shared/buttons-kVvSD_oI.cjs +0 -2
- package/dist/_shared/buttons-kVvSD_oI.cjs.map +0 -1
- package/dist/_shared/card-radio-group-Bna2uZs1.cjs +0 -2
- package/dist/_shared/card-radio-group-Bna2uZs1.cjs.map +0 -1
- package/dist/_shared/card-radio-group-D_CY1HRy.js +0 -158
- package/dist/_shared/card-radio-group-D_CY1HRy.js.map +0 -1
- package/dist/_shared/checkbox-CTqqawIT.js +0 -22
- package/dist/_shared/checkbox-CTqqawIT.js.map +0 -1
- package/dist/_shared/checkbox-D1n-nfLP.cjs +0 -2
- package/dist/_shared/checkbox-D1n-nfLP.cjs.map +0 -1
- package/dist/_shared/combobox-B4KmDZK0.cjs +0 -2
- package/dist/_shared/combobox-B4KmDZK0.cjs.map +0 -1
- package/dist/_shared/combobox-YUGi3xSc.js +0 -810
- package/dist/_shared/combobox-YUGi3xSc.js.map +0 -1
- package/dist/_shared/command-Bxe_FmGD.cjs +0 -2
- package/dist/_shared/command-Bxe_FmGD.cjs.map +0 -1
- package/dist/_shared/command-DwRnPIGs.js +0 -39
- package/dist/_shared/command-DwRnPIGs.js.map +0 -1
- package/dist/_shared/comments-GzXdwpq4.js +0 -952
- package/dist/_shared/comments-GzXdwpq4.js.map +0 -1
- package/dist/_shared/comments-Zj_foV1V.cjs +0 -2
- package/dist/_shared/comments-Zj_foV1V.cjs.map +0 -1
- package/dist/_shared/copyable-Bx4J7fuT.cjs +0 -2
- package/dist/_shared/copyable-Bx4J7fuT.cjs.map +0 -1
- package/dist/_shared/copyable-cfF4gZoT.js +0 -38
- package/dist/_shared/copyable-cfF4gZoT.js.map +0 -1
- package/dist/_shared/date-picker-Dl91BM3D.js +0 -1361
- package/dist/_shared/date-picker-Dl91BM3D.js.map +0 -1
- package/dist/_shared/date-picker-zFOqtmAS.cjs +0 -2
- package/dist/_shared/date-picker-zFOqtmAS.cjs.map +0 -1
- package/dist/_shared/date-pickers-BBydcIjN.cjs +0 -2
- package/dist/_shared/date-pickers-BBydcIjN.cjs.map +0 -1
- package/dist/_shared/date-pickers-D2OsgV4V.js +0 -330
- package/dist/_shared/date-pickers-D2OsgV4V.js.map +0 -1
- package/dist/_shared/display-Dhy5ogxC.cjs +0 -2
- package/dist/_shared/display-Dhy5ogxC.cjs.map +0 -1
- package/dist/_shared/display-NBtWdAMl.js +0 -1154
- package/dist/_shared/display-NBtWdAMl.js.map +0 -1
- package/dist/_shared/form-field-B7taMVbC.js +0 -329
- package/dist/_shared/form-field-B7taMVbC.js.map +0 -1
- package/dist/_shared/form-field-rMGPvHFK.cjs +0 -2
- package/dist/_shared/form-field-rMGPvHFK.cjs.map +0 -1
- package/dist/_shared/form-sizing-D74IS9KG.js +0 -21
- package/dist/_shared/form-sizing-D74IS9KG.js.map +0 -1
- package/dist/_shared/form-sizing-aVwVuF-w.cjs +0 -2
- package/dist/_shared/form-sizing-aVwVuF-w.cjs.map +0 -1
- package/dist/_shared/forms-BweX9Lm8.cjs +0 -2
- package/dist/_shared/forms-BweX9Lm8.cjs.map +0 -1
- package/dist/_shared/forms-L1hyNKpZ.js +0 -3430
- package/dist/_shared/forms-L1hyNKpZ.js.map +0 -1
- package/dist/_shared/header-BSBPtGn4.cjs +0 -2
- package/dist/_shared/header-BSBPtGn4.cjs.map +0 -1
- package/dist/_shared/header-No6GSp4R.js +0 -360
- package/dist/_shared/header-No6GSp4R.js.map +0 -1
- package/dist/_shared/heading-0DYCOrgC.cjs +0 -2
- package/dist/_shared/heading-0DYCOrgC.cjs.map +0 -1
- package/dist/_shared/heading-HeP06nXG.js +0 -107
- package/dist/_shared/heading-HeP06nXG.js.map +0 -1
- package/dist/_shared/hooks-BkXvZ4py.js +0 -118
- package/dist/_shared/hooks-BkXvZ4py.js.map +0 -1
- package/dist/_shared/hooks-D3SbLBRk.cjs +0 -2
- package/dist/_shared/hooks-D3SbLBRk.cjs.map +0 -1
- package/dist/_shared/icon-badge-BAWl1oOe.cjs +0 -2
- package/dist/_shared/icon-badge-BAWl1oOe.cjs.map +0 -1
- package/dist/_shared/icon-badge-zTBVtgt9.js +0 -52
- package/dist/_shared/icon-badge-zTBVtgt9.js.map +0 -1
- package/dist/_shared/input-C7t-RHYq.js +0 -182
- package/dist/_shared/input-C7t-RHYq.js.map +0 -1
- package/dist/_shared/input-COMcb1WY.cjs +0 -2
- package/dist/_shared/input-COMcb1WY.cjs.map +0 -1
- package/dist/_shared/item-DAjqQhhj.js +0 -225
- package/dist/_shared/item-DAjqQhhj.js.map +0 -1
- package/dist/_shared/item-DoXXYgPm.cjs +0 -2
- package/dist/_shared/item-DoXXYgPm.cjs.map +0 -1
- package/dist/_shared/mentions-CA1Ka_Bv.cjs +0 -2
- package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +0 -1
- package/dist/_shared/mentions-CdvvLGQG.js +0 -506
- package/dist/_shared/mentions-CdvvLGQG.js.map +0 -1
- package/dist/_shared/metadata-Ckcmar8d.js +0 -235
- package/dist/_shared/metadata-Ckcmar8d.js.map +0 -1
- package/dist/_shared/metadata-DamdYVZL.cjs +0 -2
- package/dist/_shared/metadata-DamdYVZL.cjs.map +0 -1
- package/dist/_shared/money-display-CFSMUtxS.cjs +0 -2
- package/dist/_shared/money-display-CFSMUtxS.cjs.map +0 -1
- package/dist/_shared/money-display-D4Z3P3f_.js +0 -198
- package/dist/_shared/money-display-D4Z3P3f_.js.map +0 -1
- package/dist/_shared/navigation-BemwPPC8.cjs +0 -2
- package/dist/_shared/navigation-BemwPPC8.cjs.map +0 -1
- package/dist/_shared/navigation-DY540HB0.js +0 -419
- package/dist/_shared/navigation-DY540HB0.js.map +0 -1
- package/dist/_shared/overlays-CJs_syAu.js +0 -648
- package/dist/_shared/overlays-CJs_syAu.js.map +0 -1
- package/dist/_shared/overlays-DWFEaAog.cjs +0 -2
- package/dist/_shared/overlays-DWFEaAog.cjs.map +0 -1
- package/dist/_shared/page-Cg_gNpyK.js +0 -262
- package/dist/_shared/page-Cg_gNpyK.js.map +0 -1
- package/dist/_shared/page-CpFWQuWU.cjs +0 -2
- package/dist/_shared/page-CpFWQuWU.cjs.map +0 -1
- package/dist/_shared/popover-CaHvG8Vj.cjs +0 -2
- package/dist/_shared/popover-CaHvG8Vj.cjs.map +0 -1
- package/dist/_shared/popover-L37RqoRO.js +0 -83
- package/dist/_shared/popover-L37RqoRO.js.map +0 -1
- package/dist/_shared/popover-menu-Fz-bvWJF.cjs +0 -2
- package/dist/_shared/popover-menu-Fz-bvWJF.cjs.map +0 -1
- package/dist/_shared/popover-menu-bKQatoYF.js +0 -93
- package/dist/_shared/popover-menu-bKQatoYF.js.map +0 -1
- package/dist/_shared/rich-text-editor-B2VqNi6j.js +0 -620
- package/dist/_shared/rich-text-editor-B2VqNi6j.js.map +0 -1
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs +0 -2
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs.map +0 -1
- package/dist/_shared/scroll-area-BH5CPQh4.js +0 -41
- package/dist/_shared/scroll-area-BH5CPQh4.js.map +0 -1
- package/dist/_shared/scroll-area-u46BOVcC.cjs +0 -2
- package/dist/_shared/scroll-area-u46BOVcC.cjs.map +0 -1
- package/dist/_shared/sidebar-BGpi9K_Q.js +0 -389
- package/dist/_shared/sidebar-BGpi9K_Q.js.map +0 -1
- package/dist/_shared/sidebar-BTFfxmNG.cjs +0 -2
- package/dist/_shared/sidebar-BTFfxmNG.cjs.map +0 -1
- package/dist/_shared/sidebar-CC3lcvNX.cjs +0 -2
- package/dist/_shared/sidebar-CC3lcvNX.cjs.map +0 -1
- package/dist/_shared/sidebar-wmztVpnO.js +0 -538
- package/dist/_shared/sidebar-wmztVpnO.js.map +0 -1
- package/dist/_shared/smart-card-B6m7tmt0.cjs +0 -2
- package/dist/_shared/smart-card-B6m7tmt0.cjs.map +0 -1
- package/dist/_shared/smart-card-thLb85Ih.js +0 -361
- package/dist/_shared/smart-card-thLb85Ih.js.map +0 -1
- package/dist/_shared/spinner-BfAbXTQ7.js +0 -67
- package/dist/_shared/spinner-BfAbXTQ7.js.map +0 -1
- package/dist/_shared/spinner-DWn3x9Tl.cjs +0 -2
- package/dist/_shared/spinner-DWn3x9Tl.cjs.map +0 -1
- package/dist/_shared/switch-BBP3u1z5.js +0 -55
- package/dist/_shared/switch-BBP3u1z5.js.map +0 -1
- package/dist/_shared/switch-zFZhhOEP.cjs +0 -2
- package/dist/_shared/switch-zFZhhOEP.cjs.map +0 -1
- package/dist/_shared/table-BItnJ8lG.cjs +0 -2
- package/dist/_shared/table-BItnJ8lG.cjs.map +0 -1
- package/dist/_shared/table-D3349b-v.js +0 -1189
- package/dist/_shared/table-D3349b-v.js.map +0 -1
- package/dist/_shared/textarea-C4SOrh0z.cjs +0 -2
- package/dist/_shared/textarea-C4SOrh0z.cjs.map +0 -1
- package/dist/_shared/textarea-CsMkelmp.js +0 -119
- package/dist/_shared/textarea-CsMkelmp.js.map +0 -1
- package/dist/_shared/typography-Bzsl7aTu.cjs +0 -2
- package/dist/_shared/typography-Bzsl7aTu.cjs.map +0 -1
- package/dist/_shared/typography-CdxyWB1T.js +0 -102
- package/dist/_shared/typography-CdxyWB1T.js.map +0 -1
- package/dist/_shared/ui-provider-BF4m2cR0.cjs +0 -2
- package/dist/_shared/ui-provider-BF4m2cR0.cjs.map +0 -1
- package/dist/_shared/ui-provider-C8Ot88lS.js +0 -85
- package/dist/_shared/ui-provider-C8Ot88lS.js.map +0 -1
- package/dist/_shared/workspace-BGVeTeJy.js +0 -357
- package/dist/_shared/workspace-BGVeTeJy.js.map +0 -1
- package/dist/_shared/workspace-CWyzTUmE.cjs +0 -2
- package/dist/_shared/workspace-CWyzTUmE.cjs.map +0 -1
- package/dist/components/base/display/empty-state/empty-state.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/empty-state.strings.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/empty-state.types.d.ts +0 -85
- package/dist/components/base/display/empty-state/empty-state.types.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/index.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/index.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts.map +0 -1
- package/dist/components/base/display/fields/email-display.d.ts +0 -22
- package/dist/components/base/display/fields/email-display.d.ts.map +0 -1
- package/dist/components/base/display/fields/index.d.ts.map +0 -1
- package/dist/components/base/display/fields/phone-display.d.ts +0 -22
- package/dist/components/base/display/fields/phone-display.d.ts.map +0 -1
- package/dist/components/base/display/fields/url-display.d.ts +0 -28
- package/dist/components/base/display/fields/url-display.d.ts.map +0 -1
- package/dist/components/base/display/inline-stat/index.d.ts.map +0 -1
- package/dist/components/base/display/inline-stat/inline-stat.d.ts.map +0 -1
- package/dist/components/base/display/metadata/index.cjs +0 -1
- package/dist/components/base/display/metadata/index.d.ts.map +0 -1
- package/dist/components/base/display/metadata/index.js +0 -2
- package/dist/components/base/display/metadata/metadata-list.d.ts.map +0 -1
- package/dist/components/base/display/metadata/metadata-list.strings.d.ts.map +0 -1
- package/dist/components/base/display/numeric-value/index.d.ts.map +0 -1
- package/dist/components/base/display/numeric-value/numeric-value.d.ts.map +0 -1
- package/dist/components/base/display/section-header/index.d.ts.map +0 -1
- package/dist/components/base/display/section-header/section-header.d.ts.map +0 -1
- package/dist/components/base/display/user-cell/index.d.ts.map +0 -1
- package/dist/components/base/display/user-cell/user-cell.d.ts +0 -19
- package/dist/components/base/display/user-cell/user-cell.d.ts.map +0 -1
- package/dist/components/base/frame/frame.d.ts +0 -24
- package/dist/components/base/frame/frame.d.ts.map +0 -1
- package/dist/components/base/frame/index.cjs +0 -2
- package/dist/components/base/frame/index.cjs.map +0 -1
- package/dist/components/base/frame/index.d.ts +0 -2
- package/dist/components/base/frame/index.d.ts.map +0 -1
- package/dist/components/base/frame/index.js +0 -164
- package/dist/components/base/frame/index.js.map +0 -1
- package/dist/components/composed/data-display/index.cjs.map +0 -1
- package/dist/components/composed/data-display/index.js.map +0 -1
- package/dist/showcase/assets/AreaChart-BYEewdc_.js +0 -6
- package/dist/showcase/assets/CSPContext-B11tftuK.js +0 -1
- package/dist/showcase/assets/CompositeItem-Duekeg4m.js +0 -1
- package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +0 -1
- package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +0 -1
- package/dist/showcase/assets/FieldItemContext-BSFHjS7g.js +0 -1
- package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +0 -1
- package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +0 -1
- package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +0 -1
- package/dist/showcase/assets/Separator-9PWX3shz.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +0 -1
- package/dist/showcase/assets/accordion-CfqHO9_z.js +0 -171
- package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +0 -1
- package/dist/showcase/assets/action-menu-DFzSuDjI.js +0 -1
- package/dist/showcase/assets/activities-Bo97b2-I.js +0 -501
- package/dist/showcase/assets/activities-feed-card-D77gf27B.js +0 -1
- package/dist/showcase/assets/activity-BUlCWLI8.js +0 -1
- package/dist/showcase/assets/admin-CxTV4kZX.js +0 -80
- package/dist/showcase/assets/ai-Bym5H8bn.js +0 -41
- package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +0 -2
- package/dist/showcase/assets/ai-chat-M3X5-PgT.js +0 -568
- package/dist/showcase/assets/ai-elements-DjppcMBD.js +0 -387
- package/dist/showcase/assets/ai-new-CXnrIi5S.js +0 -167
- package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +0 -1
- package/dist/showcase/assets/alert-D6Pygy2s.js +0 -62
- package/dist/showcase/assets/alert-DCrWLbEx.js +0 -93
- package/dist/showcase/assets/alert-qTNM0vld.js +0 -1
- package/dist/showcase/assets/api-key-list-CCpuHYHc.js +0 -73
- package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +0 -1
- package/dist/showcase/assets/arrow-down--phuskCV.js +0 -1
- package/dist/showcase/assets/arrow-left-B__WWqyA.js +0 -1
- package/dist/showcase/assets/arrow-right-1-EvXxjB.js +0 -1
- package/dist/showcase/assets/arrow-up-lWotnmo7.js +0 -1
- package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +0 -1
- package/dist/showcase/assets/avatar-gugtNx4D.js +0 -57
- package/dist/showcase/assets/avatar-n1nywTlx.js +0 -1
- package/dist/showcase/assets/badge-TuE-u3Hv.js +0 -28
- package/dist/showcase/assets/badge-check-CPDvpVzK.js +0 -1
- package/dist/showcase/assets/bell-DeCVddCA.js +0 -1
- package/dist/showcase/assets/bot-B_vzJEJH.js +0 -1
- package/dist/showcase/assets/box-z4O8t_K5.js +0 -1
- package/dist/showcase/assets/brain-DdKBE4Bh.js +0 -1
- package/dist/showcase/assets/brand-CfW7mgTY.js +0 -36
- package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +0 -52
- package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +0 -1
- package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +0 -1
- package/dist/showcase/assets/briefcase-ClqzeNt3.js +0 -1
- package/dist/showcase/assets/building-2-BQuWgjZj.js +0 -1
- package/dist/showcase/assets/button-CWKNCI82.js +0 -44
- package/dist/showcase/assets/button-group-BYhxtFwV.js +0 -1
- package/dist/showcase/assets/buttons-mBRyBw3Q.js +0 -270
- package/dist/showcase/assets/calendar-BgloJjlW.js +0 -1
- package/dist/showcase/assets/calendar-CJDWspzi.js +0 -1
- package/dist/showcase/assets/calendar-CgML2kJt.js +0 -16
- package/dist/showcase/assets/calendar-days-C0gTLVnY.js +0 -1
- package/dist/showcase/assets/camera-nIlaz4Sn.js +0 -1
- package/dist/showcase/assets/card-1ncRnRvq.js +0 -1
- package/dist/showcase/assets/card-CcgWzFB-.js +0 -188
- package/dist/showcase/assets/card-primitives-By4-RTuP.js +0 -1
- package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +0 -1
- package/dist/showcase/assets/cards-DdqQr8rY.js +0 -328
- package/dist/showcase/assets/carousel-CV8ltDl8.js +0 -449
- package/dist/showcase/assets/chart-BNzHjskC.js +0 -358
- package/dist/showcase/assets/chart-column-CpTxRLEH.js +0 -1
- package/dist/showcase/assets/checkbox-CZTTm4Dv.js +0 -1
- package/dist/showcase/assets/chevron-down-LWBNHe9S.js +0 -1
- package/dist/showcase/assets/chevron-left-BsshO7nf.js +0 -1
- package/dist/showcase/assets/chevron-right-t68um2_G.js +0 -1
- package/dist/showcase/assets/chevron-up-DjhlESJB.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +0 -1
- package/dist/showcase/assets/circle-BL52dLr9.js +0 -1
- package/dist/showcase/assets/circle-alert-CXCt6zxc.js +0 -1
- package/dist/showcase/assets/circle-check-CbiRRw7s.js +0 -1
- package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +0 -1
- package/dist/showcase/assets/circle-dot-WEOpGGJf.js +0 -1
- package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +0 -1
- package/dist/showcase/assets/circle-x-BT9TJbJC.js +0 -1
- package/dist/showcase/assets/clock-3-CfRK8ckc.js +0 -1
- package/dist/showcase/assets/clock-D-3zf0c1.js +0 -1
- package/dist/showcase/assets/code-xml-CQYKKuBU.js +0 -1
- package/dist/showcase/assets/collapsible-BC0hQvat.js +0 -27
- package/dist/showcase/assets/collapsible-CRVtVDCF.js +0 -1
- package/dist/showcase/assets/combobox-D4VYvYCT.js +0 -696
- package/dist/showcase/assets/command-CxeHT4lL.js +0 -1
- package/dist/showcase/assets/command-Do_t_Zou.js +0 -1
- package/dist/showcase/assets/comment-composer-DoFwvVlq.js +0 -1
- package/dist/showcase/assets/comment-item-CT8UbVeg.js +0 -1
- package/dist/showcase/assets/comments-CqdXrjUn.js +0 -357
- package/dist/showcase/assets/commerce-B9V2Wo_q.js +0 -79
- package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +0 -189
- package/dist/showcase/assets/composite-BXLXcagx.js +0 -1
- package/dist/showcase/assets/contact-card-BLcAXepj.js +0 -65
- package/dist/showcase/assets/content-container-DJVD3ZmI.js +0 -1
- package/dist/showcase/assets/copyable-od17NrMu.js +0 -96
- package/dist/showcase/assets/course-card-CdZQr5yy.js +0 -77
- package/dist/showcase/assets/cpu-B8kRNR1R.js +0 -1
- package/dist/showcase/assets/credit-card-BYMQj03s.js +0 -1
- package/dist/showcase/assets/currency-Cxv3Cp6B.js +0 -149
- package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +0 -90
- package/dist/showcase/assets/database-DuUABvxU.js +0 -1
- package/dist/showcase/assets/date-block-E9qfY7W7.js +0 -1
- package/dist/showcase/assets/date-picker-I8BdaiiU.js +0 -1
- package/dist/showcase/assets/date-pickers-BLJaqhcS.js +0 -73
- package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +0 -106
- package/dist/showcase/assets/dialog-BuatDnQ9.js +0 -1
- package/dist/showcase/assets/dialog-DCx-LydW.js +0 -1
- package/dist/showcase/assets/display-Bt7busw5.js +0 -403
- package/dist/showcase/assets/dist-BPyBHOXU.js +0 -45
- package/dist/showcase/assets/dist-CnonIdcR.js +0 -1
- package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +0 -1
- package/dist/showcase/assets/download-B2JAmHmJ.js +0 -1
- package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +0 -1
- package/dist/showcase/assets/dropzone-BKIxDJNy.js +0 -1
- package/dist/showcase/assets/earth-7-Z3Gv2v.js +0 -1
- package/dist/showcase/assets/ellipsis-6Krb3RRW.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +0 -1
- package/dist/showcase/assets/empty-BSYKaeXQ.js +0 -1
- package/dist/showcase/assets/empty-item-YElgv25f.js +0 -49
- package/dist/showcase/assets/empty-state-D-LrvnKF.js +0 -1
- package/dist/showcase/assets/empty-state-dNh1GtVU.js +0 -188
- package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +0 -361
- package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +0 -1
- package/dist/showcase/assets/esm-CAF_uoYd.js +0 -2
- package/dist/showcase/assets/event-calendar-CcSi7g5A.js +0 -138
- package/dist/showcase/assets/event-log-2uq-eYxh.js +0 -330
- package/dist/showcase/assets/example-CTJ8AdNR.js +0 -1
- package/dist/showcase/assets/external-link-D0gqSa1q.js +0 -1
- package/dist/showcase/assets/eye-CDMCDLei.js +0 -1
- package/dist/showcase/assets/feature-announcement-BlyNck35.js +0 -34
- package/dist/showcase/assets/file-Y5EbzufX.js +0 -1
- package/dist/showcase/assets/file-text-DH1mBuPi.js +0 -1
- package/dist/showcase/assets/filters-BtHF4GSM.js +0 -78
- package/dist/showcase/assets/flag-CJ08LwLY.js +0 -1
- package/dist/showcase/assets/folder-open-DODo2pjy.js +0 -1
- package/dist/showcase/assets/form-field-CHY7jh1q.js +0 -1
- package/dist/showcase/assets/form-sizing-DHUDpiPA.js +0 -1
- package/dist/showcase/assets/format-DYJqAuDM.js +0 -1
- package/dist/showcase/assets/forms-DgvQQXHO.js +0 -862
- package/dist/showcase/assets/frame-CdKicP4A.js +0 -167
- package/dist/showcase/assets/generic-BH5YLC_H.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +0 -1
- package/dist/showcase/assets/gift-DD8O7cld.js +0 -1
- package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +0 -85
- package/dist/showcase/assets/git-branch-DZq1Vo2G.js +0 -1
- package/dist/showcase/assets/global-search-BqDotXql.js +0 -215
- package/dist/showcase/assets/global-search-PH6LXqZw.js +0 -1
- package/dist/showcase/assets/globe-mRTwrUxM.js +0 -1
- package/dist/showcase/assets/gradient-card-CaL88YKv.js +0 -58
- package/dist/showcase/assets/hash-DuqvHQHv.js +0 -1
- package/dist/showcase/assets/header-CiNgDop3.js +0 -1
- package/dist/showcase/assets/header-notifications-B9XMBsK_.js +0 -1
- package/dist/showcase/assets/heart-DsGJfnDx.js +0 -1
- package/dist/showcase/assets/house-B504aFIP.js +0 -1
- package/dist/showcase/assets/icon-badge-DMNu8xb5.js +0 -1
- package/dist/showcase/assets/image-C3DaMxmn.js +0 -1
- package/dist/showcase/assets/inbox-BWKQMLMx.js +0 -1
- package/dist/showcase/assets/index-DN3tqopz.css +0 -2
- package/dist/showcase/assets/index-DaYVSqKu.js +0 -10
- package/dist/showcase/assets/index.esm-Ducg7a0P.js +0 -1
- package/dist/showcase/assets/inertValue-DrtTkMGx.js +0 -1
- package/dist/showcase/assets/info-_FrGoCay.js +0 -1
- package/dist/showcase/assets/inline-stat-BYu-tiUU.js +0 -1
- package/dist/showcase/assets/input-C96HMHWR.js +0 -1
- package/dist/showcase/assets/input-fMPi7XxI.js +0 -1
- package/dist/showcase/assets/input-group-BZnSgFCn.js +0 -47
- package/dist/showcase/assets/input-group-CVONNP3T.js +0 -1
- package/dist/showcase/assets/inputs-Blh0LJ8-.js +0 -155
- package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +0 -36
- package/dist/showcase/assets/invoice-items-OVIrbG0k.js +0 -36
- package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +0 -14
- package/dist/showcase/assets/invoice-table-BXd_HhUg.js +0 -30
- package/dist/showcase/assets/isSameDay-NBVO9AKF.js +0 -1
- package/dist/showcase/assets/isToday-Bk5HMXWn.js +0 -1
- package/dist/showcase/assets/italic-BOv5bW4H.js +0 -1
- package/dist/showcase/assets/item-B4rdcVVp.js +0 -134
- package/dist/showcase/assets/item-BVt0zZ12.js +0 -1
- package/dist/showcase/assets/item-C4Xk3DC1.js +0 -1
- package/dist/showcase/assets/kanban-BXbelelR.js +0 -186
- package/dist/showcase/assets/label-Cv6wotdv.js +0 -1
- package/dist/showcase/assets/languages-BofyvcCF.js +0 -1
- package/dist/showcase/assets/layers-DJK0t5px.js +0 -1
- package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +0 -608
- package/dist/showcase/assets/layout-auth-BTvSTwUz.js +0 -754
- package/dist/showcase/assets/layout-containers-PMuo__2O.js +0 -101
- package/dist/showcase/assets/layout-header-DQ3zeCHz.js +0 -170
- package/dist/showcase/assets/layout-page-CbvWdHrK.js +0 -122
- package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +0 -34
- package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +0 -224
- package/dist/showcase/assets/layout-users-Cypq-42s.js +0 -117
- package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +0 -183
- package/dist/showcase/assets/lib-DMGme4uo.js +0 -1
- package/dist/showcase/assets/lock-DXmvLEEx.js +0 -1
- package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +0 -1
- package/dist/showcase/assets/mail-CXVFHkzh.js +0 -1
- package/dist/showcase/assets/mail-check-BNEu3j2a.js +0 -1
- package/dist/showcase/assets/map-DnE1pFCQ.js +0 -124
- package/dist/showcase/assets/map-pin-CpOVa8IH.js +0 -1
- package/dist/showcase/assets/media-library-C-KfEvm4.js +0 -695
- package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +0 -1
- package/dist/showcase/assets/mentions-C8ZdNFuC.js +0 -138
- package/dist/showcase/assets/menus-B8yUL75K.js +0 -165
- package/dist/showcase/assets/message-square-DNOTaOFs.js +0 -1
- package/dist/showcase/assets/metadata-list-BQAanxM-.js +0 -1
- package/dist/showcase/assets/metadata-list-DL9qgDAp.js +0 -288
- package/dist/showcase/assets/metric-CYi09Ltx.js +0 -1
- package/dist/showcase/assets/metric-bar-CQH1z8T3.js +0 -1
- package/dist/showcase/assets/metric-grid-H1ixqMCI.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +0 -50
- package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +0 -42
- package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +0 -54
- package/dist/showcase/assets/minus-20OTSSxf.js +0 -1
- package/dist/showcase/assets/money-display-BoiAMxH8.js +0 -1
- package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +0 -1
- package/dist/showcase/assets/navigation-B8d2CDU6.js +0 -90
- package/dist/showcase/assets/navigation-D16JX3kL.js +0 -230
- package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +0 -119
- package/dist/showcase/assets/overlays-CzlSqbFz.js +0 -408
- package/dist/showcase/assets/overlays-DUFqbkb9.js +0 -159
- package/dist/showcase/assets/package-BCXIwEPz.js +0 -1
- package/dist/showcase/assets/package-check-Ol-Cw3j-.js +0 -1
- package/dist/showcase/assets/page-action-button-DpzdSYvw.js +0 -1
- package/dist/showcase/assets/page-header-B_b7SqW8.js +0 -1
- package/dist/showcase/assets/pagination-BPDQo9Dl.js +0 -1
- package/dist/showcase/assets/pagination-PvkEX0qs.js +0 -42
- package/dist/showcase/assets/paperclip-CznEsmLN.js +0 -1
- package/dist/showcase/assets/password-input-CWMY5q3b.js +0 -1
- package/dist/showcase/assets/pencil-Cl9qi90g.js +0 -1
- package/dist/showcase/assets/phone-DbvK_QQJ.js +0 -1
- package/dist/showcase/assets/plus-CO8t66Yo.js +0 -1
- package/dist/showcase/assets/popover-3QIVx9lU.js +0 -1
- package/dist/showcase/assets/popover-Cyg9oYIU.js +0 -1
- package/dist/showcase/assets/popover-menu-DJPHeIL1.js +0 -1
- package/dist/showcase/assets/products-WsU-qdMz.js +0 -407
- package/dist/showcase/assets/progress-C61sf-qt.js +0 -1
- package/dist/showcase/assets/progress-PvTl8Fgf.js +0 -18
- package/dist/showcase/assets/props-table-C8la6vcG.js +0 -1
- package/dist/showcase/assets/props.generated-vFrhDrth.json +0 -38618
- package/dist/showcase/assets/quote-N1_lRDnX.js +0 -1
- package/dist/showcase/assets/react-dom-Bz4cALsF.js +0 -1
- package/dist/showcase/assets/receipt-C6a_WyLu.js +0 -1
- package/dist/showcase/assets/receipt-text-CDOh8FAv.js +0 -1
- package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +0 -1
- package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +0 -143
- package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +0 -124
- package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +0 -1
- package/dist/showcase/assets/save-DDmFSQli.js +0 -1
- package/dist/showcase/assets/schema-form-B7naqMvv.js +0 -325
- package/dist/showcase/assets/scroll-area-CdaYm4UK.js +0 -32
- package/dist/showcase/assets/scroll-area-DwWSHYHB.js +0 -1
- package/dist/showcase/assets/select-CNzpb5ug.js +0 -1
- package/dist/showcase/assets/select-DBXZ_Wzf.js +0 -1
- package/dist/showcase/assets/send-eDm7YMmA.js +0 -1
- package/dist/showcase/assets/separator-4IC9ED7s.js +0 -1
- package/dist/showcase/assets/separator-DPGDsZpG.js +0 -28
- package/dist/showcase/assets/settings-IANZGo2i.js +0 -1
- package/dist/showcase/assets/sheet-2oCce5ae.js +0 -1
- package/dist/showcase/assets/shield-CDZhhvFW.js +0 -1
- package/dist/showcase/assets/shield-alert-5hL3sdf3.js +0 -1
- package/dist/showcase/assets/shield-check-CaO2dhVS.js +0 -1
- package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +0 -1
- package/dist/showcase/assets/sidebar-Cds60-PS.js +0 -1
- package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +0 -1
- package/dist/showcase/assets/skeleton-2HajJKO4.js +0 -29
- package/dist/showcase/assets/skeleton-CGEJwPdD.js +0 -1
- package/dist/showcase/assets/slider-BjQViBR0.js +0 -1
- package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +0 -1
- package/dist/showcase/assets/smart-card-CHouYi8U.js +0 -1
- package/dist/showcase/assets/sonner-Cog559j7.js +0 -22
- package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +0 -5
- package/dist/showcase/assets/sparkles-B18eTHVN.js +0 -1
- package/dist/showcase/assets/spinner-BSI97i4D.js +0 -1
- package/dist/showcase/assets/spinner-D0WhVyye.js +0 -30
- package/dist/showcase/assets/spinner-DQmJ7k9y.js +0 -49
- package/dist/showcase/assets/square-pen-CLyDWdhj.js +0 -1
- package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +0 -1
- package/dist/showcase/assets/star-C3mhkpSK.js +0 -1
- package/dist/showcase/assets/startOfDay-ECIxhJGC.js +0 -1
- package/dist/showcase/assets/styles-CDD7mDye.js +0 -1
- package/dist/showcase/assets/suggestions-DOW6NBJp.js +0 -126
- package/dist/showcase/assets/switch-D59YKmf6.js +0 -1
- package/dist/showcase/assets/switch-NICmdoPn.js +0 -1
- package/dist/showcase/assets/sync-B8nBZXQ9.js +0 -107
- package/dist/showcase/assets/table-CckompuR.js +0 -382
- package/dist/showcase/assets/table-DtA4-Q0p.js +0 -1
- package/dist/showcase/assets/table-actions-DdoPJTMy.js +0 -1
- package/dist/showcase/assets/tabs-BrC_HxL_.js +0 -1
- package/dist/showcase/assets/tabs-UVxr80vY.js +0 -19
- package/dist/showcase/assets/tags-input-iDfvhzZD.js +0 -1
- package/dist/showcase/assets/text-button-DHFCLCoc.js +0 -1
- package/dist/showcase/assets/text-link-nCLLDcS_.js +0 -1
- package/dist/showcase/assets/textarea-DsSuQHQY.js +0 -1
- package/dist/showcase/assets/textarea-DyGI3Kcn.js +0 -1
- package/dist/showcase/assets/timelines-JmMcH657.js +0 -200
- package/dist/showcase/assets/toggle-group-BZKzMmC8.js +0 -1
- package/dist/showcase/assets/toggles-BSJvy4Tw.js +0 -71
- package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +0 -32
- package/dist/showcase/assets/trash-2-C9AC7Pcv.js +0 -1
- package/dist/showcase/assets/trending-up-CGaDZj0S.js +0 -1
- package/dist/showcase/assets/truck-Dq6heokm.js +0 -1
- package/dist/showcase/assets/typography-ByvwR6Kg.js +0 -223
- package/dist/showcase/assets/ui-badge-BYgJSE_w.js +0 -28
- package/dist/showcase/assets/ui-card-BdueUfow.js +0 -30
- package/dist/showcase/assets/ui-table-CxtCQUsg.js +0 -42
- package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +0 -138
- package/dist/showcase/assets/use-form-field-state-Sbo6tfr9.js +0 -1
- package/dist/showcase/assets/use-layout-link-CGBQHZon.js +0 -1
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +0 -1
- package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +0 -1
- package/dist/showcase/assets/useControlled-BF8maje6.js +0 -1
- package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +0 -1
- package/dist/showcase/assets/useRender-QhawWhpb.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +0 -1
- package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +0 -1
- package/dist/showcase/assets/user-plus-DbOuTfr7.js +0 -1
- package/dist/showcase/assets/user-u65Fo7k7.js +0 -1
- package/dist/showcase/assets/users-BUb7CmVp.js +0 -1
- package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +0 -37
- package/dist/showcase/assets/video-e4hDbTQ2.js +0 -1
- package/dist/showcase/assets/wrench-CBUvtxdr.js +0 -1
- package/dist/showcase/assets/x-oVTJnCJn.js +0 -1
- package/dist/showcase/assets/zap-CzABYL3c.js +0 -1
- /package/dist/components/{base/display → composed/data-display}/empty-state/empty-state.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/empty-state.strings.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/document-stack.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/inbox-clean.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/search-glass.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/stacked-cards.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/users-circle.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/fields/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/inline-stat/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/inline-stat/inline-stat.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/metadata/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/metadata/metadata-list.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/metadata/metadata-list.strings.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/numeric-value/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/numeric-value/numeric-value.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/section-header/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/section-header/section-header.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/user-cell/index.d.ts +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../_shared/ui-provider-BF4m2cR0.cjs"),n=require("../../../lib/utils.cjs"),r=require("../../../_shared/button-BI347RlM.cjs"),i=require("../../../_shared/heading-0DYCOrgC.cjs"),a=require("../../../_shared/select-CG5Yq-6A.cjs"),o=require("../../../_shared/date-pickers-BBydcIjN.cjs");let s=require("react"),c=require("date-fns"),l=require("react/jsx-runtime"),u=require("lucide-react");var d={gray:`bg-muted-foreground`,red:`bg-destructive`,orange:`bg-warning`,amber:`bg-warning`,yellow:`bg-warning`,green:`bg-success`,blue:`bg-info`,purple:`bg-primary`};function f(e){if(!e)return`gray`;if(e.colorToken)return e.colorToken;let t=e.color??``;return t.includes(`orange`)?`orange`:t.includes(`yellow`)?`yellow`:t.includes(`amber`)?`amber`:t.includes(`purple`)?`purple`:t.includes(`green`)?`green`:t.includes(`blue`)?`blue`:t.includes(`red`)?`red`:`gray`}var p={today:`Today`,previous:`Previous`,next:`Next`,loading:`Loading…`,booking:`booking`,bookings:`bookings`,viewMode:{month:`Month`,week:`Week`,agenda:`Agenda`},weekdaysShort:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`]};function m({event:e,category:t,compact:a=!1,onClick:o}){let s=d[f(t)],u=e.allDay?null:(0,c.format)(e.startDate,`HH:mm`),p=e.metadata?.calendar_cell_title,m=typeof p==`string`&&p.trim()!==``?p:e.title,h=u?`${m} at ${u}`:m;return(0,l.jsxs)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:a?`xs`:`sm`,onClick:e=>{e.stopPropagation(),o?.()},className:n.cn(`event-calendar-event-badge--component`,`group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5`,`justify-start text-left shadow-none transition-colors hover:bg-accent/50`,`max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0`,a?`h-5`:`h-6`),"aria-label":h,title:typeof m==`string`?m:void 0,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,className:n.cn(`size-1.5 shrink-0 rounded-full`,s)}),(0,l.jsx)(i.n,{tag:`span`,size:`xxs`,weight:`medium`,className:`min-w-0 flex-1 truncate max-sm:hidden`,children:m}),!!u&&(0,l.jsx)(i.n,{tag:`span`,size:`xxs`,type:`secondary`,className:`shrink-0 whitespace-nowrap tabular-nums max-sm:hidden`,children:u})]})}m.displayName=`EventCalendarEventBadge`;function h(e,t,n,r={}){let{weekStartsOn:i=1,showWeekends:a=!0,visibleCategories:o}=r;return(0,s.useMemo)(()=>{let r=(0,c.startOfMonth)(t),s=(0,c.endOfMonth)(t),l,u;n===`month`?(l=(0,c.startOfWeek)(r,{weekStartsOn:i}),u=(0,c.endOfWeek)(s,{weekStartsOn:i})):n===`week`?(l=(0,c.startOfWeek)(t,{weekStartsOn:i}),u=(0,c.endOfWeek)(t,{weekStartsOn:i})):(l=r,u=s);let d=(0,c.eachDayOfInterval)({start:l,end:u}),f=o&&o.length>0?e.filter(e=>o.includes(e.category)):e,p=new Map;return f.forEach(e=>{let t=(0,c.startOfDay)(e.startDate);if(Number.isNaN(t.getTime()))return;let n=t;if(e.endDate&&!Number.isNaN(e.endDate.getTime())){let r=(0,c.startOfDay)(e.endDate);!Number.isNaN(r.getTime())&&r.getTime()>=t.getTime()&&(n=r)}(0,c.eachDayOfInterval)({start:t,end:n}).forEach(t=>{let n=t.toISOString().split(`T`)[0];p.has(n)||p.set(n,[]),p.get(n).push(e)})}),d.filter(e=>a||!(0,c.isWeekend)(e)).map(e=>{let n=e.toISOString().split(`T`)[0],r=[...p.get(n)||[]].sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime());return{date:e,isCurrentMonth:(0,c.isSameMonth)(e,t),isToday:(0,c.isToday)(e),isWeekend:(0,c.isWeekend)(e),events:r,eventCount:r.length,hasMultipleEvents:r.length>1}})},[e,t,n,i,a,o])}function g(e,t){return e.filter(e=>{let n=(0,c.startOfDay)(e.startDate),r=e.endDate?(0,c.startOfDay)(e.endDate):n,i=(0,c.startOfDay)(t);return(0,c.isSameDay)(i,n)||(0,c.isSameDay)(i,r)||i>n&&i<r}).sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime())}function _(e,t){return e.find(e=>e.id===t)}function v({data:e,categories:t,maxEvents:r=3,onClick:a,compact:o=!1,strings:s,renderEvent:c}){let u={booking:s?.booking??p.booking,bookings:s?.bookings??p.bookings},{date:h,isCurrentMonth:g,isToday:v,isWeekend:y,events:b,eventCount:x}=e,S=b.slice(0,r),C=Math.max(0,x-r);return(0,l.jsx)(`div`,{className:n.cn(`event-calendar-day-cell--component`,`p-0 relative w-full border-r border-b border-border last:border-r-0 [&:nth-child(7n)]:border-r-0`),children:(0,l.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},className:n.cn(`relative w-full min-h-24 p-2 transition-colors`,`hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10`,`flex flex-col items-start gap-1`,!g&&`text-muted-foreground opacity-50`,v&&`h-full bg-accent text-accent-foreground`,o&&`min-h-20 p-1`),"aria-label":h.toDateString(),"data-date":h.toISOString(),"data-today":v,"data-weekend":y,"data-current-month":g,children:[(0,l.jsx)(i.n,{className:n.cn(`font-normal leading-none`,v&&`font-semibold`,!g&&`text-muted-foreground`,o&&`text-xs`),children:h.getDate()}),(0,l.jsxs)(`div`,{className:`w-full space-y-0.5`,children:[S.map(n=>{let r=_(t,n.category);return c?(0,l.jsx)(`div`,{children:c(n,r)},n.id):(0,l.jsx)(m,{event:n,category:r,compact:o||e.hasMultipleEvents,onClick:()=>a()},n.id)}),C>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 px-2`,children:[(0,l.jsx)(`div`,{className:`flex items-center -space-x-1`,children:t.slice(0,3).map((e,t)=>(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full border border-background`,d[f(e)])},e.id||t))}),(0,l.jsxs)(i.n,{size:`xs`,type:`secondary`,className:`font-medium text-xxs`,children:[C,` `,C===1?u.booking:u.bookings]})]})]})]})})}v.displayName=`EventCalendarDayCell`;function y(e){switch(e){case`destructive`:return{variant:`error`,buttonStyle:`solid`};case`outline`:return{variant:`secondary`,buttonStyle:`outline`};case`secondary`:return{variant:`secondary`,buttonStyle:`solid`};case`ghost`:return{variant:`secondary`,buttonStyle:`ghost`};default:return{variant:`primary`,buttonStyle:`solid`}}}var b=(e,t)=>{if(!e)return null;if(e.element)return(0,l.jsx)(`div`,{className:`event-calendar-header--component`,children:e.element},e.id||t);let i=e.icon,a=e.id||`action-${t}`,o=()=>{e.onClick?.()},s=y(e.variant);return(0,l.jsxs)(r.t,{variant:s.variant,buttonStyle:s.buttonStyle,onClick:o,className:n.cn(`h-8 gap-2`,s.className),disabled:!!e.disabled,children:[!!i&&(0,l.jsx)(i,{className:`h-4 w-4`}),e.label]},a)};function x({currentDate:t,viewMode:n,displayLabel:c,onPrevious:d,onNext:f,onToday:m,onViewModeChange:h,onDateChange:g,locale:_,actions:v,strings:y,rangeMode:x=`date`,minDate:S,maxDate:C,prevDisabled:w=!1,nextDisabled:T=!1}){let E=e.useStrings(p,y),D=(0,s.useMemo)(()=>(v||[]).filter(e=>e.isVisible!==!1),[v]);return(0,l.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-4`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,l.jsx)(i.t,{tag:`h3`,className:`text-lg font-semibold`,children:c}),(0,l.jsx)(o.t,{value:{month:t.getMonth(),year:t.getFullYear()},onChange:e=>{e.date&&g?.(e.date)},fromYear:S?.getFullYear(),toYear:C?.getFullYear(),locale:_})]}),(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[D.length>0&&(0,l.jsxs)(l.Fragment,{children:[D.map((e,t)=>b(e,t)),(0,l.jsx)(`div`,{className:`h-6 w-px bg-border mx-1`})]}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`outline`,onClick:m,className:`hidden sm:inline-flex`,children:E.today}),(0,l.jsxs)(`div`,{className:`flex items-center border border-border rounded-md`,children:[(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:d,disabled:w,className:`h-8 w-8 rounded-r-none border-r`,"aria-label":E.previous,children:(0,l.jsx)(u.ChevronLeft,{className:`h-4 w-4`})}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:f,disabled:T,className:`h-8 w-8 rounded-l-none`,"aria-label":E.next,children:(0,l.jsx)(u.ChevronRight,{className:`h-4 w-4`})})]}),!!h&&(0,l.jsxs)(a.t,{value:n,onValueChange:e=>{e&&h(e)},children:[(0,l.jsx)(a.a,{className:`w-28 h-8`,children:(0,l.jsx)(a.o,{})}),(0,l.jsxs)(a.n,{children:[(0,l.jsx)(a.i,{value:`month`,children:E.viewMode.month}),(0,l.jsx)(a.i,{value:`week`,children:E.viewMode.week}),(0,l.jsx)(a.i,{value:`agenda`,children:E.viewMode.agenda})]})]})]})]})}x.displayName=`EventCalendarHeader`;var S={gray:{badgeBg:`bg-muted`,border:`border-border`,swatch:`bg-muted-foreground`},red:{badgeBg:`bg-destructive/10`,border:`border-destructive/40`,swatch:`bg-destructive`},orange:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},amber:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},yellow:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},green:{badgeBg:`bg-success/10`,border:`border-success/40`,swatch:`bg-success`},blue:{badgeBg:`bg-info/10`,border:`border-info/40`,swatch:`bg-info`},purple:{badgeBg:`bg-primary/10`,border:`border-primary/40`,swatch:`bg-primary`}};function C(e){let t=f(e);return{dot:d[t],...S[t]}}function w(e){return d[f(e)]}function T({categories:e,visibleCategories:t,onToggleCategory:a,enableFiltering:o=!1}){let s=!t||t.length===0,c=e=>o?s||t?.includes(e):!0,u=e=>{!o||!a||a(e)};return e.length===0?null:(0,l.jsx)(`div`,{role:o?`group`:void 0,"aria-label":o?`Filter event categories`:void 0,className:n.cn(`event-calendar-legend--component`,`flex flex-wrap items-center gap-1.5 py-1`),children:e.map(e=>{let t=c(e.id),a=C(e),s=e.icon,d=`group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors`,f=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:n.cn(`inline-block size-2 rounded-full`,t?a.swatch:`bg-muted-foreground/40`),"aria-hidden":`true`}),!!s&&(0,l.jsx)(s,{className:n.cn(`size-3`,t?`text-foreground`:`text-muted-foreground`),"aria-hidden":`true`}),(0,l.jsx)(i.n,{tag:`span`,size:`xs`,weight:`medium`,type:t?`main`:`secondary`,children:e.label})]});return o?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`xs`,"aria-pressed":t,onClick:()=>u(e.id),className:n.cn(d,`h-auto cursor-pointer shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,t?`border-border bg-card hover:bg-muted/40`:`border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30`),children:f},e.id):(0,l.jsx)(`span`,{className:n.cn(d,`border-border bg-card cursor-default`),children:f},e.id)})})}T.displayName=`EventCalendarLegend`;function E({events:e,defaultDate:t=new Date,defaultViewMode:n=`month`,onDateChange:r,onViewModeChange:i,dataOptions:a={}}){let[o,l]=(0,s.useState)(t),[u,d]=(0,s.useState)(n),f=h(e,o,u,a),p=(0,s.useMemo)(()=>a.visibleCategories&&a.visibleCategories.length>0?e.filter(e=>a.visibleCategories.includes(e.category)):e,[e,a.visibleCategories]);return{currentDate:o,viewMode:u,calendarDays:f,visibleEvents:p,goToToday:(0,s.useCallback)(()=>{let e=new Date;l(e),r?.(e)},[r]),goToNextPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.addMonths)(o,1):(0,c.addWeeks)(o,1);l(e),r?.(e)},[o,u,r]),goToPreviousPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.subMonths)(o,1):(0,c.subWeeks)(o,1);l(e),r?.(e)},[o,u,r]),setDate:(0,s.useCallback)(e=>{l(e),r?.(e)},[r]),setViewMode:(0,s.useCallback)(e=>{d(e),i?.(e)},[i]),displayLabel:(0,s.useMemo)(()=>{if(u===`month`)return(0,c.format)(o,`MMMM yyyy`);if(u===`week`){let e=f[0]?.date,t=f[f.length-1]?.date;return e&&t?`${(0,c.format)(e,`MMM d`)} - ${(0,c.format)(t,`MMM d, yyyy`)}`:(0,c.format)(o,`MMMM yyyy`)}return(0,c.format)(o,`MMMM yyyy`)},[o,u,f]),hasEvents:(0,s.useMemo)(()=>p.length>0,[p])}}function D(e,t){if(!e)return!1;if(Array.isArray(e))return e.some(e=>e.toDateString()===t.toDateString());if(typeof e==`function`)return e(t);let n=e.dates?.some(e=>e.toDateString()===t.toDateString())??!1,r=e.predicate?.(t)??!1;return n||r}function O({events:r,categories:a,viewMode:o,onViewModeChange:c,defaultDate:u,onDateChange:d,onEventClick:f,onDayClick:m,maxEventsPerDay:h=3,showLegend:g=!0,showHeader:_=!0,showWeekends:y=!0,weekStartsOn:b,locale:S,enableCategoryFilter:C=!1,visibleCategories:w,onVisibleCategoriesChange:O,isLoading:k=!1,emptyStateMessage:A,className:j,compact:M=!1,actions:N,strings:P,dayHeadingVariant:F=`default`,dayHeadingClassName:I,renderDayHeading:L,rangeMode:R=`date`,minDate:z,maxDate:B,disabledDates:V,filterEvent:H,renderEvent:U,renderDayCell:W}){let G=e.useStrings(p,P),[K,q]=(0,s.useState)([]),J=w??K,{weekStartsOn:Y}=t.a(),X=b??Y??1,Z=e=>{let t=J.includes(e)?J.filter(t=>t!==e):[...J,e];O?O(t):q(t)},Q=E({events:r,defaultDate:u,defaultViewMode:o||`month`,onDateChange:d,onViewModeChange:c,dataOptions:{weekStartsOn:X,showWeekends:y,visibleCategories:J.length>0?J:void 0}}),ee=(0,s.useMemo)(()=>{let e=G.weekdaysShort;return X===1?[...e.slice(1),e[0]]:e},[G.weekdaysShort,X]),te=e=>{D(V,e.date)||z&&e.date<z||B&&e.date>B||m?.(e.date,e.events)},ne=(0,s.useMemo)(()=>H?Q.calendarDays.map(e=>({...e,events:e.events.filter(H),eventCount:e.events.filter(H).length,hasMultipleEvents:e.events.filter(H).length>1})):Q.calendarDays,[Q.calendarDays,H]);function re(e){return!!(D(V,e)||z&&e<z||B&&e>B)}let $=(0,s.useMemo)(()=>{let e=Q.calendarDays;if(e.length===0)return{prev:!1,next:!1};let t=e[0].date,n=e[e.length-1].date;return{prev:!!z&&t<=z,next:!!B&&n>=B}},[Q.calendarDays,z,B]);if(k)return(0,l.jsx)(`div`,{className:n.cn(`event-calendar--component`,`flex items-center justify-center py-12`),children:(0,l.jsx)(i.n,{type:`secondary`,children:G.loading})});let ie=o?c:void 0,ae=C?Z:void 0;return(0,l.jsxs)(`div`,{className:n.cn(`w-full space-y-4`,j),children:[!!_&&(0,l.jsx)(x,{currentDate:Q.currentDate,viewMode:Q.viewMode,displayLabel:Q.displayLabel,onPrevious:Q.goToPreviousPeriod,onNext:Q.goToNextPeriod,onToday:Q.goToToday,onViewModeChange:ie,onDateChange:Q.setDate,locale:S,actions:N,rangeMode:R,minDate:z,maxDate:B,prevDisabled:$.prev,nextDisabled:$.next,strings:{today:G.today,previous:G.previous,next:G.next,viewMode:G.viewMode}}),!!g&&a.length>0&&(0,l.jsx)(T,{categories:a,visibleCategories:J,onToggleCategory:ae,enableFiltering:C}),!Q.hasEvents&&A?(0,l.jsx)(`div`,{className:`flex items-center justify-center py-12 border border-dashed border-border rounded-lg`,children:(0,l.jsx)(i.n,{type:`secondary`,children:A})}):(0,l.jsxs)(`div`,{className:`bg-background rounded-lg border border-border`,children:[(0,l.jsx)(`div`,{className:n.cn(`grid grid-cols-7`,F===`bordered`&&`border-b border-border mb-0`,F===`tinted`&&`bg-muted/40 rounded-t-lg mb-0 overflow-hidden`,F===`accent`&&`bg-primary/8 rounded-t-lg mb-0 overflow-hidden`,F==="default"&&`mb-2`),children:ee.map((e,t)=>L?(0,l.jsx)(`div`,{children:L(e,t)},e):(0,l.jsx)(`div`,{className:n.cn(`text-center h-8 flex items-center justify-center`,I),children:(0,l.jsx)(i.n,{size:`xs`,weight:F===`accent`?`medium`:`regular`,className:n.cn(F==="default"&&`text-muted-foreground`,F===`tinted`&&`text-muted-foreground`,F===`bordered`&&`text-foreground`,F===`accent`&&`text-primary`),children:e})},e))}),(0,l.jsx)(`div`,{className:`grid grid-cols-7`,children:ne.map(e=>{let t=re(e.date),r=()=>(0,l.jsx)(v,{data:e,categories:a,maxEvents:h,onClick:()=>te(e),compact:M,strings:{booking:G.booking,bookings:G.bookings},renderEvent:U});return(0,l.jsx)(`div`,{className:n.cn(t&&`pointer-events-none opacity-40`),"aria-disabled":t||void 0,children:W?W(e,r):r()},e.date.toISOString())})})]})]})}O.displayName=`EventCalendar`;var k={guest:`guest`,guests:`guests`};function A({event:t,category:a,onClick:o,strings:s}){let d=e.useStrings(k,s),f=!!o,p=()=>{o&&o()},m=t.metadata||{},h=m.customer_name,g=m.guest_count,_=m.service_name,v=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(i.t,{tag:`h5`,children:t.title}),!!a&&(0,l.jsxs)(`div`,{className:`inline-flex items-center gap-1`,children:[(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full`,a.color.replace(`border-`,`bg-`))}),(0,l.jsx)(i.n,{size:`xs`,weight:`medium`,children:a.label})]})]}),!!f&&!!t.url&&(0,l.jsx)(u.ExternalLink,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`})]}),(0,l.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3`,children:[!!h&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.User,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.n,{className:`truncate`,children:h})]}),g!==void 0&&g>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.Users,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsxs)(i.n,{children:[g,` `,g===1?d.guest:d.guests]})]})]}),!!_&&(0,l.jsx)(i.n,{type:`secondary`,className:`mb-2 line-clamp-1`,children:_}),(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5 pt-2 border-t border-border/50`,children:[(0,l.jsx)(u.Calendar,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.n,{size:`xs`,type:`secondary`,children:!!t.allDay&&(0,c.format)(t.startDate,`EEEE, MMM d, yyyy`)})]})]}),y=n.cn(`w-full text-left p-4 border border-border rounded-lg bg-card transition-none`,f?`cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`:``);return f?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:p,className:n.cn(`event-calendar-event-card--component`,`h-auto flex-col items-stretch justify-start whitespace-normal shadow-none`,y),children:v}):(0,l.jsx)(`div`,{className:n.cn(`event-calendar-event-card--component`,y),children:v})}A.displayName=`EventCalendarEventCard`,exports.EventCalendar=O,exports.EventCalendarDayCell=v,exports.EventCalendarEventBadge=m,exports.EventCalendarEventCard=A,exports.EventCalendarHeader=x,exports.EventCalendarLegend=T,exports.calendarTokenDot=d,exports.defaultEventCalendarEventCardStrings=k,exports.defaultEventCalendarStrings=p,exports.getCalendarColorClasses=C,exports.getCalendarDotClass=w,exports.getCategoryById=_,exports.getEventsForDay=g,exports.resolveCategoryColorToken=f,exports.useEventCalendar=E,exports.useEventCalendarData=h;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../lib/strings.cjs"),t=require("../../../_shared/ui-provider-DZWtUXf2.cjs"),n=require("../../../lib/utils.cjs"),r=require("../../../_shared/button-Bd5bEIiB.cjs"),i=require("../../../_shared/typography-CO9uwZhF.cjs"),a=require("../../../_shared/select-CG5Yq-6A.cjs"),o=require("../../../_shared/date-pickers-C86tVD8e.cjs");let s=require("react"),c=require("date-fns"),l=require("react/jsx-runtime"),u=require("lucide-react");var d={gray:`bg-muted-foreground`,red:`bg-destructive`,orange:`bg-warning`,amber:`bg-warning`,yellow:`bg-warning`,green:`bg-success`,blue:`bg-info`,purple:`bg-primary`};function f(e){if(!e)return`gray`;if(e.colorToken)return e.colorToken;let t=e.color??``;return t.includes(`orange`)?`orange`:t.includes(`yellow`)?`yellow`:t.includes(`amber`)?`amber`:t.includes(`purple`)?`purple`:t.includes(`green`)?`green`:t.includes(`blue`)?`blue`:t.includes(`red`)?`red`:`gray`}var p={today:`Today`,previous:`Previous`,next:`Next`,loading:`Loading…`,booking:`booking`,bookings:`bookings`,viewMode:{month:`Month`,week:`Week`,agenda:`Agenda`},weekdaysShort:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`]};function m({event:e,category:t,compact:a=!1,onClick:o}){let s=d[f(t)],u=e.allDay?null:(0,c.format)(e.startDate,`HH:mm`),p=e.metadata?.calendar_cell_title,m=typeof p==`string`&&p.trim()!==``?p:e.title,h=u?`${m} at ${u}`:m;return(0,l.jsxs)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:a?`small`:`default`,onClick:e=>{e.stopPropagation(),o?.()},className:n.cn(`event-calendar-event-badge--component`,`group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5`,`justify-start text-left shadow-none transition-colors hover:bg-accent/50`,`max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0`,a?`h-5`:`h-6`),"aria-label":h,title:typeof m==`string`?m:void 0,children:[(0,l.jsx)(`span`,{"aria-hidden":`true`,className:n.cn(`size-1.5 shrink-0 rounded-full`,s)}),(0,l.jsx)(i.s,{tag:`span`,size:`xxs`,weight:`medium`,className:`min-w-0 flex-1 truncate max-sm:hidden`,children:m}),!!u&&(0,l.jsx)(i.s,{tag:`span`,size:`xxs`,type:`secondary`,className:`shrink-0 whitespace-nowrap tabular-nums max-sm:hidden`,children:u})]})}m.displayName=`EventCalendarEventBadge`;function h(e,t,n,r={}){let{weekStartsOn:i=1,showWeekends:a=!0,visibleCategories:o}=r;return(0,s.useMemo)(()=>{let r=(0,c.startOfMonth)(t),s=(0,c.endOfMonth)(t),l,u;n===`month`?(l=(0,c.startOfWeek)(r,{weekStartsOn:i}),u=(0,c.endOfWeek)(s,{weekStartsOn:i})):n===`week`?(l=(0,c.startOfWeek)(t,{weekStartsOn:i}),u=(0,c.endOfWeek)(t,{weekStartsOn:i})):(l=r,u=s);let d=(0,c.eachDayOfInterval)({start:l,end:u}),f=o&&o.length>0?e.filter(e=>o.includes(e.category)):e,p=new Map;return f.forEach(e=>{let t=(0,c.startOfDay)(e.startDate);if(Number.isNaN(t.getTime()))return;let n=t;if(e.endDate&&!Number.isNaN(e.endDate.getTime())){let r=(0,c.startOfDay)(e.endDate);!Number.isNaN(r.getTime())&&r.getTime()>=t.getTime()&&(n=r)}(0,c.eachDayOfInterval)({start:t,end:n}).forEach(t=>{let n=t.toISOString().split(`T`)[0];p.has(n)||p.set(n,[]),p.get(n).push(e)})}),d.filter(e=>a||!(0,c.isWeekend)(e)).map(e=>{let n=e.toISOString().split(`T`)[0],r=[...p.get(n)||[]].sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime());return{date:e,isCurrentMonth:(0,c.isSameMonth)(e,t),isToday:(0,c.isToday)(e),isWeekend:(0,c.isWeekend)(e),events:r,eventCount:r.length,hasMultipleEvents:r.length>1}})},[e,t,n,i,a,o])}function g(e,t){return e.filter(e=>{let n=(0,c.startOfDay)(e.startDate),r=e.endDate?(0,c.startOfDay)(e.endDate):n,i=(0,c.startOfDay)(t);return(0,c.isSameDay)(i,n)||(0,c.isSameDay)(i,r)||i>n&&i<r}).sort((e,t)=>e.allDay&&!t.allDay?-1:!e.allDay&&t.allDay?1:e.startDate.getTime()-t.startDate.getTime())}function _(e,t){return e.find(e=>e.id===t)}function v({data:e,categories:t,maxEvents:r=3,onClick:a,compact:o=!1,strings:s,renderEvent:c}){let u={booking:s?.booking??p.booking,bookings:s?.bookings??p.bookings},{date:h,isCurrentMonth:g,isToday:v,isWeekend:y,events:b,eventCount:x}=e,S=b.slice(0,r),C=Math.max(0,x-r);return(0,l.jsx)(`div`,{className:n.cn(`event-calendar-day-cell--component`,`p-0 relative w-full border-r border-b border-border last:border-r-0 [&:nth-child(7n)]:border-r-0`),children:(0,l.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:a,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())},className:n.cn(`relative w-full min-h-24 p-2 transition-colors`,`hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10`,`flex flex-col items-start gap-1`,!g&&`text-muted-foreground opacity-50`,v&&`h-full bg-accent text-accent-foreground`,o&&`min-h-20 p-1`),"aria-label":h.toDateString(),"data-date":h.toISOString(),"data-today":v,"data-weekend":y,"data-current-month":g,children:[(0,l.jsx)(i.s,{className:n.cn(`font-normal leading-none`,v&&`font-semibold`,!g&&`text-muted-foreground`,o&&`text-xs`),children:h.getDate()}),(0,l.jsxs)(`div`,{className:`w-full space-y-0.5`,children:[S.map(n=>{let r=_(t,n.category);return c?(0,l.jsx)(`div`,{children:c(n,r)},n.id):(0,l.jsx)(m,{event:n,category:r,compact:o||e.hasMultipleEvents,onClick:()=>a()},n.id)}),C>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1 py-0.5 px-2`,children:[(0,l.jsx)(`div`,{className:`flex items-center -space-x-1`,children:t.slice(0,3).map((e,t)=>(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full border border-background`,d[f(e)])},e.id||t))}),(0,l.jsxs)(i.s,{size:`xs`,type:`secondary`,className:`font-medium text-xxs`,children:[C,` `,C===1?u.booking:u.bookings]})]})]})]})})}v.displayName=`EventCalendarDayCell`;function y(e){switch(e){case`destructive`:return{variant:`error`,buttonStyle:`solid`};case`outline`:return{variant:`secondary`,buttonStyle:`outline`};case`secondary`:return{variant:`secondary`,buttonStyle:`solid`};case`ghost`:return{variant:`secondary`,buttonStyle:`ghost`};default:return{variant:`primary`,buttonStyle:`solid`}}}var b=(e,t)=>{if(!e)return null;if(e.element)return(0,l.jsx)(`div`,{className:`event-calendar-header--component`,children:e.element},e.id||t);let i=e.icon,a=e.id||`action-${t}`,o=()=>{e.onClick?.()},s=y(e.variant);return(0,l.jsxs)(r.t,{variant:s.variant,buttonStyle:s.buttonStyle,onClick:o,className:n.cn(`h-8 gap-2`,s.className),disabled:!!e.disabled,children:[!!i&&(0,l.jsx)(i,{className:`h-4 w-4`}),e.label]},a)};function x({currentDate:t,viewMode:n,displayLabel:c,onPrevious:d,onNext:f,onToday:m,onViewModeChange:h,onDateChange:g,locale:_,actions:v,strings:y,rangeMode:x=`date`,minDate:S,maxDate:C,prevDisabled:w=!1,nextDisabled:T=!1}){let E=e.useStrings(p,y),D=(0,s.useMemo)(()=>(v||[]).filter(e=>e.isVisible!==!1),[v]);return(0,l.jsxs)(`div`,{className:`flex items-center justify-between gap-4 mb-4`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,l.jsx)(i.o,{tag:`h3`,className:`text-lg font-semibold`,children:c}),(0,l.jsx)(o.t,{value:{month:t.getMonth(),year:t.getFullYear()},onChange:e=>{e.date&&g?.(e.date)},fromYear:S?.getFullYear(),toYear:C?.getFullYear(),locale:_})]}),(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[D.length>0&&(0,l.jsxs)(l.Fragment,{children:[D.map((e,t)=>b(e,t)),(0,l.jsx)(`div`,{className:`h-6 w-px bg-border mx-1`})]}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`outline`,onClick:m,className:`hidden sm:inline-flex`,children:E.today}),(0,l.jsxs)(`div`,{className:`flex items-center border border-border rounded-md`,children:[(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:d,disabled:w,className:`h-8 w-8 rounded-r-none border-r`,"aria-label":E.previous,children:(0,l.jsx)(u.ChevronLeft,{className:`h-4 w-4`})}),(0,l.jsx)(r.t,{variant:`secondary`,buttonStyle:`ghost`,size:`icon`,onClick:f,disabled:T,className:`h-8 w-8 rounded-l-none`,"aria-label":E.next,children:(0,l.jsx)(u.ChevronRight,{className:`h-4 w-4`})})]}),!!h&&(0,l.jsxs)(a.t,{value:n,onValueChange:e=>{e&&h(e)},children:[(0,l.jsx)(a.a,{className:`w-28 h-8`,children:(0,l.jsx)(a.o,{})}),(0,l.jsxs)(a.n,{children:[(0,l.jsx)(a.i,{value:`month`,children:E.viewMode.month}),(0,l.jsx)(a.i,{value:`week`,children:E.viewMode.week}),(0,l.jsx)(a.i,{value:`agenda`,children:E.viewMode.agenda})]})]})]})]})}x.displayName=`EventCalendarHeader`;var S={gray:{badgeBg:`bg-muted`,border:`border-border`,swatch:`bg-muted-foreground`},red:{badgeBg:`bg-destructive/10`,border:`border-destructive/40`,swatch:`bg-destructive`},orange:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},amber:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},yellow:{badgeBg:`bg-warning/10`,border:`border-warning/40`,swatch:`bg-warning`},green:{badgeBg:`bg-success/10`,border:`border-success/40`,swatch:`bg-success`},blue:{badgeBg:`bg-info/10`,border:`border-info/40`,swatch:`bg-info`},purple:{badgeBg:`bg-primary/10`,border:`border-primary/40`,swatch:`bg-primary`}};function C(e){let t=f(e);return{dot:d[t],...S[t]}}function w(e){return d[f(e)]}function T({categories:e,visibleCategories:t,onToggleCategory:a,enableFiltering:o=!1}){let s=!t||t.length===0,c=e=>o?s||t?.includes(e):!0,u=e=>{!o||!a||a(e)};return e.length===0?null:(0,l.jsx)(`div`,{role:o?`group`:void 0,"aria-label":o?`Filter event categories`:void 0,className:n.cn(`event-calendar-legend--component`,`flex flex-wrap items-center gap-1.5 py-1`),children:e.map(e=>{let t=c(e.id),a=C(e),s=e.icon,d=`group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors`,f=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:n.cn(`inline-block size-2 rounded-full`,t?a.swatch:`bg-muted-foreground/40`),"aria-hidden":`true`}),!!s&&(0,l.jsx)(s,{className:n.cn(`size-3`,t?`text-foreground`:`text-muted-foreground`),"aria-hidden":`true`}),(0,l.jsx)(i.s,{tag:`span`,size:`xs`,weight:`medium`,type:t?`main`:`secondary`,children:e.label})]});return o?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`small`,"aria-pressed":t,onClick:()=>u(e.id),className:n.cn(d,`h-auto cursor-pointer shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,t?`border-border bg-card hover:bg-muted/40`:`border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30`),children:f},e.id):(0,l.jsx)(`span`,{className:n.cn(d,`border-border bg-card cursor-default`),children:f},e.id)})})}T.displayName=`EventCalendarLegend`;function E({events:e,defaultDate:t=new Date,defaultViewMode:n=`month`,onDateChange:r,onViewModeChange:i,dataOptions:a={}}){let[o,l]=(0,s.useState)(t),[u,d]=(0,s.useState)(n),f=h(e,o,u,a),p=(0,s.useMemo)(()=>a.visibleCategories&&a.visibleCategories.length>0?e.filter(e=>a.visibleCategories.includes(e.category)):e,[e,a.visibleCategories]);return{currentDate:o,viewMode:u,calendarDays:f,visibleEvents:p,goToToday:(0,s.useCallback)(()=>{let e=new Date;l(e),r?.(e)},[r]),goToNextPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.addMonths)(o,1):(0,c.addWeeks)(o,1);l(e),r?.(e)},[o,u,r]),goToPreviousPeriod:(0,s.useCallback)(()=>{let e=u===`month`?(0,c.subMonths)(o,1):(0,c.subWeeks)(o,1);l(e),r?.(e)},[o,u,r]),setDate:(0,s.useCallback)(e=>{l(e),r?.(e)},[r]),setViewMode:(0,s.useCallback)(e=>{d(e),i?.(e)},[i]),displayLabel:(0,s.useMemo)(()=>{if(u===`month`)return(0,c.format)(o,`MMMM yyyy`);if(u===`week`){let e=f[0]?.date,t=f[f.length-1]?.date;return e&&t?`${(0,c.format)(e,`MMM d`)} - ${(0,c.format)(t,`MMM d, yyyy`)}`:(0,c.format)(o,`MMMM yyyy`)}return(0,c.format)(o,`MMMM yyyy`)},[o,u,f]),hasEvents:(0,s.useMemo)(()=>p.length>0,[p])}}function D(e,t){if(!e)return!1;if(Array.isArray(e))return e.some(e=>e.toDateString()===t.toDateString());if(typeof e==`function`)return e(t);let n=e.dates?.some(e=>e.toDateString()===t.toDateString())??!1,r=e.predicate?.(t)??!1;return n||r}function O({events:r,categories:a,viewMode:o,onViewModeChange:c,defaultDate:u,onDateChange:d,onEventClick:f,onDayClick:m,maxEventsPerDay:h=3,showLegend:g=!0,showHeader:_=!0,showWeekends:y=!0,weekStartsOn:b,locale:S,enableCategoryFilter:C=!1,visibleCategories:w,onVisibleCategoriesChange:O,isLoading:k=!1,emptyStateMessage:A,className:j,compact:M=!1,actions:N,strings:P,dayHeadingVariant:F=`default`,dayHeadingClassName:I,renderDayHeading:L,rangeMode:R=`date`,minDate:z,maxDate:B,disabledDates:V,filterEvent:H,renderEvent:U,renderDayCell:W}){let G=e.useStrings(p,P),[K,q]=(0,s.useState)([]),J=w??K,{weekStartsOn:Y}=t.i(),X=b??Y??1,Z=e=>{let t=J.includes(e)?J.filter(t=>t!==e):[...J,e];O?O(t):q(t)},Q=E({events:r,defaultDate:u,defaultViewMode:o||`month`,onDateChange:d,onViewModeChange:c,dataOptions:{weekStartsOn:X,showWeekends:y,visibleCategories:J.length>0?J:void 0}}),ee=(0,s.useMemo)(()=>{let e=G.weekdaysShort;return X===1?[...e.slice(1),e[0]]:e},[G.weekdaysShort,X]),te=e=>{D(V,e.date)||z&&e.date<z||B&&e.date>B||m?.(e.date,e.events)},ne=(0,s.useMemo)(()=>H?Q.calendarDays.map(e=>({...e,events:e.events.filter(H),eventCount:e.events.filter(H).length,hasMultipleEvents:e.events.filter(H).length>1})):Q.calendarDays,[Q.calendarDays,H]);function re(e){return!!(D(V,e)||z&&e<z||B&&e>B)}let $=(0,s.useMemo)(()=>{let e=Q.calendarDays;if(e.length===0)return{prev:!1,next:!1};let t=e[0].date,n=e[e.length-1].date;return{prev:!!z&&t<=z,next:!!B&&n>=B}},[Q.calendarDays,z,B]);if(k)return(0,l.jsx)(`div`,{className:n.cn(`event-calendar--component`,`flex items-center justify-center py-12`),children:(0,l.jsx)(i.s,{type:`secondary`,children:G.loading})});let ie=o?c:void 0,ae=C?Z:void 0;return(0,l.jsxs)(`div`,{className:n.cn(`w-full space-y-4`,j),children:[!!_&&(0,l.jsx)(x,{currentDate:Q.currentDate,viewMode:Q.viewMode,displayLabel:Q.displayLabel,onPrevious:Q.goToPreviousPeriod,onNext:Q.goToNextPeriod,onToday:Q.goToToday,onViewModeChange:ie,onDateChange:Q.setDate,locale:S,actions:N,rangeMode:R,minDate:z,maxDate:B,prevDisabled:$.prev,nextDisabled:$.next,strings:{today:G.today,previous:G.previous,next:G.next,viewMode:G.viewMode}}),!!g&&a.length>0&&(0,l.jsx)(T,{categories:a,visibleCategories:J,onToggleCategory:ae,enableFiltering:C}),!Q.hasEvents&&A?(0,l.jsx)(`div`,{className:`flex items-center justify-center py-12 border border-dashed border-border rounded-lg`,children:(0,l.jsx)(i.s,{type:`secondary`,children:A})}):(0,l.jsxs)(`div`,{className:`bg-background rounded-lg border border-border`,children:[(0,l.jsx)(`div`,{className:n.cn(`grid grid-cols-7`,F===`bordered`&&`border-b border-border mb-0`,F===`tinted`&&`bg-muted/40 rounded-t-lg mb-0 overflow-hidden`,F===`accent`&&`bg-primary/8 rounded-t-lg mb-0 overflow-hidden`,F==="default"&&`mb-2`),children:ee.map((e,t)=>L?(0,l.jsx)(`div`,{children:L(e,t)},e):(0,l.jsx)(`div`,{className:n.cn(`text-center h-8 flex items-center justify-center`,I),children:(0,l.jsx)(i.s,{size:`xs`,weight:F===`accent`?`medium`:`regular`,className:n.cn(F==="default"&&`text-muted-foreground`,F===`tinted`&&`text-muted-foreground`,F===`bordered`&&`text-foreground`,F===`accent`&&`text-primary`),children:e})},e))}),(0,l.jsx)(`div`,{className:`grid grid-cols-7`,children:ne.map(e=>{let t=re(e.date),r=()=>(0,l.jsx)(v,{data:e,categories:a,maxEvents:h,onClick:()=>te(e),compact:M,strings:{booking:G.booking,bookings:G.bookings},renderEvent:U});return(0,l.jsx)(`div`,{className:n.cn(t&&`pointer-events-none opacity-40`),"aria-disabled":t||void 0,children:W?W(e,r):r()},e.date.toISOString())})})]})]})}O.displayName=`EventCalendar`;var k={guest:`guest`,guests:`guests`};function A({event:t,category:a,onClick:o,strings:s}){let d=e.useStrings(k,s),f=!!o,p=()=>{o&&o()},m=t.metadata||{},h=m.customer_name,g=m.guest_count,_=m.service_name,v=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-3`,children:[(0,l.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,l.jsx)(i.o,{tag:`h5`,children:t.title}),!!a&&(0,l.jsxs)(`div`,{className:`inline-flex items-center gap-1`,children:[(0,l.jsx)(`span`,{className:n.cn(`h-1.5 w-1.5 rounded-full`,a.color.replace(`border-`,`bg-`))}),(0,l.jsx)(i.s,{size:`xs`,weight:`medium`,children:a.label})]})]}),!!f&&!!t.url&&(0,l.jsx)(u.ExternalLink,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`})]}),(0,l.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3`,children:[!!h&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.User,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.s,{className:`truncate`,children:h})]}),g!==void 0&&g>0&&(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,l.jsx)(u.Users,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsxs)(i.s,{children:[g,` `,g===1?d.guest:d.guests]})]})]}),!!_&&(0,l.jsx)(i.s,{type:`secondary`,className:`mb-2 line-clamp-1`,children:_}),(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5 pt-2 border-t border-border/50`,children:[(0,l.jsx)(u.Calendar,{className:`h-3.5 w-3.5 text-muted-foreground flex-shrink-0`}),(0,l.jsx)(i.s,{size:`xs`,type:`secondary`,children:!!t.allDay&&(0,c.format)(t.startDate,`EEEE, MMM d, yyyy`)})]})]}),y=n.cn(`w-full text-left p-4 border border-border rounded-lg bg-card transition-none`,f?`cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`:``);return f?(0,l.jsx)(r.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,onClick:p,className:n.cn(`event-calendar-event-card--component`,`h-auto flex-col items-stretch justify-start whitespace-normal shadow-none`,y),children:v}):(0,l.jsx)(`div`,{className:n.cn(`event-calendar-event-card--component`,y),children:v})}A.displayName=`EventCalendarEventCard`,exports.EventCalendar=O,exports.EventCalendarDayCell=v,exports.EventCalendarEventBadge=m,exports.EventCalendarEventCard=A,exports.EventCalendarHeader=x,exports.EventCalendarLegend=T,exports.calendarTokenDot=d,exports.defaultEventCalendarEventCardStrings=k,exports.defaultEventCalendarStrings=p,exports.getCalendarColorClasses=C,exports.getCalendarDotClass=w,exports.getCategoryById=_,exports.getEventsForDay=g,exports.resolveCategoryColorToken=f,exports.useEventCalendar=E,exports.useEventCalendarData=h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/base/event-calendar/event-calendar.types.ts","../../../../src/components/base/event-calendar/event-calendar-event-badge.tsx","../../../../src/components/base/event-calendar/use-event-calendar-data.tsx","../../../../src/components/base/event-calendar/event-calendar-day-cell.tsx","../../../../src/components/base/event-calendar/event-calendar-header.tsx","../../../../src/components/base/event-calendar/colors.ts","../../../../src/components/base/event-calendar/event-calendar-legend.tsx","../../../../src/components/base/event-calendar/use-event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar-event-card.tsx"],"sourcesContent":["import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport type { StringsProp } from '@/lib/strings';\n\n/**\n * Calendar action item.\n *\n * The library never navigates on its own — there is no `href` shortcut.\n * The consumer wires routing into `onClick` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`), or supplies a fully\n * pre-rendered element via `element`.\n */\nexport interface CalendarActionItem {\n\tid?: string;\n\tlabel: string;\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\telement?: ReactNode;\n\ticon?: LucideIcon;\n\tvariant?: 'default' | 'outline' | 'ghost' | 'secondary' | 'destructive';\n\tisVisible?: boolean;\n}\n\n/**\n * Base event data structure\n */\nexport interface CalendarEvent {\n\tid: string;\n\ttitle: string;\n\tdescription?: string;\n\tstartDate: Date;\n\tendDate?: Date;\n\tallDay?: boolean;\n\tcategory: string;\n\tmetadata?: Record<string, unknown>;\n\turl?: string;\n}\n\n/**\n * Canonical category palette tokens. Map to a small fixed set of colours so\n * the calendar can render dots/strokes without parsing arbitrary class names.\n * Add new tokens here when the design palette grows.\n */\nexport type CalendarColorToken =\n\t| 'gray'\n\t| 'red'\n\t| 'orange'\n\t| 'amber'\n\t| 'yellow'\n\t| 'green'\n\t| 'blue'\n\t| 'purple';\n\n/**\n * Tailwind class lookups for each canonical token. Used by day-cell dots and\n * event-badge dots so we never string-parse `category.color`.\n */\nexport const calendarTokenDot: Record<CalendarColorToken, string> = {\n\tgray: 'bg-muted-foreground',\n\tred: 'bg-destructive',\n\torange: 'bg-warning',\n\tamber: 'bg-warning',\n\tyellow: 'bg-warning',\n\tgreen: 'bg-success',\n\tblue: 'bg-info',\n\tpurple: 'bg-primary',\n};\n\n/**\n * Event category configuration. Provide a canonical `colorToken` when\n * possible — it's used everywhere the calendar paints a dot. The free-form\n * `color`/`bgColor` strings are kept for legacy consumers (legend swatches,\n * external Tailwind classes) but new code should rely on `colorToken`.\n */\nexport interface EventCategory {\n\tid: string;\n\tlabel: string;\n\tcolor: string;\n\tbgColor?: string;\n\ttextColor?: string;\n\tcolorToken?: CalendarColorToken;\n\ticon?: LucideIcon;\n\tdescription?: string;\n}\n\n/**\n * Best-effort mapping from a free-form `category.color` Tailwind class to a\n * canonical token. Falls back to `gray`. Prefer `category.colorToken` —\n * this is only used to retrofit legacy consumers.\n */\nexport function resolveCategoryColorToken(category?: EventCategory | null): CalendarColorToken {\n\tif (!category) return 'gray';\n\tif (category.colorToken) return category.colorToken;\n\tconst c = category.color ?? '';\n\tif (c.includes('orange')) return 'orange';\n\tif (c.includes('yellow')) return 'yellow';\n\tif (c.includes('amber')) return 'amber';\n\tif (c.includes('purple')) return 'purple';\n\tif (c.includes('green')) return 'green';\n\tif (c.includes('blue')) return 'blue';\n\tif (c.includes('red')) return 'red';\n\treturn 'gray';\n}\n\n/**\n * Calendar view mode\n */\nexport type CalendarViewMode = 'month' | 'week' | 'agenda';\n\n/**\n * Day cell data (processed)\n */\nexport interface CalendarDayData {\n\tdate: Date;\n\tisCurrentMonth: boolean;\n\tisToday: boolean;\n\tisWeekend: boolean;\n\tevents: CalendarEvent[];\n\teventCount: number;\n\thasMultipleEvents: boolean;\n}\n\n/**\n * Localizable strings — pass partial overrides via `strings`.\n */\nexport interface EventCalendarStrings {\n\ttoday: string;\n\tprevious: string;\n\tnext: string;\n\tloading: string;\n\tbooking: string;\n\tbookings: string;\n\tviewMode: {\n\t\tmonth: string;\n\t\tweek: string;\n\t\tagenda: string;\n\t};\n\tweekdaysShort: [string, string, string, string, string, string, string]; // Sun..Sat\n}\n\nexport const defaultEventCalendarStrings: EventCalendarStrings = {\n\ttoday: 'Today',\n\tprevious: 'Previous',\n\tnext: 'Next',\n\tloading: 'Loading…',\n\tbooking: 'booking',\n\tbookings: 'bookings',\n\tviewMode: {\n\t\tmonth: 'Month',\n\t\tweek: 'Week',\n\t\tagenda: 'Agenda',\n\t},\n\tweekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n};\n\n/**\n * Visual variant for the weekday-header strip (\"Sun Mon Tue …\").\n * - `default` — muted text on transparent (matches body)\n * - `accent` — primary-tinted background, primary text\n * - `tinted` — muted background, foreground text (subtle separation)\n * - `bordered` — bottom-bordered row, foreground text\n *\n * Consumers can also pass a fully custom `dayHeadingClassName` to override\n * any preset.\n */\nexport type EventCalendarDayHeadingVariant = 'default' | 'accent' | 'tinted' | 'bordered';\n\n/**\n * Predicate-or-list shape for date rules. Either explicit dates,\n * a predicate callback, or both (combined with OR semantics).\n */\nexport type DateRule = Date[] | ((date: Date) => boolean) | { dates?: Date[]; predicate?: (date: Date) => boolean };\n\n/**\n * Hook for filtering events at render time without mutating the source list.\n */\nexport type EventFilter = (event: CalendarEvent) => boolean;\n\n/**\n * Render hook for individual event chips in the day cell.\n */\nexport type RenderEventFn = (event: CalendarEvent, category: EventCategory | undefined) => ReactNode;\n\n/**\n * Render hook for the day cell body (after the date number is drawn).\n */\nexport type RenderDayCellFn = (day: CalendarDayData, defaultRender: () => ReactNode) => ReactNode;\n\n/**\n * Range mode for navigation. `month-year` exposes a Month/Year picker\n * trigger in the header that jumps the calendar to that month.\n */\nexport type EventCalendarRangeMode = 'date' | 'month-year';\n\n/**\n * Event calendar props\n */\nexport interface EventCalendarProps {\n\tevents: CalendarEvent[];\n\tcategories: EventCategory[];\n\tviewMode?: CalendarViewMode;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdefaultDate?: Date;\n\tonDateChange?: (date: Date) => void;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tonDayClick?: (date: Date, events: CalendarEvent[]) => void;\n\tmaxEventsPerDay?: number;\n\tshowLegend?: boolean;\n\tshowHeader?: boolean;\n\tshowWeekends?: boolean;\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tenableCategoryFilter?: boolean;\n\tvisibleCategories?: string[];\n\tonVisibleCategoriesChange?: (categories: string[]) => void;\n\tisLoading?: boolean;\n\temptyStateMessage?: string;\n\tclassName?: string;\n\tcompact?: boolean;\n\tactions?: CalendarActionItem[];\n\tstrings?: StringsProp<EventCalendarStrings>;\n\t/** Visual variant for the weekday header strip. Default `default`. */\n\tdayHeadingVariant?: EventCalendarDayHeadingVariant;\n\t/** Custom class names appended to each weekday-heading cell — wins over variant presets. */\n\tdayHeadingClassName?: string;\n\t/** Optional renderer to fully control a single weekday cell. */\n\trenderDayHeading?: (day: string, index: number) => ReactNode;\n\n\t/**\n\t * Header navigation range mode.\n\t * - `date` — DatePicker (default; jump to a specific date)\n\t * - `month-year` — MonthYearPicker (compact month/year jump)\n\t */\n\trangeMode?: EventCalendarRangeMode;\n\n\t/** Earliest date the user can navigate to. Earlier nav is disabled. */\n\tminDate?: Date;\n\t/** Latest date the user can navigate to. Later nav is disabled. */\n\tmaxDate?: Date;\n\t/**\n\t * Dates that should render in the calendar but be marked as disabled\n\t * (greyed out, not clickable). Pass dates, a predicate, or both.\n\t */\n\tdisabledDates?: DateRule;\n\t/**\n\t * Hide events from rendering at runtime without mutating `events`.\n\t * Returns `true` to KEEP an event, `false` to hide it.\n\t */\n\tfilterEvent?: EventFilter;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n\t/** Per-day-cell renderer override. */\n\trenderDayCell?: RenderDayCellFn;\n}\n\n/**\n * Day cell props\n */\nexport interface EventCalendarDayCellProps {\n\tdata: CalendarDayData;\n\tcategories: EventCategory[];\n\tmaxEvents?: number;\n\tonClick: () => void;\n\tcompact?: boolean;\n\tstrings?: Pick<EventCalendarStrings, 'booking' | 'bookings'>;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n}\n\n/**\n * Event badge props\n */\nexport interface EventCalendarEventBadgeProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tcompact?: boolean;\n\tonClick?: () => void;\n}\n\n/**\n * Event card props\n */\nexport interface EventCalendarEventCardProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tonClick?: () => void;\n}\n\n/**\n * Legend props\n */\nexport interface EventCalendarLegendProps {\n\tcategories: EventCategory[];\n\tvisibleCategories?: string[];\n\tonToggleCategory?: (categoryId: string) => void;\n\tenableFiltering?: boolean;\n}\n\n/**\n * Header props\n */\nexport interface EventCalendarHeaderProps {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tdisplayLabel: string;\n\tonPrevious: () => void;\n\tonNext: () => void;\n\tonToday: () => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tonDateChange?: (date: Date) => void;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tactions?: CalendarActionItem[];\n\tstrings?: StringsProp<Pick<EventCalendarStrings, 'today' | 'previous' | 'next' | 'viewMode'>>;\n\t/** Range mode for the date trigger inside the header. */\n\trangeMode?: EventCalendarRangeMode;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tprevDisabled?: boolean;\n\tnextDisabled?: boolean;\n}\n\n/**\n * Hook return type\n */\nexport interface UseEventCalendarReturn {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tcalendarDays: CalendarDayData[];\n\tvisibleEvents: CalendarEvent[];\n\tgoToToday: () => void;\n\tgoToNextPeriod: () => void;\n\tgoToPreviousPeriod: () => void;\n\tsetDate: (date: Date) => void;\n\tsetViewMode: (mode: CalendarViewMode) => void;\n\tdisplayLabel: string;\n\thasEvents: boolean;\n}\n\n/**\n * Data transformation hook options\n */\nexport interface UseEventCalendarDataOptions {\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\tshowWeekends?: boolean;\n\tvisibleCategories?: string[];\n}\n","/**\n * EventCalendarEventBadge — compact badge representing a single event inside\n * a day cell. Renders a category-coloured dot, the event title (or a custom\n * `metadata.calendar_cell_title` override), and the start time when not an\n * all-day event. Click is captured locally and propagated via `onClick`.\n */\nimport { format } from 'date-fns';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype EventCalendarEventBadgeProps,\n} from './event-calendar.types';\n\nexport function EventCalendarEventBadge({\n\tevent,\n\tcategory,\n\tcompact = false,\n\tonClick,\n}: EventCalendarEventBadgeProps) {\n\tconst dotColor = calendarTokenDot[resolveCategoryColorToken(category)];\n\n\tconst timeDisplay = !event.allDay ? format(event.startDate, 'HH:mm') : null;\n\tconst cellTitleRaw = event.metadata?.calendar_cell_title;\n\tconst displayTitle =\n\t\ttypeof cellTitleRaw === 'string' && cellTitleRaw.trim() !== ''\n\t\t\t? cellTitleRaw\n\t\t\t: event.title;\n\tconst accessibleLabel = timeDisplay ? `${displayTitle} at ${timeDisplay}` : displayTitle;\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize={compact ? 'xs' : 'sm'}\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.();\n\t\t\t}}\n\t\t\tclassName={cn('event-calendar-event-badge--component',\n\t\t\t\t'group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5',\n\t\t\t\t'justify-start text-left shadow-none transition-colors hover:bg-accent/50',\n\t\t\t\t'max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0',\n\t\t\t\tcompact ? 'h-5' : 'h-6',\n\t\t\t)}\n\t\t\taria-label={accessibleLabel}\n\t\t\ttitle={typeof displayTitle === 'string' ? displayTitle : undefined}\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={cn('size-1.5 shrink-0 rounded-full', dotColor)}\n\t\t\t/>\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"xxs\"\n\t\t\t\tweight=\"medium\"\n\t\t\t\tclassName=\"min-w-0 flex-1 truncate max-sm:hidden\"\n\t\t\t>\n\t\t\t\t{displayTitle}\n\t\t\t</Text>\n\t\t\t{!!timeDisplay && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName=\"shrink-0 whitespace-nowrap tabular-nums max-sm:hidden\"\n\t\t\t\t>\n\t\t\t\t\t{timeDisplay}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Button>\n\t);\n}\n\nEventCalendarEventBadge.displayName = 'EventCalendarEventBadge';\n","import {\n\tstartOfMonth,\n\tendOfMonth,\n\tstartOfWeek,\n\tendOfWeek,\n\teachDayOfInterval,\n\tisSameMonth,\n\tisToday,\n\tisSameDay,\n\tisWeekend,\n\tstartOfDay\n} from 'date-fns';\nimport { useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarDayData,\n\tCalendarViewMode,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\n\n/**\n * Transforms raw events into calendar grid data\n */\nexport function useEventCalendarData(\n\tevents: CalendarEvent[],\n\tcurrentDate: Date,\n\tviewMode: CalendarViewMode,\n\toptions: UseEventCalendarDataOptions = {}\n): CalendarDayData[] {\n\tconst {\n\t\tweekStartsOn = 1,\n\t\tshowWeekends = true,\n\t\tvisibleCategories\n\t} = options;\n\n\treturn useMemo(() => {\n\t\tconst monthStart = startOfMonth(currentDate);\n\t\tconst monthEnd = endOfMonth(currentDate);\n\n\t\tlet rangeStart: Date;\n\t\tlet rangeEnd: Date;\n\n\t\tif (viewMode === 'month') {\n\t\t\trangeStart = startOfWeek(monthStart, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(monthEnd, { weekStartsOn });\n\t\t} else if (viewMode === 'week') {\n\t\t\trangeStart = startOfWeek(currentDate, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(currentDate, { weekStartsOn });\n\t\t} else {\n\t\t\trangeStart = monthStart;\n\t\t\trangeEnd = monthEnd;\n\t\t}\n\n\t\tconst days = eachDayOfInterval({ start: rangeStart, end: rangeEnd });\n\n\t\tconst filteredEvents = visibleCategories && visibleCategories.length > 0\n\t\t\t? events.filter(event => visibleCategories.includes(event.category))\n\t\t\t: events;\n\n\t\tconst eventsByDate = new Map<string, CalendarEvent[]>();\n\n\t\tfilteredEvents.forEach(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tif (Number.isNaN(eventStart.getTime())) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet eventEnd = eventStart;\n\t\t\tif (event.endDate && !Number.isNaN(event.endDate.getTime())) {\n\t\t\t\tconst normalizedEnd = startOfDay(event.endDate);\n\t\t\t\tif (!Number.isNaN(normalizedEnd.getTime()) && normalizedEnd.getTime() >= eventStart.getTime()) {\n\t\t\t\t\teventEnd = normalizedEnd;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst eventDays = eachDayOfInterval({ start: eventStart, end: eventEnd });\n\n\t\t\teventDays.forEach(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tif (!eventsByDate.has(dateKey)) {\n\t\t\t\t\teventsByDate.set(dateKey, []);\n\t\t\t\t}\n\t\t\t\teventsByDate.get(dateKey)!.push(event);\n\t\t\t});\n\t\t});\n\n\t\tconst calendarDays: CalendarDayData[] = days\n\t\t\t.filter(day => showWeekends || !isWeekend(day))\n\t\t\t.map(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tconst dayEvents = eventsByDate.get(dateKey) || [];\n\n\t\t\t\tconst sortedEvents = [...dayEvents].sort((a, b) => {\n\t\t\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tdate: day,\n\t\t\t\t\tisCurrentMonth: isSameMonth(day, currentDate),\n\t\t\t\t\tisToday: isToday(day),\n\t\t\t\t\tisWeekend: isWeekend(day),\n\t\t\t\t\tevents: sortedEvents,\n\t\t\t\t\teventCount: sortedEvents.length,\n\t\t\t\t\thasMultipleEvents: sortedEvents.length > 1\n\t\t\t\t};\n\t\t\t});\n\n\t\treturn calendarDays;\n\t}, [events, currentDate, viewMode, weekStartsOn, showWeekends, visibleCategories]);\n}\n\n/**\n * Gets events for a specific day\n */\nexport function getEventsForDay(\n\tevents: CalendarEvent[],\n\tdate: Date\n): CalendarEvent[] {\n\treturn events\n\t\t.filter(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tconst eventEnd = event.endDate ? startOfDay(event.endDate) : eventStart;\n\t\t\tconst targetDay = startOfDay(date);\n\n\t\t\treturn isSameDay(targetDay, eventStart) ||\n\t\t\t\tisSameDay(targetDay, eventEnd) ||\n\t\t\t\t(targetDay > eventStart && targetDay < eventEnd);\n\t\t})\n\t\t.sort((a, b) => {\n\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t});\n}\n\n/**\n * Gets the category object by ID\n */\nexport function getCategoryById<T extends { id: string }>(\n\tcategories: T[],\n\tcategoryId: string\n): T | undefined {\n\treturn categories.find(cat => cat.id === categoryId);\n}\n","/**\n * EventCalendarDayCell — single day square in the month grid. Shows the day\n * number, up to `maxEvents` event badges, and an overflow row with category\n * dots + a pluralised \"+N bookings\" hint when more events exist than fit.\n * Whole cell is keyboard-clickable.\n */\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarEventBadge } from './event-calendar-event-badge';\nimport {\n\tcalendarTokenDot,\n\tdefaultEventCalendarStrings,\n\tresolveCategoryColorToken,\n\ttype EventCalendarDayCellProps,\n} from './event-calendar.types';\nimport { getCategoryById } from './use-event-calendar-data';\n\nexport function EventCalendarDayCell({\n\tdata,\n\tcategories,\n\tmaxEvents = 3,\n\tonClick,\n\tcompact = false,\n\tstrings: stringsProp,\n\trenderEvent,\n}: EventCalendarDayCellProps) {\n\tconst strings = {\n\t\tbooking: stringsProp?.booking ?? defaultEventCalendarStrings.booking,\n\t\tbookings: stringsProp?.bookings ?? defaultEventCalendarStrings.bookings,\n\t};\n\tconst { date, isCurrentMonth, isToday, isWeekend, events, eventCount } = data;\n\n\tconst visibleEvents = events.slice(0, maxEvents);\n\tconst remainingCount = Math.max(0, eventCount - maxEvents);\n\n\treturn (\n\t\t<div className={cn('event-calendar-day-cell--component', 'p-0 relative w-full border-r border-b border-border last:border-r-0 [&:nth-child(7n)]:border-r-0')}>\n\t\t\t<div\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={onClick}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tonClick();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative w-full min-h-24 p-2 transition-colors',\n\t\t\t\t\t'hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10',\n\t\t\t\t\t'flex flex-col items-start gap-1',\n\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground opacity-50',\n\t\t\t\t\tisToday && 'h-full bg-accent text-accent-foreground',\n\t\t\t\t\tcompact && 'min-h-20 p-1'\n\t\t\t\t)}\n\t\t\t\taria-label={date.toDateString()}\n\t\t\t\tdata-date={date.toISOString()}\n\t\t\t\tdata-today={isToday}\n\t\t\t\tdata-weekend={isWeekend}\n\t\t\t\tdata-current-month={isCurrentMonth}\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'font-normal leading-none',\n\t\t\t\t\t\tisToday && 'font-semibold',\n\t\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground',\n\t\t\t\t\t\tcompact && 'text-xs'\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{date.getDate()}\n\t\t\t\t</Text>\n\n\t\t\t\t<div className=\"w-full space-y-0.5\">\n\t\t\t\t\t{visibleEvents.map((event) => {\n\t\t\t\t\t\tconst category = getCategoryById(categories, event.category);\n\t\t\t\t\t\tif (renderEvent) {\n\t\t\t\t\t\t\treturn <div key={event.id}>{renderEvent(event, category)}</div>;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<EventCalendarEventBadge\n\t\t\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\t\t\tevent={event}\n\t\t\t\t\t\t\t\tcategory={category}\n\t\t\t\t\t\t\t\tcompact={compact || data.hasMultipleEvents}\n\t\t\t\t\t\t\t\tonClick={() => onClick()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{remainingCount > 0 && (\n\t\t\t\t\t\t<div className=\"flex items-center gap-1 py-0.5 px-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center -space-x-1\">\n\t\t\t\t\t\t\t\t{categories.slice(0, 3).map((category, idx) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={category.id || idx}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-1.5 w-1.5 rounded-full border border-background',\n\t\t\t\t\t\t\t\t\t\t\tcalendarTokenDot[resolveCategoryColorToken(category)],\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tclassName=\"font-medium text-xxs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{remainingCount} {remainingCount === 1 ? strings.booking : strings.bookings}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarDayCell.displayName = 'EventCalendarDayCell';\n","/**\n * EventCalendarHeader — title, month/year picker, optional action buttons,\n * Today button, prev/next stepper, and a view-mode select. Designed to sit\n * above `EventCalendar`'s grid; can be reused independently for custom\n * layouts.\n */\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { Button, type ButtonVariant, type ButtonStyle } from '@/components/base/buttons';\nimport { MonthYearPicker } from '@/components/base/date-pickers';\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue\n} from '@/components/ui/select';\nimport Heading from '@/components/typography/heading';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport { defaultEventCalendarStrings, type EventCalendarHeaderProps, type CalendarActionItem } from './event-calendar.types';\n\nfunction resolveActionButtonVariant(actionVariant?: CalendarActionItem['variant']): {\n\tvariant: ButtonVariant;\n\tbuttonStyle: ButtonStyle;\n\tclassName?: string;\n} {\n\tswitch (actionVariant) {\n\t\tcase 'destructive':\n\t\t\treturn { variant: 'error', buttonStyle: 'solid' };\n\t\tcase 'outline':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'outline' };\n\t\tcase 'secondary':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'solid' };\n\t\tcase 'ghost':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'ghost' };\n\t\tcase 'default':\n\t\tdefault:\n\t\t\treturn { variant: 'primary', buttonStyle: 'solid' };\n\t}\n}\n\n/**\n * Render a single action item\n */\nconst renderAction = (action: CalendarActionItem, index: number) => {\n\tif (!action) return null;\n\n\tif (action.element) {\n\t\treturn <div className=\"event-calendar-header--component\" key={action.id || index}>{action.element}</div>;\n\t}\n\n\tconst IconComponent = action.icon;\n\tconst key = action.id || `action-${index}`;\n\n\tconst handleClick = () => {\n\t\taction.onClick?.();\n\t};\n\n\tconst resolved = resolveActionButtonVariant(action.variant);\n\n\treturn (\n\t\t<Button\n\t\t\tkey={key}\n\t\t\tvariant={resolved.variant}\n\t\t\tbuttonStyle={resolved.buttonStyle}\n\t\t\tonClick={handleClick}\n\t\t\tclassName={cn('h-8 gap-2', resolved.className)}\n\t\t\tdisabled={!!action.disabled}\n\t\t>\n\t\t\t{!!IconComponent && <IconComponent className=\"h-4 w-4\" />}\n\t\t\t{action.label}\n\t\t</Button>\n\t);\n};\n\n/**\n * Calendar header component\n */\nexport function EventCalendarHeader({\n\tcurrentDate,\n\tviewMode,\n\tdisplayLabel,\n\tonPrevious,\n\tonNext,\n\tonToday,\n\tonViewModeChange,\n\tonDateChange,\n\tlocale,\n\tactions,\n\tstrings: stringsProp,\n\trangeMode: _rangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tprevDisabled = false,\n\tnextDisabled = false,\n}: EventCalendarHeaderProps) {\n\tconst strings = useStrings(defaultEventCalendarStrings, stringsProp);\n\tconst visibleActions = useMemo(() => {\n\t\treturn (actions || []).filter(a => a.isVisible !== false);\n\t}, [actions]);\n\n\treturn (\n\t\t<div className=\"flex items-center justify-between gap-4 mb-4\">\n\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t<Heading tag=\"h3\" className=\"text-lg font-semibold\">\n\t\t\t\t\t{displayLabel}\n\t\t\t\t</Heading>\n\n\t\t\t\t<MonthYearPicker\n\t\t\t\t\tvalue={{ month: currentDate.getMonth(), year: currentDate.getFullYear() }}\n\t\t\t\t\tonChange={(output) => {\n\t\t\t\t\t\tif (output.date) {\n\t\t\t\t\t\t\tonDateChange?.(output.date);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tfromYear={minDate?.getFullYear()}\n\t\t\t\t\ttoYear={maxDate?.getFullYear()}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t{visibleActions.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{visibleActions.map((action, index) => renderAction(action, index))}\n\t\t\t\t\t\t<div className=\"h-6 w-px bg-border mx-1\" />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\tonClick={onToday}\n\t\t\t\t\tclassName=\"hidden sm:inline-flex\"\n\t\t\t\t>\n\t\t\t\t\t{strings.today}\n\t\t\t\t</Button>\n\n\t\t\t\t<div className=\"flex items-center border border-border rounded-md\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onPrevious}\n\t\t\t\t\t\tdisabled={prevDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-r-none border-r\"\n\t\t\t\t\t\taria-label={strings.previous}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronLeft className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onNext}\n\t\t\t\t\t\tdisabled={nextDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-l-none\"\n\t\t\t\t\t\taria-label={strings.next}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronRight className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t{!!onViewModeChange && (\n\t\t\t\t\t<Select\n\t\t\t\t\t\tvalue={viewMode}\n\t\t\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tonViewModeChange(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SelectTrigger className=\"w-28 h-8\">\n\t\t\t\t\t\t\t<SelectValue />\n\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t<SelectItem value=\"month\">{strings.viewMode.month}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"week\">{strings.viewMode.week}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"agenda\">{strings.viewMode.agenda}</SelectItem>\n\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t</Select>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarHeader.displayName = 'EventCalendarHeader';\n","/**\n * Event-calendar colour resolution helpers.\n *\n * The canonical token enum (`CalendarColorToken`) and a basic dot-class lookup\n * live in `event-calendar.types.ts`. This module extends that with the richer\n * class sets used by the day cell, event badge, and legend (badge surface,\n * border, filled swatch). Centralising the map here means new tokens (or theme\n * changes) are a one-line update.\n *\n * Legacy `EventCategory.color` strings are still\n * supported via `resolveCategoryColorToken` (in types.ts), which falls back to\n * substring matching — the same brittle behaviour the old day-cell /\n * event-badge code implemented inline. New code should set\n * `category.colorToken` directly.\n */\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype CalendarColorToken,\n\ttype EventCategory,\n} from './event-calendar.types';\n\nexport interface CalendarColorClasses {\n\t/** Solid dot fill (used as the leading bullet on event chips). */\n\tdot: string;\n\t/** Soft tinted surface for the event badge background. */\n\tbadgeBg: string;\n\t/** Border-tone for the event badge / legend swatch. */\n\tborder: string;\n\t/** Filled legend swatch (square chip in the legend row). */\n\tswatch: string;\n}\n\nconst TOKEN_EXTRAS: Record<CalendarColorToken, Omit<CalendarColorClasses, 'dot'>> = {\n\tgray: { badgeBg: 'bg-muted', border: 'border-border', swatch: 'bg-muted-foreground' },\n\tred: { badgeBg: 'bg-destructive/10', border: 'border-destructive/40', swatch: 'bg-destructive' },\n\torange: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tamber: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tyellow: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tgreen: { badgeBg: 'bg-success/10', border: 'border-success/40', swatch: 'bg-success' },\n\tblue: { badgeBg: 'bg-info/10', border: 'border-info/40', swatch: 'bg-info' },\n\tpurple: { badgeBg: 'bg-primary/10', border: 'border-primary/40', swatch: 'bg-primary' },\n};\n\n/**\n * Resolve a category to its full set of Tailwind colour classes. Prefers an\n * explicit `colorToken`; falls back to legacy `color` parsing.\n */\nexport function getCalendarColorClasses(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): CalendarColorClasses {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn {\n\t\tdot: calendarTokenDot[token],\n\t\t...TOKEN_EXTRAS[token],\n\t};\n}\n\n/** Convenience: just the dot class (most common lookup). */\nexport function getCalendarDotClass(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): string {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn calendarTokenDot[token];\n}\n","/**\n * EventCalendarLegend — category chips with optional click-to-filter. When\n * `enableFiltering` is true the whole chip toggles the category's visibility\n * (instead of a free-floating checkbox alongside a swatch — that pattern was\n * cluttered). Inactive categories desaturate to muted; active categories use\n * the colour-token swatch + body text.\n */\nimport { type LucideIcon } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport { getCalendarColorClasses } from './colors';\nimport type { EventCalendarLegendProps } from './event-calendar.types';\n\nexport function EventCalendarLegend({\n\tcategories,\n\tvisibleCategories,\n\tonToggleCategory,\n\tenableFiltering = false,\n}: EventCalendarLegendProps) {\n\tconst isAllVisible = !visibleCategories || visibleCategories.length === 0;\n\n\tconst isCategoryVisible = (categoryId: string) => {\n\t\tif (!enableFiltering) return true;\n\t\treturn isAllVisible || visibleCategories?.includes(categoryId);\n\t};\n\n\tconst handleToggle = (categoryId: string) => {\n\t\tif (!enableFiltering || !onToggleCategory) return;\n\t\tonToggleCategory(categoryId);\n\t};\n\n\tif (categories.length === 0) return null;\n\n\treturn (\n\t\t<div\n\t\t\trole={enableFiltering ? 'group' : undefined}\n\t\t\taria-label={enableFiltering ? 'Filter event categories' : undefined}\n\t\t\tclassName={cn('event-calendar-legend--component', 'flex flex-wrap items-center gap-1.5 py-1')}\n\t\t>\n\t\t\t{categories.map((category) => {\n\t\t\t\tconst isVisible = isCategoryVisible(category.id);\n\t\t\t\tconst colors = getCalendarColorClasses(category);\n\t\t\t\tconst Icon = category.icon as LucideIcon | undefined;\n\n\t\t\t\tconst chipBase =\n\t\t\t\t\t'group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors';\n\n\t\t\t\tconst inner = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'inline-block size-2 rounded-full',\n\t\t\t\t\t\t\t\tisVisible ? colors.swatch : 'bg-muted-foreground/40',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'size-3',\n\t\t\t\t\t\t\t\t\tisVisible ? 'text-foreground' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" type={isVisible ? 'main' : 'secondary'}>\n\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\n\t\t\t\tif (!enableFiltering) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\t\tclassName={cn(chipBase, 'border-border bg-card cursor-default')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{inner}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\taria-pressed={isVisible}\n\t\t\t\t\t\tonClick={() => handleToggle(category.id)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tchipBase,\n\t\t\t\t\t\t\t'h-auto cursor-pointer shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t? 'border-border bg-card hover:bg-muted/40'\n\t\t\t\t\t\t\t\t: 'border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{inner}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nEventCalendarLegend.displayName = 'EventCalendarLegend';\n","import { addMonths, subMonths, addWeeks, subWeeks, format } from 'date-fns';\nimport { useState, useCallback, useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarViewMode,\n\tUseEventCalendarReturn,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\nimport { useEventCalendarData } from './use-event-calendar-data';\n\nexport interface UseEventCalendarProps {\n\tevents: CalendarEvent[];\n\tdefaultDate?: Date;\n\tdefaultViewMode?: CalendarViewMode;\n\tonDateChange?: (date: Date) => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdataOptions?: UseEventCalendarDataOptions;\n}\n\n/**\n * Core calendar logic hook\n */\nexport function useEventCalendar({\n\tevents,\n\tdefaultDate = new Date(),\n\tdefaultViewMode = 'month',\n\tonDateChange,\n\tonViewModeChange,\n\tdataOptions = {}\n}: UseEventCalendarProps): UseEventCalendarReturn {\n\tconst [currentDate, setCurrentDate] = useState<Date>(defaultDate);\n\tconst [viewMode, setViewMode] = useState<CalendarViewMode>(defaultViewMode);\n\n\tconst calendarDays = useEventCalendarData(\n\t\tevents,\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tdataOptions\n\t);\n\n\tconst visibleEvents = useMemo(() => {\n\t\tif (dataOptions.visibleCategories && dataOptions.visibleCategories.length > 0) {\n\t\t\treturn events.filter(event =>\n\t\t\t\tdataOptions.visibleCategories!.includes(event.category)\n\t\t\t);\n\t\t}\n\t\treturn events;\n\t}, [events, dataOptions.visibleCategories]);\n\n\tconst goToToday = useCallback(() => {\n\t\tconst today = new Date();\n\t\tsetCurrentDate(today);\n\t\tonDateChange?.(today);\n\t}, [onDateChange]);\n\n\tconst goToNextPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? addMonths(currentDate, 1)\n\t\t\t: addWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst goToPreviousPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? subMonths(currentDate, 1)\n\t\t\t: subWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst handleSetDate = useCallback((date: Date) => {\n\t\tsetCurrentDate(date);\n\t\tonDateChange?.(date);\n\t}, [onDateChange]);\n\n\tconst handleSetViewMode = useCallback((mode: CalendarViewMode) => {\n\t\tsetViewMode(mode);\n\t\tonViewModeChange?.(mode);\n\t}, [onViewModeChange]);\n\n\tconst displayLabel = useMemo(() => {\n\t\tif (viewMode === 'month') {\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t} else if (viewMode === 'week') {\n\t\t\tconst weekStart = calendarDays[0]?.date;\n\t\t\tconst weekEnd = calendarDays[calendarDays.length - 1]?.date;\n\t\t\tif (weekStart && weekEnd) {\n\t\t\t\treturn `${format(weekStart, 'MMM d')} - ${format(weekEnd, 'MMM d, yyyy')}`;\n\t\t\t}\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t}\n\t\treturn format(currentDate, 'MMMM yyyy');\n\t}, [currentDate, viewMode, calendarDays]);\n\n\tconst hasEvents = useMemo(() => {\n\t\treturn visibleEvents.length > 0;\n\t}, [visibleEvents]);\n\n\treturn {\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tcalendarDays,\n\t\tvisibleEvents,\n\t\tgoToToday,\n\t\tgoToNextPeriod,\n\t\tgoToPreviousPeriod,\n\t\tsetDate: handleSetDate,\n\t\tsetViewMode: handleSetViewMode,\n\t\tdisplayLabel,\n\t\thasEvents\n\t};\n}\n","/**\n * EventCalendar — month-grid event calendar with category legend, header\n * navigation (prev/next/today + view-mode select), keyboard-accessible day\n * cells, and per-category filtering. Strings are fully overridable; category\n * colours come from a small canonical token set (`calendarTokenDot`).\n */\nimport { useState, useMemo } from 'react';\nimport Text from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarDayCell } from './event-calendar-day-cell';\nimport { EventCalendarHeader } from './event-calendar-header';\nimport { EventCalendarLegend } from './event-calendar-legend';\nimport { defaultEventCalendarStrings, type EventCalendarProps } from './event-calendar.types';\nimport { useEventCalendar } from './use-event-calendar';\n\nfunction isDateMatched(rule: EventCalendarProps['disabledDates'], date: Date): boolean {\n\tif (!rule) return false;\n\tif (Array.isArray(rule)) {\n\t\treturn rule.some((d) => d.toDateString() === date.toDateString());\n\t}\n\tif (typeof rule === 'function') {\n\t\treturn rule(date);\n\t}\n\tconst datesMatch = rule.dates?.some((d) => d.toDateString() === date.toDateString()) ?? false;\n\tconst predicateMatch = rule.predicate?.(date) ?? false;\n\treturn datesMatch || predicateMatch;\n}\n\nexport function EventCalendar({\n\tevents,\n\tcategories,\n\tviewMode: controlledViewMode,\n\tonViewModeChange,\n\tdefaultDate,\n\tonDateChange,\n\tonEventClick: _onEventClick,\n\tonDayClick,\n\tmaxEventsPerDay = 3,\n\tshowLegend = true,\n\tshowHeader = true,\n\tshowWeekends = true,\n\tweekStartsOn: weekStartsOnProp,\n\tlocale,\n\tenableCategoryFilter = false,\n\tvisibleCategories: controlledVisibleCategories,\n\tonVisibleCategoriesChange,\n\tisLoading = false,\n\temptyStateMessage,\n\tclassName,\n\tcompact = false,\n\tactions,\n\tstrings: stringsProp,\n\tdayHeadingVariant = 'default',\n\tdayHeadingClassName,\n\trenderDayHeading,\n\trangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tdisabledDates,\n\tfilterEvent,\n\trenderEvent,\n\trenderDayCell,\n}: EventCalendarProps) {\n\tconst strings = useStrings(defaultEventCalendarStrings, stringsProp);\n\n\tconst [internalVisibleCategories, setInternalVisibleCategories] = useState<string[]>([]);\n\n\tconst visibleCategories = controlledVisibleCategories ?? internalVisibleCategories;\n\n\t// Resolve start-of-week against the consumer's <UIProvider> dates\n\t// slice. Library default is 1 (Monday) when no consumer override is set.\n\tconst { weekStartsOn: configWeekStartsOn } = useDatesConfig();\n\tconst weekStartsOn = (weekStartsOnProp ?? configWeekStartsOn ?? 1) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n\tconst handleToggleCategory = (categoryId: string) => {\n\t\tconst newCategories = visibleCategories.includes(categoryId)\n\t\t\t? visibleCategories.filter(id => id !== categoryId)\n\t\t\t: [...visibleCategories, categoryId];\n\n\t\tif (onVisibleCategoriesChange) {\n\t\t\tonVisibleCategoriesChange(newCategories);\n\t\t} else {\n\t\t\tsetInternalVisibleCategories(newCategories);\n\t\t}\n\t};\n\n\tconst calendar = useEventCalendar({\n\t\tevents,\n\t\tdefaultDate,\n\t\tdefaultViewMode: controlledViewMode || 'month',\n\t\tonDateChange,\n\t\tonViewModeChange,\n\t\tdataOptions: {\n\t\t\tweekStartsOn,\n\t\t\tshowWeekends,\n\t\t\tvisibleCategories: visibleCategories.length > 0 ? visibleCategories : undefined\n\t\t}\n\t});\n\n\tconst weekdays = useMemo(() => {\n\t\tconst days = strings.weekdaysShort;\n\t\tif (weekStartsOn === 1) {\n\t\t\treturn [...days.slice(1), days[0]];\n\t\t}\n\t\treturn days as readonly string[];\n\t}, [strings.weekdaysShort, weekStartsOn]);\n\n\tconst handleDayClick = (dayData: typeof calendar.calendarDays[0]) => {\n\t\t// Block clicks on disabled or out-of-range dates.\n\t\tif (isDateMatched(disabledDates, dayData.date)) return;\n\t\tif (minDate && dayData.date < minDate) return;\n\t\tif (maxDate && dayData.date > maxDate) return;\n\t\tonDayClick?.(dayData.date, dayData.events);\n\t};\n\n\t// Apply runtime event filtering + min/max disabled rules to each day's\n\t// event list before passing to the cell. Doesn't mutate the source.\n\tconst filteredCalendarDays = useMemo(() => {\n\t\tif (!filterEvent) return calendar.calendarDays;\n\t\treturn calendar.calendarDays.map((day) => ({\n\t\t\t...day,\n\t\t\tevents: day.events.filter(filterEvent),\n\t\t\teventCount: day.events.filter(filterEvent).length,\n\t\t\thasMultipleEvents: day.events.filter(filterEvent).length > 1,\n\t\t}));\n\t}, [calendar.calendarDays, filterEvent]);\n\n\tfunction isDayDisabled(date: Date): boolean {\n\t\tif (isDateMatched(disabledDates, date)) return true;\n\t\tif (minDate && date < minDate) return true;\n\t\tif (maxDate && date > maxDate) return true;\n\t\treturn false;\n\t}\n\n\t// Pre-compute prev/next disabled state for the header navigation.\n\tconst navDisabled = useMemo(() => {\n\t\tconst days = calendar.calendarDays;\n\t\tif (days.length === 0) return { prev: false, next: false };\n\t\tconst first = days[0].date;\n\t\tconst last = days[days.length - 1].date;\n\t\treturn {\n\t\t\tprev: !!minDate && first <= minDate,\n\t\t\tnext: !!maxDate && last >= maxDate,\n\t\t};\n\t}, [calendar.calendarDays, minDate, maxDate]);\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<div className={cn('event-calendar--component', 'flex items-center justify-center py-12')}>\n\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t{strings.loading}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst viewModeChangeHandler = controlledViewMode ? onViewModeChange : undefined;\n\tconst toggleCategoryHandler = enableCategoryFilter ? handleToggleCategory : undefined;\n\n\treturn (\n\t\t<div className={cn('w-full space-y-4', className)}>\n\t\t\t{!!showHeader && (\n\t\t\t\t<EventCalendarHeader\n\t\t\t\t\tcurrentDate={calendar.currentDate}\n\t\t\t\t\tviewMode={calendar.viewMode}\n\t\t\t\t\tdisplayLabel={calendar.displayLabel}\n\t\t\t\t\tonPrevious={calendar.goToPreviousPeriod}\n\t\t\t\t\tonNext={calendar.goToNextPeriod}\n\t\t\t\t\tonToday={calendar.goToToday}\n\t\t\t\t\tonViewModeChange={viewModeChangeHandler}\n\t\t\t\t\tonDateChange={calendar.setDate}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t\tactions={actions}\n\t\t\t\t\trangeMode={rangeMode}\n\t\t\t\t\tminDate={minDate}\n\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\tprevDisabled={navDisabled.prev}\n\t\t\t\t\tnextDisabled={navDisabled.next}\n\t\t\t\t\tstrings={{ today: strings.today, previous: strings.previous, next: strings.next, viewMode: strings.viewMode }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{!!showLegend && categories.length > 0 && (\n\t\t\t\t<EventCalendarLegend\n\t\t\t\t\tcategories={categories}\n\t\t\t\t\tvisibleCategories={visibleCategories}\n\t\t\t\t\tonToggleCategory={toggleCategoryHandler}\n\t\t\t\t\tenableFiltering={enableCategoryFilter}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{(!calendar.hasEvents && emptyStateMessage) ? (\n\t\t\t\t<div className=\"flex items-center justify-center py-12 border border-dashed border-border rounded-lg\">\n\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t{emptyStateMessage}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"bg-background rounded-lg border border-border\">\n\t\t\t\t\t{/* Weekday headers */}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'grid grid-cols-7',\n\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'border-b border-border mb-0',\n\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'bg-muted/40 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'bg-primary/8 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\t(dayHeadingVariant === 'default') && 'mb-2',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{weekdays.map((day, index) => {\n\t\t\t\t\t\t\tif (renderDayHeading) {\n\t\t\t\t\t\t\t\treturn <div key={day}>{renderDayHeading(day, index)}</div>;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={day}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'text-center h-8 flex items-center justify-center',\n\t\t\t\t\t\t\t\t\t\tdayHeadingClassName,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\tweight={dayHeadingVariant === 'accent' ? 'medium' : 'regular'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'default' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'text-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'text-primary',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Calendar grid */}\n\t\t\t\t\t<div className=\"grid grid-cols-7\">\n\t\t\t\t\t\t{filteredCalendarDays.map((dayData) => {\n\t\t\t\t\t\t\tconst disabled = isDayDisabled(dayData.date);\n\t\t\t\t\t\t\tconst defaultRender = () => (\n\t\t\t\t\t\t\t\t<EventCalendarDayCell\n\t\t\t\t\t\t\t\t\tdata={dayData}\n\t\t\t\t\t\t\t\t\tcategories={categories}\n\t\t\t\t\t\t\t\t\tmaxEvents={maxEventsPerDay}\n\t\t\t\t\t\t\t\t\tonClick={() => handleDayClick(dayData)}\n\t\t\t\t\t\t\t\t\tcompact={compact}\n\t\t\t\t\t\t\t\t\tstrings={{ booking: strings.booking, bookings: strings.bookings }}\n\t\t\t\t\t\t\t\t\trenderEvent={renderEvent}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={dayData.date.toISOString()}\n\t\t\t\t\t\t\t\t\tclassName={cn(disabled && 'pointer-events-none opacity-40')}\n\t\t\t\t\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderDayCell ? renderDayCell(dayData, defaultRender) : defaultRender()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nEventCalendar.displayName = 'EventCalendar';\n","/**\n * EventCalendarEventCard — detailed event view rendered in popovers and\n * agenda lists. Reads optional `metadata.customer_name`, `guest_count`, and\n * `service_name` to render a richer summary; falls back gracefully when any\n * of those are absent. Strings (guest / guests pluralization) overridable.\n */\nimport { format } from 'date-fns';\nimport { User, Users, ExternalLink, Calendar } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport type { EventCalendarEventCardProps } from './event-calendar.types';\n\nexport interface EventCalendarEventCardStrings {\n\tguest: string;\n\tguests: string;\n}\n\nexport const defaultEventCalendarEventCardStrings: EventCalendarEventCardStrings = {\n\tguest: 'guest',\n\tguests: 'guests',\n};\n\ninterface EventCalendarEventCardPropsWithStrings extends EventCalendarEventCardProps {\n\tstrings?: Partial<EventCalendarEventCardStrings>;\n}\n\nexport function EventCalendarEventCard({\n\tevent,\n\tcategory,\n\tonClick,\n\tstrings: stringsProp,\n}: EventCalendarEventCardPropsWithStrings) {\n\tconst strings = useStrings(defaultEventCalendarEventCardStrings, stringsProp);\n\tconst isClickable = !!onClick;\n\n\tconst handleClick = () => {\n\t\tif (onClick) {\n\t\t\tonClick();\n\t\t}\n\t};\n\n\tconst metadata = event.metadata || {};\n\tconst customerName = metadata.customer_name as string | undefined;\n\tconst guestCount = metadata.guest_count as number | undefined;\n\tconst serviceName = metadata.service_name as string | undefined;\n\n\tconst cardContent = (\n\t\t<>\n\t\t\t<div className=\"flex items-start justify-between gap-3 mb-3\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Heading tag=\"h5\">\n\t\t\t\t\t\t{event.title}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!category && (\n\t\t\t\t\t\t<div className=\"inline-flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className={cn('h-1.5 w-1.5 rounded-full', category.color.replace('border-', 'bg-'))} />\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!isClickable && !!event.url && <ExternalLink className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />}\n\t\t\t</div>\n\n\t\t\t<div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3\">\n\t\t\t\t{!!customerName && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<User className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text className=\"truncate\">\n\t\t\t\t\t\t\t{customerName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{guestCount !== undefined && guestCount > 0 && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<Users className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t{guestCount} {guestCount === 1 ? strings.guest : strings.guests}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!!serviceName && (\n\t\t\t\t<Text type=\"secondary\" className=\"mb-2 line-clamp-1\">\n\t\t\t\t\t{serviceName}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t<div className=\"flex items-center gap-1.5 pt-2 border-t border-border/50\">\n\t\t\t\t<Calendar className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{!!event.allDay && format(event.startDate, 'EEEE, MMM d, yyyy')}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t</>\n\t);\n\n\tconst commonClassName = cn(\n\t\t'w-full text-left p-4 border border-border rounded-lg bg-card transition-none',\n\t\tisClickable ? 'cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring' : ''\n\t);\n\n\tif (isClickable) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tonClick={handleClick}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'event-calendar-event-card--component',\n\t\t\t\t\t'h-auto flex-col items-stretch justify-start whitespace-normal shadow-none',\n\t\t\t\t\tcommonClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{cardContent}\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn <div className={cn('event-calendar-event-card--component', commonClassName)}>{cardContent}</div>;\n}\n\nEventCalendarEventCard.displayName = 'EventCalendarEventCard';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/base/event-calendar/event-calendar.types.ts","../../../../src/components/base/event-calendar/event-calendar-event-badge.tsx","../../../../src/components/base/event-calendar/use-event-calendar-data.tsx","../../../../src/components/base/event-calendar/event-calendar-day-cell.tsx","../../../../src/components/base/event-calendar/event-calendar-header.tsx","../../../../src/components/base/event-calendar/colors.ts","../../../../src/components/base/event-calendar/event-calendar-legend.tsx","../../../../src/components/base/event-calendar/use-event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar.tsx","../../../../src/components/base/event-calendar/event-calendar-event-card.tsx"],"sourcesContent":["import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport type { StringsProp } from '@/lib/strings';\n\n/**\n * Calendar action item.\n *\n * The library never navigates on its own — there is no `href` shortcut.\n * The consumer wires routing into `onClick` (e.g. a Tanstack Router\n * `navigate(...)` or Inertia `router.visit(...)`), or supplies a fully\n * pre-rendered element via `element`.\n */\nexport interface CalendarActionItem {\n\tid?: string;\n\tlabel: string;\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\telement?: ReactNode;\n\ticon?: LucideIcon;\n\tvariant?: 'default' | 'outline' | 'ghost' | 'secondary' | 'destructive';\n\tisVisible?: boolean;\n}\n\n/**\n * Base event data structure\n */\nexport interface CalendarEvent {\n\tid: string;\n\ttitle: string;\n\tdescription?: string;\n\tstartDate: Date;\n\tendDate?: Date;\n\tallDay?: boolean;\n\tcategory: string;\n\tmetadata?: Record<string, unknown>;\n\turl?: string;\n}\n\n/**\n * Canonical category palette tokens. Map to a small fixed set of colours so\n * the calendar can render dots/strokes without parsing arbitrary class names.\n * Add new tokens here when the design palette grows.\n */\nexport type CalendarColorToken =\n\t| 'gray'\n\t| 'red'\n\t| 'orange'\n\t| 'amber'\n\t| 'yellow'\n\t| 'green'\n\t| 'blue'\n\t| 'purple';\n\n/**\n * Tailwind class lookups for each canonical token. Used by day-cell dots and\n * event-badge dots so we never string-parse `category.color`.\n */\nexport const calendarTokenDot: Record<CalendarColorToken, string> = {\n\tgray: 'bg-muted-foreground',\n\tred: 'bg-destructive',\n\torange: 'bg-warning',\n\tamber: 'bg-warning',\n\tyellow: 'bg-warning',\n\tgreen: 'bg-success',\n\tblue: 'bg-info',\n\tpurple: 'bg-primary',\n};\n\n/**\n * Event category configuration. Provide a canonical `colorToken` when\n * possible — it's used everywhere the calendar paints a dot. The free-form\n * `color`/`bgColor` strings are kept for legacy consumers (legend swatches,\n * external Tailwind classes) but new code should rely on `colorToken`.\n */\nexport interface EventCategory {\n\tid: string;\n\tlabel: string;\n\tcolor: string;\n\tbgColor?: string;\n\ttextColor?: string;\n\tcolorToken?: CalendarColorToken;\n\ticon?: LucideIcon;\n\tdescription?: string;\n}\n\n/**\n * Best-effort mapping from a free-form `category.color` Tailwind class to a\n * canonical token. Falls back to `gray`. Prefer `category.colorToken` —\n * this is only used to retrofit legacy consumers.\n */\nexport function resolveCategoryColorToken(category?: EventCategory | null): CalendarColorToken {\n\tif (!category) return 'gray';\n\tif (category.colorToken) return category.colorToken;\n\tconst c = category.color ?? '';\n\tif (c.includes('orange')) return 'orange';\n\tif (c.includes('yellow')) return 'yellow';\n\tif (c.includes('amber')) return 'amber';\n\tif (c.includes('purple')) return 'purple';\n\tif (c.includes('green')) return 'green';\n\tif (c.includes('blue')) return 'blue';\n\tif (c.includes('red')) return 'red';\n\treturn 'gray';\n}\n\n/**\n * Calendar view mode\n */\nexport type CalendarViewMode = 'month' | 'week' | 'agenda';\n\n/**\n * Day cell data (processed)\n */\nexport interface CalendarDayData {\n\tdate: Date;\n\tisCurrentMonth: boolean;\n\tisToday: boolean;\n\tisWeekend: boolean;\n\tevents: CalendarEvent[];\n\teventCount: number;\n\thasMultipleEvents: boolean;\n}\n\n/**\n * Localizable strings — pass partial overrides via `strings`.\n */\nexport interface EventCalendarStrings {\n\ttoday: string;\n\tprevious: string;\n\tnext: string;\n\tloading: string;\n\tbooking: string;\n\tbookings: string;\n\tviewMode: {\n\t\tmonth: string;\n\t\tweek: string;\n\t\tagenda: string;\n\t};\n\tweekdaysShort: [string, string, string, string, string, string, string]; // Sun..Sat\n}\n\nexport const defaultEventCalendarStrings: EventCalendarStrings = {\n\ttoday: 'Today',\n\tprevious: 'Previous',\n\tnext: 'Next',\n\tloading: 'Loading…',\n\tbooking: 'booking',\n\tbookings: 'bookings',\n\tviewMode: {\n\t\tmonth: 'Month',\n\t\tweek: 'Week',\n\t\tagenda: 'Agenda',\n\t},\n\tweekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n};\n\n/**\n * Visual variant for the weekday-header strip (\"Sun Mon Tue …\").\n * - `default` — muted text on transparent (matches body)\n * - `accent` — primary-tinted background, primary text\n * - `tinted` — muted background, foreground text (subtle separation)\n * - `bordered` — bottom-bordered row, foreground text\n *\n * Consumers can also pass a fully custom `dayHeadingClassName` to override\n * any preset.\n */\nexport type EventCalendarDayHeadingVariant = 'default' | 'accent' | 'tinted' | 'bordered';\n\n/**\n * Predicate-or-list shape for date rules. Either explicit dates,\n * a predicate callback, or both (combined with OR semantics).\n */\nexport type DateRule = Date[] | ((date: Date) => boolean) | { dates?: Date[]; predicate?: (date: Date) => boolean };\n\n/**\n * Hook for filtering events at render time without mutating the source list.\n */\nexport type EventFilter = (event: CalendarEvent) => boolean;\n\n/**\n * Render hook for individual event chips in the day cell.\n */\nexport type RenderEventFn = (event: CalendarEvent, category: EventCategory | undefined) => ReactNode;\n\n/**\n * Render hook for the day cell body (after the date number is drawn).\n */\nexport type RenderDayCellFn = (day: CalendarDayData, defaultRender: () => ReactNode) => ReactNode;\n\n/**\n * Range mode for navigation. `month-year` exposes a Month/Year picker\n * trigger in the header that jumps the calendar to that month.\n */\nexport type EventCalendarRangeMode = 'date' | 'month-year';\n\n/**\n * Event calendar props\n */\nexport interface EventCalendarProps {\n\tevents: CalendarEvent[];\n\tcategories: EventCategory[];\n\tviewMode?: CalendarViewMode;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdefaultDate?: Date;\n\tonDateChange?: (date: Date) => void;\n\tonEventClick?: (event: CalendarEvent) => void;\n\tonDayClick?: (date: Date, events: CalendarEvent[]) => void;\n\tmaxEventsPerDay?: number;\n\tshowLegend?: boolean;\n\tshowHeader?: boolean;\n\tshowWeekends?: boolean;\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tenableCategoryFilter?: boolean;\n\tvisibleCategories?: string[];\n\tonVisibleCategoriesChange?: (categories: string[]) => void;\n\tisLoading?: boolean;\n\temptyStateMessage?: string;\n\tclassName?: string;\n\tcompact?: boolean;\n\tactions?: CalendarActionItem[];\n\tstrings?: StringsProp<EventCalendarStrings>;\n\t/** Visual variant for the weekday header strip. Default `default`. */\n\tdayHeadingVariant?: EventCalendarDayHeadingVariant;\n\t/** Custom class names appended to each weekday-heading cell — wins over variant presets. */\n\tdayHeadingClassName?: string;\n\t/** Optional renderer to fully control a single weekday cell. */\n\trenderDayHeading?: (day: string, index: number) => ReactNode;\n\n\t/**\n\t * Header navigation range mode.\n\t * - `date` — DatePicker (default; jump to a specific date)\n\t * - `month-year` — MonthYearPicker (compact month/year jump)\n\t */\n\trangeMode?: EventCalendarRangeMode;\n\n\t/** Earliest date the user can navigate to. Earlier nav is disabled. */\n\tminDate?: Date;\n\t/** Latest date the user can navigate to. Later nav is disabled. */\n\tmaxDate?: Date;\n\t/**\n\t * Dates that should render in the calendar but be marked as disabled\n\t * (greyed out, not clickable). Pass dates, a predicate, or both.\n\t */\n\tdisabledDates?: DateRule;\n\t/**\n\t * Hide events from rendering at runtime without mutating `events`.\n\t * Returns `true` to KEEP an event, `false` to hide it.\n\t */\n\tfilterEvent?: EventFilter;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n\t/** Per-day-cell renderer override. */\n\trenderDayCell?: RenderDayCellFn;\n}\n\n/**\n * Day cell props\n */\nexport interface EventCalendarDayCellProps {\n\tdata: CalendarDayData;\n\tcategories: EventCategory[];\n\tmaxEvents?: number;\n\tonClick: () => void;\n\tcompact?: boolean;\n\tstrings?: Pick<EventCalendarStrings, 'booking' | 'bookings'>;\n\t/** Per-event renderer override. */\n\trenderEvent?: RenderEventFn;\n}\n\n/**\n * Event badge props\n */\nexport interface EventCalendarEventBadgeProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tcompact?: boolean;\n\tonClick?: () => void;\n}\n\n/**\n * Event card props\n */\nexport interface EventCalendarEventCardProps {\n\tevent: CalendarEvent;\n\tcategory: EventCategory | undefined;\n\tonClick?: () => void;\n}\n\n/**\n * Legend props\n */\nexport interface EventCalendarLegendProps {\n\tcategories: EventCategory[];\n\tvisibleCategories?: string[];\n\tonToggleCategory?: (categoryId: string) => void;\n\tenableFiltering?: boolean;\n}\n\n/**\n * Header props\n */\nexport interface EventCalendarHeaderProps {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tdisplayLabel: string;\n\tonPrevious: () => void;\n\tonNext: () => void;\n\tonToday: () => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tonDateChange?: (date: Date) => void;\n\t/** Optional date-fns Locale object passed to inner date pickers. */\n\tlocale?: import('date-fns').Locale;\n\tactions?: CalendarActionItem[];\n\tstrings?: StringsProp<Pick<EventCalendarStrings, 'today' | 'previous' | 'next' | 'viewMode'>>;\n\t/** Range mode for the date trigger inside the header. */\n\trangeMode?: EventCalendarRangeMode;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tprevDisabled?: boolean;\n\tnextDisabled?: boolean;\n}\n\n/**\n * Hook return type\n */\nexport interface UseEventCalendarReturn {\n\tcurrentDate: Date;\n\tviewMode: CalendarViewMode;\n\tcalendarDays: CalendarDayData[];\n\tvisibleEvents: CalendarEvent[];\n\tgoToToday: () => void;\n\tgoToNextPeriod: () => void;\n\tgoToPreviousPeriod: () => void;\n\tsetDate: (date: Date) => void;\n\tsetViewMode: (mode: CalendarViewMode) => void;\n\tdisplayLabel: string;\n\thasEvents: boolean;\n}\n\n/**\n * Data transformation hook options\n */\nexport interface UseEventCalendarDataOptions {\n\tweekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\tshowWeekends?: boolean;\n\tvisibleCategories?: string[];\n}\n","/**\n * EventCalendarEventBadge — compact badge representing a single event inside\n * a day cell. Renders a category-coloured dot, the event title (or a custom\n * `metadata.calendar_cell_title` override), and the start time when not an\n * all-day event. Click is captured locally and propagated via `onClick`.\n */\nimport { format } from 'date-fns';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype EventCalendarEventBadgeProps,\n} from './event-calendar.types';\n\nexport function EventCalendarEventBadge({\n\tevent,\n\tcategory,\n\tcompact = false,\n\tonClick,\n}: EventCalendarEventBadgeProps) {\n\tconst dotColor = calendarTokenDot[resolveCategoryColorToken(category)];\n\n\tconst timeDisplay = !event.allDay ? format(event.startDate, 'HH:mm') : null;\n\tconst cellTitleRaw = event.metadata?.calendar_cell_title;\n\tconst displayTitle =\n\t\ttypeof cellTitleRaw === 'string' && cellTitleRaw.trim() !== ''\n\t\t\t? cellTitleRaw\n\t\t\t: event.title;\n\tconst accessibleLabel = timeDisplay ? `${displayTitle} at ${timeDisplay}` : displayTitle;\n\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tsize={compact ? 'small' : 'default'}\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.();\n\t\t\t}}\n\t\t\tclassName={cn('event-calendar-event-badge--component',\n\t\t\t\t'group/event flex w-full min-w-0 items-center gap-1 rounded-md border border-border/60 bg-card px-1.5',\n\t\t\t\t'justify-start text-left shadow-none transition-colors hover:bg-accent/50',\n\t\t\t\t'max-sm:h-3 max-sm:justify-center max-sm:gap-0 max-sm:border-transparent max-sm:bg-transparent max-sm:px-0',\n\t\t\t\tcompact ? 'h-5' : 'h-6',\n\t\t\t)}\n\t\t\taria-label={accessibleLabel}\n\t\t\ttitle={typeof displayTitle === 'string' ? displayTitle : undefined}\n\t\t>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={cn('size-1.5 shrink-0 rounded-full', dotColor)}\n\t\t\t/>\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"xxs\"\n\t\t\t\tweight=\"medium\"\n\t\t\t\tclassName=\"min-w-0 flex-1 truncate max-sm:hidden\"\n\t\t\t>\n\t\t\t\t{displayTitle}\n\t\t\t</Text>\n\t\t\t{!!timeDisplay && (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tclassName=\"shrink-0 whitespace-nowrap tabular-nums max-sm:hidden\"\n\t\t\t\t>\n\t\t\t\t\t{timeDisplay}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Button>\n\t);\n}\n\nEventCalendarEventBadge.displayName = 'EventCalendarEventBadge';\n","import {\n\tstartOfMonth,\n\tendOfMonth,\n\tstartOfWeek,\n\tendOfWeek,\n\teachDayOfInterval,\n\tisSameMonth,\n\tisToday,\n\tisSameDay,\n\tisWeekend,\n\tstartOfDay\n} from 'date-fns';\nimport { useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarDayData,\n\tCalendarViewMode,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\n\n/**\n * Transforms raw events into calendar grid data\n */\nexport function useEventCalendarData(\n\tevents: CalendarEvent[],\n\tcurrentDate: Date,\n\tviewMode: CalendarViewMode,\n\toptions: UseEventCalendarDataOptions = {}\n): CalendarDayData[] {\n\tconst {\n\t\tweekStartsOn = 1,\n\t\tshowWeekends = true,\n\t\tvisibleCategories\n\t} = options;\n\n\treturn useMemo(() => {\n\t\tconst monthStart = startOfMonth(currentDate);\n\t\tconst monthEnd = endOfMonth(currentDate);\n\n\t\tlet rangeStart: Date;\n\t\tlet rangeEnd: Date;\n\n\t\tif (viewMode === 'month') {\n\t\t\trangeStart = startOfWeek(monthStart, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(monthEnd, { weekStartsOn });\n\t\t} else if (viewMode === 'week') {\n\t\t\trangeStart = startOfWeek(currentDate, { weekStartsOn });\n\t\t\trangeEnd = endOfWeek(currentDate, { weekStartsOn });\n\t\t} else {\n\t\t\trangeStart = monthStart;\n\t\t\trangeEnd = monthEnd;\n\t\t}\n\n\t\tconst days = eachDayOfInterval({ start: rangeStart, end: rangeEnd });\n\n\t\tconst filteredEvents = visibleCategories && visibleCategories.length > 0\n\t\t\t? events.filter(event => visibleCategories.includes(event.category))\n\t\t\t: events;\n\n\t\tconst eventsByDate = new Map<string, CalendarEvent[]>();\n\n\t\tfilteredEvents.forEach(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tif (Number.isNaN(eventStart.getTime())) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet eventEnd = eventStart;\n\t\t\tif (event.endDate && !Number.isNaN(event.endDate.getTime())) {\n\t\t\t\tconst normalizedEnd = startOfDay(event.endDate);\n\t\t\t\tif (!Number.isNaN(normalizedEnd.getTime()) && normalizedEnd.getTime() >= eventStart.getTime()) {\n\t\t\t\t\teventEnd = normalizedEnd;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst eventDays = eachDayOfInterval({ start: eventStart, end: eventEnd });\n\n\t\t\teventDays.forEach(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tif (!eventsByDate.has(dateKey)) {\n\t\t\t\t\teventsByDate.set(dateKey, []);\n\t\t\t\t}\n\t\t\t\teventsByDate.get(dateKey)!.push(event);\n\t\t\t});\n\t\t});\n\n\t\tconst calendarDays: CalendarDayData[] = days\n\t\t\t.filter(day => showWeekends || !isWeekend(day))\n\t\t\t.map(day => {\n\t\t\t\tconst dateKey = day.toISOString().split('T')[0];\n\t\t\t\tconst dayEvents = eventsByDate.get(dateKey) || [];\n\n\t\t\t\tconst sortedEvents = [...dayEvents].sort((a, b) => {\n\t\t\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tdate: day,\n\t\t\t\t\tisCurrentMonth: isSameMonth(day, currentDate),\n\t\t\t\t\tisToday: isToday(day),\n\t\t\t\t\tisWeekend: isWeekend(day),\n\t\t\t\t\tevents: sortedEvents,\n\t\t\t\t\teventCount: sortedEvents.length,\n\t\t\t\t\thasMultipleEvents: sortedEvents.length > 1\n\t\t\t\t};\n\t\t\t});\n\n\t\treturn calendarDays;\n\t}, [events, currentDate, viewMode, weekStartsOn, showWeekends, visibleCategories]);\n}\n\n/**\n * Gets events for a specific day\n */\nexport function getEventsForDay(\n\tevents: CalendarEvent[],\n\tdate: Date\n): CalendarEvent[] {\n\treturn events\n\t\t.filter(event => {\n\t\t\tconst eventStart = startOfDay(event.startDate);\n\t\t\tconst eventEnd = event.endDate ? startOfDay(event.endDate) : eventStart;\n\t\t\tconst targetDay = startOfDay(date);\n\n\t\t\treturn isSameDay(targetDay, eventStart) ||\n\t\t\t\tisSameDay(targetDay, eventEnd) ||\n\t\t\t\t(targetDay > eventStart && targetDay < eventEnd);\n\t\t})\n\t\t.sort((a, b) => {\n\t\t\tif (a.allDay && !b.allDay) return -1;\n\t\t\tif (!a.allDay && b.allDay) return 1;\n\t\t\treturn a.startDate.getTime() - b.startDate.getTime();\n\t\t});\n}\n\n/**\n * Gets the category object by ID\n */\nexport function getCategoryById<T extends { id: string }>(\n\tcategories: T[],\n\tcategoryId: string\n): T | undefined {\n\treturn categories.find(cat => cat.id === categoryId);\n}\n","/**\n * EventCalendarDayCell — single day square in the month grid. Shows the day\n * number, up to `maxEvents` event badges, and an overflow row with category\n * dots + a pluralised \"+N bookings\" hint when more events exist than fit.\n * Whole cell is keyboard-clickable.\n */\nimport Text from '@/components/typography/text';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarEventBadge } from './event-calendar-event-badge';\nimport {\n\tcalendarTokenDot,\n\tdefaultEventCalendarStrings,\n\tresolveCategoryColorToken,\n\ttype EventCalendarDayCellProps,\n} from './event-calendar.types';\nimport { getCategoryById } from './use-event-calendar-data';\n\nexport function EventCalendarDayCell({\n\tdata,\n\tcategories,\n\tmaxEvents = 3,\n\tonClick,\n\tcompact = false,\n\tstrings: stringsProp,\n\trenderEvent,\n}: EventCalendarDayCellProps) {\n\tconst strings = {\n\t\tbooking: stringsProp?.booking ?? defaultEventCalendarStrings.booking,\n\t\tbookings: stringsProp?.bookings ?? defaultEventCalendarStrings.bookings,\n\t};\n\tconst { date, isCurrentMonth, isToday, isWeekend, events, eventCount } = data;\n\n\tconst visibleEvents = events.slice(0, maxEvents);\n\tconst remainingCount = Math.max(0, eventCount - maxEvents);\n\n\treturn (\n\t\t<div className={cn('event-calendar-day-cell--component', 'p-0 relative w-full border-r border-b border-border last:border-r-0 [&:nth-child(7n)]:border-r-0')}>\n\t\t\t<div\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={onClick}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tonClick();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative w-full min-h-24 p-2 transition-colors',\n\t\t\t\t\t'hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:z-10',\n\t\t\t\t\t'flex flex-col items-start gap-1',\n\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground opacity-50',\n\t\t\t\t\tisToday && 'h-full bg-accent text-accent-foreground',\n\t\t\t\t\tcompact && 'min-h-20 p-1'\n\t\t\t\t)}\n\t\t\t\taria-label={date.toDateString()}\n\t\t\t\tdata-date={date.toISOString()}\n\t\t\t\tdata-today={isToday}\n\t\t\t\tdata-weekend={isWeekend}\n\t\t\t\tdata-current-month={isCurrentMonth}\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'font-normal leading-none',\n\t\t\t\t\t\tisToday && 'font-semibold',\n\t\t\t\t\t\t!isCurrentMonth && 'text-muted-foreground',\n\t\t\t\t\t\tcompact && 'text-xs'\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{date.getDate()}\n\t\t\t\t</Text>\n\n\t\t\t\t<div className=\"w-full space-y-0.5\">\n\t\t\t\t\t{visibleEvents.map((event) => {\n\t\t\t\t\t\tconst category = getCategoryById(categories, event.category);\n\t\t\t\t\t\tif (renderEvent) {\n\t\t\t\t\t\t\treturn <div key={event.id}>{renderEvent(event, category)}</div>;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<EventCalendarEventBadge\n\t\t\t\t\t\t\t\tkey={event.id}\n\t\t\t\t\t\t\t\tevent={event}\n\t\t\t\t\t\t\t\tcategory={category}\n\t\t\t\t\t\t\t\tcompact={compact || data.hasMultipleEvents}\n\t\t\t\t\t\t\t\tonClick={() => onClick()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{remainingCount > 0 && (\n\t\t\t\t\t\t<div className=\"flex items-center gap-1 py-0.5 px-2\">\n\t\t\t\t\t\t\t<div className=\"flex items-center -space-x-1\">\n\t\t\t\t\t\t\t\t{categories.slice(0, 3).map((category, idx) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={category.id || idx}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-1.5 w-1.5 rounded-full border border-background',\n\t\t\t\t\t\t\t\t\t\t\tcalendarTokenDot[resolveCategoryColorToken(category)],\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\tclassName=\"font-medium text-xxs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{remainingCount} {remainingCount === 1 ? strings.booking : strings.bookings}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarDayCell.displayName = 'EventCalendarDayCell';\n","/**\n * EventCalendarHeader — title, month/year picker, optional action buttons,\n * Today button, prev/next stepper, and a view-mode select. Designed to sit\n * above `EventCalendar`'s grid; can be reused independently for custom\n * layouts.\n */\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { Button, type ButtonVariant, type ButtonStyle } from '@/components/base/buttons';\nimport { MonthYearPicker } from '@/components/base/date-pickers';\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue\n} from '@/components/ui/select';\nimport Heading from '@/components/typography/heading';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport { defaultEventCalendarStrings, type EventCalendarHeaderProps, type CalendarActionItem } from './event-calendar.types';\n\nfunction resolveActionButtonVariant(actionVariant?: CalendarActionItem['variant']): {\n\tvariant: ButtonVariant;\n\tbuttonStyle: ButtonStyle;\n\tclassName?: string;\n} {\n\tswitch (actionVariant) {\n\t\tcase 'destructive':\n\t\t\treturn { variant: 'error', buttonStyle: 'solid' };\n\t\tcase 'outline':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'outline' };\n\t\tcase 'secondary':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'solid' };\n\t\tcase 'ghost':\n\t\t\treturn { variant: 'secondary', buttonStyle: 'ghost' };\n\t\tcase 'default':\n\t\tdefault:\n\t\t\treturn { variant: 'primary', buttonStyle: 'solid' };\n\t}\n}\n\n/**\n * Render a single action item\n */\nconst renderAction = (action: CalendarActionItem, index: number) => {\n\tif (!action) return null;\n\n\tif (action.element) {\n\t\treturn <div className=\"event-calendar-header--component\" key={action.id || index}>{action.element}</div>;\n\t}\n\n\tconst IconComponent = action.icon;\n\tconst key = action.id || `action-${index}`;\n\n\tconst handleClick = () => {\n\t\taction.onClick?.();\n\t};\n\n\tconst resolved = resolveActionButtonVariant(action.variant);\n\n\treturn (\n\t\t<Button\n\t\t\tkey={key}\n\t\t\tvariant={resolved.variant}\n\t\t\tbuttonStyle={resolved.buttonStyle}\n\t\t\tonClick={handleClick}\n\t\t\tclassName={cn('h-8 gap-2', resolved.className)}\n\t\t\tdisabled={!!action.disabled}\n\t\t>\n\t\t\t{!!IconComponent && <IconComponent className=\"h-4 w-4\" />}\n\t\t\t{action.label}\n\t\t</Button>\n\t);\n};\n\n/**\n * Calendar header component\n */\nexport function EventCalendarHeader({\n\tcurrentDate,\n\tviewMode,\n\tdisplayLabel,\n\tonPrevious,\n\tonNext,\n\tonToday,\n\tonViewModeChange,\n\tonDateChange,\n\tlocale,\n\tactions,\n\tstrings: stringsProp,\n\trangeMode: _rangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tprevDisabled = false,\n\tnextDisabled = false,\n}: EventCalendarHeaderProps) {\n\tconst strings = useStrings(defaultEventCalendarStrings, stringsProp);\n\tconst visibleActions = useMemo(() => {\n\t\treturn (actions || []).filter(a => a.isVisible !== false);\n\t}, [actions]);\n\n\treturn (\n\t\t<div className=\"flex items-center justify-between gap-4 mb-4\">\n\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t<Heading tag=\"h3\" className=\"text-lg font-semibold\">\n\t\t\t\t\t{displayLabel}\n\t\t\t\t</Heading>\n\n\t\t\t\t<MonthYearPicker\n\t\t\t\t\tvalue={{ month: currentDate.getMonth(), year: currentDate.getFullYear() }}\n\t\t\t\t\tonChange={(output) => {\n\t\t\t\t\t\tif (output.date) {\n\t\t\t\t\t\t\tonDateChange?.(output.date);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tfromYear={minDate?.getFullYear()}\n\t\t\t\t\ttoYear={maxDate?.getFullYear()}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t{visibleActions.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{visibleActions.map((action, index) => renderAction(action, index))}\n\t\t\t\t\t\t<div className=\"h-6 w-px bg-border mx-1\" />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\tonClick={onToday}\n\t\t\t\t\tclassName=\"hidden sm:inline-flex\"\n\t\t\t\t>\n\t\t\t\t\t{strings.today}\n\t\t\t\t</Button>\n\n\t\t\t\t<div className=\"flex items-center border border-border rounded-md\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onPrevious}\n\t\t\t\t\t\tdisabled={prevDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-r-none border-r\"\n\t\t\t\t\t\taria-label={strings.previous}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronLeft className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\tonClick={onNext}\n\t\t\t\t\t\tdisabled={nextDisabled}\n\t\t\t\t\t\tclassName=\"h-8 w-8 rounded-l-none\"\n\t\t\t\t\t\taria-label={strings.next}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronRight className=\"h-4 w-4\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\n\t\t\t\t{!!onViewModeChange && (\n\t\t\t\t\t<Select\n\t\t\t\t\t\tvalue={viewMode}\n\t\t\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tonViewModeChange(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SelectTrigger className=\"w-28 h-8\">\n\t\t\t\t\t\t\t<SelectValue />\n\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t<SelectItem value=\"month\">{strings.viewMode.month}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"week\">{strings.viewMode.week}</SelectItem>\n\t\t\t\t\t\t\t<SelectItem value=\"agenda\">{strings.viewMode.agenda}</SelectItem>\n\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t</Select>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nEventCalendarHeader.displayName = 'EventCalendarHeader';\n","/**\n * Event-calendar colour resolution helpers.\n *\n * The canonical token enum (`CalendarColorToken`) and a basic dot-class lookup\n * live in `event-calendar.types.ts`. This module extends that with the richer\n * class sets used by the day cell, event badge, and legend (badge surface,\n * border, filled swatch). Centralising the map here means new tokens (or theme\n * changes) are a one-line update.\n *\n * Legacy `EventCategory.color` strings are still\n * supported via `resolveCategoryColorToken` (in types.ts), which falls back to\n * substring matching — the same brittle behaviour the old day-cell /\n * event-badge code implemented inline. New code should set\n * `category.colorToken` directly.\n */\nimport {\n\tcalendarTokenDot,\n\tresolveCategoryColorToken,\n\ttype CalendarColorToken,\n\ttype EventCategory,\n} from './event-calendar.types';\n\nexport interface CalendarColorClasses {\n\t/** Solid dot fill (used as the leading bullet on event chips). */\n\tdot: string;\n\t/** Soft tinted surface for the event badge background. */\n\tbadgeBg: string;\n\t/** Border-tone for the event badge / legend swatch. */\n\tborder: string;\n\t/** Filled legend swatch (square chip in the legend row). */\n\tswatch: string;\n}\n\nconst TOKEN_EXTRAS: Record<CalendarColorToken, Omit<CalendarColorClasses, 'dot'>> = {\n\tgray: { badgeBg: 'bg-muted', border: 'border-border', swatch: 'bg-muted-foreground' },\n\tred: { badgeBg: 'bg-destructive/10', border: 'border-destructive/40', swatch: 'bg-destructive' },\n\torange: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tamber: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tyellow: { badgeBg: 'bg-warning/10', border: 'border-warning/40', swatch: 'bg-warning' },\n\tgreen: { badgeBg: 'bg-success/10', border: 'border-success/40', swatch: 'bg-success' },\n\tblue: { badgeBg: 'bg-info/10', border: 'border-info/40', swatch: 'bg-info' },\n\tpurple: { badgeBg: 'bg-primary/10', border: 'border-primary/40', swatch: 'bg-primary' },\n};\n\n/**\n * Resolve a category to its full set of Tailwind colour classes. Prefers an\n * explicit `colorToken`; falls back to legacy `color` parsing.\n */\nexport function getCalendarColorClasses(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): CalendarColorClasses {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn {\n\t\tdot: calendarTokenDot[token],\n\t\t...TOKEN_EXTRAS[token],\n\t};\n}\n\n/** Convenience: just the dot class (most common lookup). */\nexport function getCalendarDotClass(\n\tcategory: Pick<EventCategory, 'colorToken' | 'color'> | null | undefined,\n): string {\n\tconst token = resolveCategoryColorToken(category as EventCategory | null | undefined);\n\treturn calendarTokenDot[token];\n}\n","/**\n * EventCalendarLegend — category chips with optional click-to-filter. When\n * `enableFiltering` is true the whole chip toggles the category's visibility\n * (instead of a free-floating checkbox alongside a swatch — that pattern was\n * cluttered). Inactive categories desaturate to muted; active categories use\n * the colour-token swatch + body text.\n */\nimport { type LucideIcon } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\nimport { getCalendarColorClasses } from './colors';\nimport type { EventCalendarLegendProps } from './event-calendar.types';\n\nexport function EventCalendarLegend({\n\tcategories,\n\tvisibleCategories,\n\tonToggleCategory,\n\tenableFiltering = false,\n}: EventCalendarLegendProps) {\n\tconst isAllVisible = !visibleCategories || visibleCategories.length === 0;\n\n\tconst isCategoryVisible = (categoryId: string) => {\n\t\tif (!enableFiltering) return true;\n\t\treturn isAllVisible || visibleCategories?.includes(categoryId);\n\t};\n\n\tconst handleToggle = (categoryId: string) => {\n\t\tif (!enableFiltering || !onToggleCategory) return;\n\t\tonToggleCategory(categoryId);\n\t};\n\n\tif (categories.length === 0) return null;\n\n\treturn (\n\t\t<div\n\t\t\trole={enableFiltering ? 'group' : undefined}\n\t\t\taria-label={enableFiltering ? 'Filter event categories' : undefined}\n\t\t\tclassName={cn('event-calendar-legend--component', 'flex flex-wrap items-center gap-1.5 py-1')}\n\t\t>\n\t\t\t{categories.map((category) => {\n\t\t\t\tconst isVisible = isCategoryVisible(category.id);\n\t\t\t\tconst colors = getCalendarColorClasses(category);\n\t\t\t\tconst Icon = category.icon as LucideIcon | undefined;\n\n\t\t\t\tconst chipBase =\n\t\t\t\t\t'group inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-xs font-medium transition-colors';\n\n\t\t\t\tconst inner = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'inline-block size-2 rounded-full',\n\t\t\t\t\t\t\t\tisVisible ? colors.swatch : 'bg-muted-foreground/40',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'size-3',\n\t\t\t\t\t\t\t\t\tisVisible ? 'text-foreground' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"medium\" type={isVisible ? 'main' : 'secondary'}>\n\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</>\n\t\t\t\t);\n\n\t\t\t\tif (!enableFiltering) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\t\tclassName={cn(chipBase, 'border-border bg-card cursor-default')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{inner}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={category.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\taria-pressed={isVisible}\n\t\t\t\t\t\tonClick={() => handleToggle(category.id)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tchipBase,\n\t\t\t\t\t\t\t'h-auto cursor-pointer shadow-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t? 'border-border bg-card hover:bg-muted/40'\n\t\t\t\t\t\t\t\t: 'border-dashed border-border/60 bg-transparent text-muted-foreground hover:bg-muted/30',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{inner}\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nEventCalendarLegend.displayName = 'EventCalendarLegend';\n","import { addMonths, subMonths, addWeeks, subWeeks, format } from 'date-fns';\nimport { useState, useCallback, useMemo } from 'react';\nimport type {\n\tCalendarEvent,\n\tCalendarViewMode,\n\tUseEventCalendarReturn,\n\tUseEventCalendarDataOptions\n} from './event-calendar.types';\nimport { useEventCalendarData } from './use-event-calendar-data';\n\nexport interface UseEventCalendarProps {\n\tevents: CalendarEvent[];\n\tdefaultDate?: Date;\n\tdefaultViewMode?: CalendarViewMode;\n\tonDateChange?: (date: Date) => void;\n\tonViewModeChange?: (mode: CalendarViewMode) => void;\n\tdataOptions?: UseEventCalendarDataOptions;\n}\n\n/**\n * Core calendar logic hook\n */\nexport function useEventCalendar({\n\tevents,\n\tdefaultDate = new Date(),\n\tdefaultViewMode = 'month',\n\tonDateChange,\n\tonViewModeChange,\n\tdataOptions = {}\n}: UseEventCalendarProps): UseEventCalendarReturn {\n\tconst [currentDate, setCurrentDate] = useState<Date>(defaultDate);\n\tconst [viewMode, setViewMode] = useState<CalendarViewMode>(defaultViewMode);\n\n\tconst calendarDays = useEventCalendarData(\n\t\tevents,\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tdataOptions\n\t);\n\n\tconst visibleEvents = useMemo(() => {\n\t\tif (dataOptions.visibleCategories && dataOptions.visibleCategories.length > 0) {\n\t\t\treturn events.filter(event =>\n\t\t\t\tdataOptions.visibleCategories!.includes(event.category)\n\t\t\t);\n\t\t}\n\t\treturn events;\n\t}, [events, dataOptions.visibleCategories]);\n\n\tconst goToToday = useCallback(() => {\n\t\tconst today = new Date();\n\t\tsetCurrentDate(today);\n\t\tonDateChange?.(today);\n\t}, [onDateChange]);\n\n\tconst goToNextPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? addMonths(currentDate, 1)\n\t\t\t: addWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst goToPreviousPeriod = useCallback(() => {\n\t\tconst newDate = viewMode === 'month'\n\t\t\t? subMonths(currentDate, 1)\n\t\t\t: subWeeks(currentDate, 1);\n\t\tsetCurrentDate(newDate);\n\t\tonDateChange?.(newDate);\n\t}, [currentDate, viewMode, onDateChange]);\n\n\tconst handleSetDate = useCallback((date: Date) => {\n\t\tsetCurrentDate(date);\n\t\tonDateChange?.(date);\n\t}, [onDateChange]);\n\n\tconst handleSetViewMode = useCallback((mode: CalendarViewMode) => {\n\t\tsetViewMode(mode);\n\t\tonViewModeChange?.(mode);\n\t}, [onViewModeChange]);\n\n\tconst displayLabel = useMemo(() => {\n\t\tif (viewMode === 'month') {\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t} else if (viewMode === 'week') {\n\t\t\tconst weekStart = calendarDays[0]?.date;\n\t\t\tconst weekEnd = calendarDays[calendarDays.length - 1]?.date;\n\t\t\tif (weekStart && weekEnd) {\n\t\t\t\treturn `${format(weekStart, 'MMM d')} - ${format(weekEnd, 'MMM d, yyyy')}`;\n\t\t\t}\n\t\t\treturn format(currentDate, 'MMMM yyyy');\n\t\t}\n\t\treturn format(currentDate, 'MMMM yyyy');\n\t}, [currentDate, viewMode, calendarDays]);\n\n\tconst hasEvents = useMemo(() => {\n\t\treturn visibleEvents.length > 0;\n\t}, [visibleEvents]);\n\n\treturn {\n\t\tcurrentDate,\n\t\tviewMode,\n\t\tcalendarDays,\n\t\tvisibleEvents,\n\t\tgoToToday,\n\t\tgoToNextPeriod,\n\t\tgoToPreviousPeriod,\n\t\tsetDate: handleSetDate,\n\t\tsetViewMode: handleSetViewMode,\n\t\tdisplayLabel,\n\t\thasEvents\n\t};\n}\n","/**\n * EventCalendar — month-grid event calendar with category legend, header\n * navigation (prev/next/today + view-mode select), keyboard-accessible day\n * cells, and per-category filtering. Strings are fully overridable; category\n * colours come from a small canonical token set (`calendarTokenDot`).\n */\nimport { useState, useMemo } from 'react';\nimport Text from '@/components/typography/text';\nimport { useStrings } from '@/lib/strings';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\nimport { EventCalendarDayCell } from './event-calendar-day-cell';\nimport { EventCalendarHeader } from './event-calendar-header';\nimport { EventCalendarLegend } from './event-calendar-legend';\nimport { defaultEventCalendarStrings, type EventCalendarProps } from './event-calendar.types';\nimport { useEventCalendar } from './use-event-calendar';\n\nfunction isDateMatched(rule: EventCalendarProps['disabledDates'], date: Date): boolean {\n\tif (!rule) return false;\n\tif (Array.isArray(rule)) {\n\t\treturn rule.some((d) => d.toDateString() === date.toDateString());\n\t}\n\tif (typeof rule === 'function') {\n\t\treturn rule(date);\n\t}\n\tconst datesMatch = rule.dates?.some((d) => d.toDateString() === date.toDateString()) ?? false;\n\tconst predicateMatch = rule.predicate?.(date) ?? false;\n\treturn datesMatch || predicateMatch;\n}\n\nexport function EventCalendar({\n\tevents,\n\tcategories,\n\tviewMode: controlledViewMode,\n\tonViewModeChange,\n\tdefaultDate,\n\tonDateChange,\n\tonEventClick: _onEventClick,\n\tonDayClick,\n\tmaxEventsPerDay = 3,\n\tshowLegend = true,\n\tshowHeader = true,\n\tshowWeekends = true,\n\tweekStartsOn: weekStartsOnProp,\n\tlocale,\n\tenableCategoryFilter = false,\n\tvisibleCategories: controlledVisibleCategories,\n\tonVisibleCategoriesChange,\n\tisLoading = false,\n\temptyStateMessage,\n\tclassName,\n\tcompact = false,\n\tactions,\n\tstrings: stringsProp,\n\tdayHeadingVariant = 'default',\n\tdayHeadingClassName,\n\trenderDayHeading,\n\trangeMode = 'date',\n\tminDate,\n\tmaxDate,\n\tdisabledDates,\n\tfilterEvent,\n\trenderEvent,\n\trenderDayCell,\n}: EventCalendarProps) {\n\tconst strings = useStrings(defaultEventCalendarStrings, stringsProp);\n\n\tconst [internalVisibleCategories, setInternalVisibleCategories] = useState<string[]>([]);\n\n\tconst visibleCategories = controlledVisibleCategories ?? internalVisibleCategories;\n\n\t// Resolve start-of-week against the consumer's <UIProvider> dates\n\t// slice. Library default is 1 (Monday) when no consumer override is set.\n\tconst { weekStartsOn: configWeekStartsOn } = useDatesConfig();\n\tconst weekStartsOn = (weekStartsOnProp ?? configWeekStartsOn ?? 1) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n\tconst handleToggleCategory = (categoryId: string) => {\n\t\tconst newCategories = visibleCategories.includes(categoryId)\n\t\t\t? visibleCategories.filter(id => id !== categoryId)\n\t\t\t: [...visibleCategories, categoryId];\n\n\t\tif (onVisibleCategoriesChange) {\n\t\t\tonVisibleCategoriesChange(newCategories);\n\t\t} else {\n\t\t\tsetInternalVisibleCategories(newCategories);\n\t\t}\n\t};\n\n\tconst calendar = useEventCalendar({\n\t\tevents,\n\t\tdefaultDate,\n\t\tdefaultViewMode: controlledViewMode || 'month',\n\t\tonDateChange,\n\t\tonViewModeChange,\n\t\tdataOptions: {\n\t\t\tweekStartsOn,\n\t\t\tshowWeekends,\n\t\t\tvisibleCategories: visibleCategories.length > 0 ? visibleCategories : undefined\n\t\t}\n\t});\n\n\tconst weekdays = useMemo(() => {\n\t\tconst days = strings.weekdaysShort;\n\t\tif (weekStartsOn === 1) {\n\t\t\treturn [...days.slice(1), days[0]];\n\t\t}\n\t\treturn days as readonly string[];\n\t}, [strings.weekdaysShort, weekStartsOn]);\n\n\tconst handleDayClick = (dayData: typeof calendar.calendarDays[0]) => {\n\t\t// Block clicks on disabled or out-of-range dates.\n\t\tif (isDateMatched(disabledDates, dayData.date)) return;\n\t\tif (minDate && dayData.date < minDate) return;\n\t\tif (maxDate && dayData.date > maxDate) return;\n\t\tonDayClick?.(dayData.date, dayData.events);\n\t};\n\n\t// Apply runtime event filtering + min/max disabled rules to each day's\n\t// event list before passing to the cell. Doesn't mutate the source.\n\tconst filteredCalendarDays = useMemo(() => {\n\t\tif (!filterEvent) return calendar.calendarDays;\n\t\treturn calendar.calendarDays.map((day) => ({\n\t\t\t...day,\n\t\t\tevents: day.events.filter(filterEvent),\n\t\t\teventCount: day.events.filter(filterEvent).length,\n\t\t\thasMultipleEvents: day.events.filter(filterEvent).length > 1,\n\t\t}));\n\t}, [calendar.calendarDays, filterEvent]);\n\n\tfunction isDayDisabled(date: Date): boolean {\n\t\tif (isDateMatched(disabledDates, date)) return true;\n\t\tif (minDate && date < minDate) return true;\n\t\tif (maxDate && date > maxDate) return true;\n\t\treturn false;\n\t}\n\n\t// Pre-compute prev/next disabled state for the header navigation.\n\tconst navDisabled = useMemo(() => {\n\t\tconst days = calendar.calendarDays;\n\t\tif (days.length === 0) return { prev: false, next: false };\n\t\tconst first = days[0].date;\n\t\tconst last = days[days.length - 1].date;\n\t\treturn {\n\t\t\tprev: !!minDate && first <= minDate,\n\t\t\tnext: !!maxDate && last >= maxDate,\n\t\t};\n\t}, [calendar.calendarDays, minDate, maxDate]);\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<div className={cn('event-calendar--component', 'flex items-center justify-center py-12')}>\n\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t{strings.loading}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst viewModeChangeHandler = controlledViewMode ? onViewModeChange : undefined;\n\tconst toggleCategoryHandler = enableCategoryFilter ? handleToggleCategory : undefined;\n\n\treturn (\n\t\t<div className={cn('w-full space-y-4', className)}>\n\t\t\t{!!showHeader && (\n\t\t\t\t<EventCalendarHeader\n\t\t\t\t\tcurrentDate={calendar.currentDate}\n\t\t\t\t\tviewMode={calendar.viewMode}\n\t\t\t\t\tdisplayLabel={calendar.displayLabel}\n\t\t\t\t\tonPrevious={calendar.goToPreviousPeriod}\n\t\t\t\t\tonNext={calendar.goToNextPeriod}\n\t\t\t\t\tonToday={calendar.goToToday}\n\t\t\t\t\tonViewModeChange={viewModeChangeHandler}\n\t\t\t\t\tonDateChange={calendar.setDate}\n\t\t\t\t\tlocale={locale}\n\t\t\t\t\tactions={actions}\n\t\t\t\t\trangeMode={rangeMode}\n\t\t\t\t\tminDate={minDate}\n\t\t\t\t\tmaxDate={maxDate}\n\t\t\t\t\tprevDisabled={navDisabled.prev}\n\t\t\t\t\tnextDisabled={navDisabled.next}\n\t\t\t\t\tstrings={{ today: strings.today, previous: strings.previous, next: strings.next, viewMode: strings.viewMode }}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{!!showLegend && categories.length > 0 && (\n\t\t\t\t<EventCalendarLegend\n\t\t\t\t\tcategories={categories}\n\t\t\t\t\tvisibleCategories={visibleCategories}\n\t\t\t\t\tonToggleCategory={toggleCategoryHandler}\n\t\t\t\t\tenableFiltering={enableCategoryFilter}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{(!calendar.hasEvents && emptyStateMessage) ? (\n\t\t\t\t<div className=\"flex items-center justify-center py-12 border border-dashed border-border rounded-lg\">\n\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t{emptyStateMessage}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"bg-background rounded-lg border border-border\">\n\t\t\t\t\t{/* Weekday headers */}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'grid grid-cols-7',\n\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'border-b border-border mb-0',\n\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'bg-muted/40 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'bg-primary/8 rounded-t-lg mb-0 overflow-hidden',\n\t\t\t\t\t\t\t(dayHeadingVariant === 'default') && 'mb-2',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{weekdays.map((day, index) => {\n\t\t\t\t\t\t\tif (renderDayHeading) {\n\t\t\t\t\t\t\t\treturn <div key={day}>{renderDayHeading(day, index)}</div>;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={day}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'text-center h-8 flex items-center justify-center',\n\t\t\t\t\t\t\t\t\t\tdayHeadingClassName,\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\tweight={dayHeadingVariant === 'accent' ? 'medium' : 'regular'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'default' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'tinted' && 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'bordered' && 'text-foreground',\n\t\t\t\t\t\t\t\t\t\t\tdayHeadingVariant === 'accent' && 'text-primary',\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{day}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Calendar grid */}\n\t\t\t\t\t<div className=\"grid grid-cols-7\">\n\t\t\t\t\t\t{filteredCalendarDays.map((dayData) => {\n\t\t\t\t\t\t\tconst disabled = isDayDisabled(dayData.date);\n\t\t\t\t\t\t\tconst defaultRender = () => (\n\t\t\t\t\t\t\t\t<EventCalendarDayCell\n\t\t\t\t\t\t\t\t\tdata={dayData}\n\t\t\t\t\t\t\t\t\tcategories={categories}\n\t\t\t\t\t\t\t\t\tmaxEvents={maxEventsPerDay}\n\t\t\t\t\t\t\t\t\tonClick={() => handleDayClick(dayData)}\n\t\t\t\t\t\t\t\t\tcompact={compact}\n\t\t\t\t\t\t\t\t\tstrings={{ booking: strings.booking, bookings: strings.bookings }}\n\t\t\t\t\t\t\t\t\trenderEvent={renderEvent}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={dayData.date.toISOString()}\n\t\t\t\t\t\t\t\t\tclassName={cn(disabled && 'pointer-events-none opacity-40')}\n\t\t\t\t\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{renderDayCell ? renderDayCell(dayData, defaultRender) : defaultRender()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nEventCalendar.displayName = 'EventCalendar';\n","/**\n * EventCalendarEventCard — detailed event view rendered in popovers and\n * agenda lists. Reads optional `metadata.customer_name`, `guest_count`, and\n * `service_name` to render a richer summary; falls back gracefully when any\n * of those are absent. Strings (guest / guests pluralization) overridable.\n */\nimport { format } from 'date-fns';\nimport { User, Users, ExternalLink, Calendar } from 'lucide-react';\nimport { Button } from '@/components/base/buttons';\nimport Heading from '@/components/typography/heading';\nimport Text from '@/components/typography/text';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\nimport type { EventCalendarEventCardProps } from './event-calendar.types';\n\nexport interface EventCalendarEventCardStrings {\n\tguest: string;\n\tguests: string;\n}\n\nexport const defaultEventCalendarEventCardStrings: EventCalendarEventCardStrings = {\n\tguest: 'guest',\n\tguests: 'guests',\n};\n\ninterface EventCalendarEventCardPropsWithStrings extends EventCalendarEventCardProps {\n\tstrings?: StringsProp<EventCalendarEventCardStrings>;\n}\n\nexport function EventCalendarEventCard({\n\tevent,\n\tcategory,\n\tonClick,\n\tstrings: stringsProp,\n}: EventCalendarEventCardPropsWithStrings) {\n\tconst strings = useStrings(defaultEventCalendarEventCardStrings, stringsProp);\n\tconst isClickable = !!onClick;\n\n\tconst handleClick = () => {\n\t\tif (onClick) {\n\t\t\tonClick();\n\t\t}\n\t};\n\n\tconst metadata = event.metadata || {};\n\tconst customerName = metadata.customer_name as string | undefined;\n\tconst guestCount = metadata.guest_count as number | undefined;\n\tconst serviceName = metadata.service_name as string | undefined;\n\n\tconst cardContent = (\n\t\t<>\n\t\t\t<div className=\"flex items-start justify-between gap-3 mb-3\">\n\t\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t\t<Heading tag=\"h5\">\n\t\t\t\t\t\t{event.title}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!category && (\n\t\t\t\t\t\t<div className=\"inline-flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className={cn('h-1.5 w-1.5 rounded-full', category.color.replace('border-', 'bg-'))} />\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{category.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t{!!isClickable && !!event.url && <ExternalLink className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />}\n\t\t\t</div>\n\n\t\t\t<div className=\"grid grid-cols-1 sm:grid-cols-2 gap-2 mb-3\">\n\t\t\t\t{!!customerName && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<User className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text className=\"truncate\">\n\t\t\t\t\t\t\t{customerName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{guestCount !== undefined && guestCount > 0 && (\n\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t<Users className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t{guestCount} {guestCount === 1 ? strings.guest : strings.guests}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{!!serviceName && (\n\t\t\t\t<Text type=\"secondary\" className=\"mb-2 line-clamp-1\">\n\t\t\t\t\t{serviceName}\n\t\t\t\t</Text>\n\t\t\t)}\n\n\t\t\t<div className=\"flex items-center gap-1.5 pt-2 border-t border-border/50\">\n\t\t\t\t<Calendar className=\"h-3.5 w-3.5 text-muted-foreground flex-shrink-0\" />\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{!!event.allDay && format(event.startDate, 'EEEE, MMM d, yyyy')}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t</>\n\t);\n\n\tconst commonClassName = cn(\n\t\t'w-full text-left p-4 border border-border rounded-lg bg-card transition-none',\n\t\tisClickable ? 'cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring' : ''\n\t);\n\n\tif (isClickable) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\tonClick={handleClick}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'event-calendar-event-card--component',\n\t\t\t\t\t'h-auto flex-col items-stretch justify-start whitespace-normal shadow-none',\n\t\t\t\t\tcommonClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{cardContent}\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn <div className={cn('event-calendar-event-card--component', commonClassName)}>{cardContent}</div>;\n}\n\nEventCalendarEventCard.displayName = 'EventCalendarEventCard';\n"],"mappings":"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"}
|