admin-ui-starter-kit 0.1.4 → 0.4.3
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-consumer-migration/SKILL.md +276 -2
- package/.agents/skills/component-library-rules/SKILL.md +15 -9
- package/.agents/skills/component-library-rules/references/audit-followups.md +4 -4
- package/.agents/skills/component-library-rules/references/base-wrapper.md +24 -4
- package/.agents/skills/component-library-rules/references/components/INDEX.json +107 -93
- package/.agents/skills/component-library-rules/references/components/INDEX.md +21 -7
- package/.agents/skills/component-library-rules/references/components/base__accordion.md +78 -9
- package/.agents/skills/component-library-rules/references/components/base__alert.md +156 -0
- package/.agents/skills/component-library-rules/references/components/base__badge.md +8 -1
- package/.agents/skills/component-library-rules/references/components/base__buttons.md +121 -1
- package/.agents/skills/component-library-rules/references/components/base__cards.md +101 -4
- package/.agents/skills/component-library-rules/references/components/base__carousel.md +524 -0
- package/.agents/skills/component-library-rules/references/components/base__chart.md +391 -0
- package/.agents/skills/component-library-rules/references/components/base__combobox.md +212 -3
- package/.agents/skills/component-library-rules/references/components/base__copyable.md +49 -1
- package/.agents/skills/component-library-rules/references/components/base__currency.md +72 -1
- package/.agents/skills/component-library-rules/references/components/base__date-pickers.md +84 -50
- package/.agents/skills/component-library-rules/references/components/base__display.md +186 -39
- package/.agents/skills/component-library-rules/references/components/base__empty-state.md +67 -1
- package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +56 -1
- package/.agents/skills/component-library-rules/references/components/base__forms.md +329 -2
- package/.agents/skills/component-library-rules/references/components/base__frame.md +235 -0
- package/.agents/skills/component-library-rules/references/components/base__item.md +47 -1
- package/.agents/skills/component-library-rules/references/components/base__map.md +37 -1
- package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +99 -7
- package/.agents/skills/component-library-rules/references/components/base__navigation.md +71 -1
- package/.agents/skills/component-library-rules/references/components/base__spinner.md +44 -3
- package/.agents/skills/component-library-rules/references/components/base__table.md +108 -14
- package/.agents/skills/component-library-rules/references/components/base__typography.md +122 -1
- package/.agents/skills/component-library-rules/references/components/base__upload-tray.md +43 -1
- package/.agents/skills/component-library-rules/references/components/common__brand.md +21 -25
- package/.agents/skills/component-library-rules/references/components/composed__admin.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__ai-elements.md +17 -2
- package/.agents/skills/component-library-rules/references/components/composed__ai-new.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__ai.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__api-key-list.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +87 -16
- package/.agents/skills/component-library-rules/references/components/composed__commerce.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__contact-card.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__course-card.md +90 -105
- package/.agents/skills/component-library-rules/references/components/composed__dark-surfaces.md +10 -3
- package/.agents/skills/component-library-rules/references/components/composed__dense-info.md +11 -4
- package/.agents/skills/component-library-rules/references/components/composed__feature-announcement.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__giftcard-cards.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__gradient-card.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__invoice-header.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__invoice-items.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__invoice-mini.md +9 -2
- package/.agents/skills/component-library-rules/references/components/composed__invoice-table.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__navigation-extras.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__navigation.md +12 -5
- package/.agents/skills/component-library-rules/references/components/composed__onboarding-checklist.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__timelines.md +8 -1
- package/.agents/skills/component-library-rules/references/components/composed__vendor-profile.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__activities.md +60 -19
- package/.agents/skills/component-library-rules/references/components/features__ai-chat.md +134 -1
- package/.agents/skills/component-library-rules/references/components/features__card.md +239 -0
- package/.agents/skills/component-library-rules/references/components/features__comments.md +36 -1
- package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +19 -4
- package/.agents/skills/component-library-rules/references/components/features__event-log.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__filters.md +21 -1
- package/.agents/skills/component-library-rules/references/components/features__global-search.md +173 -2
- package/.agents/skills/component-library-rules/references/components/features__kanban.md +99 -81
- package/.agents/skills/component-library-rules/references/components/features__media-library.md +796 -0
- package/.agents/skills/component-library-rules/references/components/features__mentions.md +187 -0
- package/.agents/skills/component-library-rules/references/components/features__metrics-analytics-bar.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__metrics-analytics-cards.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__metrics-comparison.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__metrics-heatmap.md +10 -3
- package/.agents/skills/component-library-rules/references/components/features__metrics-inline-badge.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__metrics-kpi-row.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__metrics-micro-grid.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__metrics-overview.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__metrics-stat-cards.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__overlays.md +48 -16
- package/.agents/skills/component-library-rules/references/components/features__products.md +491 -0
- package/.agents/skills/component-library-rules/references/components/features__rich-text-editor.md +8 -1
- package/.agents/skills/component-library-rules/references/components/features__schema-form.md +375 -0
- package/.agents/skills/component-library-rules/references/components/features__suggestions.md +177 -0
- package/.agents/skills/component-library-rules/references/components/features__sync.md +155 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +139 -24
- package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +826 -0
- package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +15 -3
- package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +8 -1
- package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +8 -1
- package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +9 -2
- package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +51 -30
- package/.agents/skills/component-library-rules/references/components/layout__layout-workspace.md +234 -0
- package/.agents/skills/component-library-rules/references/components/ui__alert.md +6 -2
- package/.agents/skills/component-library-rules/references/components/ui__avatar.md +2 -2
- package/.agents/skills/component-library-rules/references/components/ui__breadcrumb.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__button.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__calendar.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__collapsible.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__input-group.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__inputs.md +118 -19
- package/.agents/skills/component-library-rules/references/components/ui__layout-primitives.md +71 -0
- package/.agents/skills/component-library-rules/references/components/ui__menus.md +126 -44
- package/.agents/skills/component-library-rules/references/components/ui__overlays.md +118 -43
- package/.agents/skills/component-library-rules/references/components/ui__pagination.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__progress.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__scroll-area.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__separator.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__skeleton.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__sonner.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__spinner.md +2 -2
- package/.agents/skills/component-library-rules/references/components/ui__tabs.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__toggles-group.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__toggles.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__ui-badge.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__ui-card.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__ui-table.md +1 -1
- package/.agents/skills/component-library-rules/references/visual-eval.md +1 -1
- package/.agents/skills/component-quality-pass/SKILL.md +47 -0
- package/.agents/skills/component-quality-pass/agents/openai.yaml +4 -0
- package/.agents/skills/component-quality-pass/references/audit-workflow.md +133 -0
- package/.agents/skills/component-quality-pass/scripts/list-preview-routes.mjs +71 -0
- package/.agents/skills/component-quality-pass/scripts/scan-quality-smells.mjs +213 -0
- package/AGENTS.md +7 -4
- package/COMPONENT_SELECTION.md +51 -5
- package/INTEGRATION.md +48 -2
- package/MIGRATION.md +17 -3
- package/PUBLISHING.md +4 -1
- package/README.md +84 -11
- package/dist/_shared/accordion-BWU7zxlO.cjs +2 -0
- package/dist/_shared/accordion-BWU7zxlO.cjs.map +1 -0
- package/dist/_shared/accordion-DTYKGqWD.js +130 -0
- package/dist/_shared/accordion-DTYKGqWD.js.map +1 -0
- package/dist/_shared/action-menu-BoQnI2UF.cjs +2 -0
- package/dist/_shared/action-menu-BoQnI2UF.cjs.map +1 -0
- package/dist/_shared/action-menu-uyg1Phsn.js +96 -0
- package/dist/_shared/action-menu-uyg1Phsn.js.map +1 -0
- package/dist/_shared/ai-artifact-CY1Jf9gM.cjs +3 -0
- package/dist/_shared/ai-artifact-CY1Jf9gM.cjs.map +1 -0
- package/dist/_shared/ai-artifact-DdlK_l56.js +1099 -0
- package/dist/_shared/ai-artifact-DdlK_l56.js.map +1 -0
- package/dist/_shared/alert-CuIIKJC-.cjs +2 -0
- package/dist/_shared/alert-CuIIKJC-.cjs.map +1 -0
- package/dist/_shared/alert-k60OnTtb.js +81 -0
- package/dist/_shared/alert-k60OnTtb.js.map +1 -0
- package/dist/_shared/app-shell-DqDnnKT4.cjs +2 -0
- package/dist/_shared/app-shell-DqDnnKT4.cjs.map +1 -0
- package/dist/_shared/app-shell-w5h0vEKg.js +69 -0
- package/dist/_shared/app-shell-w5h0vEKg.js.map +1 -0
- package/dist/_shared/auth-CDjZFJxy.cjs +2 -0
- package/dist/_shared/auth-CDjZFJxy.cjs.map +1 -0
- package/dist/_shared/auth-_udUdWtn.js +643 -0
- package/dist/_shared/auth-_udUdWtn.js.map +1 -0
- package/dist/_shared/badge--o9wFHB_.cjs +2 -0
- package/dist/_shared/badge--o9wFHB_.cjs.map +1 -0
- package/dist/_shared/badge-yGlx9trX.js +108 -0
- package/dist/_shared/badge-yGlx9trX.js.map +1 -0
- package/dist/_shared/button-C1qc97U1.cjs +2 -0
- package/dist/_shared/button-C1qc97U1.cjs.map +1 -0
- package/dist/_shared/button-SuocMQFT.js +173 -0
- package/dist/_shared/button-SuocMQFT.js.map +1 -0
- package/dist/_shared/buttons-9YBwevkP.cjs +2 -0
- package/dist/_shared/buttons-9YBwevkP.cjs.map +1 -0
- package/dist/_shared/buttons-BR4BGVYf.js +143 -0
- package/dist/_shared/buttons-BR4BGVYf.js.map +1 -0
- package/dist/_shared/card-radio-group-Bna2uZs1.cjs +2 -0
- package/dist/_shared/card-radio-group-Bna2uZs1.cjs.map +1 -0
- package/dist/_shared/card-radio-group-D_CY1HRy.js +158 -0
- package/dist/_shared/card-radio-group-D_CY1HRy.js.map +1 -0
- package/dist/_shared/checkbox-CTqqawIT.js +22 -0
- package/dist/_shared/checkbox-CTqqawIT.js.map +1 -0
- package/dist/_shared/checkbox-D1n-nfLP.cjs +2 -0
- package/dist/_shared/checkbox-D1n-nfLP.cjs.map +1 -0
- package/dist/_shared/combobox-CpSmiPV8.cjs +2 -0
- package/dist/_shared/combobox-CpSmiPV8.cjs.map +1 -0
- package/dist/_shared/combobox-D01JwyFZ.js +810 -0
- package/dist/_shared/combobox-D01JwyFZ.js.map +1 -0
- package/dist/_shared/comments-D9velZAW.js +952 -0
- package/dist/_shared/comments-D9velZAW.js.map +1 -0
- package/dist/_shared/comments-DyUAKSQu.cjs +2 -0
- package/dist/_shared/comments-DyUAKSQu.cjs.map +1 -0
- package/dist/_shared/copyable-Bx4J7fuT.cjs +2 -0
- package/dist/_shared/copyable-Bx4J7fuT.cjs.map +1 -0
- package/dist/_shared/copyable-cfF4gZoT.js +38 -0
- package/dist/_shared/copyable-cfF4gZoT.js.map +1 -0
- package/dist/_shared/date-picker-BnsvBFOZ.cjs +2 -0
- package/dist/_shared/date-picker-BnsvBFOZ.cjs.map +1 -0
- package/dist/_shared/date-picker-TMcjGO26.js +1361 -0
- package/dist/_shared/date-picker-TMcjGO26.js.map +1 -0
- package/dist/_shared/date-pickers-BI4xLjHR.js +330 -0
- package/dist/_shared/date-pickers-BI4xLjHR.js.map +1 -0
- package/dist/_shared/date-pickers-BhaUK5S2.cjs +2 -0
- package/dist/_shared/date-pickers-BhaUK5S2.cjs.map +1 -0
- package/dist/_shared/display-C4n0uuxl.js +1154 -0
- package/dist/_shared/display-C4n0uuxl.js.map +1 -0
- package/dist/_shared/display-oDW0O9yB.cjs +2 -0
- package/dist/_shared/display-oDW0O9yB.cjs.map +1 -0
- package/dist/_shared/form-field-B7taMVbC.js +329 -0
- package/dist/_shared/form-field-B7taMVbC.js.map +1 -0
- package/dist/_shared/form-field-rMGPvHFK.cjs +2 -0
- package/dist/_shared/form-field-rMGPvHFK.cjs.map +1 -0
- package/dist/_shared/form-sizing-D74IS9KG.js.map +1 -1
- package/dist/_shared/form-sizing-aVwVuF-w.cjs.map +1 -1
- package/dist/_shared/forms-CwJci54_.js +3430 -0
- package/dist/_shared/forms-CwJci54_.js.map +1 -0
- package/dist/_shared/forms-E3JkTgcC.cjs +2 -0
- package/dist/_shared/forms-E3JkTgcC.cjs.map +1 -0
- package/dist/_shared/header-CyBTcM-L.js +360 -0
- package/dist/_shared/header-CyBTcM-L.js.map +1 -0
- package/dist/_shared/header-kwvkesfq.cjs +2 -0
- package/dist/_shared/header-kwvkesfq.cjs.map +1 -0
- package/dist/_shared/heading-0DYCOrgC.cjs +2 -0
- package/dist/_shared/heading-0DYCOrgC.cjs.map +1 -0
- package/dist/_shared/heading-HeP06nXG.js +107 -0
- package/dist/_shared/heading-HeP06nXG.js.map +1 -0
- package/dist/_shared/hooks-MW0UTO3q.cjs +2 -0
- package/dist/_shared/hooks-MW0UTO3q.cjs.map +1 -0
- package/dist/_shared/hooks-ZiPIvs0_.js +118 -0
- package/dist/_shared/hooks-ZiPIvs0_.js.map +1 -0
- package/dist/_shared/input-C7t-RHYq.js +182 -0
- package/dist/_shared/input-C7t-RHYq.js.map +1 -0
- package/dist/_shared/input-COMcb1WY.cjs +2 -0
- package/dist/_shared/input-COMcb1WY.cjs.map +1 -0
- package/dist/_shared/item-DAjqQhhj.js +225 -0
- package/dist/_shared/item-DAjqQhhj.js.map +1 -0
- package/dist/_shared/item-DoXXYgPm.cjs +2 -0
- package/dist/_shared/item-DoXXYgPm.cjs.map +1 -0
- package/dist/_shared/mentions-Br-EP9tq.js +506 -0
- package/dist/_shared/mentions-Br-EP9tq.js.map +1 -0
- package/dist/_shared/mentions-DNTsRHJl.cjs +2 -0
- package/dist/_shared/mentions-DNTsRHJl.cjs.map +1 -0
- package/dist/_shared/metadata-CPSQGPJh.cjs +2 -0
- package/dist/_shared/metadata-CPSQGPJh.cjs.map +1 -0
- package/dist/_shared/metadata-qTNAOM7E.js +235 -0
- package/dist/_shared/metadata-qTNAOM7E.js.map +1 -0
- package/dist/_shared/money-display-CFSMUtxS.cjs +2 -0
- package/dist/_shared/money-display-CFSMUtxS.cjs.map +1 -0
- package/dist/_shared/money-display-D4Z3P3f_.js +198 -0
- package/dist/_shared/money-display-D4Z3P3f_.js.map +1 -0
- package/dist/_shared/navigation-HnnA6uSV.js +419 -0
- package/dist/_shared/navigation-HnnA6uSV.js.map +1 -0
- package/dist/_shared/navigation-J2g0Tw9D.cjs +2 -0
- package/dist/_shared/navigation-J2g0Tw9D.cjs.map +1 -0
- package/dist/_shared/overlays-CIeniDjj.js +639 -0
- package/dist/_shared/overlays-CIeniDjj.js.map +1 -0
- package/dist/_shared/overlays-Xc_F_Y-E.cjs +2 -0
- package/dist/_shared/overlays-Xc_F_Y-E.cjs.map +1 -0
- package/dist/_shared/page-BFV-KE8H.js +262 -0
- package/dist/_shared/page-BFV-KE8H.js.map +1 -0
- package/dist/_shared/page-UJfWfw2R.cjs +2 -0
- package/dist/_shared/page-UJfWfw2R.cjs.map +1 -0
- package/dist/_shared/popover-menu-Fz-bvWJF.cjs +2 -0
- package/dist/_shared/popover-menu-Fz-bvWJF.cjs.map +1 -0
- package/dist/_shared/popover-menu-bKQatoYF.js +93 -0
- package/dist/_shared/popover-menu-bKQatoYF.js.map +1 -0
- package/dist/_shared/rich-text-editor-B6WKHUKC.js +620 -0
- package/dist/_shared/rich-text-editor-B6WKHUKC.js.map +1 -0
- package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs +2 -0
- package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs.map +1 -0
- package/dist/_shared/sidebar-B_L_dnAe.cjs +2 -0
- package/dist/_shared/sidebar-B_L_dnAe.cjs.map +1 -0
- package/dist/_shared/sidebar-C5DApiDy.js +389 -0
- package/dist/_shared/sidebar-C5DApiDy.js.map +1 -0
- package/dist/_shared/sidebar-CIlGkVbF.js +538 -0
- package/dist/_shared/sidebar-CIlGkVbF.js.map +1 -0
- package/dist/_shared/sidebar-D3sK9otF.cjs +2 -0
- package/dist/_shared/sidebar-D3sK9otF.cjs.map +1 -0
- package/dist/_shared/smart-card-DYZGY_Su.js +361 -0
- package/dist/_shared/smart-card-DYZGY_Su.js.map +1 -0
- package/dist/_shared/smart-card-Df80VF8x.cjs +2 -0
- package/dist/_shared/smart-card-Df80VF8x.cjs.map +1 -0
- package/dist/_shared/spinner-BfAbXTQ7.js +67 -0
- package/dist/_shared/spinner-BfAbXTQ7.js.map +1 -0
- package/dist/_shared/spinner-DWn3x9Tl.cjs +2 -0
- package/dist/_shared/spinner-DWn3x9Tl.cjs.map +1 -0
- package/dist/_shared/table-CBKDA7ZE.js +1189 -0
- package/dist/_shared/table-CBKDA7ZE.js.map +1 -0
- package/dist/_shared/table-CJoxRCWy.cjs +2 -0
- package/dist/_shared/table-CJoxRCWy.cjs.map +1 -0
- package/dist/_shared/textarea-C4SOrh0z.cjs +2 -0
- package/dist/_shared/textarea-C4SOrh0z.cjs.map +1 -0
- package/dist/_shared/textarea-CsMkelmp.js +119 -0
- package/dist/_shared/textarea-CsMkelmp.js.map +1 -0
- package/dist/_shared/typography-Bzsl7aTu.cjs +2 -0
- package/dist/_shared/typography-Bzsl7aTu.cjs.map +1 -0
- package/dist/_shared/typography-CdxyWB1T.js +102 -0
- package/dist/_shared/typography-CdxyWB1T.js.map +1 -0
- package/dist/_shared/ui-provider-BF4m2cR0.cjs +2 -0
- package/dist/_shared/ui-provider-BF4m2cR0.cjs.map +1 -0
- package/dist/_shared/ui-provider-C8Ot88lS.js +85 -0
- package/dist/_shared/ui-provider-C8Ot88lS.js.map +1 -0
- package/dist/_shared/workspace-CTjIGCE0.cjs +2 -0
- package/dist/_shared/workspace-CTjIGCE0.cjs.map +1 -0
- package/dist/_shared/workspace-WgJgiSUA.js +357 -0
- package/dist/_shared/workspace-WgJgiSUA.js.map +1 -0
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +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/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.d.ts +1 -1
- package/dist/components/base/cards/index.d.ts.map +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/cards/smart-card.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.types.d.ts +2 -1
- package/dist/components/base/cards/smart-card.types.d.ts.map +1 -1
- package/dist/components/base/carousel/carousel.d.ts +66 -0
- package/dist/components/base/carousel/carousel.d.ts.map +1 -0
- package/dist/components/base/carousel/carousel.strings.d.ts +7 -0
- package/dist/components/base/carousel/carousel.strings.d.ts.map +1 -0
- package/dist/components/base/carousel/index.cjs +2 -0
- package/dist/components/base/carousel/index.cjs.map +1 -0
- package/dist/components/base/carousel/index.d.ts +3 -0
- package/dist/components/base/carousel/index.d.ts.map +1 -0
- package/dist/components/base/carousel/index.js +239 -0
- package/dist/components/base/carousel/index.js.map +1 -0
- package/dist/components/base/combobox/enhanced-combobox.d.ts +2 -2
- package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -1
- package/dist/components/base/combobox/hooks/use-debounced-search.d.ts.map +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.js +1 -1
- package/dist/components/base/combobox/types.d.ts +4 -1
- package/dist/components/base/combobox/types.d.ts.map +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/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/display/alert.d.ts +13 -1
- package/dist/components/base/display/alert.d.ts.map +1 -1
- package/dist/components/base/display/chart.cjs +8 -0
- package/dist/components/base/display/chart.cjs.map +1 -0
- package/dist/components/base/display/chart.d.ts +71 -1
- package/dist/components/base/display/chart.d.ts.map +1 -1
- package/dist/components/base/display/chart.js +144 -0
- package/dist/components/base/display/chart.js.map +1 -0
- package/dist/components/base/display/date-block.d.ts +1 -1
- package/dist/components/base/display/date-block.d.ts.map +1 -1
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.d.ts +1 -2
- package/dist/components/base/display/index.d.ts.map +1 -1
- package/dist/components/base/display/index.js +10 -10
- package/dist/components/base/display/metadata/index.cjs +1 -1
- package/dist/components/base/display/metadata/index.js +1 -1
- package/dist/components/base/display/notification-banner.d.ts.map +1 -1
- package/dist/components/base/display/stacked-avatars.d.ts +6 -5
- package/dist/components/base/display/stacked-avatars.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-badge.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-header.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-legend.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar.types.d.ts +3 -2
- package/dist/components/base/event-calendar/event-calendar.types.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 +196 -205
- package/dist/components/base/event-calendar/index.js.map +1 -1
- package/dist/components/base/forms/fields/currency-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/index.d.ts +2 -0
- package/dist/components/base/forms/fields/index.d.ts.map +1 -1
- package/dist/components/base/forms/fields/password-input.d.ts +21 -0
- package/dist/components/base/forms/fields/password-input.d.ts.map +1 -0
- package/dist/components/base/forms/fields/select.d.ts +2 -0
- package/dist/components/base/forms/fields/select.d.ts.map +1 -1
- package/dist/components/base/forms/fields/slug-field.d.ts +16 -0
- package/dist/components/base/forms/fields/slug-field.d.ts.map +1 -0
- package/dist/components/base/forms/fields/switch-card.d.ts.map +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +8 -7
- package/dist/components/base/frame/frame.d.ts +24 -0
- package/dist/components/base/frame/frame.d.ts.map +1 -0
- package/dist/components/base/frame/index.cjs +2 -0
- package/dist/components/base/frame/index.cjs.map +1 -0
- package/dist/components/base/frame/index.d.ts +2 -0
- package/dist/components/base/frame/index.d.ts.map +1 -0
- package/dist/components/base/frame/index.js +164 -0
- package/dist/components/base/frame/index.js.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 +1 -1
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +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/popover-menu/popover-menu.d.ts +2 -1
- package/dist/components/base/popover-menu/popover-menu.d.ts.map +1 -1
- package/dist/components/base/sidebar/index.cjs +1 -1
- package/dist/components/base/sidebar/index.js +2 -2
- package/dist/components/base/sidebar/sidebar.d.ts +5 -3
- package/dist/components/base/sidebar/sidebar.d.ts.map +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/data-table.d.ts.map +1 -1
- package/dist/components/base/table/index.cjs +1 -2
- package/dist/components/base/table/index.js +2 -1189
- package/dist/components/base/table/table-body.d.ts.map +1 -1
- package/dist/components/base/table/table-header.d.ts.map +1 -1
- package/dist/components/base/table/table-helpers.d.ts.map +1 -1
- package/dist/components/base/table/table.types.d.ts +6 -1
- 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/api-key-list/api-key-list.d.ts.map +1 -1
- 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.js +18 -13
- package/dist/components/composed/admin/index.js.map +1 -1
- package/dist/components/composed/admin/role-permission/role-permission.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-attachment/ai-attachment.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-code-block/ai-code-block.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-file-tree/ai-file-tree.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-inline-citation/ai-inline-citation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-reasoning/ai-reasoning.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-sources/ai-sources.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-task/ai-task.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-task/types.d.ts +2 -0
- package/dist/components/composed/ai/ai-task/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/index.cjs +1 -1
- package/dist/components/composed/ai/index.cjs.map +1 -1
- package/dist/components/composed/ai/index.js +87 -83
- package/dist/components/composed/ai/index.js.map +1 -1
- package/dist/components/composed/analytics/chart-card/chart-card.d.ts +22 -0
- package/dist/components/composed/analytics/chart-card/chart-card.d.ts.map +1 -0
- package/dist/components/composed/analytics/chart-card/index.d.ts +2 -0
- package/dist/components/composed/analytics/chart-card/index.d.ts.map +1 -0
- package/dist/components/composed/analytics/format-metric-value.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.d.ts +2 -0
- package/dist/components/composed/analytics/index.d.ts.map +1 -1
- package/dist/components/composed/analytics/index.js +369 -377
- package/dist/components/composed/analytics/index.js.map +1 -1
- package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts +2 -1
- package/dist/components/composed/analytics/metric-comparison/metric-comparison.d.ts.map +1 -1
- package/dist/components/composed/analytics/metric-gradient/metric-gradient.d.ts.map +1 -1
- package/dist/components/composed/cards/contact-card/contact-card.d.ts.map +1 -1
- package/dist/components/composed/cards/course-card/course-card.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-compact.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-dark.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-full.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-illustrated.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/partials/giftcard-minimal.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 +586 -606
- package/dist/components/composed/cards/index.js.map +1 -1
- package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -1
- package/dist/components/composed/commerce/cart-summary/cart-summary.d.ts.map +1 -1
- package/dist/components/composed/commerce/cart-summary/types.d.ts +8 -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/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.js +580 -486
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/commerce/order-status/order-status.d.ts.map +1 -1
- package/dist/components/composed/commerce/order-status/types.d.ts +2 -0
- package/dist/components/composed/commerce/order-status/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/payment-method/payment-method.d.ts.map +1 -1
- package/dist/components/composed/commerce/voucher-entry/types.d.ts +3 -0
- 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/booking-receipt/booking-receipt.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 +23 -16
- package/dist/components/composed/dark-surfaces/index.js.map +1 -1
- package/dist/components/composed/dark-surfaces/order-items/order-items.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/order-items/types.d.ts +3 -1
- package/dist/components/composed/dark-surfaces/order-items/types.d.ts.map +1 -1
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.cjs.map +1 -1
- package/dist/components/composed/data-display/index.js +18 -17
- package/dist/components/composed/data-display/index.js.map +1 -1
- package/dist/components/composed/data-display/invoice-mini/invoice-mini.d.ts.map +1 -1
- package/dist/components/composed/navigation/breadcrumb-progress/breadcrumb-progress.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 +90 -72
- package/dist/components/composed/navigation/index.js.map +1 -1
- package/dist/components/composed/navigation/kanban-board/kanban-board.d.ts.map +1 -1
- package/dist/components/composed/navigation/kanban-board/types.d.ts +5 -1
- package/dist/components/composed/navigation/kanban-board/types.d.ts.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/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/features/activities/activities-feed.d.ts.map +1 -1
- package/dist/components/features/activities/activities.types.d.ts +2 -1
- 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 +286 -301
- 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/activities/partials/activity-headline.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-resource-tag.d.ts.map +1 -1
- package/dist/components/features/activities/partials/activity-row.d.ts.map +1 -1
- package/dist/components/features/ai-chat/ai-chat.d.ts +2 -1
- package/dist/components/features/ai-chat/ai-chat.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 +16 -14
- package/dist/components/features/ai-chat/index.js.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +2 -1
- package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +2 -1
- package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +2 -1
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts.map +1 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +2 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts.map +1 -1
- package/dist/components/features/card/card.types.d.ts +2 -0
- package/dist/components/features/card/card.types.d.ts.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 +37 -43
- package/dist/components/features/card/index.js.map +1 -1
- package/dist/components/features/card/partials/default-shared-resource-partials.d.ts +2 -1
- package/dist/components/features/card/partials/default-shared-resource-partials.d.ts.map +1 -1
- package/dist/components/features/card/shared-resource-card.d.ts.map +1 -1
- package/dist/components/features/comments/comments-provider.d.ts +2 -1
- package/dist/components/features/comments/comments-provider.d.ts.map +1 -1
- package/dist/components/features/comments/comments.types.d.ts +6 -5
- package/dist/components/features/comments/comments.types.d.ts.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/comments/partials/comment-attachment-chip.d.ts +2 -1
- package/dist/components/features/comments/partials/comment-attachment-chip.d.ts.map +1 -1
- package/dist/components/features/comments/partials/comment-composer.d.ts.map +1 -1
- package/dist/components/features/comments/partials/comment-empty.d.ts +2 -1
- package/dist/components/features/comments/partials/comment-empty.d.ts.map +1 -1
- package/dist/components/features/comments/partials/comment-item.d.ts.map +1 -1
- package/dist/components/features/event-log/event-log.d.ts.map +1 -1
- package/dist/components/features/event-log/event-log.types.d.ts +2 -2
- package/dist/components/features/event-log/event-log.types.d.ts.map +1 -1
- 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 +86 -86
- package/dist/components/features/event-log/index.js.map +1 -1
- package/dist/components/features/filters/facets/async-select-facet.d.ts +1 -1
- package/dist/components/features/filters/facets/async-select-facet.d.ts.map +1 -1
- package/dist/components/features/filters/filters.types.d.ts +7 -7
- package/dist/components/features/filters/filters.types.d.ts.map +1 -1
- package/dist/components/features/filters/hooks/use-async-options.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.js +518 -495
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filter-pill.d.ts.map +1 -1
- package/dist/components/features/filters/partials/filters-button.d.ts.map +1 -1
- package/dist/components/features/global-search/global-search.d.ts +2 -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 +291 -271
- package/dist/components/features/global-search/index.js.map +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts.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/global-search/partials/global-search-tabs.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 +133 -124
- package/dist/components/features/kanban/index.js.map +1 -1
- package/dist/components/features/kanban/kanban-context.d.ts +1 -0
- package/dist/components/features/kanban/kanban-context.d.ts.map +1 -1
- package/dist/components/features/kanban/kanban.d.ts.map +1 -1
- package/dist/components/features/media-library/hooks/index.d.ts +2 -0
- package/dist/components/features/media-library/hooks/index.d.ts.map +1 -0
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +6 -0
- package/dist/components/features/media-library/hooks/use-media-library.d.ts.map +1 -0
- package/dist/components/features/media-library/index.cjs +2 -0
- package/dist/components/features/media-library/index.cjs.map +1 -0
- package/dist/components/features/media-library/index.d.ts +7 -0
- package/dist/components/features/media-library/index.d.ts.map +1 -0
- package/dist/components/features/media-library/index.js +1796 -0
- package/dist/components/features/media-library/index.js.map +1 -0
- package/dist/components/features/media-library/media-library.d.ts +4 -0
- package/dist/components/features/media-library/media-library.d.ts.map +1 -0
- package/dist/components/features/media-library/media-library.strings.d.ts +120 -0
- package/dist/components/features/media-library/media-library.strings.d.ts.map +1 -0
- package/dist/components/features/media-library/media-library.types.d.ts +340 -0
- package/dist/components/features/media-library/media-library.types.d.ts.map +1 -0
- package/dist/components/features/media-library/media-resource-gallery.d.ts +3 -0
- package/dist/components/features/media-library/media-resource-gallery.d.ts.map +1 -0
- package/dist/components/features/media-library/partials/index.d.ts +2 -0
- package/dist/components/features/media-library/partials/index.d.ts.map +1 -0
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +11 -0
- package/dist/components/features/media-library/partials/media-library-partials.d.ts.map +1 -0
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/mentions/partials/mention-chip.d.ts.map +1 -1
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts.map +1 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts.map +1 -1
- package/dist/components/features/mentions/utils/build-mention-html.d.ts +3 -3
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts.map +1 -1
- package/dist/components/features/overlays/drawer.d.ts.map +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/overlays/overlays.types.d.ts +3 -1
- package/dist/components/features/overlays/overlays.types.d.ts.map +1 -1
- package/dist/components/features/products/components/index.d.ts +15 -0
- package/dist/components/features/products/components/index.d.ts.map +1 -0
- package/dist/components/features/products/components/product-contract-overview.d.ts +6 -0
- package/dist/components/features/products/components/product-contract-overview.d.ts.map +1 -0
- package/dist/components/features/products/components/product-details-card.d.ts +6 -0
- package/dist/components/features/products/components/product-details-card.d.ts.map +1 -0
- package/dist/components/features/products/components/product-operations-card.d.ts +6 -0
- package/dist/components/features/products/components/product-operations-card.d.ts.map +1 -0
- package/dist/components/features/products/components/product-option-action-menu.d.ts +6 -0
- package/dist/components/features/products/components/product-option-action-menu.d.ts.map +1 -0
- package/dist/components/features/products/components/product-options-summary.d.ts +6 -0
- package/dist/components/features/products/components/product-options-summary.d.ts.map +1 -0
- package/dist/components/features/products/components/product-overview.d.ts +6 -0
- package/dist/components/features/products/components/product-overview.d.ts.map +1 -0
- package/dist/components/features/products/components/product-policies-card.d.ts +6 -0
- package/dist/components/features/products/components/product-policies-card.d.ts.map +1 -0
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +6 -0
- package/dist/components/features/products/components/product-quote-preview-card.d.ts.map +1 -0
- package/dist/components/features/products/components/product-readiness-card.d.ts +6 -0
- package/dist/components/features/products/components/product-readiness-card.d.ts.map +1 -0
- package/dist/components/features/products/components/product-structure-card.d.ts +6 -0
- package/dist/components/features/products/components/product-structure-card.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +6 -0
- package/dist/components/features/products/components/product-variant-action-menu.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variant-details.d.ts +6 -0
- package/dist/components/features/products/components/product-variant-details.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variant-editor.d.ts +6 -0
- package/dist/components/features/products/components/product-variant-editor.d.ts.map +1 -0
- package/dist/components/features/products/components/product-variants-table.d.ts +6 -0
- package/dist/components/features/products/components/product-variants-table.d.ts.map +1 -0
- package/dist/components/features/products/index.cjs +2 -0
- package/dist/components/features/products/index.cjs.map +1 -0
- package/dist/components/features/products/index.d.ts +6 -0
- package/dist/components/features/products/index.d.ts.map +1 -0
- package/dist/components/features/products/index.js +1749 -0
- package/dist/components/features/products/index.js.map +1 -0
- package/dist/components/features/products/partials/index.d.ts +8 -0
- package/dist/components/features/products/partials/index.d.ts.map +1 -0
- package/dist/components/features/products/partials/product-actions.d.ts +8 -0
- package/dist/components/features/products/partials/product-actions.d.ts.map +1 -0
- package/dist/components/features/products/partials/product-empty-state.d.ts +8 -0
- package/dist/components/features/products/partials/product-empty-state.d.ts.map +1 -0
- package/dist/components/features/products/partials/product-metric-tile.d.ts +5 -0
- package/dist/components/features/products/partials/product-metric-tile.d.ts.map +1 -0
- package/dist/components/features/products/partials/product-rows.d.ts +25 -0
- package/dist/components/features/products/partials/product-rows.d.ts.map +1 -0
- package/dist/components/features/products/partials/product-tone.d.ts +9 -0
- package/dist/components/features/products/partials/product-tone.d.ts.map +1 -0
- package/dist/components/features/products/partials/product-values.d.ts +2 -0
- package/dist/components/features/products/partials/product-values.d.ts.map +1 -0
- package/dist/components/features/products/partials/product-variant-table-parts.d.ts +22 -0
- package/dist/components/features/products/partials/product-variant-table-parts.d.ts.map +1 -0
- package/dist/components/features/products/products.d.ts +7 -0
- package/dist/components/features/products/products.d.ts.map +1 -0
- package/dist/components/features/products/products.strings.d.ts +197 -0
- package/dist/components/features/products/products.strings.d.ts.map +1 -0
- package/dist/components/features/products/products.types.d.ts +372 -0
- package/dist/components/features/products/products.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/rich-text-editor/partials/rich-text-editor-fallback.d.ts.map +1 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts.map +1 -1
- package/dist/components/features/schema-form/hooks/index.d.ts +2 -0
- package/dist/components/features/schema-form/hooks/index.d.ts.map +1 -0
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +24 -0
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts.map +1 -0
- package/dist/components/features/schema-form/index.cjs +2 -0
- package/dist/components/features/schema-form/index.cjs.map +1 -0
- package/dist/components/features/schema-form/index.d.ts +6 -0
- package/dist/components/features/schema-form/index.d.ts.map +1 -0
- package/dist/components/features/schema-form/index.js +721 -0
- package/dist/components/features/schema-form/index.js.map +1 -0
- package/dist/components/features/schema-form/partials/index.d.ts +4 -0
- package/dist/components/features/schema-form/partials/index.d.ts.map +1 -0
- package/dist/components/features/schema-form/partials/schema-form-actions.d.ts +16 -0
- package/dist/components/features/schema-form/partials/schema-form-actions.d.ts.map +1 -0
- package/dist/components/features/schema-form/partials/schema-form-empty.d.ts +10 -0
- package/dist/components/features/schema-form/partials/schema-form-empty.d.ts.map +1 -0
- package/dist/components/features/schema-form/partials/schema-form-field.d.ts +11 -0
- package/dist/components/features/schema-form/partials/schema-form-field.d.ts.map +1 -0
- package/dist/components/features/schema-form/schema-form.d.ts +6 -0
- package/dist/components/features/schema-form/schema-form.d.ts.map +1 -0
- package/dist/components/features/schema-form/schema-form.strings.d.ts +12 -0
- package/dist/components/features/schema-form/schema-form.strings.d.ts.map +1 -0
- package/dist/components/features/schema-form/schema-form.types.d.ts +198 -0
- package/dist/components/features/schema-form/schema-form.types.d.ts.map +1 -0
- package/dist/components/features/schema-form/schema-form.utils.d.ts +19 -0
- package/dist/components/features/schema-form/schema-form.utils.d.ts.map +1 -0
- package/dist/components/features/suggestions/hooks/use-suggestions.d.ts.map +1 -1
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.cjs.map +1 -1
- package/dist/components/features/suggestions/index.js +64 -64
- package/dist/components/features/suggestions/index.js.map +1 -1
- package/dist/components/features/suggestions/suggestions.d.ts.map +1 -1
- package/dist/components/features/suggestions/suggestions.types.d.ts +1 -0
- package/dist/components/features/suggestions/suggestions.types.d.ts.map +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 +3 -3
- package/dist/components/layout/app-shell/app-shell.types.d.ts +1 -1
- 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.js +1 -1
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts.map +1 -1
- package/dist/components/layout/auth/auth-card.d.ts +3 -0
- package/dist/components/layout/auth/auth-card.d.ts.map +1 -0
- package/dist/components/layout/auth/auth-footer-links.d.ts +3 -0
- package/dist/components/layout/auth/auth-footer-links.d.ts.map +1 -0
- package/dist/components/layout/auth/auth-hooks.d.ts +5 -0
- package/dist/components/layout/auth/auth-hooks.d.ts.map +1 -0
- package/dist/components/layout/auth/auth-method-switch.d.ts +5 -0
- package/dist/components/layout/auth/auth-method-switch.d.ts.map +1 -0
- package/dist/components/layout/auth/auth-shell.d.ts +3 -0
- package/dist/components/layout/auth/auth-shell.d.ts.map +1 -0
- package/dist/components/layout/auth/auth-social-providers.d.ts +4 -0
- package/dist/components/layout/auth/auth-social-providers.d.ts.map +1 -0
- package/dist/components/layout/auth/auth-split-panel.d.ts +3 -0
- package/dist/components/layout/auth/auth-split-panel.d.ts.map +1 -0
- package/dist/components/layout/auth/auth.strings.d.ts +22 -0
- package/dist/components/layout/auth/auth.strings.d.ts.map +1 -0
- package/dist/components/layout/auth/auth.types.d.ts +187 -0
- package/dist/components/layout/auth/auth.types.d.ts.map +1 -0
- package/dist/components/layout/auth/index.cjs +1 -0
- package/dist/components/layout/auth/index.d.ts +10 -0
- package/dist/components/layout/auth/index.d.ts.map +1 -0
- package/dist/components/layout/auth/index.js +2 -0
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +1 -1
- 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/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 +2 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +8 -6
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/workspace/index.cjs +1 -0
- package/dist/components/layout/workspace/index.d.ts +4 -0
- package/dist/components/layout/workspace/index.d.ts.map +1 -0
- package/dist/components/layout/workspace/index.js +2 -0
- package/dist/components/layout/workspace/workspace.d.ts +7 -0
- package/dist/components/layout/workspace/workspace.d.ts.map +1 -0
- package/dist/components/layout/workspace/workspace.strings.d.ts +19 -0
- package/dist/components/layout/workspace/workspace.strings.d.ts.map +1 -0
- package/dist/components/layout/workspace/workspace.types.d.ts +96 -0
- package/dist/components/layout/workspace/workspace.types.d.ts.map +1 -0
- package/dist/components/typography/heading.d.ts +2 -1
- package/dist/components/typography/heading.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/text-link.d.ts.map +1 -1
- package/dist/components/typography/text.d.ts +2 -1
- package/dist/components/typography/text.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.d.ts +19 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio.d.ts +5 -0
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
- package/dist/components/ui/carousel.d.ts +29 -0
- package/dist/components/ui/carousel.d.ts.map +1 -0
- package/dist/components/ui/direction.d.ts +2 -0
- package/dist/components/ui/direction.d.ts.map +1 -0
- package/dist/components/ui/drawer.d.ts +14 -0
- package/dist/components/ui/drawer.d.ts.map +1 -0
- package/dist/components/ui/field.d.ts +25 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/components/ui/input-otp.d.ts +12 -0
- package/dist/components/ui/input-otp.d.ts.map +1 -0
- package/dist/components/ui/kbd.d.ts +4 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/label.d.ts +4 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/menubar.d.ts +30 -0
- package/dist/components/ui/menubar.d.ts.map +1 -0
- package/dist/components/ui/native-select.d.ts +9 -0
- package/dist/components/ui/native-select.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.d.ts +12 -0
- package/dist/components/ui/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/resizable.d.ts +8 -0
- package/dist/components/ui/resizable.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/ui-provider/index.cjs +1 -1
- package/dist/lib/ui-provider/index.js +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 +19 -16
- package/dist/lib/utils.js.map +1 -1
- package/dist/showcase/assets/AreaChart-BkAbL-UV.js +6 -0
- package/dist/showcase/assets/CSPContext-B11tftuK.js +1 -0
- package/dist/showcase/assets/CompositeItem-Dzu0MfUC.js +1 -0
- package/dist/showcase/assets/CompositeRoot-CQvQ_uj2.js +1 -0
- package/dist/showcase/assets/DialogTrigger-BxVhSw4D.js +1 -0
- package/dist/showcase/assets/FieldItemContext-BSFHjS7g.js +1 -0
- package/dist/showcase/assets/LabelableContext-DapqaNeY.js +1 -0
- package/dist/showcase/assets/PreviewLayout-CGEkbS-i.js +1 -0
- package/dist/showcase/assets/RadioGroup-DBA3iBQw.js +1 -0
- package/dist/showcase/assets/Separator-BEMr82IS.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-xN-ruoGR.js +1 -0
- package/dist/showcase/assets/accordion-B-Iy0jKu.js +171 -0
- package/dist/showcase/assets/accordion-variants-B9GD0oBE.js +1 -0
- package/dist/showcase/assets/action-menu-CMUF6gPp.js +1 -0
- package/dist/showcase/assets/activities-C1P9bsJm.js +501 -0
- package/dist/showcase/assets/activities-feed-card-WZUuGHmT.js +1 -0
- package/dist/showcase/assets/activity-BVP5C805.js +1 -0
- package/dist/showcase/assets/admin-DWOK4sj4.js +80 -0
- package/dist/showcase/assets/ai-Dteb3y6G.js +41 -0
- package/dist/showcase/assets/ai-artifact-B0d7GveY.js +2 -0
- package/dist/showcase/assets/ai-chat-IJ0b2FOw.js +568 -0
- package/dist/showcase/assets/ai-elements-Cr8GgtEV.js +387 -0
- package/dist/showcase/assets/ai-new-BJN9wNvX.js +167 -0
- package/dist/showcase/assets/ai-tool-call-BqlQuR1P.js +1 -0
- package/dist/showcase/assets/alert-2_0J7Vv6.js +1 -0
- package/dist/showcase/assets/alert-7wEOpEor.js +93 -0
- package/dist/showcase/assets/alert-C_FOBilU.js +62 -0
- package/dist/showcase/assets/api-key-list-CGV1k52v.js +73 -0
- package/dist/showcase/assets/app-sidebar-S6oUYO4h.js +1 -0
- package/dist/showcase/assets/arrow-down-VNr82bS3.js +1 -0
- package/dist/showcase/assets/arrow-left-BSVeKWNq.js +1 -0
- package/dist/showcase/assets/arrow-right-D6hTB0Bd.js +1 -0
- package/dist/showcase/assets/arrow-up-p9oA4cIz.js +1 -0
- package/dist/showcase/assets/arrow-up-right-BtlQ62bc.js +1 -0
- package/dist/showcase/assets/avatar-BxcQUuh0.js +57 -0
- package/dist/showcase/assets/avatar-LGWm52rv.js +1 -0
- package/dist/showcase/assets/badge-COn5psy3.js +28 -0
- package/dist/showcase/assets/badge-check-D2C2BPUT.js +1 -0
- package/dist/showcase/assets/bell-C80n9VRl.js +1 -0
- package/dist/showcase/assets/bot-C83bUUi9.js +1 -0
- package/dist/showcase/assets/box-rZ0pA-02.js +1 -0
- package/dist/showcase/assets/brain-BJtktdVu.js +1 -0
- package/dist/showcase/assets/brand-CxdIBpyJ.js +36 -0
- package/dist/showcase/assets/breadcrumb-BZsr_A8k.js +1 -0
- package/dist/showcase/assets/breadcrumb-CSU8FvWB.js +52 -0
- package/dist/showcase/assets/breadcrumbs-BUm4gHzL.js +1 -0
- package/dist/showcase/assets/briefcase-0WhUdLn5.js +1 -0
- package/dist/showcase/assets/building-2-1D6zVdCI.js +1 -0
- package/dist/showcase/assets/button-C22Gs6y0.js +44 -0
- package/dist/showcase/assets/button-group-C0Ts4-x3.js +1 -0
- package/dist/showcase/assets/buttons-Dfn6hmwe.js +270 -0
- package/dist/showcase/assets/calendar-7a4yQlzJ.js +1 -0
- package/dist/showcase/assets/calendar-Bo17POsN.js +1 -0
- package/dist/showcase/assets/calendar-D6XNDRVQ.js +16 -0
- package/dist/showcase/assets/calendar-days-C4mG2tOe.js +1 -0
- package/dist/showcase/assets/camera-C16z6v0m.js +1 -0
- package/dist/showcase/assets/card-BjqRQxxz.js +1 -0
- package/dist/showcase/assets/card-IzYmUTpI.js +188 -0
- package/dist/showcase/assets/card-primitives-BDj4DtS8.js +1 -0
- package/dist/showcase/assets/card-radio-group-7GU9AtWs.js +1 -0
- package/dist/showcase/assets/cards-DAqpr8CM.js +328 -0
- package/dist/showcase/assets/carousel-D1n4Kkoo.js +449 -0
- package/dist/showcase/assets/chart-D2EGeI3b.js +358 -0
- package/dist/showcase/assets/chart-column-DKcP77Dx.js +1 -0
- package/dist/showcase/assets/checkbox-BI3gcjED.js +1 -0
- package/dist/showcase/assets/chevron-down-ByPPEdNm.js +1 -0
- package/dist/showcase/assets/chevron-left-BNByuq3g.js +1 -0
- package/dist/showcase/assets/chevron-right-D4pIMCh9.js +1 -0
- package/dist/showcase/assets/chevron-up-Cha879Nz.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-eAgHau5X.js +1 -0
- package/dist/showcase/assets/circle-V5hdlsIn.js +1 -0
- package/dist/showcase/assets/circle-alert-BW-Btwgh.js +1 -0
- package/dist/showcase/assets/circle-check-1MSds3Vu.js +1 -0
- package/dist/showcase/assets/circle-check-big-vBWkmhCZ.js +1 -0
- package/dist/showcase/assets/circle-dot-CsD5uXwH.js +1 -0
- package/dist/showcase/assets/circle-question-mark-xYn9p1nL.js +1 -0
- package/dist/showcase/assets/circle-x-VSqZOeGt.js +1 -0
- package/dist/showcase/assets/clock-3-CP_t59kW.js +1 -0
- package/dist/showcase/assets/clock-9xbB7EnW.js +1 -0
- package/dist/showcase/assets/code-xml-CeGA85eB.js +1 -0
- package/dist/showcase/assets/collapsible-C2W51-wl.js +27 -0
- package/dist/showcase/assets/collapsible-C4eof15p.js +1 -0
- package/dist/showcase/assets/combobox-i8o4u6Q0.js +696 -0
- package/dist/showcase/assets/command-C4F78Ppy.js +1 -0
- package/dist/showcase/assets/command-wjOXUieO.js +1 -0
- package/dist/showcase/assets/comment-composer-DeURrlgL.js +1 -0
- package/dist/showcase/assets/comment-item-D07Qk-Nt.js +1 -0
- package/dist/showcase/assets/comments-Bo-lZU18.js +357 -0
- package/dist/showcase/assets/commerce-extras-Cio3xn_B.js +189 -0
- package/dist/showcase/assets/commerce-jqA58sCZ.js +79 -0
- package/dist/showcase/assets/composite-BQFpnmS9.js +1 -0
- package/dist/showcase/assets/contact-card-4ajPhcd_.js +65 -0
- package/dist/showcase/assets/content-container-B83BnjFb.js +1 -0
- package/dist/showcase/assets/copyable-DKkroGJ3.js +96 -0
- package/dist/showcase/assets/course-card-DShYl03k.js +77 -0
- package/dist/showcase/assets/cpu-BZTsuaUu.js +1 -0
- package/dist/showcase/assets/credit-card-CAI3F3HB.js +1 -0
- package/dist/showcase/assets/currency-PXgbngHk.js +149 -0
- package/dist/showcase/assets/dark-surfaces-pSCicdm4.js +90 -0
- package/dist/showcase/assets/database-oHsxHUj-.js +1 -0
- package/dist/showcase/assets/date-block-CvCdJr8d.js +1 -0
- package/dist/showcase/assets/date-picker-Cd5vsEEd.js +1 -0
- package/dist/showcase/assets/date-pickers-CBK-zvSB.js +73 -0
- package/dist/showcase/assets/dense-info-zOdJpez6.js +106 -0
- package/dist/showcase/assets/dialog-D9-MRCRg.js +1 -0
- package/dist/showcase/assets/dialog-EDw9DvZs.js +1 -0
- package/dist/showcase/assets/display-CE9JWinr.js +403 -0
- package/dist/showcase/assets/dist-CjZ6RM9v.js +45 -0
- package/dist/showcase/assets/dollar-sign-BXD_x2mP.js +1 -0
- package/dist/showcase/assets/download-D0ur_d_N.js +1 -0
- package/dist/showcase/assets/dropdown-menu-Cto8-yDW.js +1 -0
- package/dist/showcase/assets/dropzone-9Gb4mR4x.js +1 -0
- package/dist/showcase/assets/earth-BN1w3w7h.js +1 -0
- package/dist/showcase/assets/ellipsis-DsrebD1Y.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-CAiMV7G2.js +1 -0
- package/dist/showcase/assets/empty-DoJF3uif.js +1 -0
- package/dist/showcase/assets/empty-item-zZ85qI6s.js +49 -0
- package/dist/showcase/assets/empty-state-CGfB7sOE.js +1 -0
- package/dist/showcase/assets/empty-state-Y_4qnNWt.js +188 -0
- package/dist/showcase/assets/enhanced-activities-B41hAxhb.js +361 -0
- package/dist/showcase/assets/enhanced-combobox-BOimEW-1.js +1 -0
- package/dist/showcase/assets/event-calendar-BjcfC6fM.js +138 -0
- package/dist/showcase/assets/event-log-BhoMXcix.js +330 -0
- package/dist/showcase/assets/example-Cz_880po.js +1 -0
- package/dist/showcase/assets/external-link-Cy1-PP8k.js +1 -0
- package/dist/showcase/assets/eye-C85PNNdH.js +1 -0
- package/dist/showcase/assets/feature-announcement-_tpahla3.js +34 -0
- package/dist/showcase/assets/file-C8PCBEtY.js +1 -0
- package/dist/showcase/assets/file-text-DwqbUujq.js +1 -0
- package/dist/showcase/assets/filters-ChqGg_1z.js +78 -0
- package/dist/showcase/assets/flag-csHQcBml.js +1 -0
- package/dist/showcase/assets/folder-open-BThTng3d.js +1 -0
- package/dist/showcase/assets/form-field-B5g_5Zjm.js +1 -0
- package/dist/showcase/assets/form-sizing-DHUDpiPA.js +1 -0
- package/dist/showcase/assets/format-DrTwpH65.js +1 -0
- package/dist/showcase/assets/format-metric-value-BTsvOjZQ.js +1 -0
- package/dist/showcase/assets/forms-BukyUSKs.js +862 -0
- package/dist/showcase/assets/frame-BNKhZVlb.js +167 -0
- package/dist/showcase/assets/getPseudoElementBounds-DwyQgIj-.js +1 -0
- package/dist/showcase/assets/gift-CtM--bDo.js +1 -0
- package/dist/showcase/assets/giftcard-cards-imm4Br0H.js +85 -0
- package/dist/showcase/assets/git-branch-Dl3AzbqP.js +1 -0
- package/dist/showcase/assets/global-search-Bhl7z_vN.js +1 -0
- package/dist/showcase/assets/global-search-C4yaPFSW.js +215 -0
- package/dist/showcase/assets/globe-BCikLfKc.js +1 -0
- package/dist/showcase/assets/gradient-card-Dh_5ZYv0.js +58 -0
- package/dist/showcase/assets/hash-C8m0EECO.js +1 -0
- package/dist/showcase/assets/header-BXjw7Lm_.js +1 -0
- package/dist/showcase/assets/header-notifications-CShSQ8kR.js +1 -0
- package/dist/showcase/assets/heart-BJVBFZ-j.js +1 -0
- package/dist/showcase/assets/hero-CLDdwZDr.png +0 -0
- package/dist/showcase/assets/house-C3fXPhlL.js +1 -0
- package/dist/showcase/assets/icon-badge-dwVx3Hxf.js +1 -0
- package/dist/showcase/assets/image-gc4qX_7C.js +1 -0
- package/dist/showcase/assets/inbox-C0GJ1KEC.js +1 -0
- package/dist/showcase/assets/index-BQIv1ffM.js +10 -0
- package/dist/showcase/assets/index-DN3tqopz.css +2 -0
- package/dist/showcase/assets/index.esm-Ducg7a0P.js +1 -0
- package/dist/showcase/assets/inertValue-DeVQ2cCe.js +1 -0
- package/dist/showcase/assets/info-BimmreJ-.js +1 -0
- package/dist/showcase/assets/inline-stat-DcNP6bcO.js +1 -0
- package/dist/showcase/assets/input-DJAWOJEx.js +1 -0
- package/dist/showcase/assets/input-NIgvB9CZ.js +1 -0
- package/dist/showcase/assets/input-group-BmqJ20bA.js +1 -0
- package/dist/showcase/assets/input-group-gOUubhee.js +47 -0
- package/dist/showcase/assets/inputs-Dk8YOVkI.js +155 -0
- package/dist/showcase/assets/invoice-header-BnNpWej2.js +36 -0
- package/dist/showcase/assets/invoice-items-BdPmW10L.js +36 -0
- package/dist/showcase/assets/invoice-mini-CbSYyHIb.js +14 -0
- package/dist/showcase/assets/invoice-table-DjnWG3KF.js +30 -0
- package/dist/showcase/assets/isSameDay-B2KDl_YX.js +1 -0
- package/dist/showcase/assets/isToday-CXNS7ELW.js +1 -0
- package/dist/showcase/assets/italic-BRS-PpYL.js +1 -0
- package/dist/showcase/assets/item--6Hx9AXZ.js +1 -0
- package/dist/showcase/assets/item-BszVRzXj.js +134 -0
- package/dist/showcase/assets/item-YF6wMI9W.js +1 -0
- package/dist/showcase/assets/kanban-BWBbWLVe.js +186 -0
- package/dist/showcase/assets/label-BgpcD3V6.js +1 -0
- package/dist/showcase/assets/languages-DDgmIDFe.js +1 -0
- package/dist/showcase/assets/layers-nkkXRmvA.js +1 -0
- package/dist/showcase/assets/layout-app-shell-D3MbPoGC.js +608 -0
- package/dist/showcase/assets/layout-auth-DIeRtG0B.js +754 -0
- package/dist/showcase/assets/layout-containers-Dc3-IAgV.js +101 -0
- package/dist/showcase/assets/layout-header-Cg6GfMST.js +170 -0
- package/dist/showcase/assets/layout-page-DojPq8S6.js +122 -0
- package/dist/showcase/assets/layout-primitives-JBSQS72B.js +34 -0
- package/dist/showcase/assets/layout-sidebar-C6jUJRhx.js +224 -0
- package/dist/showcase/assets/layout-users-uzPscfo7.js +117 -0
- package/dist/showcase/assets/layout-workspace-B3leaOKl.js +183 -0
- package/dist/showcase/assets/lock-DLIcOBUd.js +1 -0
- package/dist/showcase/assets/lock-keyhole-DY6aV7Mq.js +1 -0
- package/dist/showcase/assets/mail-AES_tOd2.js +1 -0
- package/dist/showcase/assets/mail-check-dJTzg2bD.js +1 -0
- package/dist/showcase/assets/map-CZ2l0iGH.js +124 -0
- package/dist/showcase/assets/map-pin-0O7GD5Dz.js +1 -0
- package/dist/showcase/assets/media-library-CRllxSGQ.js +695 -0
- package/dist/showcase/assets/mention-inline-suggestions-Dx2Z1GHF.js +1 -0
- package/dist/showcase/assets/mentions-CDqqGCE4.js +138 -0
- package/dist/showcase/assets/menus-CDgE79I5.js +165 -0
- package/dist/showcase/assets/message-square-CBNI_sf8.js +1 -0
- package/dist/showcase/assets/metadata-list-BoEVt7cX.js +1 -0
- package/dist/showcase/assets/metadata-list-NtWuY9W8.js +288 -0
- package/dist/showcase/assets/metric-Bx_LWobe.js +1 -0
- package/dist/showcase/assets/metric-bar-BldYHNLQ.js +1 -0
- package/dist/showcase/assets/metric-grid-BDw7w7d2.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-lSjDkUEo.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-CCFhTmQZ.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-C1AjZqJU.js +50 -0
- package/dist/showcase/assets/metrics-comparison-vEE6BtuW.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-DKkz8ibX.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-CZmVnReB.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-s2FYIYB1.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-DDlCl9Ep.js +42 -0
- package/dist/showcase/assets/metrics-overview-BgliK2L1.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Cn5sRZsB.js +54 -0
- package/dist/showcase/assets/minus-DByvcC8K.js +1 -0
- package/dist/showcase/assets/money-display-DG4IaEaA.js +1 -0
- package/dist/showcase/assets/month-year-picker-CVurc9L7.js +1 -0
- package/dist/showcase/assets/navigation-CHYgQTsY.js +90 -0
- package/dist/showcase/assets/navigation-C_6gS4FA.js +230 -0
- package/dist/showcase/assets/navigation-extras-CflOar2P.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-CYiciKwv.js +119 -0
- package/dist/showcase/assets/overlays-HrH2wdTK.js +408 -0
- package/dist/showcase/assets/overlays-cp7VMq3b.js +159 -0
- package/dist/showcase/assets/package-CjcwDJKu.js +1 -0
- package/dist/showcase/assets/package-check-CCH3ax-x.js +1 -0
- package/dist/showcase/assets/page-action-button-Cn5j2_EP.js +1 -0
- package/dist/showcase/assets/page-header-CkvCF1MQ.js +1 -0
- package/dist/showcase/assets/pagination-DM5QGPo2.js +42 -0
- package/dist/showcase/assets/pagination-DUzHnhJ6.js +1 -0
- package/dist/showcase/assets/paperclip-DoqDQQVa.js +1 -0
- package/dist/showcase/assets/password-input-CfS4sfCl.js +1 -0
- package/dist/showcase/assets/pencil-C2OfFQMj.js +1 -0
- package/dist/showcase/assets/phone-CLvml_XI.js +1 -0
- package/dist/showcase/assets/plus-D5swsZCz.js +1 -0
- package/dist/showcase/assets/popover-menu-Bu9q96nE.js +1 -0
- package/dist/showcase/assets/popover-nCGXR4Yd.js +1 -0
- package/dist/showcase/assets/popover-xC8qczvP.js +1 -0
- package/dist/showcase/assets/products-BbSzEFvw.js +407 -0
- package/dist/showcase/assets/progress-DYfoy7pk.js +1 -0
- package/dist/showcase/assets/progress-ENNwjW3X.js +18 -0
- package/dist/showcase/assets/props-table-2pIZzGC-.js +1 -0
- package/dist/showcase/assets/props.generated-DggzG-JL.json +38611 -0
- package/dist/showcase/assets/quote-BO1bufuX.js +1 -0
- package/dist/showcase/assets/receipt-kIVP3kxJ.js +1 -0
- package/dist/showcase/assets/receipt-text-BDQIvI4l.js +1 -0
- package/dist/showcase/assets/refresh-cw-UdL93poQ.js +1 -0
- package/dist/showcase/assets/resolveAriaLabelledBy-iFo8AzEr.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-DfiI3G4i.js +1 -0
- package/dist/showcase/assets/rich-text-editor-CNtfwLC2.js +143 -0
- package/dist/showcase/assets/rich-text-editor-DB4QWptQ.js +124 -0
- package/dist/showcase/assets/rotate-ccw-DQPoMfMY.js +1 -0
- package/dist/showcase/assets/save-Cd0ZM40i.js +1 -0
- package/dist/showcase/assets/schema-form-Cyc6vCVO.js +325 -0
- package/dist/showcase/assets/scroll-area-B5NZsDdi.js +32 -0
- package/dist/showcase/assets/scroll-area-BvTq99pz.js +1 -0
- package/dist/showcase/assets/select-BRbyPtx8.js +1 -0
- package/dist/showcase/assets/select-Dymyvyh6.js +1 -0
- package/dist/showcase/assets/send-BWzI7mwi.js +1 -0
- package/dist/showcase/assets/separator-BsYPzBlF.js +1 -0
- package/dist/showcase/assets/separator-Osp0OJ78.js +28 -0
- package/dist/showcase/assets/serializeValue-B_EucO5O.js +1 -0
- package/dist/showcase/assets/settings-DRmWJILI.js +1 -0
- package/dist/showcase/assets/sheet-BKsjMYMo.js +1 -0
- package/dist/showcase/assets/shield-D1EaWJMG.js +1 -0
- package/dist/showcase/assets/shield-alert-DWsbR2jn.js +1 -0
- package/dist/showcase/assets/shield-check-DUTAPADm.js +1 -0
- package/dist/showcase/assets/shopping-bag-XmeqUqk9.js +1 -0
- package/dist/showcase/assets/sidebar-B5uO9sUB.js +1 -0
- package/dist/showcase/assets/sidebar.context-CRjgeYJL.js +1 -0
- package/dist/showcase/assets/skeleton-BtiPkfxB.js +1 -0
- package/dist/showcase/assets/skeleton-DbybIpkV.js +29 -0
- package/dist/showcase/assets/slider-vuwVVBby.js +1 -0
- package/dist/showcase/assets/sliders-horizontal-BE_cwUn0.js +1 -0
- package/dist/showcase/assets/smart-card-Dhu_1A_u.js +1 -0
- package/dist/showcase/assets/sonner-DZB-G4q5.js +22 -0
- package/dist/showcase/assets/sortable.esm-YOwRw8Hr.js +5 -0
- package/dist/showcase/assets/sparkles-N8rqKQez.js +1 -0
- package/dist/showcase/assets/spinner-B5zKCNXu.js +30 -0
- package/dist/showcase/assets/spinner-BOjRziLu.js +1 -0
- package/dist/showcase/assets/spinner-PIr8y8av.js +49 -0
- package/dist/showcase/assets/square-pen-ImRrVwT8.js +1 -0
- package/dist/showcase/assets/stacked-avatars-DnIAc098.js +1 -0
- package/dist/showcase/assets/star-BaV-UTPq.js +1 -0
- package/dist/showcase/assets/startOfDay-CtTeiGV0.js +1 -0
- package/dist/showcase/assets/stringifyLocale-CkHjdQTJ.js +1 -0
- package/dist/showcase/assets/styles-Bv0pDLVi.js +1 -0
- package/dist/showcase/assets/suggestions-QnLPdgnG.js +126 -0
- package/dist/showcase/assets/switch-DwAS_TXx.js +1 -0
- package/dist/showcase/assets/switch-xzxCDtyg.js +1 -0
- package/dist/showcase/assets/sync-LeYxWAap.js +107 -0
- package/dist/showcase/assets/table-BbEFanNu.js +1 -0
- package/dist/showcase/assets/table-CVVHBty6.js +382 -0
- package/dist/showcase/assets/table-actions-DvI9U67L.js +1 -0
- package/dist/showcase/assets/tabs-CLcyGwLd.js +1 -0
- package/dist/showcase/assets/tabs-ck8y1Bjr.js +19 -0
- package/dist/showcase/assets/tags-input-DmBY2CKI.js +1 -0
- package/dist/showcase/assets/text-button-C54O1rZM.js +1 -0
- package/dist/showcase/assets/text-link-9_mZpq_f.js +1 -0
- package/dist/showcase/assets/textarea-CHvnWHWH.js +1 -0
- package/dist/showcase/assets/textarea-jexcMklP.js +1 -0
- package/dist/showcase/assets/timelines-uvFVjEQv.js +200 -0
- package/dist/showcase/assets/toggle-group-B3fORi8i.js +1 -0
- package/dist/showcase/assets/toggles-Cox6Yk2k.js +71 -0
- package/dist/showcase/assets/toggles-group-CSvSPqCB.js +32 -0
- package/dist/showcase/assets/trash-2-CE9bDw49.js +1 -0
- package/dist/showcase/assets/trending-up-0iJl0XvC.js +1 -0
- package/dist/showcase/assets/truck-DlhOPoCD.js +1 -0
- package/dist/showcase/assets/typography-BotOITw4.js +223 -0
- package/dist/showcase/assets/ui-badge-hfmO1K3-.js +28 -0
- package/dist/showcase/assets/ui-card-Aigzxhn3.js +30 -0
- package/dist/showcase/assets/ui-table-CKif9sNO.js +42 -0
- package/dist/showcase/assets/upload-tray-BnKDNrw9.js +138 -0
- package/dist/showcase/assets/use-form-field-state-Sbo6tfr9.js +1 -0
- package/dist/showcase/assets/use-layout-link-BQ6Y9z__.js +1 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CP1vkwD7.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-J_Rvjwx3.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-BwUOowW2.js +1 -0
- package/dist/showcase/assets/useCompositeItem-D3XOIML-.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-BWfShNPP.js +1 -0
- package/dist/showcase/assets/useControlled-BF8maje6.js +1 -0
- package/dist/showcase/assets/useLabelableId-DxorZ3YW.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-DLUX6CcH.js +1 -0
- package/dist/showcase/assets/useRender-B9zzqKA1.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-BSvL8pKg.js +1 -0
- package/dist/showcase/assets/useValueChanged-DSoTBFAJ.js +1 -0
- package/dist/showcase/assets/user-BZog6aIh.js +1 -0
- package/dist/showcase/assets/user-plus-CPxlPoxf.js +1 -0
- package/dist/showcase/assets/users-BgXAp2UO.js +1 -0
- package/dist/showcase/assets/valueToPercent-gleKSaFe.js +1 -0
- package/dist/showcase/assets/vendor-profile-BLYiDIrO.js +37 -0
- package/dist/showcase/assets/video-YBnCbmIb.js +1 -0
- package/dist/showcase/assets/wrench-BFTavxzg.js +1 -0
- package/dist/showcase/assets/x-D8UN9pOu.js +1 -0
- package/dist/showcase/assets/zap-DIJUAJEb.js +1 -0
- package/dist/showcase/index.html +2 -2
- package/dist/style.css +1 -1
- package/package.json +63 -3
- package/scripts/install-skill.mjs +5 -1
- package/src/App.css +9 -388
- package/dist/_shared/accordion-BnxO7Is4.js +0 -130
- package/dist/_shared/accordion-BnxO7Is4.js.map +0 -1
- package/dist/_shared/accordion-RIN0MjPz.cjs +0 -2
- package/dist/_shared/accordion-RIN0MjPz.cjs.map +0 -1
- package/dist/_shared/action-menu-IIO9KtJ2.js +0 -96
- package/dist/_shared/action-menu-IIO9KtJ2.js.map +0 -1
- package/dist/_shared/action-menu-RAyg3cvM.cjs +0 -2
- package/dist/_shared/action-menu-RAyg3cvM.cjs.map +0 -1
- package/dist/_shared/ai-artifact--MqIfP-8.js +0 -1068
- package/dist/_shared/ai-artifact--MqIfP-8.js.map +0 -1
- package/dist/_shared/ai-artifact-D1dBeEz1.cjs +0 -3
- package/dist/_shared/ai-artifact-D1dBeEz1.cjs.map +0 -1
- package/dist/_shared/alert-D3gRd7RK.cjs +0 -2
- package/dist/_shared/alert-D3gRd7RK.cjs.map +0 -1
- package/dist/_shared/alert-DQ-tV8b-.js +0 -48
- package/dist/_shared/alert-DQ-tV8b-.js.map +0 -1
- package/dist/_shared/app-shell-C4d7kCCd.cjs +0 -2
- package/dist/_shared/app-shell-C4d7kCCd.cjs.map +0 -1
- package/dist/_shared/app-shell-CKxcpPTc.js +0 -94
- package/dist/_shared/app-shell-CKxcpPTc.js.map +0 -1
- package/dist/_shared/badge-BK5VvEgg.js +0 -108
- package/dist/_shared/badge-BK5VvEgg.js.map +0 -1
- package/dist/_shared/badge-kS_XtN-z.cjs +0 -2
- package/dist/_shared/badge-kS_XtN-z.cjs.map +0 -1
- package/dist/_shared/button-LZWDn-aU.cjs +0 -2
- package/dist/_shared/button-LZWDn-aU.cjs.map +0 -1
- package/dist/_shared/button-cnkCF8q8.js +0 -177
- package/dist/_shared/button-cnkCF8q8.js.map +0 -1
- package/dist/_shared/buttons-DHV2eZAf.cjs +0 -2
- package/dist/_shared/buttons-DHV2eZAf.cjs.map +0 -1
- package/dist/_shared/buttons-ehfMSkwP.js +0 -143
- package/dist/_shared/buttons-ehfMSkwP.js.map +0 -1
- package/dist/_shared/card-radio-group-Bf03M6c5.js +0 -158
- package/dist/_shared/card-radio-group-Bf03M6c5.js.map +0 -1
- package/dist/_shared/card-radio-group-SqPUL0Je.cjs +0 -2
- package/dist/_shared/card-radio-group-SqPUL0Je.cjs.map +0 -1
- package/dist/_shared/combobox-Cvs70ic4.js +0 -808
- package/dist/_shared/combobox-Cvs70ic4.js.map +0 -1
- package/dist/_shared/combobox-Dos9YWjk.cjs +0 -2
- package/dist/_shared/combobox-Dos9YWjk.cjs.map +0 -1
- package/dist/_shared/comments-DD2aeZVz.js +0 -946
- package/dist/_shared/comments-DD2aeZVz.js.map +0 -1
- package/dist/_shared/comments-DzwU4sNE.cjs +0 -2
- package/dist/_shared/comments-DzwU4sNE.cjs.map +0 -1
- package/dist/_shared/copyable-D7WhgEzJ.js +0 -38
- package/dist/_shared/copyable-D7WhgEzJ.js.map +0 -1
- package/dist/_shared/copyable-DDjT505-.cjs +0 -2
- package/dist/_shared/copyable-DDjT505-.cjs.map +0 -1
- package/dist/_shared/date-picker-3G3C-sIq.cjs +0 -2
- package/dist/_shared/date-picker-3G3C-sIq.cjs.map +0 -1
- package/dist/_shared/date-picker-7yuMHPYs.js +0 -1362
- package/dist/_shared/date-picker-7yuMHPYs.js.map +0 -1
- package/dist/_shared/date-pickers-B_VUgjvY.cjs +0 -2
- package/dist/_shared/date-pickers-B_VUgjvY.cjs.map +0 -1
- package/dist/_shared/date-pickers-DZXi0di0.js +0 -330
- package/dist/_shared/date-pickers-DZXi0di0.js.map +0 -1
- package/dist/_shared/display-Cuj4td-V.js +0 -1237
- package/dist/_shared/display-Cuj4td-V.js.map +0 -1
- package/dist/_shared/display-D2q93jiS.cjs +0 -8
- package/dist/_shared/display-D2q93jiS.cjs.map +0 -1
- package/dist/_shared/form-field-BNuCBym1.js +0 -319
- package/dist/_shared/form-field-BNuCBym1.js.map +0 -1
- package/dist/_shared/form-field-C4fQYsqv.cjs +0 -2
- package/dist/_shared/form-field-C4fQYsqv.cjs.map +0 -1
- package/dist/_shared/forms-BV4fHeRx.cjs +0 -2
- package/dist/_shared/forms-BV4fHeRx.cjs.map +0 -1
- package/dist/_shared/forms-DjAdYxme.js +0 -3378
- package/dist/_shared/forms-DjAdYxme.js.map +0 -1
- package/dist/_shared/header-D4Oz-mCv.cjs +0 -2
- package/dist/_shared/header-D4Oz-mCv.cjs.map +0 -1
- package/dist/_shared/header-X5DZ8vmO.js +0 -360
- package/dist/_shared/header-X5DZ8vmO.js.map +0 -1
- package/dist/_shared/heading-C7mNh03X.cjs +0 -2
- package/dist/_shared/heading-C7mNh03X.cjs.map +0 -1
- package/dist/_shared/heading-CrNpYcUr.js +0 -39
- package/dist/_shared/heading-CrNpYcUr.js.map +0 -1
- package/dist/_shared/hooks-CKXPg30g.js +0 -118
- package/dist/_shared/hooks-CKXPg30g.js.map +0 -1
- package/dist/_shared/hooks-CTiEImZp.cjs +0 -2
- package/dist/_shared/hooks-CTiEImZp.cjs.map +0 -1
- package/dist/_shared/input-Cw2uICc1.cjs +0 -2
- package/dist/_shared/input-Cw2uICc1.cjs.map +0 -1
- package/dist/_shared/input-DJo8d1Rr.js +0 -182
- package/dist/_shared/input-DJo8d1Rr.js.map +0 -1
- package/dist/_shared/item-BxlP5TO3.js +0 -224
- package/dist/_shared/item-BxlP5TO3.js.map +0 -1
- package/dist/_shared/item-X18HIqR7.cjs +0 -2
- package/dist/_shared/item-X18HIqR7.cjs.map +0 -1
- package/dist/_shared/mentions-DE9aDOMu.cjs +0 -2
- package/dist/_shared/mentions-DE9aDOMu.cjs.map +0 -1
- package/dist/_shared/mentions-DjjYmMLc.js +0 -493
- package/dist/_shared/mentions-DjjYmMLc.js.map +0 -1
- package/dist/_shared/metadata-C5MSNo7y.js +0 -236
- package/dist/_shared/metadata-C5MSNo7y.js.map +0 -1
- package/dist/_shared/metadata-Cw3Kj2Ug.cjs +0 -2
- package/dist/_shared/metadata-Cw3Kj2Ug.cjs.map +0 -1
- package/dist/_shared/money-display-B7AKxxNt.js +0 -198
- package/dist/_shared/money-display-B7AKxxNt.js.map +0 -1
- package/dist/_shared/money-display-E22wbM21.cjs +0 -2
- package/dist/_shared/money-display-E22wbM21.cjs.map +0 -1
- package/dist/_shared/navigation-B9VAXqLL.cjs +0 -2
- package/dist/_shared/navigation-B9VAXqLL.cjs.map +0 -1
- package/dist/_shared/navigation-CxoJVgfo.js +0 -420
- package/dist/_shared/navigation-CxoJVgfo.js.map +0 -1
- package/dist/_shared/overlays-C-T8RnJz.cjs +0 -2
- package/dist/_shared/overlays-C-T8RnJz.cjs.map +0 -1
- package/dist/_shared/overlays-DfRsQzD3.js +0 -633
- package/dist/_shared/overlays-DfRsQzD3.js.map +0 -1
- package/dist/_shared/page-C4jEULwi.js +0 -263
- package/dist/_shared/page-C4jEULwi.js.map +0 -1
- package/dist/_shared/page-DX3pA_tJ.cjs +0 -2
- package/dist/_shared/page-DX3pA_tJ.cjs.map +0 -1
- package/dist/_shared/popover-menu-CVAr985u.js +0 -95
- package/dist/_shared/popover-menu-CVAr985u.js.map +0 -1
- package/dist/_shared/popover-menu-Cq-LnAMh.cjs +0 -2
- package/dist/_shared/popover-menu-Cq-LnAMh.cjs.map +0 -1
- package/dist/_shared/rich-text-editor-C3gVBm-v.cjs +0 -2
- package/dist/_shared/rich-text-editor-C3gVBm-v.cjs.map +0 -1
- package/dist/_shared/rich-text-editor-Cylb-lkv.js +0 -616
- package/dist/_shared/rich-text-editor-Cylb-lkv.js.map +0 -1
- package/dist/_shared/sidebar-BeWLjIRR.js +0 -537
- package/dist/_shared/sidebar-BeWLjIRR.js.map +0 -1
- package/dist/_shared/sidebar-Bl_KRk-S.cjs +0 -2
- package/dist/_shared/sidebar-Bl_KRk-S.cjs.map +0 -1
- package/dist/_shared/sidebar-DzzdJ2xk.cjs +0 -2
- package/dist/_shared/sidebar-DzzdJ2xk.cjs.map +0 -1
- package/dist/_shared/sidebar-ux-yk-Ph.js +0 -382
- package/dist/_shared/sidebar-ux-yk-Ph.js.map +0 -1
- package/dist/_shared/smart-card-DL7esK_y.cjs +0 -2
- package/dist/_shared/smart-card-DL7esK_y.cjs.map +0 -1
- package/dist/_shared/smart-card-eBfUvQ9r.js +0 -360
- package/dist/_shared/smart-card-eBfUvQ9r.js.map +0 -1
- package/dist/_shared/spinner-Bvjs1ybK.cjs +0 -2
- package/dist/_shared/spinner-Bvjs1ybK.cjs.map +0 -1
- package/dist/_shared/spinner-XcfVYbbp.js +0 -67
- package/dist/_shared/spinner-XcfVYbbp.js.map +0 -1
- package/dist/_shared/text-DzKt9cyb.cjs +0 -2
- package/dist/_shared/text-DzKt9cyb.cjs.map +0 -1
- package/dist/_shared/text-qsEg5GdP.js +0 -74
- package/dist/_shared/text-qsEg5GdP.js.map +0 -1
- package/dist/_shared/textarea-BAKapsLQ.cjs +0 -2
- package/dist/_shared/textarea-BAKapsLQ.cjs.map +0 -1
- package/dist/_shared/textarea-Bfv1KxBm.js +0 -119
- package/dist/_shared/textarea-Bfv1KxBm.js.map +0 -1
- package/dist/_shared/typography-4CSyoCj9.js +0 -102
- package/dist/_shared/typography-4CSyoCj9.js.map +0 -1
- package/dist/_shared/typography-DKn7P4wX.cjs +0 -2
- package/dist/_shared/typography-DKn7P4wX.cjs.map +0 -1
- package/dist/_shared/ui-provider-CQJ1glwN.js +0 -85
- package/dist/_shared/ui-provider-CQJ1glwN.js.map +0 -1
- package/dist/_shared/ui-provider-RIYE7O_V.cjs +0 -2
- package/dist/_shared/ui-provider-RIYE7O_V.cjs.map +0 -1
- package/dist/components/base/table/index.cjs.map +0 -1
- package/dist/components/base/table/index.js.map +0 -1
- package/dist/showcase/assets/AreaChart-CzBEYPbz.js +0 -6
- package/dist/showcase/assets/CSPContext-ImKusJJ_.js +0 -1
- package/dist/showcase/assets/CompositeItem-C-DIOBdJ.js +0 -1
- package/dist/showcase/assets/CompositeRoot-Ce4ORgG2.js +0 -1
- package/dist/showcase/assets/DialogTrigger-DWvMs7dp.js +0 -1
- package/dist/showcase/assets/FormContext-BeC1MJpT.js +0 -1
- package/dist/showcase/assets/PreviewLayout-N1PTTyZK.js +0 -1
- package/dist/showcase/assets/RadioGroup-DAWaa26D.js +0 -1
- package/dist/showcase/assets/Separator-guDkmky0.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-BJ7hWga8.js +0 -1
- package/dist/showcase/assets/accordion-CiM9WhkT.js +0 -172
- package/dist/showcase/assets/accordion-variants-C_sHrQ7C.js +0 -1
- package/dist/showcase/assets/action-menu-mlWlGE5P.js +0 -1
- package/dist/showcase/assets/activities-YWR4wh4f.js +0 -501
- package/dist/showcase/assets/activities-feed-card-Cglnf5as.js +0 -1
- package/dist/showcase/assets/admin-BtOtzPd4.js +0 -80
- package/dist/showcase/assets/ai-8iNe0R1M.js +0 -41
- package/dist/showcase/assets/ai-artifact-CQL5krnJ.js +0 -2
- package/dist/showcase/assets/ai-chat-BzCdOOc6.js +0 -568
- package/dist/showcase/assets/ai-elements-CBHy2xWU.js +0 -379
- package/dist/showcase/assets/ai-new-CgL5NeVs.js +0 -167
- package/dist/showcase/assets/ai-tool-call-D9AsaWJF.js +0 -1
- package/dist/showcase/assets/alert-B2BuF4vZ.js +0 -59
- package/dist/showcase/assets/alert-BkVaTONJ.js +0 -1
- package/dist/showcase/assets/api-key-list-C-_59dli.js +0 -73
- package/dist/showcase/assets/app-sidebar-BdOu5rVn.js +0 -1
- package/dist/showcase/assets/arrow-down-BpVaq9-H.js +0 -1
- package/dist/showcase/assets/arrow-left-C40rxfqj.js +0 -1
- package/dist/showcase/assets/arrow-right-BclouSfP.js +0 -1
- package/dist/showcase/assets/arrow-up-BpWEnkdX.js +0 -1
- package/dist/showcase/assets/arrow-up-right-Z5sMa1HH.js +0 -1
- package/dist/showcase/assets/avatar-CDNhh3rv.js +0 -57
- package/dist/showcase/assets/avatar-QBwg3fvR.js +0 -1
- package/dist/showcase/assets/badge-check-DXDQ3SaL.js +0 -1
- package/dist/showcase/assets/badge-tAdYt--9.js +0 -28
- package/dist/showcase/assets/bell-CVEeEWw4.js +0 -1
- package/dist/showcase/assets/bot-Bcx5mNAQ.js +0 -1
- package/dist/showcase/assets/box-Dgy2Xc70.js +0 -1
- package/dist/showcase/assets/brain-DsoOsd7m.js +0 -1
- package/dist/showcase/assets/brand-DAyuXNUz.js +0 -40
- package/dist/showcase/assets/breadcrumb-CC4Z8eMY.js +0 -1
- package/dist/showcase/assets/breadcrumb-DCbAzeMs.js +0 -52
- package/dist/showcase/assets/breadcrumbs-DGZMpIoQ.js +0 -1
- package/dist/showcase/assets/briefcase-2uLXCvAZ.js +0 -1
- package/dist/showcase/assets/button-DhQ6rMPU.js +0 -44
- package/dist/showcase/assets/button-group-Ce9vnZ1H.js +0 -1
- package/dist/showcase/assets/buttons-CHja0LUL.js +0 -270
- package/dist/showcase/assets/calendar-BbiK8AMZ.js +0 -16
- package/dist/showcase/assets/calendar-BhZpIjCo.js +0 -1
- package/dist/showcase/assets/calendar-oKaDsUIy.js +0 -1
- package/dist/showcase/assets/card-DoU1VD79.js +0 -1
- package/dist/showcase/assets/cards-3OgH8m3F.js +0 -328
- package/dist/showcase/assets/chart-column-6Tn3WAT9.js +0 -1
- package/dist/showcase/assets/chevron-down-x7TQsvYY.js +0 -1
- package/dist/showcase/assets/chevron-left-CglzJgA2.js +0 -1
- package/dist/showcase/assets/chevron-right-CDDMIkYP.js +0 -1
- package/dist/showcase/assets/chevron-up-Dc3aAaGH.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-DJNnSBAj.js +0 -1
- package/dist/showcase/assets/circle-BBmNFtO8.js +0 -1
- package/dist/showcase/assets/circle-alert-DJevf3tT.js +0 -1
- package/dist/showcase/assets/circle-check-BCxORlAM.js +0 -1
- package/dist/showcase/assets/circle-check-big-tiuK2w0-.js +0 -1
- package/dist/showcase/assets/circle-dot-BEVVQjgN.js +0 -1
- package/dist/showcase/assets/circle-question-mark-BQrUUiKD.js +0 -1
- package/dist/showcase/assets/circle-x-CoV_AUtZ.js +0 -1
- package/dist/showcase/assets/clock-Bn2R4aDX.js +0 -1
- package/dist/showcase/assets/code-xml-BVYp_JDX.js +0 -1
- package/dist/showcase/assets/collapsible-Co2Y739_.js +0 -27
- package/dist/showcase/assets/collapsible-DPbftgrO.js +0 -1
- package/dist/showcase/assets/combobox-Cm4__LnJ.js +0 -622
- package/dist/showcase/assets/command-DQFIxPN9.js +0 -45
- package/dist/showcase/assets/command-KNncGgZW.js +0 -1
- package/dist/showcase/assets/comment-composer-DTJtqYGP.js +0 -1
- package/dist/showcase/assets/comment-item-DIEYMmV_.js +0 -1
- package/dist/showcase/assets/comments-B0BbDp-3.js +0 -357
- package/dist/showcase/assets/commerce-BOWBCLA-.js +0 -79
- package/dist/showcase/assets/commerce-extras-C6CWYfpC.js +0 -173
- package/dist/showcase/assets/composite-YicTVAO0.js +0 -1
- package/dist/showcase/assets/contact-card-DQPRIlnJ.js +0 -65
- package/dist/showcase/assets/content-container-CHXwWViz.js +0 -1
- package/dist/showcase/assets/copyable-CjTwco9O.js +0 -96
- package/dist/showcase/assets/course-card-CTQScd2C.js +0 -113
- package/dist/showcase/assets/cpu-D52NjUWq.js +0 -1
- package/dist/showcase/assets/credit-card-BoDfW0R8.js +0 -1
- package/dist/showcase/assets/currency-BPREbpDA.js +0 -149
- package/dist/showcase/assets/dark-surfaces-BCG45K2m.js +0 -90
- package/dist/showcase/assets/database-DeGR0hed.js +0 -1
- package/dist/showcase/assets/date-block-Bl1kXJrM.js +0 -1
- package/dist/showcase/assets/date-picker-BHbZa4ML.js +0 -1
- package/dist/showcase/assets/date-pickers-DumwUEXE.js +0 -110
- package/dist/showcase/assets/dense-info-DxfgBw9Z.js +0 -106
- package/dist/showcase/assets/dialog-BYHZvlL8.js +0 -1
- package/dist/showcase/assets/display-BXMGOjL3.js +0 -392
- package/dist/showcase/assets/dollar-sign-BipUTVXC.js +0 -1
- package/dist/showcase/assets/download-CxspQgIc.js +0 -1
- package/dist/showcase/assets/dropdown-menu-Q1BV3wPP.js +0 -1
- package/dist/showcase/assets/dropzone-OivkuTPF.js +0 -1
- package/dist/showcase/assets/ellipsis-Bn-XgoA7.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-Bcl9HX9k.js +0 -1
- package/dist/showcase/assets/empty-CcafLcw-.js +0 -1
- package/dist/showcase/assets/empty-item-CiJeS8ZV.js +0 -49
- package/dist/showcase/assets/empty-state-B1RYYjUP.js +0 -188
- package/dist/showcase/assets/enhanced-activities-IB811DS6.js +0 -361
- package/dist/showcase/assets/event-calendar-C2VCfcUz.js +0 -138
- package/dist/showcase/assets/event-log-ckmsCPmG.js +0 -330
- package/dist/showcase/assets/example-C6-_Sy6B.js +0 -1
- package/dist/showcase/assets/external-link-Bg-_8Uq7.js +0 -1
- package/dist/showcase/assets/eye-JVsUA85G.js +0 -1
- package/dist/showcase/assets/feature-announcement-C4aRXesF.js +0 -34
- package/dist/showcase/assets/file-4pOq58jl.js +0 -1
- package/dist/showcase/assets/file-text-BIi71mZ1.js +0 -1
- package/dist/showcase/assets/filters-CxrcnmLU.js +0 -78
- package/dist/showcase/assets/flag-DeiJmomk.js +0 -1
- package/dist/showcase/assets/folder-open-zMXBpVNs.js +0 -1
- package/dist/showcase/assets/form-sizing-B8jbL5tL.js +0 -1
- package/dist/showcase/assets/format-BG4laCmp.js +0 -1
- package/dist/showcase/assets/format-metric-value-B94EDo8X.js +0 -1
- package/dist/showcase/assets/forms-PsN5zTLx.js +0 -793
- package/dist/showcase/assets/getPseudoElementBounds-B7wr19E1.js +0 -1
- package/dist/showcase/assets/gift-CKFIh1Wh.js +0 -1
- package/dist/showcase/assets/giftcard-cards-BfOlIHmA.js +0 -85
- package/dist/showcase/assets/git-branch-BO9i8XkJ.js +0 -1
- package/dist/showcase/assets/global-search-CNmUraNa.js +0 -90
- package/dist/showcase/assets/global-search-DkJkQ0Vs.js +0 -1
- package/dist/showcase/assets/globe-47T22W56.js +0 -1
- package/dist/showcase/assets/gradient-card-CXSY29TZ.js +0 -58
- package/dist/showcase/assets/header-eZHN-s6P.js +0 -1
- package/dist/showcase/assets/header-notifications-Caa9i87J.js +0 -1
- package/dist/showcase/assets/heart-DjKkkUsX.js +0 -1
- package/dist/showcase/assets/house-DKxCiHyB.js +0 -1
- package/dist/showcase/assets/icon-badge-Bcm8TlJi.js +0 -1
- package/dist/showcase/assets/image-r-gMI33G.js +0 -1
- package/dist/showcase/assets/inbox-ZxSy1pgX.js +0 -1
- package/dist/showcase/assets/index-B8DVXCmf.js +0 -10
- package/dist/showcase/assets/index-DbLs6mcj.css +0 -2
- package/dist/showcase/assets/inertValue-i0cAMG-0.js +0 -1
- package/dist/showcase/assets/info-B1KV2DkO.js +0 -1
- package/dist/showcase/assets/inline-stat-D0sE-A4C.js +0 -1
- package/dist/showcase/assets/input-25epjsiD.js +0 -1
- package/dist/showcase/assets/input-CnwMt9Sr.js +0 -1
- package/dist/showcase/assets/input-group-DSKyV7we.js +0 -47
- package/dist/showcase/assets/input-group-x5eWeAZg.js +0 -1
- package/dist/showcase/assets/inputs-B2Maxr14.js +0 -49
- package/dist/showcase/assets/invoice-header-Gxl--yFu.js +0 -36
- package/dist/showcase/assets/invoice-items-BtoaGNjE.js +0 -36
- package/dist/showcase/assets/invoice-mini-DHFSZegy.js +0 -14
- package/dist/showcase/assets/invoice-table-6dmU_KrL.js +0 -30
- package/dist/showcase/assets/isSameDay-BrDHfKHm.js +0 -1
- package/dist/showcase/assets/isToday-VtoSc1IH.js +0 -1
- package/dist/showcase/assets/italic-CXkAsf6H.js +0 -1
- package/dist/showcase/assets/item-CGOThKAx.js +0 -1
- package/dist/showcase/assets/item-CMRbW6s-.js +0 -1
- package/dist/showcase/assets/item-sw6fAZcn.js +0 -117
- package/dist/showcase/assets/kanban-CKGYTXji.js +0 -175
- package/dist/showcase/assets/label-BmKD22pm.js +0 -1
- package/dist/showcase/assets/layout-app-shell-CeMHzVNn.js +0 -501
- package/dist/showcase/assets/layout-containers-8Drow5f9.js +0 -96
- package/dist/showcase/assets/layout-header-BlBw4JAV.js +0 -170
- package/dist/showcase/assets/layout-page-BQfgHFau.js +0 -122
- package/dist/showcase/assets/layout-sidebar-DZer5Uuh.js +0 -224
- package/dist/showcase/assets/layout-users-nuioUkeu.js +0 -104
- package/dist/showcase/assets/lock-DQcZ9cEj.js +0 -1
- package/dist/showcase/assets/mail-yNXDtmNr.js +0 -1
- package/dist/showcase/assets/map-JMM1F9VR.js +0 -124
- package/dist/showcase/assets/map-pin-2WS7oVo3.js +0 -1
- package/dist/showcase/assets/menus-mK-FeNki.js +0 -89
- package/dist/showcase/assets/message-square-DGTAjNJG.js +0 -1
- package/dist/showcase/assets/metadata-list-CBxuQjVO.js +0 -278
- package/dist/showcase/assets/metric-BWGrmyD6.js +0 -1
- package/dist/showcase/assets/metric-grid-CewIJQvo.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-kLBN8u5z.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-COnc7VN9.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-BR83UVqi.js +0 -77
- package/dist/showcase/assets/metrics-comparison-C0SUjdMg.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-Orq1hLk-.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-C924q2Xx.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-Cwi05ruK.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-D97nkrge.js +0 -42
- package/dist/showcase/assets/metrics-overview-BOc8y3QX.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-Cilh-A5D.js +0 -54
- package/dist/showcase/assets/minus-DvrDGcTv.js +0 -1
- package/dist/showcase/assets/money-display-0egZ_O76.js +0 -1
- package/dist/showcase/assets/month-year-picker-2cWfwnmP.js +0 -1
- package/dist/showcase/assets/navigation-BnYme-Wj.js +0 -90
- package/dist/showcase/assets/navigation-CLQWl32A.js +0 -230
- package/dist/showcase/assets/navigation-extras-BPDoAdXF.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-26XVWgDF.js +0 -119
- package/dist/showcase/assets/overlays-2sVGhanu.js +0 -88
- package/dist/showcase/assets/overlays-BaR6HDwB.js +0 -394
- package/dist/showcase/assets/package-CUNvdlBi.js +0 -1
- package/dist/showcase/assets/page-action-button-DgvZVtzx.js +0 -1
- package/dist/showcase/assets/page-header-4F_iaFPW.js +0 -1
- package/dist/showcase/assets/pagination-CDjZ6jiZ.js +0 -42
- package/dist/showcase/assets/pagination-g1NQaN42.js +0 -1
- package/dist/showcase/assets/paperclip-CDxdf8Os.js +0 -1
- package/dist/showcase/assets/pencil-Ddc5JwBe.js +0 -1
- package/dist/showcase/assets/phone-NIZ5SwgK.js +0 -1
- package/dist/showcase/assets/plus-C9kwz7rW.js +0 -1
- package/dist/showcase/assets/popover-DtnuOBgr.js +0 -1
- package/dist/showcase/assets/popover-T85aV4zW.js +0 -1
- package/dist/showcase/assets/popover-menu-BRGSZe4f.js +0 -1
- package/dist/showcase/assets/progress-CcZjuzK3.js +0 -1
- package/dist/showcase/assets/progress-DbouniUl.js +0 -18
- package/dist/showcase/assets/props-table-CM_1cocj.js +0 -1
- package/dist/showcase/assets/props.generated-Bg627Jai.json +0 -32829
- package/dist/showcase/assets/quote-vjygm2-7.js +0 -1
- package/dist/showcase/assets/receipt-CfMgwFPl.js +0 -1
- package/dist/showcase/assets/refresh-cw-Tu5E_cGA.js +0 -1
- package/dist/showcase/assets/resolveAriaLabelledBy-B6CR9UP2.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-CipUZh6i.js +0 -1
- package/dist/showcase/assets/rich-text-editor-BMZUyuQX.js +0 -143
- package/dist/showcase/assets/rich-text-editor-HwYIeWYW.js +0 -124
- package/dist/showcase/assets/rotate-ccw-B4Wi4ws7.js +0 -1
- package/dist/showcase/assets/scroll-area-CuB_woqF.js +0 -1
- package/dist/showcase/assets/scroll-area-I4mSIpRq.js +0 -32
- package/dist/showcase/assets/select-CF3cKjCo.js +0 -1
- package/dist/showcase/assets/send-Blu_n6xl.js +0 -1
- package/dist/showcase/assets/separator-9mrRf_DZ.js +0 -28
- package/dist/showcase/assets/separator-DUKleOvU.js +0 -1
- package/dist/showcase/assets/settings-DlKX-bZT.js +0 -1
- package/dist/showcase/assets/sheet-CwcLVoF3.js +0 -1
- package/dist/showcase/assets/shield-BD0Y8Jj3.js +0 -1
- package/dist/showcase/assets/shield-alert-DNOTmkwG.js +0 -1
- package/dist/showcase/assets/shield-check-Sbul0dUK.js +0 -1
- package/dist/showcase/assets/shopping-bag-EDVpxI9n.js +0 -1
- package/dist/showcase/assets/sidebar-JWZ88xw5.js +0 -1
- package/dist/showcase/assets/sidebar.context-D3P7qppn.js +0 -1
- package/dist/showcase/assets/skeleton-CIS1Kaas.js +0 -1
- package/dist/showcase/assets/skeleton-CJCJDQFt.js +0 -29
- package/dist/showcase/assets/smart-card-7szg_qSt.js +0 -1
- package/dist/showcase/assets/sonner-DMHXr9Ce.js +0 -22
- package/dist/showcase/assets/sortable.esm-DVuzVA1U.js +0 -5
- package/dist/showcase/assets/sparkles-BEa1AgNq.js +0 -1
- package/dist/showcase/assets/spinner-Bi-T9etI.js +0 -30
- package/dist/showcase/assets/spinner-C77XIUVf.js +0 -1
- package/dist/showcase/assets/spinner-DK9BAT6K.js +0 -49
- package/dist/showcase/assets/square-pen-N0mq-vPu.js +0 -1
- package/dist/showcase/assets/stacked-avatars-DORVEni2.js +0 -1
- package/dist/showcase/assets/star-Dbtxr60S.js +0 -1
- package/dist/showcase/assets/startOfDay-BJgxz4yq.js +0 -1
- package/dist/showcase/assets/styles-CwW4IBUg.js +0 -1
- package/dist/showcase/assets/switch-B4iRxZFU.js +0 -1
- package/dist/showcase/assets/switch-B_rnbXwy.js +0 -1
- package/dist/showcase/assets/table-BJ9HSK6H.js +0 -1
- package/dist/showcase/assets/table-IB0MEYf4.js +0 -389
- package/dist/showcase/assets/tabs-D02JL-Fa.js +0 -1
- package/dist/showcase/assets/tabs-XpsVS3ff.js +0 -19
- package/dist/showcase/assets/text-button-BWCgXGnr.js +0 -1
- package/dist/showcase/assets/text-link-TzuDnSCF.js +0 -1
- package/dist/showcase/assets/textarea-B7DUIiH_.js +0 -1
- package/dist/showcase/assets/textarea-CV5gNzXf.js +0 -1
- package/dist/showcase/assets/timelines-CF0UYhwm.js +0 -200
- package/dist/showcase/assets/toggle-group-CK8mBx6E.js +0 -1
- package/dist/showcase/assets/toggles-CqJSApnF.js +0 -71
- package/dist/showcase/assets/toggles-group-v0JijMzG.js +0 -32
- package/dist/showcase/assets/trash-2-_xF5j-Ya.js +0 -1
- package/dist/showcase/assets/trending-up-BCzmjYzm.js +0 -1
- package/dist/showcase/assets/truck-CryH-5dx.js +0 -1
- package/dist/showcase/assets/typography-D3PFbRpb.js +0 -215
- package/dist/showcase/assets/ui-badge-ByyFPLOB.js +0 -28
- package/dist/showcase/assets/ui-card-DYLLiD89.js +0 -30
- package/dist/showcase/assets/ui-table-DW4QIwxK.js +0 -42
- package/dist/showcase/assets/upload-tray-ZdL_dzc0.js +0 -138
- package/dist/showcase/assets/useAnchoredPopupScrollLock-AFPLx3SZ.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-CeHRY8U2.js +0 -1
- package/dist/showcase/assets/useCompositeItem-C-1zP8zD.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-D4ugfKLB.js +0 -1
- package/dist/showcase/assets/useControlled-Cpg8gDqb.js +0 -1
- package/dist/showcase/assets/useLabelableId-CSxAHpU-.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-BLV8Pa2n.js +0 -1
- package/dist/showcase/assets/useRender-DparzvOu.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-CrYLO2g5.js +0 -1
- package/dist/showcase/assets/useValueChanged-DwgbaueK.js +0 -1
- package/dist/showcase/assets/user-CGcV8Ppb.js +0 -1
- package/dist/showcase/assets/user-plus-iOsntM6P.js +0 -1
- package/dist/showcase/assets/users-DzgXeZbf.js +0 -1
- package/dist/showcase/assets/valueToPercent-B5BHWU68.js +0 -1
- package/dist/showcase/assets/vendor-profile-DbFPkGn9.js +0 -37
- package/dist/showcase/assets/wrench-1Ra9xb3d.js +0 -1
- package/dist/showcase/assets/x-CE8oevyh.js +0 -1
- package/dist/showcase/assets/zap-se3n2YVD.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_shared/ui-provider-RIYE7O_V.cjs"),t=require("../../../lib/utils.cjs"),n=require("../../../_shared/text-DzKt9cyb.cjs"),r=require("../../../_shared/badge-kS_XtN-z.cjs"),i=require("../../../_shared/button-LZWDn-aU.cjs"),a=require("../../../_shared/smart-card-DL7esK_y.cjs"),o=require("../../../_shared/dropdown-menu-CHQzQWUK.cjs");let s=require("react"),c=require("date-fns"),l=require("react/jsx-runtime"),u=require("lucide-react");var d={icon:u.CircleDot,tone:`neutral`},f={created:{icon:u.Plus,tone:`success`,label:`Created`},updated:{icon:u.Pencil,tone:`info`,label:`Updated`},edited:{icon:u.FileEdit,tone:`info`,label:`Edited`},deleted:{icon:u.Trash2,tone:`destructive`,label:`Deleted`},cancelled:{icon:u.Ban,tone:`destructive`,label:`Cancelled`},restored:{icon:u.Sparkles,tone:`success`,label:`Restored`},status_changed:{icon:u.ArrowLeftRight,tone:`primary`,label:`Status changed`},status_transition:{icon:u.ArrowLeftRight,tone:`primary`,label:`Status changed`},status_override:{icon:u.ArrowLeftRight,tone:`warning`,label:`Status overridden`},assigned:{icon:u.UserPlus,tone:`info`,label:`Assigned`},unassigned:{icon:u.UserMinus,tone:`destructive`,label:`Unassigned`},mail_sent:{icon:u.Mail,tone:`info`,label:`Email sent`},mail_delivered:{icon:u.MailCheck,tone:`success`,label:`Email delivered`},mail_opened:{icon:u.MailOpen,tone:`info`,label:`Email opened`},mail_clicked:{icon:u.MailOpen,tone:`info`,label:`Email clicked`},mail_bounced:{icon:u.MailX,tone:`destructive`,label:`Email bounced`},mail_failed:{icon:u.MailX,tone:`destructive`,label:`Email failed`},comment_created:{icon:u.MessageSquare,tone:`warning`,label:`Comment posted`},comment_deleted:{icon:u.MessageSquare,tone:`destructive`,label:`Comment deleted`},paid:{icon:u.Check,tone:`success`,label:`Paid`},refunded:{icon:u.ArrowLeftRight,tone:`warning`,label:`Refunded`},confirmed:{icon:u.ShieldCheck,tone:`success`,label:`Confirmed`},favorited:{icon:u.Heart,tone:`warning`,label:`Favorited`},ordered:{icon:u.ShoppingBag,tone:`primary`,label:`Order placed`},published:{icon:u.Star,tone:`success`,label:`Published`},flagged:{icon:u.Flag,tone:`warning`,label:`Flagged`},linked:{icon:u.LinkIcon,tone:`info`,label:`Linked`},failed:{icon:u.AlertTriangle,tone:`destructive`,label:`Failed`},health_check_failed:{icon:u.AlertTriangle,tone:`destructive`,label:`Health check failed`}};function p(e,t){return t[e]??d}var m={title:`Activity`,empty:`No activity yet.`,loading:`Loading activity…`,today:`Today`,yesterday:`Yesterday`,undated:`Undated`,you:`You`,showChanges:`Show changes`,hideChanges:`Hide changes`,actionsLabel:`Activity actions`,moreLabel:`More`,sources:{comment:`Comment`,mail:`Mail`,booking_log:`Booking log`,activity_log:``,system:`System`},events:{}};function h(e,t){return e.replace(/\{\{\s*(\w+)\s*\}\}/g,(e,n)=>{let r=t[n];return r===void 0?e:String(r)})}function g(e,t,n){if(!e)return t.undated;let r=new Date(e);if((0,c.isToday)(r))return t.today;if((0,c.isYesterday)(r))return t.yesterday;try{return new Intl.DateTimeFormat(n,{year:`numeric`,month:`long`,day:`numeric`}).format(r)}catch{return new Intl.DateTimeFormat(void 0,{year:`numeric`,month:`long`,day:`numeric`}).format(r)}}function _({activities:e,groupByDate:t=!0,expandedByDefault:n=!1,locale:r,strings:i,formatDateGroupLabel:a}){let[o,c]=(0,s.useState)({}),l=(0,s.useMemo)(()=>{let t=new Map;return e.map(e=>{let n=[String(e.id??``).trim(),String(e.createdAt??``).trim(),String(e.event??``).trim(),String(e.source??``).trim()].join(`:`),r=(t.get(n)??0)+1;return t.set(n,r),{activity:e,key:`${n}:${r}`}})},[e]),u=(0,s.useMemo)(()=>{if(!t)return l.length>0?[{label:``,items:l}]:[];let e=[],n=`__init__`,o=[],s=e=>a?a(e,i):g(e,i,r);for(let t of l){let r=s(t.activity.createdAt??null);r===n?o.push(t):(o.length>0&&e.push({label:n,items:o}),n=r,o=[t])}return o.length>0&&e.push({label:n,items:o}),e},[l,t,r,i,a]),d=(0,s.useCallback)(e=>o[e]??n,[o,n]),f=(0,s.useCallback)(e=>{c(t=>({...t,[e]:!(t[e]??!1)}))},[]),p=(0,s.useCallback)((e,t)=>{c(n=>({...n,[e]:t}))},[]),m=(0,s.useCallback)(()=>{let e={};for(let t of l)e[t.activity.id]=!0;c(e)},[l]),h=(0,s.useCallback)(()=>c({}),[]);return{groups:u,total:l.length,isExpanded:d,toggleExpanded:f,setExpanded:p,expandAll:m,collapseAll:h}}function v({resources:e,onResourcesChange:t}={}){let[n,r]=(0,s.useState)(()=>e??{}),i=(0,s.useRef)(e);(0,s.useEffect)(()=>{e!==i.current&&(i.current=e,r(e??{}))},[e]);let a=(0,s.useRef)(t);(0,s.useEffect)(()=>{a.current=t},[t]);let o=(0,s.useCallback)(e=>{a.current?.(e)},[]),c=(0,s.useCallback)((e,t)=>{r(n=>{let r={...n,[e]:t};return o(r),r})},[o]),l=(0,s.useCallback)((e,t)=>{r(n=>{let r=n[e];if(!r)return n;let i={...n,[e]:{...r,...t}};return o(i),i})},[o]),u=(0,s.useCallback)(e=>{r(t=>{if(!(e in t))return t;let n={...t};return delete n[e],o(n),n})},[o]),d=(0,s.useCallback)(e=>{r(e),o(e)},[o]),f=(0,s.useCallback)(()=>{let e=i.current??{};r(e),o(e)},[o]);return{registry:n,get:(0,s.useCallback)(e=>n[typeof e==`string`?e:e.key],[n]),register:c,update:l,remove:u,setAll:d,reset:f}}function y({activity:e,actions:t,onAction:n,label:r}){return t.length===0?null:(0,l.jsxs)(o.t,{children:[(0,l.jsx)(o.g,{render:e=>(0,l.jsx)(i.t,{...e,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-sm`,"aria-label":r,className:`h-7 w-7 text-muted-foreground`,children:(0,l.jsx)(u.MoreHorizontal,{className:`size-4`})})}),(0,l.jsx)(o.r,{align:`end`,className:`min-w-[160px]`,children:t.map(t=>{let r=t.icon;return(0,l.jsxs)(o.a,{onClick:()=>{t.disabled||(t.onClick(e),n?.(t.id,e))},disabled:t.disabled,variant:t.tone===`destructive`?`destructive`:`default`,className:`gap-2 px-2 py-1.5 text-xs`,children:[!!r&&(0,l.jsx)(r,{className:`size-3.5`}),t.label]},t.id)})})]})}function b({change:e}){let t=e.old!==null&&e.old!==void 0,r=e.new!==null&&e.new!==void 0;return!t&&!r?(0,l.jsx)(n.t,{size:`xs`,tag:`span`,children:e.description}):(0,l.jsxs)(n.t,{tag:`span`,size:`xs`,className:`inline-flex flex-wrap items-baseline gap-1`,children:[!!t&&(0,l.jsx)(n.t,{tag:`span`,size:`xs`,className:`rounded bg-destructive/10 text-destructive line-through px-1 py-px`,children:e.old}),t&&r&&(0,l.jsx)(n.t,{tag:`span`,size:`xs`,type:`secondary`,children:`→`}),!!r&&(0,l.jsx)(n.t,{tag:`span`,size:`xs`,className:`rounded bg-success/15 text-success px-1 py-px`,children:e.new})]})}function x({changes:e,className:r}){return e.length===0?null:(0,l.jsx)(`div`,{className:t.cn(`space-y-1.5 rounded-lg border border-border/60 bg-muted/30 px-3 py-2`,r),children:e.map(e=>(0,l.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,l.jsx)(n.t,{size:`xs`,type:`secondary`,weight:`medium`,className:`shrink-0`,children:e.label}),(0,l.jsx)(b,{change:e})]},`${e.key}-${e.label}`))})}function S({label:e,isFirst:r,className:i}){return e===``?null:(0,l.jsx)(n.t,{size:`xxs`,type:`secondary`,weight:`medium`,className:t.cn(`uppercase tracking-wider`,!r&&`mt-5`,i),children:e})}function C({title:e,hint:r,className:i}){return(0,l.jsxs)(`div`,{className:t.cn(`flex flex-col items-center justify-center gap-2 px-6 py-10 text-center`,i),children:[(0,l.jsx)(`span`,{className:`flex size-9 items-center justify-center rounded-full bg-muted text-muted-foreground`,children:(0,l.jsx)(u.Activity,{className:`size-4`})}),(0,l.jsx)(n.t,{weight:`medium`,children:e}),!!r&&(0,l.jsx)(n.t,{size:`xs`,type:`secondary`,children:r})]})}var w={primary:{bg:`bg-primary/15`,fg:`text-primary`,dot:`bg-primary`,line:`bg-primary/30`,chipBg:`bg-primary/10`,chipFg:`text-primary`},success:{bg:`bg-success/15`,fg:`text-success`,dot:`bg-success`,line:`bg-success/30`,chipBg:`bg-success/15`,chipFg:`text-success`},warning:{bg:`bg-warning/30`,fg:`text-warning-foreground`,dot:`bg-warning`,line:`bg-warning/40`,chipBg:`bg-warning/30`,chipFg:`text-warning-foreground`},destructive:{bg:`bg-destructive/15`,fg:`text-destructive`,dot:`bg-destructive`,line:`bg-destructive/30`,chipBg:`bg-destructive/15`,chipFg:`text-destructive`},info:{bg:`bg-info/15`,fg:`text-info`,dot:`bg-info`,line:`bg-info/30`,chipBg:`bg-info/15`,chipFg:`text-info`},neutral:{bg:`bg-muted`,fg:`text-muted-foreground`,dot:`bg-muted-foreground/60`,line:`bg-border`,chipBg:`bg-muted`,chipFg:`text-muted-foreground`}},T={primary:`primary`,success:`success`,warning:`warning`,destructive:`destructive`,info:`info`,neutral:`secondary`};function E({resource:e,config:i,fallbackText:a,onClick:o}){let s=w[i?.tone??`neutral`],c=i?.icon??u.CircleDot,d=i?.label??a??e.label??e.key,f=typeof o==`function`,p=(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c,{className:t.cn(`size-3 shrink-0`,s.fg)}),(0,l.jsx)(n.t,{tag:`span`,size:`xs`,weight:`medium`,className:s.chipFg,children:d}),!!i?.tags&&i.tags.length>0&&(0,l.jsx)(n.t,{tag:`span`,size:`xxs`,type:`secondary`,className:`border-l border-current/20 pl-1.5 ml-0.5`,children:i.tags.join(` · `)}),!!i?.badge&&(0,l.jsx)(r.t,{inline:!0,variant:T[i.badge.tone??`neutral`],className:`ml-1`,children:i.badge.label})]}),m=t.cn(`inline-flex items-center gap-1 rounded-full px-2 py-0.5 align-baseline`,`border border-border/60`,s.chipBg,f&&`cursor-pointer transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`);return f?(0,l.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o?.()},className:m,title:i?.note,children:p}):(0,l.jsx)(`span`,{className:m,title:i?.note,children:p})}function D({actorId:e,text:t,href:r,activity:i,youLabel:a,currentUserId:o,onActorClick:s}){let c=o!==void 0&&e!==void 0&&o===e?a:t,u=i.actor??{id:e,name:t};return r?(0,l.jsx)(`a`,{href:r,onClick:e=>{s&&(e.preventDefault(),e.stopPropagation(),s(u,i))},className:`font-semibold text-foreground underline-offset-2 hover:underline`,children:c}):s?(0,l.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),s(u,i)},className:`font-semibold text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded`,children:c}):(0,l.jsx)(n.t,{tag:`span`,weight:`semibold`,children:c})}function O(e,t){return e.map((e,i)=>{let a=`seg-${i}-${e.type}`;switch(e.type){case`actor`:return(0,l.jsxs)(s.Fragment,{children:[(0,l.jsx)(D,{actorId:e.actorId,text:e.text,href:e.href,activity:t.activity,youLabel:t.youLabel,currentUserId:t.currentUserId,onActorClick:t.onActorClick}),` `]},a);case`field`:case`value`:return(0,l.jsxs)(s.Fragment,{children:[(0,l.jsx)(n.t,{tag:`span`,weight:`semibold`,children:e.text}),` `]},a);case`status`:return(0,l.jsxs)(s.Fragment,{children:[(0,l.jsx)(r.t,{inline:!0,variant:T[e.tone??`neutral`],children:e.text}),` `]},a);case`resource`:{let n=t.getResourceConfig?.(e.resource);return(0,l.jsxs)(s.Fragment,{children:[(0,l.jsx)(E,{resource:e.resource,config:n,fallbackText:e.text,onClick:t.onResourceClick?()=>t.onResourceClick?.(e.resource,n,t.activity):void 0}),` `]},a)}default:return(0,l.jsxs)(s.Fragment,{children:[(0,l.jsx)(n.t,{tag:`span`,children:e.text}),` `]},a)}})}function k(e){let{activity:t}=e,r=t.headline??t.event,i=t.actor?.name;if(!i||!r.includes(i))return(0,l.jsx)(n.t,{tag:`span`,children:r});let[a,...o]=r.split(i);return(0,l.jsxs)(l.Fragment,{children:[!!a&&(0,l.jsx)(n.t,{tag:`span`,children:a}),(0,l.jsx)(D,{actorId:t.actor?.id,text:i,href:t.actor?.href,activity:t,youLabel:e.youLabel,currentUserId:e.currentUserId,onActorClick:e.onActorClick}),o.length>0&&(0,l.jsx)(n.t,{tag:`span`,children:o.join(i)})]})}function A(e){let t=e.activity.segments;return t&&t.length>0?(0,l.jsx)(`span`,{className:`leading-snug [&>span]:leading-snug`,children:O(t,e)}):(0,l.jsx)(`span`,{className:`leading-snug`,children:k(e)})}function j({icon:e,tone:n,density:r,isLast:i}){let a=w[n];return r===`compact`?(0,l.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,l.jsx)(`span`,{"aria-hidden":!0,className:t.cn(`mt-1.5 size-2 shrink-0 rounded-full`,a.dot)}),!i&&(0,l.jsx)(`span`,{"aria-hidden":!0,className:t.cn(`mt-1 w-px flex-1`,a.line)})]}):r===`rich`?(0,l.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,l.jsx)(`span`,{className:t.cn(`flex size-7 shrink-0 items-center justify-center rounded-full ring-1 ring-border/60`,a.bg,a.fg),children:(0,l.jsx)(e,{className:`size-3.5`})}),!i&&(0,l.jsx)(`span`,{"aria-hidden":!0,className:t.cn(`mt-1 w-px flex-1`,a.line)})]}):(0,l.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,l.jsx)(`span`,{className:t.cn(`flex size-5 shrink-0 items-center justify-center rounded-full`,a.bg,a.fg),children:(0,l.jsx)(e,{className:`size-3`})}),!i&&(0,l.jsx)(`span`,{"aria-hidden":!0,className:t.cn(`mt-1 w-px flex-1`,a.line)})]})}function M(e){let{activity:a,density:o,eventConfig:s,tone:c,isLast:d,expanded:f,onToggleExpanded:p,relativeTime:m,absoluteTime:h,sourceLabel:g,youLabel:_,showChangesLabel:v,hideChangesLabel:b,actionsLabel:S,currentUserId:C,actions:w,onActivityClick:T,onActorClick:D,onResourceClick:O,onAction:k,getResourceConfig:M,headlineOverride:N,markerOverride:P}=e,F=a.iconOverride??s.icon,I=(a.changes?.length??0)>0,L=(a.metadata?.length??0)>0,R=(a.resources?.length??0)>0,z=a.description!==void 0&&a.description!==null&&a.description!==``,B=o!==`compact`,V=o===`rich`,H=N??(0,l.jsx)(A,{activity:a,currentUserId:C,youLabel:_,onActorClick:D,onResourceClick:O,getResourceConfig:M}),U=P??(0,l.jsx)(j,{icon:F,tone:c,density:o,isLast:d}),W=typeof T==`function`;return(0,l.jsxs)(`div`,{className:t.cn(`relative flex gap-3`,W&&`cursor-pointer rounded-md hover:bg-muted/40`),onClick:W?()=>T?.(a):void 0,role:W?`button`:void 0,tabIndex:W?0:void 0,onKeyDown:W?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),T?.(a))}:void 0,children:[U,(0,l.jsxs)(`div`,{className:t.cn(`min-w-0 flex-1`,!d&&(o===`rich`?`pb-4`:o===`compact`?`pb-2.5`:`pb-3`)),children:[(0,l.jsxs)(`div`,{className:`flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between sm:gap-3`,children:[(0,l.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1`,children:[(0,l.jsx)(n.t,{tag:`span`,lineHeight:`snug`,children:H}),!!g&&(0,l.jsx)(r.t,{inline:!0,variant:`secondary`,children:g}),V&&I&&(0,l.jsx)(i.t,{type:`button`,size:`icon-xs`,variant:`secondary`,buttonStyle:`ghost`,className:`h-5 w-5 text-muted-foreground`,onClick:e=>{e.stopPropagation(),p()},title:f?b:v,"aria-label":f?b:v,"aria-expanded":f,children:f?(0,l.jsx)(u.ChevronDown,{className:`size-3.5`}):(0,l.jsx)(u.ChevronRight,{className:`size-3.5`})})]}),(0,l.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[!!m&&(0,l.jsx)(n.t,{size:`xs`,type:`secondary`,className:`whitespace-nowrap tabular-nums pt-0.5`,title:h??void 0,children:m}),V&&w.length>0&&(0,l.jsx)(y,{activity:a,actions:w,onAction:k,label:S})]})]}),!!B&&z&&(0,l.jsx)(n.t,{tag:`div`,size:`xs`,type:`secondary`,className:`mt-1`,children:a.description}),!!V&&L&&a.metadata&&(0,l.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-x-3 gap-y-1`,children:a.metadata.map(e=>(0,l.jsxs)(n.t,{size:`xs`,type:`secondary`,children:[(0,l.jsxs)(n.t,{tag:`span`,size:`xs`,type:`discrete`,children:[e.label,`:`,` `]}),e.value]},e.label))}),!!V&&R&&a.resources&&(0,l.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:a.resources.map(e=>{let t=M?.(e);return(0,l.jsx)(E,{resource:e,config:t,onClick:O?()=>O(e,t,a):void 0},e.key)})}),!!V&&I&&f&&a.changes&&(0,l.jsx)(`div`,{className:`mt-2`,children:(0,l.jsx)(x,{changes:a.changes})})]})]})}function N(e,t){try{return new Intl.DateTimeFormat(t,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e))}catch{return e}}function P(e,t){return e.toneOverride??t}function F(r){let{activities:i=[],density:a=`default`,groupByDate:o=!0,expandedByDefault:c=!1,currentUserId:u,loading:d=!1,eventConfig:h,strings:g,slots:y,className:b,locale:x,formatRelativeTime:w,formatAbsoluteTime:T,formatDateGroupLabel:E,getEventLabel:D,getSourceLabel:O,actionsForActivity:k,onActivityClick:A,onActorClick:j,onResourceClick:F,onAction:I,resources:L,onResourcesChange:R}=r,z=(0,s.useMemo)(()=>({...m,...g,sources:{...m.sources,...g?.sources??{}},events:{...m.events,...g?.events??{}}}),[g]),B=(0,s.useMemo)(()=>({...f,...h}),[h]),V=v({resources:L,onResourcesChange:R}),H=_({activities:i,groupByDate:o,expandedByDefault:c,locale:x,strings:z,formatDateGroupLabel:E}),{formatRelativeTime:U}=e.a(),W=w??U??(e=>e),G=T??(e=>N(e,x));if(d)return(0,l.jsx)(`div`,{className:t.cn(`activities-feed--component`,`px-2 py-4`,b),children:y?.loading??(0,l.jsx)(n.t,{type:`secondary`,align:`center`,children:z.loading})});if(i.length===0)return(0,l.jsx)(`div`,{className:t.cn(`px-2 py-2`,b),children:y?.empty??(0,l.jsx)(C,{title:z.empty})});let K=H.groups.reduce((e,t)=>e+t.items.length,0),q=0;return(0,l.jsxs)(`div`,{className:t.cn(`flex flex-col`,b),children:[!!y?.header&&(0,l.jsx)(`div`,{className:`mb-3`,children:y.header}),(0,l.jsx)(`div`,{className:`flex flex-col`,children:H.groups.map((e,n)=>{let r=n===0;return(0,l.jsxs)(`div`,{className:t.cn(r?``:`mt-1`),children:[y?.renderDateLabel?y.renderDateLabel(e.label,r):(0,l.jsx)(S,{label:e.label,isFirst:r,className:r?``:`mb-2`}),(0,l.jsx)(`div`,{className:t.cn(`flex flex-col`,!!e.label&&`mt-2`),children:e.items.map((e,t)=>{let n=e.activity,r=t===0,i=++q===K,o=p(n.event,B),s=P(n,o.tone),c=n.timestamp??(n.createdAt?W(n.createdAt):null),d=n.createdAt?G(n.createdAt):null,f=n.source?O?.(n.source)??z.sources[n.source]??o.sourceLabel??null:o.sourceLabel??null,m=f&&f.trim().length>0?f:null,h=k?.(n)??[],g={density:a,isLast:i,isFirstInGroup:r,activity:n,eventConfig:o,tone:s,relativeTime:c,absoluteTime:d,sourceLabel:m,expanded:H.isExpanded(n.id),toggleExpanded:()=>H.toggleExpanded(n.id)},_=y?.renderRow?.(n,g);if(_!==void 0)return(0,l.jsx)(`div`,{children:_},e.key);let v=y?.renderHeadline?.(n,g),b=y?.renderMarker?.(n,g);return(0,l.jsx)(M,{activity:n,density:a,eventConfig:o,tone:s,isLast:i,expanded:g.expanded,onToggleExpanded:g.toggleExpanded,relativeTime:c,absoluteTime:d,sourceLabel:m,youLabel:z.you,showChangesLabel:z.showChanges,hideChangesLabel:z.hideChanges,actionsLabel:z.actionsLabel,currentUserId:u,actions:h,onActivityClick:A,onActorClick:j,onResourceClick:F,onAction:I,getResourceConfig:e=>V.get(e),headlineOverride:v,markerOverride:b},e.key)})})]},`${e.label}-${n}`)})}),!!y?.footer&&(0,l.jsx)(`div`,{className:`mt-3`,children:y.footer})]})}F.displayName=`ActivityFeed`;function I({title:e,titleSuffix:t,description:n,padding:r=`base`,composerSlot:i,className:o,strings:s,slots:c,...d}){let f={...m,...s,sources:{...m.sources,...s?.sources??{}},events:{...m.events,...s?.events??{}}},p=e??f.title;return(0,l.jsx)(a.t,{icon:(0,l.jsx)(u.Activity,{className:`size-4`}),title:p,titleSuffix:t,description:n,padding:r,className:o,children:(0,l.jsx)(F,{...d,strings:s,slots:{...c,header:i??c?.header}})})}I.displayName=`ActivityFeedCard`,exports.ACTIVITY_TONE=w,exports.ActivityActionsMenu=y,exports.ActivityChanges=x,exports.ActivityDateLabel=S,exports.ActivityEmptyState=C,exports.ActivityFeed=F,exports.ActivityFeedCard=I,exports.ActivityHeadline=A,exports.ActivityMarker=j,exports.ActivityResourceTag=E,exports.ActivityRow=M,exports.TONE_TO_BADGE_VARIANT=T,exports.defaultActivitiesStrings=m,exports.defaultActivityEventConfig=f,exports.defaultEventConfig=d,exports.interpolateActivityString=h,exports.resolveEventConfig=p,exports.useActivityFeed=_,exports.useActivityResources=v;
|
|
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/heading-0DYCOrgC.cjs"),i=require("../../../_shared/badge--o9wFHB_.cjs"),a=require("../../../_shared/button-C1qc97U1.cjs"),o=require("../../../_shared/smart-card-Df80VF8x.cjs"),s=require("../../../_shared/dropdown-menu-CHQzQWUK.cjs");let c=require("react"),l=require("date-fns"),u=require("react/jsx-runtime"),d=require("lucide-react");var f={icon:d.CircleDot,tone:`neutral`},p={created:{icon:d.Plus,tone:`success`,label:`Created`},updated:{icon:d.Pencil,tone:`info`,label:`Updated`},edited:{icon:d.FileEdit,tone:`info`,label:`Edited`},deleted:{icon:d.Trash2,tone:`destructive`,label:`Deleted`},cancelled:{icon:d.Ban,tone:`destructive`,label:`Cancelled`},restored:{icon:d.Sparkles,tone:`success`,label:`Restored`},status_changed:{icon:d.ArrowLeftRight,tone:`primary`,label:`Status changed`},status_transition:{icon:d.ArrowLeftRight,tone:`primary`,label:`Status changed`},status_override:{icon:d.ArrowLeftRight,tone:`warning`,label:`Status overridden`},assigned:{icon:d.UserPlus,tone:`info`,label:`Assigned`},unassigned:{icon:d.UserMinus,tone:`destructive`,label:`Unassigned`},mail_sent:{icon:d.Mail,tone:`info`,label:`Email sent`},mail_delivered:{icon:d.MailCheck,tone:`success`,label:`Email delivered`},mail_opened:{icon:d.MailOpen,tone:`info`,label:`Email opened`},mail_clicked:{icon:d.MailOpen,tone:`info`,label:`Email clicked`},mail_bounced:{icon:d.MailX,tone:`destructive`,label:`Email bounced`},mail_failed:{icon:d.MailX,tone:`destructive`,label:`Email failed`},comment_created:{icon:d.MessageSquare,tone:`warning`,label:`Comment posted`},comment_deleted:{icon:d.MessageSquare,tone:`destructive`,label:`Comment deleted`},paid:{icon:d.Check,tone:`success`,label:`Paid`},refunded:{icon:d.ArrowLeftRight,tone:`warning`,label:`Refunded`},confirmed:{icon:d.ShieldCheck,tone:`success`,label:`Confirmed`},favorited:{icon:d.Heart,tone:`warning`,label:`Favorited`},ordered:{icon:d.ShoppingBag,tone:`primary`,label:`Order placed`},published:{icon:d.Star,tone:`success`,label:`Published`},flagged:{icon:d.Flag,tone:`warning`,label:`Flagged`},linked:{icon:d.LinkIcon,tone:`info`,label:`Linked`},failed:{icon:d.AlertTriangle,tone:`destructive`,label:`Failed`},health_check_failed:{icon:d.AlertTriangle,tone:`destructive`,label:`Health check failed`}};function m(e,t){return t[e]??f}var h={title:`Activity`,empty:`No activity yet.`,loading:`Loading activity…`,today:`Today`,yesterday:`Yesterday`,undated:`Undated`,you:`You`,showChanges:`Show changes`,hideChanges:`Hide changes`,actionsLabel:`Activity actions`,moreLabel:`More`,sources:{comment:`Comment`,mail:`Mail`,booking_log:`Booking log`,activity_log:``,system:`System`},events:{}};function g(e,t){return e.replace(/\{\{\s*(\w+)\s*\}\}/g,(e,n)=>{let r=t[n];return r===void 0?e:String(r)})}function _(e,t,n){if(!e)return t.undated;let r=new Date(e);if((0,l.isToday)(r))return t.today;if((0,l.isYesterday)(r))return t.yesterday;try{return new Intl.DateTimeFormat(n,{year:`numeric`,month:`long`,day:`numeric`}).format(r)}catch{return new Intl.DateTimeFormat(void 0,{year:`numeric`,month:`long`,day:`numeric`}).format(r)}}function v({activities:e,groupByDate:t=!0,expandedByDefault:n=!1,locale:r,strings:i,formatDateGroupLabel:a}){let[o,s]=(0,c.useState)({}),l=(0,c.useMemo)(()=>{let t=new Map;return e.map(e=>{let n=[String(e.id??``).trim(),String(e.createdAt??``).trim(),String(e.event??``).trim(),String(e.source??``).trim()].join(`:`),r=(t.get(n)??0)+1;return t.set(n,r),{activity:e,key:`${n}:${r}`}})},[e]),u=(0,c.useMemo)(()=>{if(!t)return l.length>0?[{label:``,items:l}]:[];let e=[],n=`__init__`,o=[],s=e=>a?a(e,i):_(e,i,r);for(let t of l){let r=s(t.activity.createdAt??null);r===n?o.push(t):(o.length>0&&e.push({label:n,items:o}),n=r,o=[t])}return o.length>0&&e.push({label:n,items:o}),e},[l,t,r,i,a]),d=(0,c.useCallback)(e=>o[e]??n,[o,n]),f=(0,c.useCallback)(e=>{s(t=>({...t,[e]:!(t[e]??!1)}))},[]),p=(0,c.useCallback)((e,t)=>{s(n=>({...n,[e]:t}))},[]),m=(0,c.useCallback)(()=>{let e={};for(let t of l)e[t.activity.id]=!0;s(e)},[l]),h=(0,c.useCallback)(()=>s({}),[]);return{groups:u,total:l.length,isExpanded:d,toggleExpanded:f,setExpanded:p,expandAll:m,collapseAll:h}}function y({resources:e,onResourcesChange:t}={}){let[n,r]=(0,c.useState)(()=>e??{}),i=(0,c.useRef)(e);(0,c.useEffect)(()=>{e!==i.current&&(i.current=e,r(e??{}))},[e]);let a=(0,c.useRef)(t);(0,c.useEffect)(()=>{a.current=t},[t]);let o=(0,c.useCallback)(e=>{a.current?.(e)},[]),s=(0,c.useCallback)((e,t)=>{r(n=>{let r={...n,[e]:t};return o(r),r})},[o]),l=(0,c.useCallback)((e,t)=>{r(n=>{let r=n[e];if(!r)return n;let i={...n,[e]:{...r,...t}};return o(i),i})},[o]),u=(0,c.useCallback)(e=>{r(t=>{if(!(e in t))return t;let n={...t};return delete n[e],o(n),n})},[o]),d=(0,c.useCallback)(e=>{r(e),o(e)},[o]),f=(0,c.useCallback)(()=>{let e=i.current??{};r(e),o(e)},[o]);return{registry:n,get:(0,c.useCallback)(e=>n[typeof e==`string`?e:e.key],[n]),register:s,update:l,remove:u,setAll:d,reset:f}}function b({activity:e,actions:t,onAction:n,label:r}){return t.length===0?null:(0,u.jsxs)(s.t,{children:[(0,u.jsx)(s.g,{render:e=>(0,u.jsx)(a.t,{...e,type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`icon-sm`,"aria-label":r,className:`h-7 w-7 text-muted-foreground`,children:(0,u.jsx)(d.MoreHorizontal,{className:`size-4`})})}),(0,u.jsx)(s.r,{align:`end`,className:`min-w-[160px]`,children:t.map(t=>{let r=t.icon;return(0,u.jsxs)(s.a,{onClick:()=>{t.disabled||(t.onClick(e),n?.(t.id,e))},disabled:t.disabled,variant:t.tone===`destructive`?`destructive`:`default`,className:`gap-2 px-2 py-1.5 text-xs`,children:[!!r&&(0,u.jsx)(r,{className:`size-3.5`}),t.label]},t.id)})})]})}function x({change:e}){let t=e.old!==null&&e.old!==void 0,n=e.new!==null&&e.new!==void 0;return!t&&!n?(0,u.jsx)(r.n,{size:`xs`,tag:`span`,children:e.description}):(0,u.jsxs)(r.n,{tag:`span`,size:`xs`,className:`inline-flex flex-wrap items-baseline gap-1`,children:[!!t&&(0,u.jsx)(r.n,{tag:`span`,size:`xs`,className:`rounded bg-destructive/10 text-destructive line-through px-1 py-px`,children:e.old}),t&&n&&(0,u.jsx)(r.n,{tag:`span`,size:`xs`,type:`secondary`,children:`→`}),!!n&&(0,u.jsx)(r.n,{tag:`span`,size:`xs`,className:`rounded bg-success/15 text-success px-1 py-px`,children:e.new})]})}function S({changes:e,className:t}){return e.length===0?null:(0,u.jsx)(`div`,{className:n.cn(`space-y-1.5 rounded-lg border border-border/60 bg-muted/30 px-3 py-2`,t),children:e.map(e=>(0,u.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,u.jsx)(r.n,{size:`xs`,type:`secondary`,weight:`medium`,className:`shrink-0`,children:e.label}),(0,u.jsx)(x,{change:e})]},`${e.key}-${e.label}`))})}function C({label:e,isFirst:t,className:i}){return e===``?null:(0,u.jsx)(r.n,{size:`xxs`,type:`secondary`,weight:`medium`,className:n.cn(`uppercase tracking-wider`,!t&&`mt-5`,i),children:e})}function w({title:e,hint:t,className:i}){return(0,u.jsxs)(`div`,{className:n.cn(`flex flex-col items-center justify-center gap-2 px-6 py-10 text-center`,i),children:[(0,u.jsx)(`span`,{className:`flex size-9 items-center justify-center rounded-full bg-muted text-muted-foreground`,children:(0,u.jsx)(d.Activity,{className:`size-4`})}),(0,u.jsx)(r.n,{weight:`medium`,children:e}),!!t&&(0,u.jsx)(r.n,{size:`xs`,type:`secondary`,children:t})]})}var T={primary:{bg:`bg-primary/10`,fg:`text-primary`,dot:`bg-primary`,line:`bg-primary/30`,chipBg:`bg-primary/5`,chipFg:`text-primary`},success:{bg:`bg-success/10`,fg:`text-success`,dot:`bg-success`,line:`bg-success/30`,chipBg:`bg-success/10`,chipFg:`text-success`},warning:{bg:`bg-warning/30`,fg:`text-warning-foreground`,dot:`bg-warning`,line:`bg-warning/40`,chipBg:`bg-warning/30`,chipFg:`text-warning-foreground`},destructive:{bg:`bg-destructive/10`,fg:`text-destructive`,dot:`bg-destructive`,line:`bg-destructive/30`,chipBg:`bg-destructive/10`,chipFg:`text-destructive`},info:{bg:`bg-info/10`,fg:`text-info`,dot:`bg-info`,line:`bg-info/30`,chipBg:`bg-info/10`,chipFg:`text-info`},neutral:{bg:`bg-muted`,fg:`text-muted-foreground`,dot:`bg-muted-foreground/60`,line:`bg-border`,chipBg:`bg-muted`,chipFg:`text-muted-foreground`}},E={primary:`primary`,success:`success`,warning:`warning`,destructive:`destructive`,info:`info`,neutral:`secondary`};function D({resource:e,config:t,fallbackText:o,onClick:s}){let c=T[t?.tone??`neutral`],l=t?.icon??d.CircleDot,f=t?.label??o??e.label??e.key,p=typeof s==`function`,m=(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l,{className:n.cn(`size-3 shrink-0`,c.fg)}),(0,u.jsx)(r.n,{tag:`span`,size:`xs`,weight:`medium`,className:c.chipFg,children:f}),!!t?.tags&&t.tags.length>0&&(0,u.jsx)(r.n,{tag:`span`,size:`xxs`,type:`secondary`,className:`border-l border-current/20 pl-1.5 ml-0.5`,children:t.tags.join(` · `)}),!!t?.badge&&(0,u.jsx)(i.t,{inline:!0,variant:E[t.badge.tone??`neutral`],className:`ml-1`,children:t.badge.label})]}),h=n.cn(`inline-flex items-center gap-1 rounded-full px-2 py-0.5 align-baseline`,`border border-border/60`,c.chipBg,p&&`cursor-pointer transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`);return p?(0,u.jsx)(a.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`xs`,onClick:e=>{e.stopPropagation(),s?.()},className:n.cn(h,`h-auto rounded-full`),title:t?.note,children:m}):(0,u.jsx)(`span`,{className:h,title:t?.note,children:m})}function O({actorId:e,text:t,href:n,activity:i,youLabel:o,currentUserId:s,onActorClick:c}){let l=s!==void 0&&e!==void 0&&s===e?o:t,d=i.actor??{id:e,name:t};return n?(0,u.jsx)(`a`,{href:n,onClick:e=>{c&&(e.preventDefault(),e.stopPropagation(),c(d,i))},className:`font-semibold text-foreground underline-offset-2 hover:underline`,children:l}):c?(0,u.jsx)(a.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`xs`,onClick:e=>{e.stopPropagation(),c(d,i)},className:`h-auto rounded px-0 py-0 font-semibold text-foreground underline-offset-2 hover:underline`,children:l}):(0,u.jsx)(r.n,{tag:`span`,weight:`semibold`,children:l})}function k(e,t){return e.map((e,n)=>{let a=`seg-${n}-${e.type}`;switch(e.type){case`actor`:return(0,u.jsxs)(c.Fragment,{children:[(0,u.jsx)(O,{actorId:e.actorId,text:e.text,href:e.href,activity:t.activity,youLabel:t.youLabel,currentUserId:t.currentUserId,onActorClick:t.onActorClick}),` `]},a);case`field`:case`value`:return(0,u.jsxs)(c.Fragment,{children:[(0,u.jsx)(r.n,{tag:`span`,weight:`semibold`,children:e.text}),` `]},a);case`status`:return(0,u.jsxs)(c.Fragment,{children:[(0,u.jsx)(i.t,{inline:!0,variant:E[e.tone??`neutral`],children:e.text}),` `]},a);case`resource`:{let n=t.getResourceConfig?.(e.resource);return(0,u.jsxs)(c.Fragment,{children:[(0,u.jsx)(D,{resource:e.resource,config:n,fallbackText:e.text,onClick:t.onResourceClick?()=>t.onResourceClick?.(e.resource,n,t.activity):void 0}),` `]},a)}default:return(0,u.jsxs)(c.Fragment,{children:[(0,u.jsx)(r.n,{tag:`span`,children:e.text}),` `]},a)}})}function A(e){let{activity:t}=e,n=t.headline??t.event,i=t.actor?.name;if(!i||!n.includes(i))return(0,u.jsx)(r.n,{tag:`span`,children:n});let[a,...o]=n.split(i);return(0,u.jsxs)(u.Fragment,{children:[!!a&&(0,u.jsx)(r.n,{tag:`span`,children:a}),(0,u.jsx)(O,{actorId:t.actor?.id,text:i,href:t.actor?.href,activity:t,youLabel:e.youLabel,currentUserId:e.currentUserId,onActorClick:e.onActorClick}),o.length>0&&(0,u.jsx)(r.n,{tag:`span`,children:o.join(i)})]})}function j(e){let t=e.activity.segments;return t&&t.length>0?(0,u.jsx)(`span`,{className:`leading-snug [&>span]:leading-snug`,children:k(t,e)}):(0,u.jsx)(`span`,{className:`leading-snug`,children:A(e)})}function M({icon:e,tone:t,density:r,isLast:i}){let a=T[t];return r===`compact`?(0,u.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,u.jsx)(`span`,{"aria-hidden":!0,className:n.cn(`mt-1.5 size-2 shrink-0 rounded-full`,a.dot)}),!i&&(0,u.jsx)(`span`,{"aria-hidden":!0,className:n.cn(`mt-1 w-px flex-1`,a.line)})]}):r===`rich`?(0,u.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,u.jsx)(`span`,{className:n.cn(`flex size-7 shrink-0 items-center justify-center rounded-full ring-1 ring-border/60`,a.bg,a.fg),children:(0,u.jsx)(e,{className:`size-3.5`})}),!i&&(0,u.jsx)(`span`,{"aria-hidden":!0,className:n.cn(`mt-1 w-px flex-1`,a.line)})]}):(0,u.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,u.jsx)(`span`,{className:n.cn(`flex size-5 shrink-0 items-center justify-center rounded-full`,a.bg,a.fg),children:(0,u.jsx)(e,{className:`size-3`})}),!i&&(0,u.jsx)(`span`,{"aria-hidden":!0,className:n.cn(`mt-1 w-px flex-1`,a.line)})]})}function N(e){let{activity:t,density:o,eventConfig:s,tone:c,isLast:l,expanded:f,onToggleExpanded:p,relativeTime:m,absoluteTime:h,sourceLabel:g,youLabel:_,showChangesLabel:v,hideChangesLabel:y,actionsLabel:x,currentUserId:C,actions:w,onActivityClick:T,onActorClick:E,onResourceClick:O,onAction:k,getResourceConfig:A,headlineOverride:N,markerOverride:P}=e,F=t.iconOverride??s.icon,I=(t.changes?.length??0)>0,L=(t.metadata?.length??0)>0,R=(t.resources?.length??0)>0,z=t.description!==void 0&&t.description!==null&&t.description!==``,B=o!==`compact`,V=o===`rich`,H=N??(0,u.jsx)(j,{activity:t,currentUserId:C,youLabel:_,onActorClick:E,onResourceClick:O,getResourceConfig:A}),U=P??(0,u.jsx)(M,{icon:F,tone:c,density:o,isLast:l}),W=typeof T==`function`,G=I||R||w.length>0||typeof E==`function`||typeof O==`function`,K=W&&!G;return(0,u.jsxs)(`div`,{className:n.cn(`relative flex gap-3`,W&&`cursor-pointer rounded-md hover:bg-muted/40`),onClick:W?()=>T?.(t):void 0,role:K?`button`:void 0,tabIndex:K?0:void 0,onKeyDown:K?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),T?.(t))}:void 0,children:[U,(0,u.jsxs)(`div`,{className:n.cn(`min-w-0 flex-1`,!l&&(o===`rich`?`pb-4`:o===`compact`?`pb-2.5`:`pb-3`)),children:[(0,u.jsxs)(`div`,{className:`flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between sm:gap-3`,children:[(0,u.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1`,children:[(0,u.jsx)(r.n,{tag:`span`,lineHeight:`snug`,children:H}),!!g&&(0,u.jsx)(i.t,{inline:!0,variant:`secondary`,children:g}),V&&I&&(0,u.jsx)(a.t,{type:`button`,size:`icon-xs`,variant:`secondary`,buttonStyle:`ghost`,className:`h-5 w-5 text-muted-foreground`,onClick:e=>{e.stopPropagation(),p()},title:f?y:v,"aria-label":f?y:v,"aria-expanded":f,children:f?(0,u.jsx)(d.ChevronDown,{className:`size-3.5`}):(0,u.jsx)(d.ChevronRight,{className:`size-3.5`})})]}),(0,u.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[!!m&&(0,u.jsx)(r.n,{size:`xs`,type:`secondary`,className:`whitespace-nowrap tabular-nums pt-0.5`,title:h??void 0,children:m}),V&&w.length>0&&(0,u.jsx)(b,{activity:t,actions:w,onAction:k,label:x})]})]}),!!B&&z&&(0,u.jsx)(r.n,{tag:`div`,size:`xs`,type:`secondary`,className:`mt-1`,children:t.description}),!!V&&L&&t.metadata&&(0,u.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-x-3 gap-y-1`,children:t.metadata.map(e=>(0,u.jsxs)(r.n,{size:`xs`,type:`secondary`,children:[(0,u.jsxs)(r.n,{tag:`span`,size:`xs`,type:`discrete`,children:[e.label,`:`,` `]}),e.value]},e.label))}),!!V&&R&&t.resources&&(0,u.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:t.resources.map(e=>{let n=A?.(e);return(0,u.jsx)(D,{resource:e,config:n,onClick:O?()=>O(e,n,t):void 0},e.key)})}),!!V&&I&&f&&t.changes&&(0,u.jsx)(`div`,{className:`mt-2`,children:(0,u.jsx)(S,{changes:t.changes})})]})]})}function P(e,t){try{return new Intl.DateTimeFormat(t,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e))}catch{return e}}function F(e,t){return e.toneOverride??t}function I(i){let{activities:a=[],density:o=`default`,groupByDate:s=!0,expandedByDefault:l=!1,currentUserId:d,loading:f=!1,eventConfig:g,strings:_,slots:b,className:x,locale:S,formatRelativeTime:T,formatAbsoluteTime:E,formatDateGroupLabel:D,getEventLabel:O,getSourceLabel:k,actionsForActivity:A,onActivityClick:j,onActorClick:M,onResourceClick:I,onAction:L,resources:R,onResourcesChange:z}=i,B=e.useStrings(h,_),V=(0,c.useMemo)(()=>({...p,...g}),[g]),H=y({resources:R,onResourcesChange:z}),U=v({activities:a,groupByDate:s,expandedByDefault:l,locale:S,strings:B,formatDateGroupLabel:D}),{formatRelativeTime:W}=t.a(),G=T??W??(e=>e),K=E??(e=>P(e,S));if(f)return(0,u.jsx)(`div`,{className:n.cn(`activities-feed--component`,`px-2 py-4`,x),children:b?.loading??(0,u.jsx)(r.n,{type:`secondary`,align:`center`,children:B.loading})});if(a.length===0)return(0,u.jsx)(`div`,{className:n.cn(`activities-feed--component`,`px-2 py-2`,x),children:b?.empty??(0,u.jsx)(w,{title:B.empty})});let q=U.groups.reduce((e,t)=>e+t.items.length,0),J=0;return(0,u.jsxs)(`div`,{className:n.cn(`activities-feed--component flex flex-col`,x),children:[!!b?.header&&(0,u.jsx)(`div`,{className:`mb-3`,children:b.header}),(0,u.jsx)(`div`,{className:`flex flex-col`,children:U.groups.map((e,t)=>{let r=t===0;return(0,u.jsxs)(`div`,{className:n.cn(r?``:`mt-1`),children:[b?.renderDateLabel?b.renderDateLabel(e.label,r):(0,u.jsx)(C,{label:e.label,isFirst:r,className:r?``:`mb-2`}),(0,u.jsx)(`div`,{className:n.cn(`flex flex-col`,!!e.label&&`mt-2`),children:e.items.map((e,t)=>{let n=e.activity,r=t===0,i=++J===q,a=m(n.event,V),s=F(n,a.tone),c=n.timestamp??(n.createdAt?G(n.createdAt):null),l=n.createdAt?K(n.createdAt):null,f=n.source?k?.(n.source)??B.sources[n.source]??a.sourceLabel??null:a.sourceLabel??null,p=f&&f.trim().length>0?f:null,h=A?.(n)??[],g={density:o,isLast:i,isFirstInGroup:r,activity:n,eventConfig:a,tone:s,relativeTime:c,absoluteTime:l,sourceLabel:p,expanded:U.isExpanded(n.id),toggleExpanded:()=>U.toggleExpanded(n.id)},_=b?.renderRow?.(n,g);if(_!==void 0)return(0,u.jsx)(`div`,{children:_},e.key);let v=b?.renderHeadline?.(n,g),y=b?.renderMarker?.(n,g);return(0,u.jsx)(N,{activity:n,density:o,eventConfig:a,tone:s,isLast:i,expanded:g.expanded,onToggleExpanded:g.toggleExpanded,relativeTime:c,absoluteTime:l,sourceLabel:p,youLabel:B.you,showChangesLabel:B.showChanges,hideChangesLabel:B.hideChanges,actionsLabel:B.actionsLabel,currentUserId:d,actions:h,onActivityClick:j,onActorClick:M,onResourceClick:I,onAction:L,getResourceConfig:e=>H.get(e),headlineOverride:v,markerOverride:y},e.key)})})]},`${e.label}-${t}`)})}),!!b?.footer&&(0,u.jsx)(`div`,{className:`mt-3`,children:b.footer})]})}I.displayName=`ActivityFeed`;function L({title:t,titleSuffix:n,description:r,padding:i=`base`,composerSlot:a,className:s,strings:c,slots:l,...f}){let p=e.useStrings(h,c),m=t??p.title;return(0,u.jsx)(o.t,{icon:(0,u.jsx)(d.Activity,{className:`size-4`}),title:m,titleSuffix:n,description:r,padding:i,className:s,children:(0,u.jsx)(I,{...f,strings:c,slots:{...l,header:a??l?.header}})})}L.displayName=`ActivityFeedCard`,exports.ACTIVITY_TONE=T,exports.ActivityActionsMenu=b,exports.ActivityChanges=S,exports.ActivityDateLabel=C,exports.ActivityEmptyState=w,exports.ActivityFeed=I,exports.ActivityFeedCard=L,exports.ActivityHeadline=j,exports.ActivityMarker=M,exports.ActivityResourceTag=D,exports.ActivityRow=N,exports.TONE_TO_BADGE_VARIANT=E,exports.defaultActivitiesStrings=h,exports.defaultActivityEventConfig=p,exports.defaultEventConfig=f,exports.interpolateActivityString=g,exports.resolveEventConfig=m,exports.useActivityFeed=v,exports.useActivityResources=y;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/activities/activities.config.ts","../../../../src/components/features/activities/activities.strings.ts","../../../../src/components/features/activities/hooks/use-activity-feed.ts","../../../../src/components/features/activities/hooks/use-activity-resources.ts","../../../../src/components/features/activities/partials/activity-actions-menu.tsx","../../../../src/components/features/activities/partials/activity-changes.tsx","../../../../src/components/features/activities/partials/activity-date-label.tsx","../../../../src/components/features/activities/partials/activity-empty-state.tsx","../../../../src/components/features/activities/partials/tone-tokens.ts","../../../../src/components/features/activities/partials/activity-resource-tag.tsx","../../../../src/components/features/activities/partials/activity-headline.tsx","../../../../src/components/features/activities/partials/activity-marker.tsx","../../../../src/components/features/activities/partials/activity-row.tsx","../../../../src/components/features/activities/activities-feed.tsx","../../../../src/components/features/activities/partials/activities-feed-card.tsx"],"sourcesContent":["/**\n * Default per-event configuration. Consumers override individual events by\n * spreading this map and overwriting the keys they care about, e.g.:\n *\n * import { defaultActivityEventConfig } from '@/components/features/activities';\n *\n * const eventConfig = {\n * ...defaultActivityEventConfig,\n * order_refunded: { icon: Receipt, tone: 'warning', label: 'Refunded' },\n * };\n *\n * The mass `eventConfig` prop on `<ActivityFeed />` is shallow-merged on top\n * of these defaults, so any unspecified event falls back to the library\n * default and ultimately to the neutral `defaultEvent` entry below.\n */\nimport {\n AlertTriangle,\n ArrowLeftRight,\n Ban,\n Check,\n CircleDot,\n FileEdit,\n Flag,\n Heart,\n LinkIcon,\n Mail,\n MailCheck,\n MailOpen,\n MailX,\n MessageSquare,\n Pencil,\n Plus,\n ShieldCheck,\n ShoppingBag,\n Sparkles,\n Star,\n Trash2,\n UserMinus,\n UserPlus,\n} from 'lucide-react';\n\nimport type { ActivityEventConfig, ActivityEventConfigMap } from './activities.types';\n\n/** Neutral fallback used when an event has no entry in the registry. */\nexport const defaultEventConfig: ActivityEventConfig = {\n icon: CircleDot,\n tone: 'neutral',\n};\n\nexport const defaultActivityEventConfig: ActivityEventConfigMap = {\n // Lifecycle\n created: { icon: Plus, tone: 'success', label: 'Created' },\n updated: { icon: Pencil, tone: 'info', label: 'Updated' },\n edited: { icon: FileEdit, tone: 'info', label: 'Edited' },\n deleted: { icon: Trash2, tone: 'destructive', label: 'Deleted' },\n cancelled: { icon: Ban, tone: 'destructive', label: 'Cancelled' },\n restored: { icon: Sparkles, tone: 'success', label: 'Restored' },\n\n // Status transitions\n status_changed: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_transition: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_override: { icon: ArrowLeftRight, tone: 'warning', label: 'Status overridden' },\n\n // People\n assigned: { icon: UserPlus, tone: 'info', label: 'Assigned' },\n unassigned: { icon: UserMinus, tone: 'destructive', label: 'Unassigned' },\n\n // Mail\n mail_sent: { icon: Mail, tone: 'info', label: 'Email sent' },\n mail_delivered: { icon: MailCheck, tone: 'success', label: 'Email delivered' },\n mail_opened: { icon: MailOpen, tone: 'info', label: 'Email opened' },\n mail_clicked: { icon: MailOpen, tone: 'info', label: 'Email clicked' },\n mail_bounced: { icon: MailX, tone: 'destructive', label: 'Email bounced' },\n mail_failed: { icon: MailX, tone: 'destructive', label: 'Email failed' },\n\n // Comments\n comment_created: { icon: MessageSquare, tone: 'warning', label: 'Comment posted' },\n comment_deleted: { icon: MessageSquare, tone: 'destructive', label: 'Comment deleted' },\n\n // Commerce\n paid: { icon: Check, tone: 'success', label: 'Paid' },\n refunded: { icon: ArrowLeftRight, tone: 'warning', label: 'Refunded' },\n confirmed: { icon: ShieldCheck, tone: 'success', label: 'Confirmed' },\n favorited: { icon: Heart, tone: 'warning', label: 'Favorited' },\n ordered: { icon: ShoppingBag, tone: 'primary', label: 'Order placed' },\n\n // Publishing\n published: { icon: Star, tone: 'success', label: 'Published' },\n flagged: { icon: Flag, tone: 'warning', label: 'Flagged' },\n linked: { icon: LinkIcon, tone: 'info', label: 'Linked' },\n\n // Failures\n failed: { icon: AlertTriangle, tone: 'destructive', label: 'Failed' },\n health_check_failed: { icon: AlertTriangle, tone: 'destructive', label: 'Health check failed' },\n};\n\n/** Resolve `eventConfig[event]` with override + default fallback. */\nexport function resolveEventConfig(\n event: string,\n map: ActivityEventConfigMap,\n): ActivityEventConfig {\n return map[event] ?? defaultEventConfig;\n}\n","/**\n * Strings for the Activities feature. Consumers override via the `strings`\n * prop on `<ActivityFeed>` / `<ActivityFeedCard>`. Values are deep-merged\n * over these defaults — `sources` and `events` merge one level deep so a\n * consumer can override a single source/event label without rewriting the\n * whole map.\n */\nexport interface ActivitiesStrings {\n /** Card title — usually \"Activity\". */\n title: string;\n /** Empty-state copy. */\n empty: string;\n /** Loading-state copy. */\n loading: string;\n /** Date-group label for today. */\n today: string;\n /** Date-group label for yesterday. */\n yesterday: string;\n /** Fallback label for activities without a timestamp. */\n undated: string;\n /** Replacement for actor name when `actorId === currentUserId`. */\n you: string;\n /** Toggle button label — collapsed state. */\n showChanges: string;\n /** Toggle button label — expanded state. */\n hideChanges: string;\n /** aria-label for the actions menu trigger. */\n actionsLabel: string;\n /** Generic \"more\" affordance label. */\n moreLabel: string;\n /** Map of `source` → display label. */\n sources: Record<string, string>;\n /** Map of `event` → display label. Used as a fallback for headlines. */\n events: Record<string, string>;\n}\n\nexport const defaultActivitiesStrings: ActivitiesStrings = {\n title: 'Activity',\n empty: 'No activity yet.',\n loading: 'Loading activity…',\n today: 'Today',\n yesterday: 'Yesterday',\n undated: 'Undated',\n you: 'You',\n showChanges: 'Show changes',\n hideChanges: 'Hide changes',\n actionsLabel: 'Activity actions',\n moreLabel: 'More',\n sources: {\n comment: 'Comment',\n mail: 'Mail',\n booking_log: 'Booking log',\n activity_log: '',\n system: 'System',\n },\n events: {},\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolate(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useActivityFeed — headless state machine for the Activities feature.\n *\n * Returns date-grouped activities with stable React keys, plus the expand /\n * collapse map for change-detail rows. Consumers wanting a fully custom UI\n * can call this hook directly and bypass `<ActivityFeed />`.\n */\nimport { isToday, isYesterday } from 'date-fns';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport type { ActivitiesStrings } from '../activities.strings';\nimport type { ActivityItem } from '../activities.types';\n\nexport interface ActivityKeyedItem<TData = unknown> {\n activity: ActivityItem<TData>;\n key: string;\n}\n\nexport interface ActivityDateGroup<TData = unknown> {\n label: string;\n items: ActivityKeyedItem<TData>[];\n}\n\nexport interface UseActivityFeedOptions<TData = unknown> {\n activities: ReadonlyArray<ActivityItem<TData>>;\n groupByDate?: boolean;\n expandedByDefault?: boolean;\n locale?: string;\n strings: ActivitiesStrings;\n formatDateGroupLabel?: (\n iso: string | null,\n strings: ActivitiesStrings,\n ) => string;\n}\n\nexport interface UseActivityFeedReturn<TData = unknown> {\n groups: ActivityDateGroup<TData>[];\n total: number;\n isExpanded: (id: string) => boolean;\n toggleExpanded: (id: string) => void;\n setExpanded: (id: string, value: boolean) => void;\n expandAll: () => void;\n collapseAll: () => void;\n}\n\nfunction defaultDateGroupLabel(\n iso: string | null,\n strings: ActivitiesStrings,\n locale?: string,\n): string {\n if (!iso) return strings.undated;\n const date = new Date(iso);\n if (isToday(date)) return strings.today;\n if (isYesterday(date)) return strings.yesterday;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n } catch {\n return new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n }\n}\n\nexport function useActivityFeed<TData = unknown>({\n activities,\n groupByDate = true,\n expandedByDefault = false,\n locale,\n strings,\n formatDateGroupLabel,\n}: UseActivityFeedOptions<TData>): UseActivityFeedReturn<TData> {\n const [expandedMap, setExpandedMap] = useState<Record<string, boolean>>({});\n\n const keyed = useMemo<ActivityKeyedItem<TData>[]>(() => {\n const seen = new Map<string, number>();\n return activities.map((activity) => {\n const baseId = String(activity.id ?? '').trim();\n const createdAt = String(activity.createdAt ?? '').trim();\n const event = String(activity.event ?? '').trim();\n const source = String(activity.source ?? '').trim();\n const keyBase = [baseId, createdAt, event, source].join(':');\n const occurrence = (seen.get(keyBase) ?? 0) + 1;\n seen.set(keyBase, occurrence);\n return { activity, key: `${keyBase}:${occurrence}` };\n });\n }, [activities]);\n\n const groups = useMemo<ActivityDateGroup<TData>[]>(() => {\n if (!groupByDate) {\n return keyed.length > 0 ? [{ label: '', items: keyed }] : [];\n }\n const out: ActivityDateGroup<TData>[] = [];\n let currentLabel = '__init__';\n let currentItems: ActivityKeyedItem<TData>[] = [];\n\n const labelFor = (iso: string | null) =>\n formatDateGroupLabel\n ? formatDateGroupLabel(iso, strings)\n : defaultDateGroupLabel(iso, strings, locale);\n\n for (const item of keyed) {\n const iso = item.activity.createdAt ?? null;\n const label = labelFor(iso);\n if (label !== currentLabel) {\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n currentLabel = label;\n currentItems = [item];\n } else {\n currentItems.push(item);\n }\n }\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n return out;\n }, [keyed, groupByDate, locale, strings, formatDateGroupLabel]);\n\n const isExpanded = useCallback(\n (id: string) => expandedMap[id] ?? expandedByDefault,\n [expandedMap, expandedByDefault],\n );\n\n const toggleExpanded = useCallback((id: string) => {\n setExpandedMap((current) => ({\n ...current,\n [id]: !(current[id] ?? false),\n }));\n }, []);\n\n const setExpanded = useCallback((id: string, value: boolean) => {\n setExpandedMap((current) => ({ ...current, [id]: value }));\n }, []);\n\n const expandAll = useCallback(() => {\n const next: Record<string, boolean> = {};\n for (const k of keyed) next[k.activity.id] = true;\n setExpandedMap(next);\n }, [keyed]);\n\n const collapseAll = useCallback(() => setExpandedMap({}), []);\n\n return {\n groups,\n total: keyed.length,\n isExpanded,\n toggleExpanded,\n setExpanded,\n expandAll,\n collapseAll,\n };\n}\n","/**\n * useActivityResources — registry hook for the rich-resource feature.\n *\n * The registry maps `key → ActivityResourceConfig`. Activity items reference\n * resources by `key`; the row renderer looks up the live config so badges,\n * icons, and links can be edited globally without touching individual rows.\n *\n * The hook re-seeds whenever the `resources` prop reference changes and emits\n * the full registry on every mutation via `onResourcesChange`. Wire that\n * callback to localStorage / a backend mutation to persist the user's\n * resource customisations across sessions.\n */\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\n\nexport type ActivityResourceRegistry = Readonly<\n Record<string, ActivityResourceConfig>\n>;\n\nexport interface UseActivityResourcesOptions {\n resources?: ActivityResourceRegistry;\n onResourcesChange?: (registry: ActivityResourceRegistry) => void;\n}\n\nexport interface UseActivityResourcesReturn {\n registry: ActivityResourceRegistry;\n /** Look up a resource by ref or key. */\n get: (\n ref: ActivityResourceRef | string,\n ) => ActivityResourceConfig | undefined;\n /** Replace a resource entry wholesale (or insert new). */\n register: (key: string, config: ActivityResourceConfig) => void;\n /** Shallow-merge a partial update over an existing entry. */\n update: (key: string, partial: Partial<ActivityResourceConfig>) => void;\n /** Remove an entry. */\n remove: (key: string) => void;\n /** Replace the entire registry. */\n setAll: (registry: ActivityResourceRegistry) => void;\n /** Reset to the original `resources` prop (or empty if none). */\n reset: () => void;\n}\n\nexport function useActivityResources({\n resources,\n onResourcesChange,\n}: UseActivityResourcesOptions = {}): UseActivityResourcesReturn {\n const [registry, setRegistry] = useState<ActivityResourceRegistry>(\n () => resources ?? {},\n );\n\n const seedRef = useRef(resources);\n useEffect(() => {\n if (resources !== seedRef.current) {\n seedRef.current = resources;\n setRegistry(resources ?? {});\n }\n }, [resources]);\n\n const onChangeRef = useRef(onResourcesChange);\n useEffect(() => {\n onChangeRef.current = onResourcesChange;\n }, [onResourcesChange]);\n\n const emit = useCallback((next: ActivityResourceRegistry) => {\n onChangeRef.current?.(next);\n }, []);\n\n const register = useCallback(\n (key: string, config: ActivityResourceConfig) => {\n setRegistry((current) => {\n const next = { ...current, [key]: config };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const update = useCallback(\n (key: string, partial: Partial<ActivityResourceConfig>) => {\n setRegistry((current) => {\n const existing = current[key];\n if (!existing) return current;\n const next = {\n ...current,\n [key]: { ...existing, ...partial },\n };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const remove = useCallback(\n (key: string) => {\n setRegistry((current) => {\n if (!(key in current)) return current;\n const next = { ...current };\n delete next[key];\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const setAll = useCallback(\n (next: ActivityResourceRegistry) => {\n setRegistry(next);\n emit(next);\n },\n [emit],\n );\n\n const reset = useCallback(() => {\n const next = seedRef.current ?? {};\n setRegistry(next);\n emit(next);\n }, [emit]);\n\n const get = useCallback(\n (ref: ActivityResourceRef | string) => {\n const key = typeof ref === 'string' ? ref : ref.key;\n return registry[key];\n },\n [registry],\n );\n\n return { registry, get, register, update, remove, setAll, reset };\n}\n","/**\n * ActivityActionsMenu — inline overflow menu rendered on rich rows.\n *\n * Backed by the shadcn DropdownMenu primitive; each item fires the\n * activity's per-row `onClick` and forwards `actionId` through `onAction` so\n * consumers can route actions centrally.\n */\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/base/navigation';\n\nimport type { ActivityAction, ActivityItem } from '../activities.types';\n\nexport interface ActivityActionsMenuProps<TData = unknown> {\n activity: ActivityItem<TData>;\n actions: readonly ActivityAction<TData>[];\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n label: string;\n}\n\nexport function ActivityActionsMenu<TData = unknown>({\n activity,\n actions,\n onAction,\n label,\n}: ActivityActionsMenuProps<TData>) {\n if (actions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...(triggerProps as Record<string, unknown>)}\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-sm\"\n aria-label={label}\n className=\"h-7 w-7 text-muted-foreground\"\n >\n <MoreHorizontal className=\"size-4\" />\n </Button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"min-w-[160px]\">\n {actions.map((action) => {\n const Icon = action.icon;\n return (\n <DropdownMenuItem\n key={action.id}\n onClick={() => {\n if (action.disabled) return;\n action.onClick(activity);\n onAction?.(action.id, activity);\n }}\n disabled={action.disabled}\n variant={action.tone === 'destructive' ? 'destructive' : 'default'}\n className=\"gap-2 px-2 py-1.5 text-xs\"\n >\n {!!Icon && <Icon className=\"size-3.5\" />}\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","/**\n * ActivityChanges — collapsible old → new diff block.\n *\n * Each entry shows the attribute label, the previous value (line-through, on\n * a destructive tint), an arrow, and the new value (on a success tint). When\n * neither old nor new is set, falls back to `description`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityChange } from '../activities.types';\n\nexport interface ActivityChangesProps {\n changes: readonly ActivityChange[];\n className?: string;\n}\n\nfunction ChangeValue({ change }: { change: ActivityChange }) {\n const hasOld = change.old !== null && change.old !== undefined;\n const hasNew = change.new !== null && change.new !== undefined;\n\n if (!hasOld && !hasNew) {\n return (\n <Text size=\"xs\" tag=\"span\">\n {change.description}\n </Text>\n );\n }\n\n return (\n <Text tag=\"span\" size=\"xs\" className=\"inline-flex flex-wrap items-baseline gap-1\">\n {!!hasOld && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-destructive/10 text-destructive line-through px-1 py-px\"\n >\n {change.old}\n </Text>\n )}\n {hasOld && hasNew && (\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n →\n </Text>\n )}\n {!!hasNew && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-success/15 text-success px-1 py-px\"\n >\n {change.new}\n </Text>\n )}\n </Text>\n );\n}\n\nexport function ActivityChanges({ changes, className }: ActivityChangesProps) {\n if (changes.length === 0) return null;\n return (\n <div\n className={cn(\n 'space-y-1.5 rounded-lg border border-border/60 bg-muted/30 px-3 py-2',\n className,\n )}\n >\n {changes.map((change) => (\n <div\n key={`${change.key}-${change.label}`}\n className=\"flex items-baseline gap-2\"\n >\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"shrink-0\"\n >\n {change.label}\n </Text>\n <ChangeValue change={change} />\n </div>\n ))}\n </div>\n );\n}\n","/**\n * ActivityDateLabel — eyebrow rendered above each date group.\n *\n * Consumers can override via `slots.renderDateLabel`. Default: small\n * uppercase eyebrow above each group, with extra top margin between groups.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityDateLabelProps {\n label: string;\n isFirst: boolean;\n className?: string;\n}\n\nexport function ActivityDateLabel({\n label,\n isFirst,\n className,\n}: ActivityDateLabelProps) {\n if (label === '') return null;\n return (\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className={cn(\n 'uppercase tracking-wider',\n !isFirst && 'mt-5',\n className,\n )}\n >\n {label}\n </Text>\n );\n}\n","/**\n * ActivityEmptyState — neutral empty surface used when no activities are\n * available. Consumers replace via `slots.empty`.\n */\nimport { Activity } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityEmptyStateProps {\n title: string;\n hint?: string;\n className?: string;\n}\n\nexport function ActivityEmptyState({\n title,\n hint,\n className,\n}: ActivityEmptyStateProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center gap-2 px-6 py-10 text-center',\n className,\n )}\n >\n <span className=\"flex size-9 items-center justify-center rounded-full bg-muted text-muted-foreground\">\n <Activity className=\"size-4\" />\n </span>\n <Text weight=\"medium\">\n {title}\n </Text>\n {!!hint && (\n <Text size=\"xs\" type=\"secondary\">\n {hint}\n </Text>\n )}\n </div>\n );\n}\n","/**\n * Tone palettes shared by the marker, headline status segments, and the\n * resource tag. Tones map to semantic shadcn tokens — never to raw colours —\n * so a consumer rebrand at `:root` flows through the activities feature\n * automatically.\n */\nimport type { ActivityTone } from '../activities.types';\nimport type { ComposedBadgeVariant } from '@/components/base/badge/badge';\n\nexport interface ActivityToneStyle {\n /** Filled background — used by the rich icon marker. */\n bg: string;\n /** Foreground text colour matching the bg. */\n fg: string;\n /** Solid colour used by the compact dot. */\n dot: string;\n /** Border tint used by the connector line. */\n line: string;\n /** Background for chips / tags. */\n chipBg: string;\n /** Text colour for chips / tags. */\n chipFg: string;\n}\n\nexport const ACTIVITY_TONE: Record<ActivityTone, ActivityToneStyle> = {\n primary: {\n bg: 'bg-primary/15',\n fg: 'text-primary',\n dot: 'bg-primary',\n line: 'bg-primary/30',\n chipBg: 'bg-primary/10',\n chipFg: 'text-primary',\n },\n success: {\n bg: 'bg-success/15',\n fg: 'text-success',\n dot: 'bg-success',\n line: 'bg-success/30',\n chipBg: 'bg-success/15',\n chipFg: 'text-success',\n },\n warning: {\n bg: 'bg-warning/30',\n fg: 'text-warning-foreground',\n dot: 'bg-warning',\n line: 'bg-warning/40',\n chipBg: 'bg-warning/30',\n chipFg: 'text-warning-foreground',\n },\n destructive: {\n bg: 'bg-destructive/15',\n fg: 'text-destructive',\n dot: 'bg-destructive',\n line: 'bg-destructive/30',\n chipBg: 'bg-destructive/15',\n chipFg: 'text-destructive',\n },\n info: {\n bg: 'bg-info/15',\n fg: 'text-info',\n dot: 'bg-info',\n line: 'bg-info/30',\n chipBg: 'bg-info/15',\n chipFg: 'text-info',\n },\n neutral: {\n bg: 'bg-muted',\n fg: 'text-muted-foreground',\n dot: 'bg-muted-foreground/60',\n line: 'bg-border',\n chipBg: 'bg-muted',\n chipFg: 'text-muted-foreground',\n },\n};\n\n/** Map an activity tone onto the closest base/Badge variant. */\nexport const TONE_TO_BADGE_VARIANT: Record<ActivityTone, ComposedBadgeVariant> = {\n primary: 'primary',\n success: 'success',\n warning: 'warning',\n destructive: 'destructive',\n info: 'info',\n neutral: 'secondary',\n};\n","/**\n * ActivityResourceTag — chip rendering for a registered resource.\n *\n * The resource registry stores per-key `ActivityResourceConfig` (label, icon,\n * tone, badge, tags). This component renders those as a single inline chip\n * suitable for embedding into a headline. Falls back gracefully when the\n * registry has no entry — uses the segment's text/label.\n */\nimport { CircleDot } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ACTIVITY_TONE, TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityResourceTagProps {\n resource: ActivityResourceRef;\n config?: ActivityResourceConfig;\n /** Fallback label if neither config nor segment text are present. */\n fallbackText?: string;\n onClick?: () => void;\n}\n\nexport function ActivityResourceTag({\n resource,\n config,\n fallbackText,\n onClick,\n}: ActivityResourceTagProps) {\n const tone: ActivityTone = config?.tone ?? 'neutral';\n const palette = ACTIVITY_TONE[tone];\n const Icon = config?.icon ?? CircleDot;\n const label = config?.label ?? fallbackText ?? resource.label ?? resource.key;\n const interactive = typeof onClick === 'function';\n\n const inner = (\n <>\n <Icon className={cn('size-3 shrink-0', palette.fg)} />\n <Text tag=\"span\" size=\"xs\" weight=\"medium\" className={palette.chipFg}>\n {label}\n </Text>\n {!!config?.tags && config.tags.length > 0 && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"border-l border-current/20 pl-1.5 ml-0.5\"\n >\n {config.tags.join(' · ')}\n </Text>\n )}\n {!!config?.badge && (\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[config.badge.tone ?? 'neutral']}\n className=\"ml-1\"\n >\n {config.badge.label}\n </Badge>\n )}\n </>\n );\n\n const chipClass = cn(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 align-baseline',\n 'border border-border/60',\n palette.chipBg,\n interactive &&\n 'cursor-pointer transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n );\n\n if (interactive) {\n return (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onClick?.();\n }}\n className={chipClass}\n title={config?.note}\n >\n {inner}\n </button>\n );\n }\n\n return (\n <span className={chipClass} title={config?.note}>\n {inner}\n </span>\n );\n}\n","/**\n * ActivityHeadline — segment renderer for the headline line.\n *\n * Renders typed segments (`actor` / `field` / `value` / `status` / `resource`\n * / `text`) into mixed inline content with proper typography and tone.\n *\n * When no segments are provided, falls back to splitting `headline` around\n * the actor's name so the actor still becomes interactive when possible.\n */\nimport { Fragment, type ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityActor,\n ActivityHeadlineSegment,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\nimport { ActivityResourceTag } from './activity-resource-tag';\nimport { TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityHeadlineProps<TData = unknown> {\n activity: ActivityItem<TData>;\n currentUserId?: string;\n youLabel: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n /** Live registry lookup for resource segments. */\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n}\n\nfunction ActorNode<TData>({\n actorId,\n text,\n href,\n activity,\n youLabel,\n currentUserId,\n onActorClick,\n}: {\n actorId?: string;\n text: string;\n href?: string;\n activity: ActivityItem<TData>;\n youLabel: string;\n currentUserId?: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n}) {\n const isYou =\n currentUserId !== undefined &&\n actorId !== undefined &&\n currentUserId === actorId;\n const display = isYou ? youLabel : text;\n const actor: ActivityActor = activity.actor ?? { id: actorId, name: text };\n\n if (href) {\n return (\n <a\n href={href}\n onClick={(e) => {\n if (onActorClick) {\n e.preventDefault();\n e.stopPropagation();\n onActorClick(actor, activity);\n }\n }}\n className=\"font-semibold text-foreground underline-offset-2 hover:underline\"\n >\n {display}\n </a>\n );\n }\n\n if (onActorClick) {\n return (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onActorClick(actor, activity);\n }}\n className=\"font-semibold text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded\"\n >\n {display}\n </button>\n );\n }\n\n return (\n <Text tag=\"span\" weight=\"semibold\">\n {display}\n </Text>\n );\n}\n\nfunction renderSegments<TData>(\n segments: readonly ActivityHeadlineSegment[],\n props: ActivityHeadlineProps<TData>,\n): ReactNode {\n return segments.map((segment, index) => {\n const key = `seg-${index}-${segment.type}`;\n switch (segment.type) {\n case 'actor':\n return (\n <Fragment key={key}>\n <ActorNode<TData>\n actorId={segment.actorId}\n text={segment.text}\n href={segment.href}\n activity={props.activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />{' '}\n </Fragment>\n );\n case 'field':\n case 'value':\n return (\n <Fragment key={key}>\n <Text tag=\"span\" weight=\"semibold\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n case 'status':\n return (\n <Fragment key={key}>\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[segment.tone ?? 'neutral']}\n >\n {segment.text}\n </Badge>{' '}\n </Fragment>\n );\n case 'resource': {\n const config = props.getResourceConfig?.(segment.resource);\n return (\n <Fragment key={key}>\n <ActivityResourceTag\n resource={segment.resource}\n config={config}\n fallbackText={segment.text}\n onClick={\n props.onResourceClick\n ? () =>\n props.onResourceClick?.(\n segment.resource,\n config,\n props.activity,\n )\n : undefined\n }\n />{' '}\n </Fragment>\n );\n }\n case 'text':\n default:\n return (\n <Fragment key={key}>\n <Text tag=\"span\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n }\n });\n}\n\nfunction renderFallback<TData>(props: ActivityHeadlineProps<TData>): ReactNode {\n const { activity } = props;\n const fallbackHeadline =\n activity.headline ?? activity.event;\n const actorName = activity.actor?.name;\n if (!actorName || !fallbackHeadline.includes(actorName)) {\n return (\n <Text tag=\"span\">\n {fallbackHeadline}\n </Text>\n );\n }\n const [before, ...after] = fallbackHeadline.split(actorName);\n return (\n <>\n {!!before && (\n <Text tag=\"span\">\n {before}\n </Text>\n )}\n <ActorNode<TData>\n actorId={activity.actor?.id}\n text={actorName}\n href={activity.actor?.href}\n activity={activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />\n {after.length > 0 && (\n <Text tag=\"span\">\n {after.join(actorName)}\n </Text>\n )}\n </>\n );\n}\n\nexport function ActivityHeadline<TData = unknown>(\n props: ActivityHeadlineProps<TData>,\n) {\n const segments = props.activity.segments;\n if (segments && segments.length > 0) {\n return (\n <span className=\"leading-snug [&>span]:leading-snug\">\n {renderSegments<TData>(segments, props)}\n </span>\n );\n }\n return <span className=\"leading-snug\">{renderFallback<TData>(props)}</span>;\n}\n","/**\n * ActivityMarker — left-edge visual for a row.\n *\n * Density mapping:\n * - `compact` → small tone-coloured dot\n * - `default` → 22px tone-tinted square with the event icon\n * - `rich` → 28px tone-tinted circle with the event icon\n *\n * Always renders the connector line beneath unless `isLast` is true.\n */\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityDensity, ActivityTone } from '../activities.types';\n\nimport { ACTIVITY_TONE } from './tone-tokens';\n\nexport interface ActivityMarkerProps {\n icon: LucideIcon;\n tone: ActivityTone;\n density: ActivityDensity;\n isLast: boolean;\n}\n\nexport function ActivityMarker({\n icon: Icon,\n tone,\n density,\n isLast,\n}: ActivityMarkerProps) {\n const palette = ACTIVITY_TONE[tone];\n\n if (density === 'compact') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n aria-hidden\n className={cn('mt-1.5 size-2 shrink-0 rounded-full', palette.dot)}\n />\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n if (density === 'rich') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-7 shrink-0 items-center justify-center rounded-full ring-1 ring-border/60',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3.5\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-5 shrink-0 items-center justify-center rounded-full',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n}\n","/**\n * ActivityRow — single row layout used by `<ActivityFeed />`.\n *\n * Composes the marker, headline, optional description, metadata chips,\n * source badge, timestamp, and (rich-only) the change-detail block plus\n * action menu. Per-density layout follows the design-system rules:\n * compact (dot, single line) / default (icon, headline + meta line) /\n * rich (icon, full header + body + actions).\n */\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n ActivityAction,\n ActivityActor,\n ActivityDensity,\n ActivityEventConfig,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ActivityActionsMenu } from './activity-actions-menu';\nimport { ActivityChanges } from './activity-changes';\nimport { ActivityHeadline } from './activity-headline';\nimport { ActivityMarker } from './activity-marker';\nimport { ActivityResourceTag } from './activity-resource-tag';\n\nexport interface ActivityRowProps<TData = unknown> {\n activity: ActivityItem<TData>;\n density: ActivityDensity;\n eventConfig: ActivityEventConfig;\n tone: ActivityTone;\n isLast: boolean;\n expanded: boolean;\n onToggleExpanded: () => void;\n relativeTime: string | null;\n absoluteTime: string | null;\n sourceLabel: string | null;\n youLabel: string;\n showChangesLabel: string;\n hideChangesLabel: string;\n actionsLabel: string;\n currentUserId?: string;\n actions: readonly ActivityAction<TData>[];\n onActivityClick?: (activity: ActivityItem<TData>) => void;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n /** Slot override for the headline only. */\n headlineOverride?: ReactNode;\n /** Slot override for the marker only. */\n markerOverride?: ReactNode;\n}\n\nexport function ActivityRow<TData = unknown>(props: ActivityRowProps<TData>) {\n const {\n activity,\n density,\n eventConfig,\n tone,\n isLast,\n expanded,\n onToggleExpanded,\n relativeTime,\n absoluteTime,\n sourceLabel,\n youLabel,\n showChangesLabel,\n hideChangesLabel,\n actionsLabel,\n currentUserId,\n actions,\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n getResourceConfig,\n headlineOverride,\n markerOverride,\n } = props;\n\n const Icon = activity.iconOverride ?? eventConfig.icon;\n const hasChanges = (activity.changes?.length ?? 0) > 0;\n const hasMetadata = (activity.metadata?.length ?? 0) > 0;\n const hasResources = (activity.resources?.length ?? 0) > 0;\n const hasDescription =\n activity.description !== undefined &&\n activity.description !== null &&\n activity.description !== '';\n const showSecondaryRow = density !== 'compact';\n const showRichBody = density === 'rich';\n\n const headlineNode =\n headlineOverride ??\n (\n <ActivityHeadline<TData>\n activity={activity}\n currentUserId={currentUserId}\n youLabel={youLabel}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n getResourceConfig={getResourceConfig}\n />\n );\n\n const markerNode =\n markerOverride ?? (\n <ActivityMarker\n icon={Icon}\n tone={tone}\n density={density}\n isLast={isLast}\n />\n );\n\n const interactive = typeof onActivityClick === 'function';\n\n return (\n <div\n className={cn(\n 'relative flex gap-3',\n interactive && 'cursor-pointer rounded-md hover:bg-muted/40',\n )}\n onClick={interactive ? () => onActivityClick?.(activity) : undefined}\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onActivityClick?.(activity);\n }\n }\n : undefined\n }\n >\n {markerNode}\n\n <div\n className={cn(\n 'min-w-0 flex-1',\n !isLast && (density === 'rich' ? 'pb-4' : density === 'compact' ? 'pb-2.5' : 'pb-3'),\n )}\n >\n <div className=\"flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between sm:gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1\">\n <Text tag=\"span\" lineHeight=\"snug\">\n {headlineNode}\n </Text>\n {!!sourceLabel && (\n <Badge inline variant=\"secondary\">\n {sourceLabel}\n </Badge>\n )}\n {showRichBody && hasChanges && (\n <Button\n type=\"button\"\n size=\"icon-xs\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n className=\"h-5 w-5 text-muted-foreground\"\n onClick={(e) => {\n e.stopPropagation();\n onToggleExpanded();\n }}\n title={expanded ? hideChangesLabel : showChangesLabel}\n aria-label={expanded ? hideChangesLabel : showChangesLabel}\n aria-expanded={expanded}\n >\n {expanded ? (\n <ChevronDown className=\"size-3.5\" />\n ) : (\n <ChevronRight className=\"size-3.5\" />\n )}\n </Button>\n )}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-1\">\n {!!relativeTime && (\n <Text\n size=\"xs\"\n type=\"secondary\"\n className=\"whitespace-nowrap tabular-nums pt-0.5\"\n title={absoluteTime ?? undefined}\n >\n {relativeTime}\n </Text>\n )}\n {showRichBody && actions.length > 0 && (\n <ActivityActionsMenu<TData>\n activity={activity}\n actions={actions}\n onAction={onAction}\n label={actionsLabel}\n />\n )}\n </div>\n </div>\n\n {!!showSecondaryRow && hasDescription && (\n <Text tag=\"div\" size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {activity.description}\n </Text>\n )}\n\n {!!showRichBody && hasMetadata && activity.metadata && (\n <div className=\"mt-2 flex flex-wrap gap-x-3 gap-y-1\">\n {activity.metadata.map((m) => (\n <Text key={m.label} size=\"xs\" type=\"secondary\">\n <Text tag=\"span\" size=\"xs\" type=\"discrete\">\n {m.label}:{' '}\n </Text>\n {m.value}\n </Text>\n ))}\n </div>\n )}\n\n {!!showRichBody && hasResources && activity.resources && (\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n {activity.resources.map((res) => {\n const cfg = getResourceConfig?.(res);\n return (\n <ActivityResourceTag\n key={res.key}\n resource={res}\n config={cfg}\n onClick={\n onResourceClick\n ? () =>\n onResourceClick(\n res,\n cfg,\n activity,\n )\n : undefined\n }\n />\n );\n })}\n </div>\n )}\n\n {!!showRichBody && hasChanges && expanded && activity.changes && (\n <div className=\"mt-2\">\n <ActivityChanges changes={activity.changes} />\n </div>\n )}\n </div>\n </div>\n );\n}\n","/**\n * ActivityFeed — framework-agnostic activity timeline.\n *\n * Composition seams:\n * - `strings` — deep-partial override of every label\n * - `eventConfig` — mass-configurable per-event icon/tone/labels\n * - `slots` — replace any region (row / headline / marker /\n * dateLabel / empty / loading / header / footer)\n * - `slots.renderRow` — full per-row override\n * - `accessors` — formatRelative/Absolute, getEventLabel, …\n * - `actionsForActivity` — surface a per-row action menu (rich density)\n * - `resources` + `onResourcesChange` — registry-driven rich resource\n * tags (icons, badges, links, tags) with save\n * and restore semantics for the consumer\n *\n * Headless usage:\n * - Call `useActivityFeed({ activities, ... })` directly to drive a\n * completely custom UI against the same grouping/expand state machine.\n * - Call `useActivityResources({ resources, onResourcesChange })` to\n * drive the registry independently.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Wire actor / resource navigation\n * via callbacks at the call site.\n */\nimport { useMemo, type ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultActivityEventConfig,\n resolveEventConfig,\n} from './activities.config';\nimport {\n defaultActivitiesStrings,\n type ActivitiesStrings,\n} from './activities.strings';\nimport type {\n ActivityAction,\n ActivityFeedProps,\n ActivityItem,\n ActivityRenderRowContext,\n ActivityTone,\n} from './activities.types';\nimport { useActivityFeed } from './hooks/use-activity-feed';\nimport { useActivityResources } from './hooks/use-activity-resources';\nimport {\n ActivityDateLabel,\n ActivityEmptyState,\n ActivityRow,\n} from './partials';\n\nfunction defaultFormatAbsolute(iso: string, locale?: string): string {\n try {\n return new Intl.DateTimeFormat(locale, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }).format(new Date(iso));\n } catch {\n return iso;\n }\n}\n\nfunction resolveTone<TData>(\n activity: ActivityItem<TData>,\n eventTone: ActivityTone,\n): ActivityTone {\n return activity.toneOverride ?? eventTone;\n}\n\nexport function ActivityFeed<TData = unknown>(props: ActivityFeedProps<TData>) {\n const {\n activities = [],\n density = 'default',\n groupByDate = true,\n expandedByDefault = false,\n currentUserId,\n loading = false,\n eventConfig: eventConfigOverride,\n strings: stringsProp,\n slots,\n className,\n locale,\n // accessors\n formatRelativeTime,\n formatAbsoluteTime,\n formatDateGroupLabel,\n getEventLabel: _getEventLabel,\n getSourceLabel,\n actionsForActivity,\n // callbacks\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n // resources\n resources,\n onResourcesChange,\n } = props;\n\n const strings: ActivitiesStrings = useMemo<ActivitiesStrings>(\n () => ({\n ...defaultActivitiesStrings,\n ...stringsProp,\n sources: {\n ...defaultActivitiesStrings.sources,\n ...(stringsProp?.sources ?? {}),\n },\n events: {\n ...defaultActivitiesStrings.events,\n ...(stringsProp?.events ?? {}),\n },\n }),\n [stringsProp],\n );\n\n const eventConfigMap = useMemo(\n () => ({ ...defaultActivityEventConfig, ...eventConfigOverride }),\n [eventConfigOverride],\n );\n\n const registry = useActivityResources({\n resources,\n onResourcesChange,\n });\n\n const feed = useActivityFeed<TData>({\n activities,\n groupByDate,\n expandedByDefault,\n locale,\n strings,\n formatDateGroupLabel,\n });\n\n const { formatRelativeTime: storeFormatRelative } = useDatesConfig();\n const fmtRelative = formatRelativeTime ?? storeFormatRelative ?? ((iso: string) => iso);\n const fmtAbsolute = formatAbsoluteTime ?? ((iso: string) => defaultFormatAbsolute(iso, locale));\n\n if (loading) {\n return (\n <div className={cn('activities-feed--component', 'px-2 py-4', className)}>\n {slots?.loading ?? (\n <Text type=\"secondary\" align=\"center\">\n {strings.loading}\n </Text>\n )}\n </div>\n );\n }\n\n if (activities.length === 0) {\n return (\n <div className={cn('px-2 py-2', className)}>\n {slots?.empty ?? <ActivityEmptyState title={strings.empty} />}\n </div>\n );\n }\n\n const totalRendered = feed.groups.reduce((acc, g) => acc + g.items.length, 0);\n let renderedSoFar = 0;\n\n return (\n <div className={cn('flex flex-col', className)}>\n {!!slots?.header && <div className=\"mb-3\">{slots.header}</div>}\n\n <div className=\"flex flex-col\">\n {feed.groups.map((group, gi) => {\n const isFirstGroup = gi === 0;\n return (\n <div key={`${group.label}-${gi}`} className={cn(isFirstGroup ? '' : 'mt-1')}>\n {slots?.renderDateLabel\n ? slots.renderDateLabel(group.label, isFirstGroup)\n : (\n <ActivityDateLabel\n label={group.label}\n isFirst={isFirstGroup}\n className={isFirstGroup ? '' : 'mb-2'}\n />\n )}\n\n <div className={cn('flex flex-col', !!group.label && 'mt-2')}>\n {group.items.map((keyed, ii) => {\n const activity = keyed.activity;\n const isFirstInGroup = ii === 0;\n const isLast =\n ++renderedSoFar === totalRendered;\n const eventCfg = resolveEventConfig(\n activity.event,\n eventConfigMap,\n );\n const tone = resolveTone(activity, eventCfg.tone);\n const relativeTime = activity.timestamp\n ?? (activity.createdAt\n ? fmtRelative(activity.createdAt)\n : null);\n const absoluteTime = activity.createdAt\n ? fmtAbsolute(activity.createdAt)\n : null;\n const sourceLabel = activity.source\n ? (getSourceLabel?.(activity.source)\n ?? strings.sources[activity.source]\n ?? eventCfg.sourceLabel\n ?? null)\n : eventCfg.sourceLabel ?? null;\n const sourceLabelTrimmed =\n sourceLabel && sourceLabel.trim().length > 0\n ? sourceLabel\n : null;\n const actions: readonly ActivityAction<TData>[] =\n actionsForActivity?.(activity) ?? [];\n\n const ctx: ActivityRenderRowContext<TData> = {\n density,\n isLast,\n isFirstInGroup,\n activity,\n eventConfig: eventCfg,\n tone,\n relativeTime,\n absoluteTime,\n sourceLabel: sourceLabelTrimmed,\n expanded: feed.isExpanded(activity.id),\n toggleExpanded: () =>\n feed.toggleExpanded(activity.id),\n };\n\n const customRow = slots?.renderRow?.(activity, ctx);\n if (customRow !== undefined) {\n return (\n <div key={keyed.key}>{customRow}</div>\n );\n }\n\n const headlineOverride =\n slots?.renderHeadline?.(activity, ctx);\n const markerOverride =\n slots?.renderMarker?.(activity, ctx);\n\n return (\n <ActivityRow<TData>\n key={keyed.key}\n activity={activity}\n density={density}\n eventConfig={eventCfg}\n tone={tone}\n isLast={isLast}\n expanded={ctx.expanded}\n onToggleExpanded={ctx.toggleExpanded}\n relativeTime={relativeTime}\n absoluteTime={absoluteTime}\n sourceLabel={sourceLabelTrimmed}\n youLabel={strings.you}\n showChangesLabel={strings.showChanges}\n hideChangesLabel={strings.hideChanges}\n actionsLabel={strings.actionsLabel}\n currentUserId={currentUserId}\n actions={actions}\n onActivityClick={onActivityClick}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n onAction={onAction}\n getResourceConfig={(ref) =>\n registry.get(ref)\n }\n headlineOverride={\n headlineOverride as ReactNode | undefined\n }\n markerOverride={\n markerOverride as ReactNode | undefined\n }\n />\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n\n {!!slots?.footer && <div className=\"mt-3\">{slots.footer}</div>}\n </div>\n );\n}\n\nActivityFeed.displayName = 'ActivityFeed';\n","/**\n * ActivityFeedCard — `<ActivityFeed />` wrapped in `SmartCard`.\n *\n * Use this when you want the canonical card chrome (title + description +\n * actions menu + content padding). For embedded surfaces (sidebars, panels)\n * use `<ActivityFeed />` directly.\n */\nimport { Activity } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\n\nimport { ActivityFeed } from '../activities-feed';\nimport {\n defaultActivitiesStrings,\n type ActivitiesStrings,\n} from '../activities.strings';\nimport type { ActivityFeedCardProps } from '../activities.types';\n\nexport function ActivityFeedCard<TData = unknown>({\n title,\n titleSuffix,\n description,\n padding = 'base',\n composerSlot,\n className,\n strings: stringsProp,\n slots,\n ...feedProps\n}: ActivityFeedCardProps<TData>) {\n const strings: ActivitiesStrings = {\n ...defaultActivitiesStrings,\n ...stringsProp,\n sources: {\n ...defaultActivitiesStrings.sources,\n ...(stringsProp?.sources ?? {}),\n },\n events: {\n ...defaultActivitiesStrings.events,\n ...(stringsProp?.events ?? {}),\n },\n };\n\n const cardTitle = title ?? strings.title;\n\n return (\n <SmartCard\n icon={<Activity className=\"size-4\" />}\n title={cardTitle}\n titleSuffix={titleSuffix}\n description={description}\n padding={padding}\n className={className}\n >\n <ActivityFeed<TData>\n {...feedProps}\n strings={stringsProp}\n slots={{\n ...slots,\n header: composerSlot ?? slots?.header,\n }}\n />\n </SmartCard>\n );\n}\n\nActivityFeedCard.displayName = 'ActivityFeedCard';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/activities/activities.config.ts","../../../../src/components/features/activities/activities.strings.ts","../../../../src/components/features/activities/hooks/use-activity-feed.ts","../../../../src/components/features/activities/hooks/use-activity-resources.ts","../../../../src/components/features/activities/partials/activity-actions-menu.tsx","../../../../src/components/features/activities/partials/activity-changes.tsx","../../../../src/components/features/activities/partials/activity-date-label.tsx","../../../../src/components/features/activities/partials/activity-empty-state.tsx","../../../../src/components/features/activities/partials/tone-tokens.ts","../../../../src/components/features/activities/partials/activity-resource-tag.tsx","../../../../src/components/features/activities/partials/activity-headline.tsx","../../../../src/components/features/activities/partials/activity-marker.tsx","../../../../src/components/features/activities/partials/activity-row.tsx","../../../../src/components/features/activities/activities-feed.tsx","../../../../src/components/features/activities/partials/activities-feed-card.tsx"],"sourcesContent":["/**\n * Default per-event configuration. Consumers override individual events by\n * spreading this map and overwriting the keys they care about, e.g.:\n *\n * import { defaultActivityEventConfig } from '@/components/features/activities';\n *\n * const eventConfig = {\n * ...defaultActivityEventConfig,\n * order_refunded: { icon: Receipt, tone: 'warning', label: 'Refunded' },\n * };\n *\n * The mass `eventConfig` prop on `<ActivityFeed />` is shallow-merged on top\n * of these defaults, so any unspecified event falls back to the library\n * default and ultimately to the neutral `defaultEvent` entry below.\n */\nimport {\n AlertTriangle,\n ArrowLeftRight,\n Ban,\n Check,\n CircleDot,\n FileEdit,\n Flag,\n Heart,\n LinkIcon,\n Mail,\n MailCheck,\n MailOpen,\n MailX,\n MessageSquare,\n Pencil,\n Plus,\n ShieldCheck,\n ShoppingBag,\n Sparkles,\n Star,\n Trash2,\n UserMinus,\n UserPlus,\n} from 'lucide-react';\n\nimport type { ActivityEventConfig, ActivityEventConfigMap } from './activities.types';\n\n/** Neutral fallback used when an event has no entry in the registry. */\nexport const defaultEventConfig: ActivityEventConfig = {\n icon: CircleDot,\n tone: 'neutral',\n};\n\nexport const defaultActivityEventConfig: ActivityEventConfigMap = {\n // Lifecycle\n created: { icon: Plus, tone: 'success', label: 'Created' },\n updated: { icon: Pencil, tone: 'info', label: 'Updated' },\n edited: { icon: FileEdit, tone: 'info', label: 'Edited' },\n deleted: { icon: Trash2, tone: 'destructive', label: 'Deleted' },\n cancelled: { icon: Ban, tone: 'destructive', label: 'Cancelled' },\n restored: { icon: Sparkles, tone: 'success', label: 'Restored' },\n\n // Status transitions\n status_changed: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_transition: { icon: ArrowLeftRight, tone: 'primary', label: 'Status changed' },\n status_override: { icon: ArrowLeftRight, tone: 'warning', label: 'Status overridden' },\n\n // People\n assigned: { icon: UserPlus, tone: 'info', label: 'Assigned' },\n unassigned: { icon: UserMinus, tone: 'destructive', label: 'Unassigned' },\n\n // Mail\n mail_sent: { icon: Mail, tone: 'info', label: 'Email sent' },\n mail_delivered: { icon: MailCheck, tone: 'success', label: 'Email delivered' },\n mail_opened: { icon: MailOpen, tone: 'info', label: 'Email opened' },\n mail_clicked: { icon: MailOpen, tone: 'info', label: 'Email clicked' },\n mail_bounced: { icon: MailX, tone: 'destructive', label: 'Email bounced' },\n mail_failed: { icon: MailX, tone: 'destructive', label: 'Email failed' },\n\n // Comments\n comment_created: { icon: MessageSquare, tone: 'warning', label: 'Comment posted' },\n comment_deleted: { icon: MessageSquare, tone: 'destructive', label: 'Comment deleted' },\n\n // Commerce\n paid: { icon: Check, tone: 'success', label: 'Paid' },\n refunded: { icon: ArrowLeftRight, tone: 'warning', label: 'Refunded' },\n confirmed: { icon: ShieldCheck, tone: 'success', label: 'Confirmed' },\n favorited: { icon: Heart, tone: 'warning', label: 'Favorited' },\n ordered: { icon: ShoppingBag, tone: 'primary', label: 'Order placed' },\n\n // Publishing\n published: { icon: Star, tone: 'success', label: 'Published' },\n flagged: { icon: Flag, tone: 'warning', label: 'Flagged' },\n linked: { icon: LinkIcon, tone: 'info', label: 'Linked' },\n\n // Failures\n failed: { icon: AlertTriangle, tone: 'destructive', label: 'Failed' },\n health_check_failed: { icon: AlertTriangle, tone: 'destructive', label: 'Health check failed' },\n};\n\n/** Resolve `eventConfig[event]` with override + default fallback. */\nexport function resolveEventConfig(\n event: string,\n map: ActivityEventConfigMap,\n): ActivityEventConfig {\n return map[event] ?? defaultEventConfig;\n}\n","/**\n * Strings for the Activities feature. Consumers override via the `strings`\n * prop on `<ActivityFeed>` / `<ActivityFeedCard>`. Values are deep-merged\n * over these defaults — `sources` and `events` merge one level deep so a\n * consumer can override a single source/event label without rewriting the\n * whole map.\n */\nexport interface ActivitiesStrings {\n /** Card title — usually \"Activity\". */\n title: string;\n /** Empty-state copy. */\n empty: string;\n /** Loading-state copy. */\n loading: string;\n /** Date-group label for today. */\n today: string;\n /** Date-group label for yesterday. */\n yesterday: string;\n /** Fallback label for activities without a timestamp. */\n undated: string;\n /** Replacement for actor name when `actorId === currentUserId`. */\n you: string;\n /** Toggle button label — collapsed state. */\n showChanges: string;\n /** Toggle button label — expanded state. */\n hideChanges: string;\n /** aria-label for the actions menu trigger. */\n actionsLabel: string;\n /** Generic \"more\" affordance label. */\n moreLabel: string;\n /** Map of `source` → display label. */\n sources: Record<string, string>;\n /** Map of `event` → display label. Used as a fallback for headlines. */\n events: Record<string, string>;\n}\n\nexport const defaultActivitiesStrings: ActivitiesStrings = {\n title: 'Activity',\n empty: 'No activity yet.',\n loading: 'Loading activity…',\n today: 'Today',\n yesterday: 'Yesterday',\n undated: 'Undated',\n you: 'You',\n showChanges: 'Show changes',\n hideChanges: 'Hide changes',\n actionsLabel: 'Activity actions',\n moreLabel: 'More',\n sources: {\n comment: 'Comment',\n mail: 'Mail',\n booking_log: 'Booking log',\n activity_log: '',\n system: 'System',\n },\n events: {},\n};\n\n/** Replace `{{key}}` tokens with values from `params`. */\nexport function interpolate(\n template: string,\n params: Record<string, string | number>,\n): string {\n return template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key) => {\n const v = params[key];\n return v === undefined ? match : String(v);\n });\n}\n","/**\n * useActivityFeed — headless state machine for the Activities feature.\n *\n * Returns date-grouped activities with stable React keys, plus the expand /\n * collapse map for change-detail rows. Consumers wanting a fully custom UI\n * can call this hook directly and bypass `<ActivityFeed />`.\n */\nimport { isToday, isYesterday } from 'date-fns';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport type { ActivitiesStrings } from '../activities.strings';\nimport type { ActivityItem } from '../activities.types';\n\nexport interface ActivityKeyedItem<TData = unknown> {\n activity: ActivityItem<TData>;\n key: string;\n}\n\nexport interface ActivityDateGroup<TData = unknown> {\n label: string;\n items: ActivityKeyedItem<TData>[];\n}\n\nexport interface UseActivityFeedOptions<TData = unknown> {\n activities: ReadonlyArray<ActivityItem<TData>>;\n groupByDate?: boolean;\n expandedByDefault?: boolean;\n locale?: string;\n strings: ActivitiesStrings;\n formatDateGroupLabel?: (\n iso: string | null,\n strings: ActivitiesStrings,\n ) => string;\n}\n\nexport interface UseActivityFeedReturn<TData = unknown> {\n groups: ActivityDateGroup<TData>[];\n total: number;\n isExpanded: (id: string) => boolean;\n toggleExpanded: (id: string) => void;\n setExpanded: (id: string, value: boolean) => void;\n expandAll: () => void;\n collapseAll: () => void;\n}\n\nfunction defaultDateGroupLabel(\n iso: string | null,\n strings: ActivitiesStrings,\n locale?: string,\n): string {\n if (!iso) return strings.undated;\n const date = new Date(iso);\n if (isToday(date)) return strings.today;\n if (isYesterday(date)) return strings.yesterday;\n try {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n } catch {\n return new Intl.DateTimeFormat(undefined, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(date);\n }\n}\n\nexport function useActivityFeed<TData = unknown>({\n activities,\n groupByDate = true,\n expandedByDefault = false,\n locale,\n strings,\n formatDateGroupLabel,\n}: UseActivityFeedOptions<TData>): UseActivityFeedReturn<TData> {\n const [expandedMap, setExpandedMap] = useState<Record<string, boolean>>({});\n\n const keyed = useMemo<ActivityKeyedItem<TData>[]>(() => {\n const seen = new Map<string, number>();\n return activities.map((activity) => {\n const baseId = String(activity.id ?? '').trim();\n const createdAt = String(activity.createdAt ?? '').trim();\n const event = String(activity.event ?? '').trim();\n const source = String(activity.source ?? '').trim();\n const keyBase = [baseId, createdAt, event, source].join(':');\n const occurrence = (seen.get(keyBase) ?? 0) + 1;\n seen.set(keyBase, occurrence);\n return { activity, key: `${keyBase}:${occurrence}` };\n });\n }, [activities]);\n\n const groups = useMemo<ActivityDateGroup<TData>[]>(() => {\n if (!groupByDate) {\n return keyed.length > 0 ? [{ label: '', items: keyed }] : [];\n }\n const out: ActivityDateGroup<TData>[] = [];\n let currentLabel = '__init__';\n let currentItems: ActivityKeyedItem<TData>[] = [];\n\n const labelFor = (iso: string | null) =>\n formatDateGroupLabel\n ? formatDateGroupLabel(iso, strings)\n : defaultDateGroupLabel(iso, strings, locale);\n\n for (const item of keyed) {\n const iso = item.activity.createdAt ?? null;\n const label = labelFor(iso);\n if (label !== currentLabel) {\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n currentLabel = label;\n currentItems = [item];\n } else {\n currentItems.push(item);\n }\n }\n if (currentItems.length > 0) {\n out.push({ label: currentLabel, items: currentItems });\n }\n return out;\n }, [keyed, groupByDate, locale, strings, formatDateGroupLabel]);\n\n const isExpanded = useCallback(\n (id: string) => expandedMap[id] ?? expandedByDefault,\n [expandedMap, expandedByDefault],\n );\n\n const toggleExpanded = useCallback((id: string) => {\n setExpandedMap((current) => ({\n ...current,\n [id]: !(current[id] ?? false),\n }));\n }, []);\n\n const setExpanded = useCallback((id: string, value: boolean) => {\n setExpandedMap((current) => ({ ...current, [id]: value }));\n }, []);\n\n const expandAll = useCallback(() => {\n const next: Record<string, boolean> = {};\n for (const k of keyed) next[k.activity.id] = true;\n setExpandedMap(next);\n }, [keyed]);\n\n const collapseAll = useCallback(() => setExpandedMap({}), []);\n\n return {\n groups,\n total: keyed.length,\n isExpanded,\n toggleExpanded,\n setExpanded,\n expandAll,\n collapseAll,\n };\n}\n","/**\n * useActivityResources — registry hook for the rich-resource feature.\n *\n * The registry maps `key → ActivityResourceConfig`. Activity items reference\n * resources by `key`; the row renderer looks up the live config so badges,\n * icons, and links can be edited globally without touching individual rows.\n *\n * The hook re-seeds whenever the `resources` prop reference changes and emits\n * the full registry on every mutation via `onResourcesChange`. Wire that\n * callback to localStorage / a backend mutation to persist the user's\n * resource customisations across sessions.\n */\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\n\nexport type ActivityResourceRegistry = Readonly<\n Record<string, ActivityResourceConfig>\n>;\n\nexport interface UseActivityResourcesOptions {\n resources?: ActivityResourceRegistry;\n onResourcesChange?: (registry: ActivityResourceRegistry) => void;\n}\n\nexport interface UseActivityResourcesReturn {\n registry: ActivityResourceRegistry;\n /** Look up a resource by ref or key. */\n get: (\n ref: ActivityResourceRef | string,\n ) => ActivityResourceConfig | undefined;\n /** Replace a resource entry wholesale (or insert new). */\n register: (key: string, config: ActivityResourceConfig) => void;\n /** Shallow-merge a partial update over an existing entry. */\n update: (key: string, partial: Partial<ActivityResourceConfig>) => void;\n /** Remove an entry. */\n remove: (key: string) => void;\n /** Replace the entire registry. */\n setAll: (registry: ActivityResourceRegistry) => void;\n /** Reset to the original `resources` prop (or empty if none). */\n reset: () => void;\n}\n\nexport function useActivityResources({\n resources,\n onResourcesChange,\n}: UseActivityResourcesOptions = {}): UseActivityResourcesReturn {\n const [registry, setRegistry] = useState<ActivityResourceRegistry>(\n () => resources ?? {},\n );\n\n const seedRef = useRef(resources);\n useEffect(() => {\n if (resources !== seedRef.current) {\n seedRef.current = resources;\n setRegistry(resources ?? {});\n }\n }, [resources]);\n\n const onChangeRef = useRef(onResourcesChange);\n useEffect(() => {\n onChangeRef.current = onResourcesChange;\n }, [onResourcesChange]);\n\n const emit = useCallback((next: ActivityResourceRegistry) => {\n onChangeRef.current?.(next);\n }, []);\n\n const register = useCallback(\n (key: string, config: ActivityResourceConfig) => {\n setRegistry((current) => {\n const next = { ...current, [key]: config };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const update = useCallback(\n (key: string, partial: Partial<ActivityResourceConfig>) => {\n setRegistry((current) => {\n const existing = current[key];\n if (!existing) return current;\n const next = {\n ...current,\n [key]: { ...existing, ...partial },\n };\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const remove = useCallback(\n (key: string) => {\n setRegistry((current) => {\n if (!(key in current)) return current;\n const next = { ...current };\n delete next[key];\n emit(next);\n return next;\n });\n },\n [emit],\n );\n\n const setAll = useCallback(\n (next: ActivityResourceRegistry) => {\n setRegistry(next);\n emit(next);\n },\n [emit],\n );\n\n const reset = useCallback(() => {\n const next = seedRef.current ?? {};\n setRegistry(next);\n emit(next);\n }, [emit]);\n\n const get = useCallback(\n (ref: ActivityResourceRef | string) => {\n const key = typeof ref === 'string' ? ref : ref.key;\n return registry[key];\n },\n [registry],\n );\n\n return { registry, get, register, update, remove, setAll, reset };\n}\n","/**\n * ActivityActionsMenu — inline overflow menu rendered on rich rows.\n *\n * Backed by the shadcn DropdownMenu primitive; each item fires the\n * activity's per-row `onClick` and forwards `actionId` through `onAction` so\n * consumers can route actions centrally.\n */\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/base/navigation';\n\nimport type { ActivityAction, ActivityItem } from '../activities.types';\n\nexport interface ActivityActionsMenuProps<TData = unknown> {\n activity: ActivityItem<TData>;\n actions: readonly ActivityAction<TData>[];\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n label: string;\n}\n\nexport function ActivityActionsMenu<TData = unknown>({\n activity,\n actions,\n onAction,\n label,\n}: ActivityActionsMenuProps<TData>) {\n if (actions.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(triggerProps) => (\n <Button\n {...(triggerProps as Record<string, unknown>)}\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"icon-sm\"\n aria-label={label}\n className=\"h-7 w-7 text-muted-foreground\"\n >\n <MoreHorizontal className=\"size-4\" />\n </Button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"min-w-[160px]\">\n {actions.map((action) => {\n const Icon = action.icon;\n return (\n <DropdownMenuItem\n key={action.id}\n onClick={() => {\n if (action.disabled) return;\n action.onClick(activity);\n onAction?.(action.id, activity);\n }}\n disabled={action.disabled}\n variant={action.tone === 'destructive' ? 'destructive' : 'default'}\n className=\"gap-2 px-2 py-1.5 text-xs\"\n >\n {!!Icon && <Icon className=\"size-3.5\" />}\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n","/**\n * ActivityChanges — collapsible old → new diff block.\n *\n * Each entry shows the attribute label, the previous value (line-through, on\n * a destructive tint), an arrow, and the new value (on a success tint). When\n * neither old nor new is set, falls back to `description`.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityChange } from '../activities.types';\n\nexport interface ActivityChangesProps {\n changes: readonly ActivityChange[];\n className?: string;\n}\n\nfunction ChangeValue({ change }: { change: ActivityChange }) {\n const hasOld = change.old !== null && change.old !== undefined;\n const hasNew = change.new !== null && change.new !== undefined;\n\n if (!hasOld && !hasNew) {\n return (\n <Text size=\"xs\" tag=\"span\">\n {change.description}\n </Text>\n );\n }\n\n return (\n <Text tag=\"span\" size=\"xs\" className=\"inline-flex flex-wrap items-baseline gap-1\">\n {!!hasOld && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-destructive/10 text-destructive line-through px-1 py-px\"\n >\n {change.old}\n </Text>\n )}\n {hasOld && hasNew && (\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n →\n </Text>\n )}\n {!!hasNew && (\n <Text\n tag=\"span\"\n size=\"xs\"\n className=\"rounded bg-success/15 text-success px-1 py-px\"\n >\n {change.new}\n </Text>\n )}\n </Text>\n );\n}\n\nexport function ActivityChanges({ changes, className }: ActivityChangesProps) {\n if (changes.length === 0) return null;\n return (\n <div\n className={cn(\n 'space-y-1.5 rounded-lg border border-border/60 bg-muted/30 px-3 py-2',\n className,\n )}\n >\n {changes.map((change) => (\n <div\n key={`${change.key}-${change.label}`}\n className=\"flex items-baseline gap-2\"\n >\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"shrink-0\"\n >\n {change.label}\n </Text>\n <ChangeValue change={change} />\n </div>\n ))}\n </div>\n );\n}\n","/**\n * ActivityDateLabel — eyebrow rendered above each date group.\n *\n * Consumers can override via `slots.renderDateLabel`. Default: small\n * uppercase eyebrow above each group, with extra top margin between groups.\n */\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityDateLabelProps {\n label: string;\n isFirst: boolean;\n className?: string;\n}\n\nexport function ActivityDateLabel({\n label,\n isFirst,\n className,\n}: ActivityDateLabelProps) {\n if (label === '') return null;\n return (\n <Text\n size=\"xxs\"\n type=\"secondary\"\n weight=\"medium\"\n className={cn(\n 'uppercase tracking-wider',\n !isFirst && 'mt-5',\n className,\n )}\n >\n {label}\n </Text>\n );\n}\n","/**\n * ActivityEmptyState — neutral empty surface used when no activities are\n * available. Consumers replace via `slots.empty`.\n */\nimport { Activity } from 'lucide-react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface ActivityEmptyStateProps {\n title: string;\n hint?: string;\n className?: string;\n}\n\nexport function ActivityEmptyState({\n title,\n hint,\n className,\n}: ActivityEmptyStateProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center gap-2 px-6 py-10 text-center',\n className,\n )}\n >\n <span className=\"flex size-9 items-center justify-center rounded-full bg-muted text-muted-foreground\">\n <Activity className=\"size-4\" />\n </span>\n <Text weight=\"medium\">\n {title}\n </Text>\n {!!hint && (\n <Text size=\"xs\" type=\"secondary\">\n {hint}\n </Text>\n )}\n </div>\n );\n}\n","/**\n * Tone palettes shared by the marker, headline status segments, and the\n * resource tag. Tones map to semantic shadcn tokens — never to raw colours —\n * so a consumer rebrand at `:root` flows through the activities feature\n * automatically.\n */\nimport type { ActivityTone } from '../activities.types';\nimport type { ComposedBadgeVariant } from '@/components/base/badge/badge';\n\nexport interface ActivityToneStyle {\n /** Filled background — used by the rich icon marker. */\n bg: string;\n /** Foreground text colour matching the bg. */\n fg: string;\n /** Solid colour used by the compact dot. */\n dot: string;\n /** Border tint used by the connector line. */\n line: string;\n /** Background for chips / tags. */\n chipBg: string;\n /** Text colour for chips / tags. */\n chipFg: string;\n}\n\nexport const ACTIVITY_TONE: Record<ActivityTone, ActivityToneStyle> = {\n primary: {\n bg: 'bg-primary/10',\n fg: 'text-primary',\n dot: 'bg-primary',\n line: 'bg-primary/30',\n chipBg: 'bg-primary/5',\n chipFg: 'text-primary',\n },\n success: {\n bg: 'bg-success/10',\n fg: 'text-success',\n dot: 'bg-success',\n line: 'bg-success/30',\n chipBg: 'bg-success/10',\n chipFg: 'text-success',\n },\n warning: {\n bg: 'bg-warning/30',\n fg: 'text-warning-foreground',\n dot: 'bg-warning',\n line: 'bg-warning/40',\n chipBg: 'bg-warning/30',\n chipFg: 'text-warning-foreground',\n },\n destructive: {\n bg: 'bg-destructive/10',\n fg: 'text-destructive',\n dot: 'bg-destructive',\n line: 'bg-destructive/30',\n chipBg: 'bg-destructive/10',\n chipFg: 'text-destructive',\n },\n info: {\n bg: 'bg-info/10',\n fg: 'text-info',\n dot: 'bg-info',\n line: 'bg-info/30',\n chipBg: 'bg-info/10',\n chipFg: 'text-info',\n },\n neutral: {\n bg: 'bg-muted',\n fg: 'text-muted-foreground',\n dot: 'bg-muted-foreground/60',\n line: 'bg-border',\n chipBg: 'bg-muted',\n chipFg: 'text-muted-foreground',\n },\n};\n\n/** Map an activity tone onto the closest base/Badge variant. */\nexport const TONE_TO_BADGE_VARIANT: Record<ActivityTone, ComposedBadgeVariant> = {\n primary: 'primary',\n success: 'success',\n warning: 'warning',\n destructive: 'destructive',\n info: 'info',\n neutral: 'secondary',\n};\n","/**\n * ActivityResourceTag — chip rendering for a registered resource.\n *\n * The resource registry stores per-key `ActivityResourceConfig` (label, icon,\n * tone, badge, tags). This component renders those as a single inline chip\n * suitable for embedding into a headline. Falls back gracefully when the\n * registry has no entry — uses the segment's text/label.\n */\nimport { CircleDot } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ACTIVITY_TONE, TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityResourceTagProps {\n resource: ActivityResourceRef;\n config?: ActivityResourceConfig;\n /** Fallback label if neither config nor segment text are present. */\n fallbackText?: string;\n onClick?: () => void;\n}\n\nexport function ActivityResourceTag({\n resource,\n config,\n fallbackText,\n onClick,\n}: ActivityResourceTagProps) {\n const tone: ActivityTone = config?.tone ?? 'neutral';\n const palette = ACTIVITY_TONE[tone];\n const Icon = config?.icon ?? CircleDot;\n const label = config?.label ?? fallbackText ?? resource.label ?? resource.key;\n const interactive = typeof onClick === 'function';\n\n const inner = (\n <>\n <Icon className={cn('size-3 shrink-0', palette.fg)} />\n <Text tag=\"span\" size=\"xs\" weight=\"medium\" className={palette.chipFg}>\n {label}\n </Text>\n {!!config?.tags && config.tags.length > 0 && (\n <Text\n tag=\"span\"\n size=\"xxs\"\n type=\"secondary\"\n className=\"border-l border-current/20 pl-1.5 ml-0.5\"\n >\n {config.tags.join(' · ')}\n </Text>\n )}\n {!!config?.badge && (\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[config.badge.tone ?? 'neutral']}\n className=\"ml-1\"\n >\n {config.badge.label}\n </Badge>\n )}\n </>\n );\n\n const chipClass = cn(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 align-baseline',\n 'border border-border/60',\n palette.chipBg,\n interactive &&\n 'cursor-pointer transition-colors hover:bg-foreground/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n );\n\n if (interactive) {\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"xs\"\n onClick={(e) => {\n e.stopPropagation();\n onClick?.();\n }}\n className={cn(chipClass, 'h-auto rounded-full')}\n title={config?.note}\n >\n {inner}\n </Button>\n );\n }\n\n return (\n <span className={chipClass} title={config?.note}>\n {inner}\n </span>\n );\n}\n","/**\n * ActivityHeadline — segment renderer for the headline line.\n *\n * Renders typed segments (`actor` / `field` / `value` / `status` / `resource`\n * / `text`) into mixed inline content with proper typography and tone.\n *\n * When no segments are provided, falls back to splitting `headline` around\n * the actor's name so the actor still becomes interactive when possible.\n */\nimport { Fragment, type ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\n\nimport type {\n ActivityActor,\n ActivityHeadlineSegment,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n} from '../activities.types';\nimport { ActivityResourceTag } from './activity-resource-tag';\nimport { TONE_TO_BADGE_VARIANT } from './tone-tokens';\n\nexport interface ActivityHeadlineProps<TData = unknown> {\n activity: ActivityItem<TData>;\n currentUserId?: string;\n youLabel: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n /** Live registry lookup for resource segments. */\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n}\n\nfunction ActorNode<TData>({\n actorId,\n text,\n href,\n activity,\n youLabel,\n currentUserId,\n onActorClick,\n}: {\n actorId?: string;\n text: string;\n href?: string;\n activity: ActivityItem<TData>;\n youLabel: string;\n currentUserId?: string;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n}) {\n const isYou =\n currentUserId !== undefined &&\n actorId !== undefined &&\n currentUserId === actorId;\n const display = isYou ? youLabel : text;\n const actor: ActivityActor = activity.actor ?? { id: actorId, name: text };\n\n if (href) {\n return (\n <a\n href={href}\n onClick={(e) => {\n if (onActorClick) {\n e.preventDefault();\n e.stopPropagation();\n onActorClick(actor, activity);\n }\n }}\n className=\"font-semibold text-foreground underline-offset-2 hover:underline\"\n >\n {display}\n </a>\n );\n }\n\n if (onActorClick) {\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"xs\"\n onClick={(e) => {\n e.stopPropagation();\n onActorClick(actor, activity);\n }}\n className=\"h-auto rounded px-0 py-0 font-semibold text-foreground underline-offset-2 hover:underline\"\n >\n {display}\n </Button>\n );\n }\n\n return (\n <Text tag=\"span\" weight=\"semibold\">\n {display}\n </Text>\n );\n}\n\nfunction renderSegments<TData>(\n segments: readonly ActivityHeadlineSegment[],\n props: ActivityHeadlineProps<TData>,\n): ReactNode {\n return segments.map((segment, index) => {\n const key = `seg-${index}-${segment.type}`;\n switch (segment.type) {\n case 'actor':\n return (\n <Fragment key={key}>\n <ActorNode<TData>\n actorId={segment.actorId}\n text={segment.text}\n href={segment.href}\n activity={props.activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />{' '}\n </Fragment>\n );\n case 'field':\n case 'value':\n return (\n <Fragment key={key}>\n <Text tag=\"span\" weight=\"semibold\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n case 'status':\n return (\n <Fragment key={key}>\n <Badge\n inline\n variant={TONE_TO_BADGE_VARIANT[segment.tone ?? 'neutral']}\n >\n {segment.text}\n </Badge>{' '}\n </Fragment>\n );\n case 'resource': {\n const config = props.getResourceConfig?.(segment.resource);\n return (\n <Fragment key={key}>\n <ActivityResourceTag\n resource={segment.resource}\n config={config}\n fallbackText={segment.text}\n onClick={\n props.onResourceClick\n ? () =>\n props.onResourceClick?.(\n segment.resource,\n config,\n props.activity,\n )\n : undefined\n }\n />{' '}\n </Fragment>\n );\n }\n case 'text':\n default:\n return (\n <Fragment key={key}>\n <Text tag=\"span\">\n {segment.text}\n </Text>{' '}\n </Fragment>\n );\n }\n });\n}\n\nfunction renderFallback<TData>(props: ActivityHeadlineProps<TData>): ReactNode {\n const { activity } = props;\n const fallbackHeadline =\n activity.headline ?? activity.event;\n const actorName = activity.actor?.name;\n if (!actorName || !fallbackHeadline.includes(actorName)) {\n return (\n <Text tag=\"span\">\n {fallbackHeadline}\n </Text>\n );\n }\n const [before, ...after] = fallbackHeadline.split(actorName);\n return (\n <>\n {!!before && (\n <Text tag=\"span\">\n {before}\n </Text>\n )}\n <ActorNode<TData>\n actorId={activity.actor?.id}\n text={actorName}\n href={activity.actor?.href}\n activity={activity}\n youLabel={props.youLabel}\n currentUserId={props.currentUserId}\n onActorClick={props.onActorClick}\n />\n {after.length > 0 && (\n <Text tag=\"span\">\n {after.join(actorName)}\n </Text>\n )}\n </>\n );\n}\n\nexport function ActivityHeadline<TData = unknown>(\n props: ActivityHeadlineProps<TData>,\n) {\n const segments = props.activity.segments;\n if (segments && segments.length > 0) {\n return (\n <span className=\"leading-snug [&>span]:leading-snug\">\n {renderSegments<TData>(segments, props)}\n </span>\n );\n }\n return <span className=\"leading-snug\">{renderFallback<TData>(props)}</span>;\n}\n","/**\n * ActivityMarker — left-edge visual for a row.\n *\n * Density mapping:\n * - `compact` → small tone-coloured dot\n * - `default` → 22px tone-tinted square with the event icon\n * - `rich` → 28px tone-tinted circle with the event icon\n *\n * Always renders the connector line beneath unless `isLast` is true.\n */\nimport type { LucideIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nimport type { ActivityDensity, ActivityTone } from '../activities.types';\n\nimport { ACTIVITY_TONE } from './tone-tokens';\n\nexport interface ActivityMarkerProps {\n icon: LucideIcon;\n tone: ActivityTone;\n density: ActivityDensity;\n isLast: boolean;\n}\n\nexport function ActivityMarker({\n icon: Icon,\n tone,\n density,\n isLast,\n}: ActivityMarkerProps) {\n const palette = ACTIVITY_TONE[tone];\n\n if (density === 'compact') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n aria-hidden\n className={cn('mt-1.5 size-2 shrink-0 rounded-full', palette.dot)}\n />\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n if (density === 'rich') {\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-7 shrink-0 items-center justify-center rounded-full ring-1 ring-border/60',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3.5\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col items-center\">\n <span\n className={cn(\n 'flex size-5 shrink-0 items-center justify-center rounded-full',\n palette.bg,\n palette.fg,\n )}\n >\n <Icon className=\"size-3\" />\n </span>\n {!isLast && (\n <span aria-hidden className={cn('mt-1 w-px flex-1', palette.line)} />\n )}\n </div>\n );\n}\n","/**\n * ActivityRow — single row layout used by `<ActivityFeed />`.\n *\n * Composes the marker, headline, optional description, metadata chips,\n * source badge, timestamp, and (rich-only) the change-detail block plus\n * action menu. Per-density layout follows the design-system rules:\n * compact (dot, single line) / default (icon, headline + meta line) /\n * rich (icon, full header + body + actions).\n */\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n ActivityAction,\n ActivityActor,\n ActivityDensity,\n ActivityEventConfig,\n ActivityItem,\n ActivityResourceConfig,\n ActivityResourceRef,\n ActivityTone,\n} from '../activities.types';\n\nimport { ActivityActionsMenu } from './activity-actions-menu';\nimport { ActivityChanges } from './activity-changes';\nimport { ActivityHeadline } from './activity-headline';\nimport { ActivityMarker } from './activity-marker';\nimport { ActivityResourceTag } from './activity-resource-tag';\n\nexport interface ActivityRowProps<TData = unknown> {\n activity: ActivityItem<TData>;\n density: ActivityDensity;\n eventConfig: ActivityEventConfig;\n tone: ActivityTone;\n isLast: boolean;\n expanded: boolean;\n onToggleExpanded: () => void;\n relativeTime: string | null;\n absoluteTime: string | null;\n sourceLabel: string | null;\n youLabel: string;\n showChangesLabel: string;\n hideChangesLabel: string;\n actionsLabel: string;\n currentUserId?: string;\n actions: readonly ActivityAction<TData>[];\n onActivityClick?: (activity: ActivityItem<TData>) => void;\n onActorClick?: (actor: ActivityActor, activity: ActivityItem<TData>) => void;\n onResourceClick?: (\n resource: ActivityResourceRef,\n config: ActivityResourceConfig | undefined,\n activity: ActivityItem<TData>,\n ) => void;\n onAction?: (actionId: string, activity: ActivityItem<TData>) => void;\n getResourceConfig?: (\n ref: ActivityResourceRef,\n ) => ActivityResourceConfig | undefined;\n /** Slot override for the headline only. */\n headlineOverride?: ReactNode;\n /** Slot override for the marker only. */\n markerOverride?: ReactNode;\n}\n\nexport function ActivityRow<TData = unknown>(props: ActivityRowProps<TData>) {\n const {\n activity,\n density,\n eventConfig,\n tone,\n isLast,\n expanded,\n onToggleExpanded,\n relativeTime,\n absoluteTime,\n sourceLabel,\n youLabel,\n showChangesLabel,\n hideChangesLabel,\n actionsLabel,\n currentUserId,\n actions,\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n getResourceConfig,\n headlineOverride,\n markerOverride,\n } = props;\n\n const Icon = activity.iconOverride ?? eventConfig.icon;\n const hasChanges = (activity.changes?.length ?? 0) > 0;\n const hasMetadata = (activity.metadata?.length ?? 0) > 0;\n const hasResources = (activity.resources?.length ?? 0) > 0;\n const hasDescription =\n activity.description !== undefined &&\n activity.description !== null &&\n activity.description !== '';\n const showSecondaryRow = density !== 'compact';\n const showRichBody = density === 'rich';\n\n const headlineNode =\n headlineOverride ??\n (\n <ActivityHeadline<TData>\n activity={activity}\n currentUserId={currentUserId}\n youLabel={youLabel}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n getResourceConfig={getResourceConfig}\n />\n );\n\n const markerNode =\n markerOverride ?? (\n <ActivityMarker\n icon={Icon}\n tone={tone}\n density={density}\n isLast={isLast}\n />\n );\n\n const interactive = typeof onActivityClick === 'function';\n const hasNestedInteractive = (\n hasChanges ||\n hasResources ||\n actions.length > 0 ||\n typeof onActorClick === 'function' ||\n typeof onResourceClick === 'function'\n );\n const keyboardInteractive = interactive && !hasNestedInteractive;\n\n return (\n <div\n className={cn(\n 'relative flex gap-3',\n interactive && 'cursor-pointer rounded-md hover:bg-muted/40',\n )}\n onClick={interactive ? () => onActivityClick?.(activity) : undefined}\n role={keyboardInteractive ? 'button' : undefined}\n tabIndex={keyboardInteractive ? 0 : undefined}\n onKeyDown={\n keyboardInteractive\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onActivityClick?.(activity);\n }\n }\n : undefined\n }\n >\n {markerNode}\n\n <div\n className={cn(\n 'min-w-0 flex-1',\n !isLast && (density === 'rich' ? 'pb-4' : density === 'compact' ? 'pb-2.5' : 'pb-3'),\n )}\n >\n <div className=\"flex flex-col gap-1 sm:flex-row sm:items-start sm:justify-between sm:gap-3\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1\">\n <Text tag=\"span\" lineHeight=\"snug\">\n {headlineNode}\n </Text>\n {!!sourceLabel && (\n <Badge inline variant=\"secondary\">\n {sourceLabel}\n </Badge>\n )}\n {showRichBody && hasChanges && (\n <Button\n type=\"button\"\n size=\"icon-xs\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n className=\"h-5 w-5 text-muted-foreground\"\n onClick={(e) => {\n e.stopPropagation();\n onToggleExpanded();\n }}\n title={expanded ? hideChangesLabel : showChangesLabel}\n aria-label={expanded ? hideChangesLabel : showChangesLabel}\n aria-expanded={expanded}\n >\n {expanded ? (\n <ChevronDown className=\"size-3.5\" />\n ) : (\n <ChevronRight className=\"size-3.5\" />\n )}\n </Button>\n )}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-1\">\n {!!relativeTime && (\n <Text\n size=\"xs\"\n type=\"secondary\"\n className=\"whitespace-nowrap tabular-nums pt-0.5\"\n title={absoluteTime ?? undefined}\n >\n {relativeTime}\n </Text>\n )}\n {showRichBody && actions.length > 0 && (\n <ActivityActionsMenu<TData>\n activity={activity}\n actions={actions}\n onAction={onAction}\n label={actionsLabel}\n />\n )}\n </div>\n </div>\n\n {!!showSecondaryRow && hasDescription && (\n <Text tag=\"div\" size=\"xs\" type=\"secondary\" className=\"mt-1\">\n {activity.description}\n </Text>\n )}\n\n {!!showRichBody && hasMetadata && activity.metadata && (\n <div className=\"mt-2 flex flex-wrap gap-x-3 gap-y-1\">\n {activity.metadata.map((m) => (\n <Text key={m.label} size=\"xs\" type=\"secondary\">\n <Text tag=\"span\" size=\"xs\" type=\"discrete\">\n {m.label}:{' '}\n </Text>\n {m.value}\n </Text>\n ))}\n </div>\n )}\n\n {!!showRichBody && hasResources && activity.resources && (\n <div className=\"mt-2 flex flex-wrap gap-1.5\">\n {activity.resources.map((res) => {\n const cfg = getResourceConfig?.(res);\n return (\n <ActivityResourceTag\n key={res.key}\n resource={res}\n config={cfg}\n onClick={\n onResourceClick\n ? () =>\n onResourceClick(\n res,\n cfg,\n activity,\n )\n : undefined\n }\n />\n );\n })}\n </div>\n )}\n\n {!!showRichBody && hasChanges && expanded && activity.changes && (\n <div className=\"mt-2\">\n <ActivityChanges changes={activity.changes} />\n </div>\n )}\n </div>\n </div>\n );\n}\n","/**\n * ActivityFeed — framework-agnostic activity timeline.\n *\n * Composition seams:\n * - `strings` — deep-partial override of every label\n * - `eventConfig` — mass-configurable per-event icon/tone/labels\n * - `slots` — replace any region (row / headline / marker /\n * dateLabel / empty / loading / header / footer)\n * - `slots.renderRow` — full per-row override\n * - `accessors` — formatRelative/Absolute, getEventLabel, …\n * - `actionsForActivity` — surface a per-row action menu (rich density)\n * - `resources` + `onResourcesChange` — registry-driven rich resource\n * tags (icons, badges, links, tags) with save\n * and restore semantics for the consumer\n *\n * Headless usage:\n * - Call `useActivityFeed({ activities, ... })` directly to drive a\n * completely custom UI against the same grouping/expand state machine.\n * - Call `useActivityResources({ resources, onResourcesChange })` to\n * drive the registry independently.\n *\n * Framework-agnostic:\n * - No router import, no i18n SDK import. Wire actor / resource navigation\n * via callbacks at the call site.\n */\nimport { useMemo, type ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { useDatesConfig } from '@/lib/ui-provider';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultActivityEventConfig,\n resolveEventConfig,\n} from './activities.config';\nimport {\n defaultActivitiesStrings,\n} from './activities.strings';\nimport type {\n ActivityAction,\n ActivityFeedProps,\n ActivityItem,\n ActivityRenderRowContext,\n ActivityTone,\n} from './activities.types';\nimport { useActivityFeed } from './hooks/use-activity-feed';\nimport { useActivityResources } from './hooks/use-activity-resources';\nimport {\n ActivityDateLabel,\n ActivityEmptyState,\n ActivityRow,\n} from './partials';\n\nfunction defaultFormatAbsolute(iso: string, locale?: string): string {\n try {\n return new Intl.DateTimeFormat(locale, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }).format(new Date(iso));\n } catch {\n return iso;\n }\n}\n\nfunction resolveTone<TData>(\n activity: ActivityItem<TData>,\n eventTone: ActivityTone,\n): ActivityTone {\n return activity.toneOverride ?? eventTone;\n}\n\nexport function ActivityFeed<TData = unknown>(props: ActivityFeedProps<TData>) {\n const {\n activities = [],\n density = 'default',\n groupByDate = true,\n expandedByDefault = false,\n currentUserId,\n loading = false,\n eventConfig: eventConfigOverride,\n strings: stringsProp,\n slots,\n className,\n locale,\n // accessors\n formatRelativeTime,\n formatAbsoluteTime,\n formatDateGroupLabel,\n getEventLabel: _getEventLabel,\n getSourceLabel,\n actionsForActivity,\n // callbacks\n onActivityClick,\n onActorClick,\n onResourceClick,\n onAction,\n // resources\n resources,\n onResourcesChange,\n } = props;\n\n const strings = useStrings(defaultActivitiesStrings, stringsProp);\n\n const eventConfigMap = useMemo(\n () => ({ ...defaultActivityEventConfig, ...eventConfigOverride }),\n [eventConfigOverride],\n );\n\n const registry = useActivityResources({\n resources,\n onResourcesChange,\n });\n\n const feed = useActivityFeed<TData>({\n activities,\n groupByDate,\n expandedByDefault,\n locale,\n strings,\n formatDateGroupLabel,\n });\n\n const { formatRelativeTime: storeFormatRelative } = useDatesConfig();\n const fmtRelative = formatRelativeTime ?? storeFormatRelative ?? ((iso: string) => iso);\n const fmtAbsolute = formatAbsoluteTime ?? ((iso: string) => defaultFormatAbsolute(iso, locale));\n\n if (loading) {\n return (\n <div className={cn('activities-feed--component', 'px-2 py-4', className)}>\n {slots?.loading ?? (\n <Text type=\"secondary\" align=\"center\">\n {strings.loading}\n </Text>\n )}\n </div>\n );\n }\n\n if (activities.length === 0) {\n return (\n <div className={cn('activities-feed--component', 'px-2 py-2', className)}>\n {slots?.empty ?? <ActivityEmptyState title={strings.empty} />}\n </div>\n );\n }\n\n const totalRendered = feed.groups.reduce((acc, g) => acc + g.items.length, 0);\n let renderedSoFar = 0;\n\n return (\n <div className={cn('activities-feed--component flex flex-col', className)}>\n {!!slots?.header && <div className=\"mb-3\">{slots.header}</div>}\n\n <div className=\"flex flex-col\">\n {feed.groups.map((group, gi) => {\n const isFirstGroup = gi === 0;\n return (\n <div key={`${group.label}-${gi}`} className={cn(isFirstGroup ? '' : 'mt-1')}>\n {slots?.renderDateLabel\n ? slots.renderDateLabel(group.label, isFirstGroup)\n : (\n <ActivityDateLabel\n label={group.label}\n isFirst={isFirstGroup}\n className={isFirstGroup ? '' : 'mb-2'}\n />\n )}\n\n <div className={cn('flex flex-col', !!group.label && 'mt-2')}>\n {group.items.map((keyed, ii) => {\n const activity = keyed.activity;\n const isFirstInGroup = ii === 0;\n const isLast =\n ++renderedSoFar === totalRendered;\n const eventCfg = resolveEventConfig(\n activity.event,\n eventConfigMap,\n );\n const tone = resolveTone(activity, eventCfg.tone);\n const relativeTime = activity.timestamp\n ?? (activity.createdAt\n ? fmtRelative(activity.createdAt)\n : null);\n const absoluteTime = activity.createdAt\n ? fmtAbsolute(activity.createdAt)\n : null;\n const sourceLabel = activity.source\n ? (getSourceLabel?.(activity.source)\n ?? strings.sources[activity.source]\n ?? eventCfg.sourceLabel\n ?? null)\n : eventCfg.sourceLabel ?? null;\n const sourceLabelTrimmed =\n sourceLabel && sourceLabel.trim().length > 0\n ? sourceLabel\n : null;\n const actions: readonly ActivityAction<TData>[] =\n actionsForActivity?.(activity) ?? [];\n\n const ctx: ActivityRenderRowContext<TData> = {\n density,\n isLast,\n isFirstInGroup,\n activity,\n eventConfig: eventCfg,\n tone,\n relativeTime,\n absoluteTime,\n sourceLabel: sourceLabelTrimmed,\n expanded: feed.isExpanded(activity.id),\n toggleExpanded: () =>\n feed.toggleExpanded(activity.id),\n };\n\n const customRow = slots?.renderRow?.(activity, ctx);\n if (customRow !== undefined) {\n return (\n <div key={keyed.key}>{customRow}</div>\n );\n }\n\n const headlineOverride =\n slots?.renderHeadline?.(activity, ctx);\n const markerOverride =\n slots?.renderMarker?.(activity, ctx);\n\n return (\n <ActivityRow<TData>\n key={keyed.key}\n activity={activity}\n density={density}\n eventConfig={eventCfg}\n tone={tone}\n isLast={isLast}\n expanded={ctx.expanded}\n onToggleExpanded={ctx.toggleExpanded}\n relativeTime={relativeTime}\n absoluteTime={absoluteTime}\n sourceLabel={sourceLabelTrimmed}\n youLabel={strings.you}\n showChangesLabel={strings.showChanges}\n hideChangesLabel={strings.hideChanges}\n actionsLabel={strings.actionsLabel}\n currentUserId={currentUserId}\n actions={actions}\n onActivityClick={onActivityClick}\n onActorClick={onActorClick}\n onResourceClick={onResourceClick}\n onAction={onAction}\n getResourceConfig={(ref) =>\n registry.get(ref)\n }\n headlineOverride={\n headlineOverride as ReactNode | undefined\n }\n markerOverride={\n markerOverride as ReactNode | undefined\n }\n />\n );\n })}\n </div>\n </div>\n );\n })}\n </div>\n\n {!!slots?.footer && <div className=\"mt-3\">{slots.footer}</div>}\n </div>\n );\n}\n\nActivityFeed.displayName = 'ActivityFeed';\n","/**\n * ActivityFeedCard — `<ActivityFeed />` wrapped in `SmartCard`.\n *\n * Use this when you want the canonical card chrome (title + description +\n * actions menu + content padding). For embedded surfaces (sidebars, panels)\n * use `<ActivityFeed />` directly.\n */\nimport { Activity } from 'lucide-react';\n\nimport { SmartCard } from '@/components/base/cards';\nimport { useStrings } from '@/lib/strings';\n\nimport { ActivityFeed } from '../activities-feed';\nimport { defaultActivitiesStrings } from '../activities.strings';\nimport type { ActivityFeedCardProps } from '../activities.types';\n\nexport function ActivityFeedCard<TData = unknown>({\n title,\n titleSuffix,\n description,\n padding = 'base',\n composerSlot,\n className,\n strings: stringsProp,\n slots,\n ...feedProps\n}: ActivityFeedCardProps<TData>) {\n const strings = useStrings(defaultActivitiesStrings, stringsProp);\n\n const cardTitle = title ?? strings.title;\n\n return (\n <SmartCard\n icon={<Activity className=\"size-4\" />}\n title={cardTitle}\n titleSuffix={titleSuffix}\n description={description}\n padding={padding}\n className={className}\n >\n <ActivityFeed<TData>\n {...feedProps}\n strings={stringsProp}\n slots={{\n ...slots,\n header: composerSlot ?? slots?.header,\n }}\n />\n </SmartCard>\n );\n}\n\nActivityFeedCard.displayName = 'ActivityFeedCard';\n"],"mappings":"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"}
|