admin-ui-starter-kit 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/admin-ui-components/SKILL.md +71 -0
- package/.agents/skills/admin-ui-components/agents/openai.yaml +4 -0
- package/.agents/skills/admin-ui-components/references/selection-checklist.md +23 -0
- package/.agents/skills/admin-ui-consumer-migration/SKILL.md +50 -12
- package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +20 -1
- package/.agents/skills/component-library-rules/SKILL.md +39 -24
- package/.agents/skills/component-library-rules/references/audit-followups.md +6 -5
- package/.agents/skills/component-library-rules/references/base-wrapper.md +1 -1
- package/.agents/skills/component-library-rules/references/components/INDEX.json +25 -14
- package/.agents/skills/component-library-rules/references/components/INDEX.md +29 -12
- package/.agents/skills/component-library-rules/references/components/base__accordion.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__alert.md +3 -3
- package/.agents/skills/component-library-rules/references/components/base__avatar.md +118 -0
- package/.agents/skills/component-library-rules/references/components/base__buttons.md +21 -17
- package/.agents/skills/component-library-rules/references/components/base__cards.md +50 -14
- package/.agents/skills/component-library-rules/references/components/base__carousel.md +5 -5
- package/.agents/skills/component-library-rules/references/components/base__combobox.md +25 -78
- package/.agents/skills/component-library-rules/references/components/base__css-variables.md +810 -0
- package/.agents/skills/component-library-rules/references/components/base__display-utilities.md +427 -0
- package/.agents/skills/component-library-rules/references/components/base__event-calendar.md +1 -1
- package/.agents/skills/component-library-rules/references/components/base__forms.md +8 -2
- package/.agents/skills/component-library-rules/references/components/base__icon-badge.md +84 -0
- package/.agents/skills/component-library-rules/references/components/base__item.md +10 -1
- package/.agents/skills/component-library-rules/references/components/base__navigation.md +7 -6
- package/.agents/skills/component-library-rules/references/components/base__spinner.md +2 -0
- package/.agents/skills/component-library-rules/references/components/base__table.md +270 -112
- package/.agents/skills/component-library-rules/references/components/base__tooltip.md +76 -0
- package/.agents/skills/component-library-rules/references/components/composed__ai.md +34 -2
- package/.agents/skills/component-library-rules/references/components/composed__commerce.md +44 -2
- package/.agents/skills/component-library-rules/references/components/composed__empty-state.md +313 -0
- package/.agents/skills/component-library-rules/references/components/composed__inline-stat.md +63 -0
- package/.agents/skills/component-library-rules/references/components/composed__metadata-list.md +433 -0
- package/.agents/skills/component-library-rules/references/components/composed__onboarding-checklist.md +1 -1
- package/.agents/skills/component-library-rules/references/components/composed__resource-selector-card.md +23 -19
- package/.agents/skills/component-library-rules/references/components/docs__design-system-consistency.md +413 -0
- package/.agents/skills/component-library-rules/references/components/docs__installation.md +221 -0
- package/.agents/skills/component-library-rules/references/components/docs__overview.md +266 -0
- package/.agents/skills/component-library-rules/references/components/docs__refinement-guide.md +280 -0
- package/.agents/skills/component-library-rules/references/components/docs__showcase.md +197 -0
- package/.agents/skills/component-library-rules/references/components/features__activities.md +87 -88
- package/.agents/skills/component-library-rules/references/components/features__ai-chat.md +7 -7
- package/.agents/skills/component-library-rules/references/components/features__data-view.md +175 -0
- package/.agents/skills/component-library-rules/references/components/features__enhanced-activities.md +51 -55
- package/.agents/skills/component-library-rules/references/components/features__kanban.md +37 -35
- package/.agents/skills/component-library-rules/references/components/features__media-library.md +9 -3
- package/.agents/skills/component-library-rules/references/components/features__overlays.md +1 -1
- package/.agents/skills/component-library-rules/references/components/features__products.md +91 -75
- package/.agents/skills/component-library-rules/references/components/features__resource.md +194 -0
- package/.agents/skills/component-library-rules/references/components/features__schema-form.md +12 -10
- package/.agents/skills/component-library-rules/references/components/features__suggestions.md +6 -6
- package/.agents/skills/component-library-rules/references/components/features__sync.md +30 -12
- package/.agents/skills/component-library-rules/references/components/layout__layout-app-shell.md +14 -14
- package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +224 -188
- package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +2 -2
- package/.agents/skills/component-library-rules/references/components/layout__layout-header.md +8 -8
- package/.agents/skills/component-library-rules/references/components/layout__layout-page.md +136 -95
- package/.agents/skills/component-library-rules/references/components/layout__layout-sidebar.md +4 -4
- package/.agents/skills/component-library-rules/references/components/layout__layout-users.md +4 -4
- package/.agents/skills/component-library-rules/references/components/layout__layout-workspace.md +19 -11
- package/.agents/skills/component-library-rules/references/components/services__actions.md +443 -0
- package/.agents/skills/component-library-rules/references/components/services__hooks.md +326 -0
- package/.agents/skills/component-library-rules/references/components/ui__button.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__empty-item.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__inputs.md +1 -1
- package/.agents/skills/component-library-rules/references/components/ui__menus.md +15 -9
- package/.agents/skills/component-library-rules/references/components/ui__skeleton.md +3 -3
- package/.agents/skills/component-library-rules/references/consumer-wiring.md +2 -2
- package/.agents/skills/component-library-rules/references/history.md +10 -10
- package/.agents/skills/component-library-rules/references/import-paths.md +3 -3
- package/.agents/skills/component-library-rules/references/item-pattern.md +3 -3
- package/.agents/skills/component-library-rules/references/layout.md +7 -5
- package/.agents/skills/component-library-rules/references/testing.md +5 -5
- package/.agents/skills/component-library-rules/references/ui-provider.md +11 -12
- package/.agents/skills/component-library-rules/references/visual-eval.md +1 -1
- package/.agents/skills/token-system/SKILL.md +81 -0
- package/.agents/skills/token-system/agents/openai.yaml +4 -0
- package/.agents/skills/token-system/references/consumer-overrides.md +68 -0
- package/AGENTS.md +42 -17
- package/COMPONENT_SELECTION.md +18 -8
- package/INTEGRATION.md +45 -4
- package/MIGRATION.md +32 -0
- package/README.md +54 -20
- package/dist/_shared/accordion-B9EjlZLY.js +135 -0
- package/dist/_shared/accordion-B9EjlZLY.js.map +1 -0
- package/dist/_shared/accordion-IFDIc0E7.cjs +2 -0
- package/dist/_shared/accordion-IFDIc0E7.cjs.map +1 -0
- package/dist/_shared/action-menu-B6yFRDz1.cjs +2 -0
- package/dist/_shared/action-menu-B6yFRDz1.cjs.map +1 -0
- package/dist/_shared/action-menu-CNS-fwQr.js +96 -0
- package/dist/_shared/action-menu-CNS-fwQr.js.map +1 -0
- package/dist/_shared/ai-artifact-B3qhuiKC.js +1099 -0
- package/dist/_shared/ai-artifact-B3qhuiKC.js.map +1 -0
- package/dist/_shared/ai-artifact-Dtr0bnVq.cjs +3 -0
- package/dist/_shared/ai-artifact-Dtr0bnVq.cjs.map +1 -0
- package/dist/_shared/alert-V0V36Sny.cjs +2 -0
- package/dist/_shared/alert-V0V36Sny.cjs.map +1 -0
- package/dist/_shared/alert-m-4s0Hqq.js +81 -0
- package/dist/_shared/alert-m-4s0Hqq.js.map +1 -0
- package/dist/_shared/app-shell-D3eGUtL-.js +69 -0
- package/dist/_shared/app-shell-D3eGUtL-.js.map +1 -0
- package/dist/_shared/app-shell-QJHARDMB.cjs +2 -0
- package/dist/_shared/app-shell-QJHARDMB.cjs.map +1 -0
- package/dist/_shared/auth-B_KVUjsB.cjs +2 -0
- package/dist/_shared/auth-B_KVUjsB.cjs.map +1 -0
- package/dist/_shared/auth-C_TgyzDl.js +643 -0
- package/dist/_shared/auth-C_TgyzDl.js.map +1 -0
- package/dist/_shared/avatar-BagPbPuD.js +105 -0
- package/dist/_shared/avatar-BagPbPuD.js.map +1 -0
- package/dist/_shared/avatar-BnKM_o2d.cjs +2 -0
- package/dist/_shared/avatar-BnKM_o2d.cjs.map +1 -0
- package/dist/_shared/badge-BeSKxX1u.cjs +2 -0
- package/dist/_shared/badge-BeSKxX1u.cjs.map +1 -0
- package/dist/_shared/badge-a2Z3K5aQ.js +110 -0
- package/dist/_shared/badge-a2Z3K5aQ.js.map +1 -0
- package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs +2 -0
- package/dist/_shared/breadcrumbs-AyLzxCJZ.cjs.map +1 -0
- package/dist/_shared/breadcrumbs-B57Unsoe.js +105 -0
- package/dist/_shared/breadcrumbs-B57Unsoe.js.map +1 -0
- package/dist/_shared/button-Bd5bEIiB.cjs +2 -0
- package/dist/_shared/button-Bd5bEIiB.cjs.map +1 -0
- package/dist/_shared/button-DHksjMvc.js +189 -0
- package/dist/_shared/button-DHksjMvc.js.map +1 -0
- package/dist/_shared/buttons-C8jy-jMd.cjs +2 -0
- package/dist/_shared/buttons-C8jy-jMd.cjs.map +1 -0
- package/dist/_shared/buttons-MxvdokeK.js +137 -0
- package/dist/_shared/buttons-MxvdokeK.js.map +1 -0
- package/dist/_shared/card-radio-group-C2p_iBal.cjs +2 -0
- package/dist/_shared/card-radio-group-C2p_iBal.cjs.map +1 -0
- package/dist/_shared/card-radio-group-Fdi1Cz1j.js +150 -0
- package/dist/_shared/card-radio-group-Fdi1Cz1j.js.map +1 -0
- package/dist/_shared/cards-BKFwMTjM.cjs +2 -0
- package/dist/_shared/cards-BKFwMTjM.cjs.map +1 -0
- package/dist/_shared/cards-CtBoSZG9.js +355 -0
- package/dist/_shared/cards-CtBoSZG9.js.map +1 -0
- package/dist/_shared/checkbox-Cbh5x6ad.js +31 -0
- package/dist/_shared/checkbox-Cbh5x6ad.js.map +1 -0
- package/dist/_shared/checkbox-ECGg8wjW.cjs +2 -0
- package/dist/_shared/checkbox-ECGg8wjW.cjs.map +1 -0
- package/dist/_shared/combobox-BIe72dV3.js +954 -0
- package/dist/_shared/combobox-BIe72dV3.js.map +1 -0
- package/dist/_shared/combobox-CJiFDoTi.cjs +2 -0
- package/dist/_shared/combobox-CJiFDoTi.cjs.map +1 -0
- package/dist/_shared/command-ByedBajF.js +39 -0
- package/dist/_shared/command-ByedBajF.js.map +1 -0
- package/dist/_shared/command-EGR0nhGc.cjs +2 -0
- package/dist/_shared/command-EGR0nhGc.cjs.map +1 -0
- package/dist/_shared/comments-C8iXy9XO.cjs +2 -0
- package/dist/_shared/comments-C8iXy9XO.cjs.map +1 -0
- package/dist/_shared/comments-DGBxF9fD.js +952 -0
- package/dist/_shared/comments-DGBxF9fD.js.map +1 -0
- package/dist/_shared/copyable-Dopk9pEJ.js +38 -0
- package/dist/_shared/copyable-Dopk9pEJ.js.map +1 -0
- package/dist/_shared/copyable-rQwxsTJ3.cjs +2 -0
- package/dist/_shared/copyable-rQwxsTJ3.cjs.map +1 -0
- package/dist/_shared/data-display-CRFaMkxT.js +1873 -0
- package/dist/_shared/data-display-CRFaMkxT.js.map +1 -0
- package/dist/_shared/data-display-C_44_V-W.cjs +2 -0
- package/dist/_shared/data-display-C_44_V-W.cjs.map +1 -0
- package/dist/_shared/date-picker-BiUgIkjP.cjs +2 -0
- package/dist/_shared/date-picker-BiUgIkjP.cjs.map +1 -0
- package/dist/_shared/date-picker-DFkLiveH.js +1361 -0
- package/dist/_shared/date-picker-DFkLiveH.js.map +1 -0
- package/dist/_shared/date-pickers-C86tVD8e.cjs +2 -0
- package/dist/_shared/date-pickers-C86tVD8e.cjs.map +1 -0
- package/dist/_shared/date-pickers-D4oxOOHE.js +329 -0
- package/dist/_shared/date-pickers-D4oxOOHE.js.map +1 -0
- package/dist/_shared/display-B0wLVN8t.js +986 -0
- package/dist/_shared/display-B0wLVN8t.js.map +1 -0
- package/dist/_shared/display-Bin2vVex.cjs +2 -0
- package/dist/_shared/display-Bin2vVex.cjs.map +1 -0
- package/dist/_shared/form-sizing-C51oI3Di.js +42 -0
- package/dist/_shared/form-sizing-C51oI3Di.js.map +1 -0
- package/dist/_shared/form-sizing-Co53Drri.cjs +2 -0
- package/dist/_shared/form-sizing-Co53Drri.cjs.map +1 -0
- package/dist/_shared/forms-qnwoUqxf.js +3533 -0
- package/dist/_shared/forms-qnwoUqxf.js.map +1 -0
- package/dist/_shared/forms-rmKcy5uO.cjs +2 -0
- package/dist/_shared/forms-rmKcy5uO.cjs.map +1 -0
- package/dist/_shared/header-CxhEtk9M.cjs +2 -0
- package/dist/_shared/header-CxhEtk9M.cjs.map +1 -0
- package/dist/_shared/header-h3f14vQx.js +447 -0
- package/dist/_shared/header-h3f14vQx.js.map +1 -0
- package/dist/_shared/hooks-CS55-w3h.js +95 -0
- package/dist/_shared/hooks-CS55-w3h.js.map +1 -0
- package/dist/_shared/hooks-sfHAyDgD.cjs +2 -0
- package/dist/_shared/hooks-sfHAyDgD.cjs.map +1 -0
- package/dist/_shared/icon-badge-CU6ZkcER.cjs +2 -0
- package/dist/_shared/icon-badge-CU6ZkcER.cjs.map +1 -0
- package/dist/_shared/icon-badge-dZQPvuas.js +48 -0
- package/dist/_shared/icon-badge-dZQPvuas.js.map +1 -0
- package/dist/_shared/input-CB6hxh-5.cjs +2 -0
- package/dist/_shared/input-CB6hxh-5.cjs.map +1 -0
- package/dist/_shared/input-CfnHBT--.js +182 -0
- package/dist/_shared/input-CfnHBT--.js.map +1 -0
- package/dist/_shared/item-Xs-fgzaT.js +226 -0
- package/dist/_shared/item-Xs-fgzaT.js.map +1 -0
- package/dist/_shared/item-eUP9Rtmg.cjs +2 -0
- package/dist/_shared/item-eUP9Rtmg.cjs.map +1 -0
- package/dist/_shared/mentions-BahbwDwU.js +506 -0
- package/dist/_shared/mentions-BahbwDwU.js.map +1 -0
- package/dist/_shared/mentions-aHalksbt.cjs +2 -0
- package/dist/_shared/mentions-aHalksbt.cjs.map +1 -0
- package/dist/_shared/money-display-BLPNMmiT.cjs +2 -0
- package/dist/_shared/money-display-BLPNMmiT.cjs.map +1 -0
- package/dist/_shared/money-display-D_-Cb8-9.js +198 -0
- package/dist/_shared/money-display-D_-Cb8-9.js.map +1 -0
- package/dist/_shared/navigation-BcYAwgzo.js +436 -0
- package/dist/_shared/navigation-BcYAwgzo.js.map +1 -0
- package/dist/_shared/navigation-DAB7uuBj.cjs +2 -0
- package/dist/_shared/navigation-DAB7uuBj.cjs.map +1 -0
- package/dist/_shared/overlays-CdtMAkKG.js +648 -0
- package/dist/_shared/overlays-CdtMAkKG.js.map +1 -0
- package/dist/_shared/overlays-Diy_H0Au.cjs +2 -0
- package/dist/_shared/overlays-Diy_H0Au.cjs.map +1 -0
- package/dist/_shared/page-C6EzwvTz.cjs +2 -0
- package/dist/_shared/page-C6EzwvTz.cjs.map +1 -0
- package/dist/_shared/page-DCW1eWCJ.js +262 -0
- package/dist/_shared/page-DCW1eWCJ.js.map +1 -0
- package/dist/_shared/popover-dWR7-MzY.cjs +2 -0
- package/dist/_shared/popover-dWR7-MzY.cjs.map +1 -0
- package/dist/_shared/popover-menu-qxBZlTck.js +93 -0
- package/dist/_shared/popover-menu-qxBZlTck.js.map +1 -0
- package/dist/_shared/popover-menu-z9QTjl4o.cjs +2 -0
- package/dist/_shared/popover-menu-z9QTjl4o.cjs.map +1 -0
- package/dist/_shared/popover-xVENY0Ax.js +83 -0
- package/dist/_shared/popover-xVENY0Ax.js.map +1 -0
- package/dist/_shared/rich-text-editor-DeIiIDn7.cjs +2 -0
- package/dist/_shared/rich-text-editor-DeIiIDn7.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-VIBlL0x3.js +620 -0
- package/dist/_shared/rich-text-editor-VIBlL0x3.js.map +1 -0
- package/dist/_shared/scroll-area-B32KwU9k.js +43 -0
- package/dist/_shared/scroll-area-B32KwU9k.js.map +1 -0
- package/dist/_shared/scroll-area-CIRXK7s0.cjs +2 -0
- package/dist/_shared/scroll-area-CIRXK7s0.cjs.map +1 -0
- package/dist/_shared/settings-DbAyxMrX.cjs +2 -0
- package/dist/_shared/settings-DbAyxMrX.cjs.map +1 -0
- package/dist/_shared/settings-QOBrbgdN.js +143 -0
- package/dist/_shared/settings-QOBrbgdN.js.map +1 -0
- package/dist/_shared/sidebar-BRg39UF1.js +389 -0
- package/dist/_shared/sidebar-BRg39UF1.js.map +1 -0
- package/dist/_shared/sidebar-Cwhom9QE.cjs +2 -0
- package/dist/_shared/sidebar-Cwhom9QE.cjs.map +1 -0
- package/dist/_shared/sidebar-DfToCaiC.cjs +2 -0
- package/dist/_shared/sidebar-DfToCaiC.cjs.map +1 -0
- package/dist/_shared/sidebar-DhpRdTZH.js +541 -0
- package/dist/_shared/sidebar-DhpRdTZH.js.map +1 -0
- package/dist/_shared/spinner-D35zNriU.cjs +2 -0
- package/dist/_shared/spinner-D35zNriU.cjs.map +1 -0
- package/dist/_shared/spinner-DMC2IIml.js +67 -0
- package/dist/_shared/spinner-DMC2IIml.js.map +1 -0
- package/dist/_shared/table-CUA_A-oO.js +1377 -0
- package/dist/_shared/table-CUA_A-oO.js.map +1 -0
- package/dist/_shared/table-mPchjiRn.cjs +2 -0
- package/dist/_shared/table-mPchjiRn.cjs.map +1 -0
- package/dist/_shared/textarea-B24qgdmd.cjs +2 -0
- package/dist/_shared/textarea-B24qgdmd.cjs.map +1 -0
- package/dist/_shared/textarea-ChLRmmVU.js +118 -0
- package/dist/_shared/textarea-ChLRmmVU.js.map +1 -0
- package/dist/_shared/typography-CO9uwZhF.cjs +2 -0
- package/dist/_shared/typography-CO9uwZhF.cjs.map +1 -0
- package/dist/_shared/typography-DE0NGEIE.js +201 -0
- package/dist/_shared/typography-DE0NGEIE.js.map +1 -0
- package/dist/_shared/ui-provider-DZWtUXf2.cjs +2 -0
- package/dist/_shared/ui-provider-DZWtUXf2.cjs.map +1 -0
- package/dist/_shared/ui-provider-Dj6OSOZi.js +81 -0
- package/dist/_shared/ui-provider-Dj6OSOZi.js.map +1 -0
- package/dist/_shared/workspace-BgtWS9fA.cjs +2 -0
- package/dist/_shared/workspace-BgtWS9fA.cjs.map +1 -0
- package/dist/_shared/workspace-D2jJ0PlS.js +357 -0
- package/dist/_shared/workspace-D2jJ0PlS.js.map +1 -0
- package/dist/components/base/accordion/accordion-variants.d.ts +10 -9
- package/dist/components/base/accordion/accordion-variants.d.ts.map +1 -1
- package/dist/components/base/accordion/accordion.d.ts +1 -1
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +1 -1
- package/dist/components/base/accordion/smart-accordion.d.ts.map +1 -1
- package/dist/components/base/badge/badge.d.ts.map +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/buttons/base-button.d.ts.map +1 -1
- package/dist/components/base/buttons/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/buttons/loader-button.d.ts.map +1 -1
- package/dist/components/base/buttons/page-action-button.d.ts +1 -1
- package/dist/components/base/buttons/page-action-button.d.ts.map +1 -1
- package/dist/components/base/buttons/text-button.d.ts +3 -6
- package/dist/components/base/buttons/text-button.d.ts.map +1 -1
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/cards/partials/card-primitives.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.tokens.d.ts +3 -4
- package/dist/components/base/cards/smart-card.tokens.d.ts.map +1 -1
- package/dist/components/base/cards/smart-card.types.d.ts +4 -4
- package/dist/components/base/cards/smart-card.types.d.ts.map +1 -1
- package/dist/components/base/carousel/index.cjs +1 -1
- package/dist/components/base/carousel/index.cjs.map +1 -1
- package/dist/components/base/carousel/index.js +4 -4
- package/dist/components/base/carousel/index.js.map +1 -1
- package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -1
- package/dist/components/base/combobox/components/error-message.d.ts.map +1 -1
- package/dist/components/base/combobox/constants.d.ts +1 -1
- package/dist/components/base/combobox/constants.d.ts.map +1 -1
- package/dist/components/base/combobox/enhanced-combobox.d.ts.map +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.js +1 -1
- package/dist/components/base/combobox/types.d.ts +1 -1
- package/dist/components/base/combobox/types.d.ts.map +1 -1
- package/dist/components/base/command/command.d.ts +1 -1
- package/dist/components/base/command/index.cjs +1 -1
- package/dist/components/base/command/index.js +1 -1
- package/dist/components/base/copyable/index.cjs +1 -1
- package/dist/components/base/copyable/index.js +1 -1
- package/dist/components/base/currency/index.cjs +1 -1
- package/dist/components/base/currency/index.js +1 -1
- package/dist/components/base/date-pickers/date-picker.d.ts +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/date-pickers/segmented-time-input.d.ts.map +1 -1
- package/dist/components/base/display/avatar.d.ts +24 -1
- package/dist/components/base/display/avatar.d.ts.map +1 -1
- package/dist/components/base/display/boolean-indicator.d.ts +2 -1
- package/dist/components/base/display/boolean-indicator.d.ts.map +1 -1
- package/dist/components/base/display/chart.cjs +2 -2
- package/dist/components/base/display/chart.cjs.map +1 -1
- package/dist/components/base/display/chart.js +4 -4
- package/dist/components/base/display/chart.js.map +1 -1
- package/dist/components/base/display/date-block.d.ts +2 -1
- package/dist/components/base/display/date-block.d.ts.map +1 -1
- package/dist/components/base/display/empty.d.ts +8 -0
- package/dist/components/base/display/empty.d.ts.map +1 -0
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +2 -1
- package/dist/components/base/display/icon-badge/icon-badge.d.ts.map +1 -1
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.d.ts +1 -7
- package/dist/components/base/display/index.d.ts.map +1 -1
- package/dist/components/base/display/index.js +10 -11
- package/dist/components/base/display/scroll-area.d.ts +10 -1
- package/dist/components/base/display/scroll-area.d.ts.map +1 -1
- package/dist/components/base/display/stacked-avatars.d.ts +2 -1
- package/dist/components/base/display/stacked-avatars.d.ts.map +1 -1
- package/dist/components/base/display/throttle-alert.d.ts +2 -1
- package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts +2 -1
- package/dist/components/base/event-calendar/event-calendar-event-card.d.ts.map +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.cjs.map +1 -1
- package/dist/components/base/event-calendar/index.js +37 -37
- package/dist/components/base/event-calendar/index.js.map +1 -1
- package/dist/components/base/forms/fields/avatar-upload.d.ts +4 -2
- package/dist/components/base/forms/fields/avatar-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/checkbox.d.ts +14 -1
- package/dist/components/base/forms/fields/checkbox.d.ts.map +1 -1
- package/dist/components/base/forms/fields/choice-types.d.ts +3 -2
- package/dist/components/base/forms/fields/choice-types.d.ts.map +1 -1
- package/dist/components/base/forms/fields/coordinates-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/decimal-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/dropzone.d.ts +4 -2
- package/dist/components/base/forms/fields/dropzone.d.ts.map +1 -1
- package/dist/components/base/forms/fields/file-upload.d.ts +2 -1
- package/dist/components/base/forms/fields/file-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/image-upload.d.ts +2 -1
- package/dist/components/base/forms/fields/image-upload.d.ts.map +1 -1
- package/dist/components/base/forms/fields/input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts +2 -1
- package/dist/components/base/forms/fields/key-value-editor.d.ts.map +1 -1
- package/dist/components/base/forms/fields/list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/localized-string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts +2 -1
- package/dist/components/base/forms/fields/media-gallery.d.ts.map +1 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts +2 -1
- package/dist/components/base/forms/fields/object-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/select.d.ts.map +1 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts +2 -1
- package/dist/components/base/forms/fields/string-repeater.d.ts.map +1 -1
- package/dist/components/base/forms/fields/tags-input.d.ts +2 -1
- package/dist/components/base/forms/fields/tags-input.d.ts.map +1 -1
- package/dist/components/base/forms/fields/time-picker.d.ts.map +1 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts +2 -1
- package/dist/components/base/forms/fields/upload-progress-list.d.ts.map +1 -1
- package/dist/components/base/forms/fields/weight-input.d.ts.map +1 -1
- package/dist/components/base/forms/form-sizing.d.ts +8 -0
- package/dist/components/base/forms/form-sizing.d.ts.map +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +7 -7
- package/dist/components/base/forms/workflow.d.ts.map +1 -1
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/base/item/index.cjs +1 -1
- package/dist/components/base/item/index.js +1 -1
- package/dist/components/base/item/item.d.ts.map +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.cjs.map +1 -1
- package/dist/components/base/map/index.js +55 -54
- package/dist/components/base/map/index.js.map +1 -1
- package/dist/components/base/map/map.d.ts.map +1 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts +2 -1
- package/dist/components/base/navigation/breadcrumbs.d.ts.map +1 -1
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +3 -3
- package/dist/components/base/navigation/overflow-tab-bar.d.ts.map +1 -1
- package/dist/components/base/popover/index.cjs +1 -1
- package/dist/components/base/popover/index.js +1 -1
- package/dist/components/base/popover/popover.d.ts +2 -2
- package/dist/components/base/popover-menu/index.cjs +1 -1
- package/dist/components/base/popover-menu/index.js +1 -1
- package/dist/components/base/sidebar/index.cjs +1 -1
- package/dist/components/base/sidebar/index.js +1 -1
- package/dist/components/base/spinner/index.cjs +1 -1
- package/dist/components/base/spinner/index.js +1 -1
- package/dist/components/base/table/column-visibility-toggle.d.ts.map +1 -1
- package/dist/components/base/table/data-table.d.ts +1 -1
- package/dist/components/base/table/data-table.d.ts.map +1 -1
- package/dist/components/base/table/filter-bar.d.ts.map +1 -1
- package/dist/components/base/table/index.cjs +1 -1
- package/dist/components/base/table/index.js +2 -2
- package/dist/components/base/table/table-actions.d.ts.map +1 -1
- package/dist/components/base/table/table-header.d.ts.map +1 -1
- package/dist/components/base/table/table-toolbar.d.ts.map +1 -1
- package/dist/components/base/table/table.strings.d.ts.map +1 -1
- package/dist/components/base/table/table.types.d.ts +12 -8
- package/dist/components/base/table/table.types.d.ts.map +1 -1
- package/dist/components/base/toaster/index.cjs +1 -1
- package/dist/components/base/toaster/index.js +1 -1
- package/dist/components/composed/admin/action-surfaces/index.d.ts.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 +32 -33
- package/dist/components/composed/admin/index.js.map +1 -1
- package/dist/components/composed/ai/ai-agent/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-agent/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-artifact/ai-artifact.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-artifact/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-artifact/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-attachment/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-attachment/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-chain-of-thought/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-citation/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-citation/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-classification/ai-classification.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-code-block/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-code-block/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confidence/ai-confidence.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confidence/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-confidence/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confirmation/ai-confirmation.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-confirmation/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-confirmation/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-feedback/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-feedback/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-file-tree/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-file-tree/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-inline-citation/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-inline-citation/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-message-bubble/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-message-bubble/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-package-info/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-package-info/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-prompt-suggestions/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-reasoning/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-reasoning/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-sources/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-sources/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-summary/ai-summary.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-task/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-task/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-token-usage/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-token-usage/types.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-tool-call/ai-tool-call.d.ts.map +1 -1
- package/dist/components/composed/ai/ai-tool-call/types.d.ts +2 -1
- package/dist/components/composed/ai/ai-tool-call/types.d.ts.map +1 -1
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.cjs.map +1 -1
- package/dist/components/composed/ai/index.js +115 -109
- package/dist/components/composed/ai/index.js.map +1 -1
- package/dist/components/composed/analytics/activity-heatmap/types.d.ts +2 -1
- package/dist/components/composed/analytics/activity-heatmap/types.d.ts.map +1 -1
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.cjs.map +1 -1
- package/dist/components/composed/analytics/index.js +87 -87
- package/dist/components/composed/analytics/index.js.map +1 -1
- package/dist/components/composed/cards/contact-card/types.d.ts +2 -1
- package/dist/components/composed/cards/contact-card/types.d.ts.map +1 -1
- package/dist/components/composed/cards/course-card/types.d.ts +2 -1
- package/dist/components/composed/cards/course-card/types.d.ts.map +1 -1
- package/dist/components/composed/cards/feature-announcement/feature-announcement.d.ts.map +1 -1
- package/dist/components/composed/cards/giftcard-card/types.d.ts +2 -1
- package/dist/components/composed/cards/giftcard-card/types.d.ts.map +1 -1
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.cjs.map +1 -1
- package/dist/components/composed/cards/index.js +186 -190
- package/dist/components/composed/cards/index.js.map +1 -1
- package/dist/components/composed/cards/vendor-profile/types.d.ts +2 -1
- package/dist/components/composed/cards/vendor-profile/types.d.ts.map +1 -1
- package/dist/components/composed/cards/vendor-profile/vendor-profile.d.ts.map +1 -1
- package/dist/components/composed/commerce/address-card/types.d.ts +2 -1
- package/dist/components/composed/commerce/address-card/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/cart-summary/types.d.ts +2 -1
- package/dist/components/composed/commerce/cart-summary/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/coupon-input/coupon-input.d.ts.map +1 -1
- package/dist/components/composed/commerce/coupon-input/types.d.ts +2 -1
- package/dist/components/composed/commerce/coupon-input/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/discount-stack/types.d.ts +2 -1
- package/dist/components/composed/commerce/discount-stack/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.cjs.map +1 -1
- package/dist/components/composed/commerce/index.js +197 -202
- package/dist/components/composed/commerce/index.js.map +1 -1
- package/dist/components/composed/commerce/loyalty-points/loyalty-points.d.ts.map +1 -1
- package/dist/components/composed/commerce/loyalty-points/types.d.ts +2 -1
- package/dist/components/composed/commerce/loyalty-points/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/order-status/types.d.ts +2 -1
- package/dist/components/composed/commerce/order-status/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/payment-method/types.d.ts +2 -1
- package/dist/components/composed/commerce/payment-method/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/refund-status/refund-status.d.ts.map +1 -1
- package/dist/components/composed/commerce/refund-status/types.d.ts +2 -1
- package/dist/components/composed/commerce/refund-status/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/subscription-summary/subscription-summary.d.ts.map +1 -1
- package/dist/components/composed/commerce/subscription-summary/types.d.ts +2 -1
- package/dist/components/composed/commerce/subscription-summary/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/tax-breakdown/types.d.ts +2 -1
- package/dist/components/composed/commerce/tax-breakdown/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/voucher-entry/types.d.ts +2 -1
- package/dist/components/composed/commerce/voucher-entry/types.d.ts.map +1 -1
- package/dist/components/composed/commerce/voucher-entry/voucher-entry.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/dark-payment/dark-payment.d.ts.map +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
- package/dist/components/composed/dark-surfaces/index.js +71 -72
- package/dist/components/composed/dark-surfaces/index.js.map +1 -1
- package/dist/components/composed/data-display/empty-state/empty-state.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/empty-state.strings.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/empty-state.types.d.ts +85 -0
- package/dist/components/composed/data-display/empty-state/empty-state.types.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/document-stack.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/inbox-clean.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/search-glass.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/stacked-cards.d.ts.map +1 -0
- package/dist/components/composed/data-display/empty-state/partials/illustrations/users-circle.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/email-display.d.ts +23 -0
- package/dist/components/composed/data-display/fields/email-display.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/phone-display.d.ts +23 -0
- package/dist/components/composed/data-display/fields/phone-display.d.ts.map +1 -0
- package/dist/components/composed/data-display/fields/url-display.d.ts +29 -0
- package/dist/components/composed/data-display/fields/url-display.d.ts.map +1 -0
- package/dist/components/composed/data-display/index.cjs +1 -2
- package/dist/components/composed/data-display/index.d.ts +7 -0
- package/dist/components/composed/data-display/index.d.ts.map +1 -1
- package/dist/components/composed/data-display/index.js +2 -1165
- package/dist/components/composed/data-display/inline-stat/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/inline-stat/inline-stat.d.ts.map +1 -0
- package/dist/components/composed/data-display/invoice-header/types.d.ts +2 -1
- package/dist/components/composed/data-display/invoice-header/types.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-items/invoice-items.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-mini/types.d.ts +2 -1
- package/dist/components/composed/data-display/invoice-mini/types.d.ts.map +1 -1
- package/dist/components/composed/data-display/invoice-table/types.d.ts +2 -1
- package/dist/components/composed/data-display/invoice-table/types.d.ts.map +1 -1
- package/dist/components/composed/data-display/metadata/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/metadata/metadata-list.d.ts.map +1 -0
- package/dist/components/composed/data-display/metadata/metadata-list.strings.d.ts.map +1 -0
- package/dist/components/composed/data-display/numeric-value/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/numeric-value/numeric-value.d.ts.map +1 -0
- package/dist/components/composed/data-display/resource-selector-card.d.ts.map +1 -1
- package/dist/components/composed/data-display/section-header/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/section-header/section-header.d.ts.map +1 -0
- package/dist/components/composed/data-display/user-cell/index.d.ts.map +1 -0
- package/dist/components/composed/data-display/user-cell/user-cell.d.ts +20 -0
- package/dist/components/composed/data-display/user-cell/user-cell.d.ts.map +1 -0
- package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts +2 -1
- package/dist/components/composed/navigation/breadcrumb-progress/types.d.ts.map +1 -1
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.cjs.map +1 -1
- package/dist/components/composed/navigation/index.js +12 -12
- package/dist/components/composed/navigation/index.js.map +1 -1
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.cjs.map +1 -1
- package/dist/components/composed/onboarding/index.js +3 -3
- package/dist/components/composed/timelines/activity-stream/types.d.ts +2 -1
- package/dist/components/composed/timelines/activity-stream/types.d.ts.map +1 -1
- package/dist/components/composed/timelines/changelog/types.d.ts +2 -1
- package/dist/components/composed/timelines/changelog/types.d.ts.map +1 -1
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.cjs.map +1 -1
- package/dist/components/composed/timelines/index.js +6 -6
- package/dist/components/composed/timelines/index.js.map +1 -1
- package/dist/components/composed/timelines/milestones/types.d.ts +2 -1
- package/dist/components/composed/timelines/milestones/types.d.ts.map +1 -1
- package/dist/components/features/activities/activities.types.d.ts +3 -2
- package/dist/components/features/activities/activities.types.d.ts.map +1 -1
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.cjs.map +1 -1
- package/dist/components/features/activities/index.js +33 -30
- package/dist/components/features/activities/index.js.map +1 -1
- package/dist/components/features/activities/partials/activities-feed-card.d.ts.map +1 -1
- package/dist/components/features/ai-chat/index.cjs +2 -2
- package/dist/components/features/ai-chat/index.cjs.map +1 -1
- package/dist/components/features/ai-chat/index.js +42 -42
- package/dist/components/features/ai-chat/index.js.map +1 -1
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.cjs.map +1 -1
- package/dist/components/features/card/index.js +6 -6
- package/dist/components/features/card/index.js.map +1 -1
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/data-view/data-view.d.ts.map +1 -0
- package/dist/components/features/data-view/data-view.strings.d.ts.map +1 -0
- package/dist/components/features/data-view/data-view.types.d.ts.map +1 -0
- package/dist/components/features/data-view/index.cjs +2 -0
- package/dist/components/features/data-view/index.cjs.map +1 -0
- package/dist/components/features/data-view/index.d.ts.map +1 -0
- package/dist/components/features/data-view/index.js +146 -0
- package/dist/components/features/data-view/index.js.map +1 -0
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.cjs.map +1 -1
- package/dist/components/features/event-log/index.js +6 -6
- package/dist/components/features/event-log/index.js.map +1 -1
- package/dist/components/features/filters/filter-context.d.ts +5 -0
- package/dist/components/features/filters/filter-context.d.ts.map +1 -1
- package/dist/components/features/filters/filter-layout.d.ts.map +1 -1
- package/dist/components/features/filters/filters.types.d.ts +1 -1
- package/dist/components/features/filters/filters.types.d.ts.map +1 -1
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.cjs.map +1 -1
- package/dist/components/features/filters/index.js +333 -308
- package/dist/components/features/filters/index.js.map +1 -1
- package/dist/components/features/filters/partials/active-filter-item.d.ts.map +1 -1
- package/dist/components/features/filters/partials/async-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
- package/dist/components/features/filters/partials/tags-filter-content.d.ts.map +1 -1
- package/dist/components/features/global-search/global-search.d.ts.map +1 -1
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.cjs.map +1 -1
- package/dist/components/features/global-search/index.js +36 -28
- package/dist/components/features/global-search/index.js.map +1 -1
- package/dist/components/features/global-search/partials/global-search-input.d.ts.map +1 -1
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts.map +1 -1
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.cjs.map +1 -1
- package/dist/components/features/kanban/index.js +5 -5
- package/dist/components/features/kanban/index.js.map +1 -1
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.cjs.map +1 -1
- package/dist/components/features/media-library/index.js +27 -27
- package/dist/components/features/media-library/index.js.map +1 -1
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/products/components/product-contract-overview.d.ts.map +1 -1
- package/dist/components/features/products/components/product-details-card.d.ts.map +1 -1
- package/dist/components/features/products/components/product-quote-preview-card.d.ts.map +1 -1
- package/dist/components/features/products/components/product-readiness-card.d.ts.map +1 -1
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.cjs.map +1 -1
- package/dist/components/features/products/index.js +135 -135
- package/dist/components/features/products/index.js.map +1 -1
- package/dist/components/features/products/products.types.d.ts +1 -1
- package/dist/components/features/products/products.types.d.ts.map +1 -1
- package/dist/components/features/resource/index.cjs +2 -0
- package/dist/components/features/resource/index.cjs.map +1 -0
- package/dist/components/features/resource/index.d.ts.map +1 -0
- package/dist/components/features/resource/index.js +240 -0
- package/dist/components/features/resource/index.js.map +1 -0
- package/dist/components/features/resource/resource.d.ts.map +1 -0
- package/dist/components/features/resource/resource.types.d.ts +87 -0
- package/dist/components/features/resource/resource.types.d.ts.map +1 -0
- package/dist/components/features/rich-text-editor/index.cjs +1 -1
- package/dist/components/features/rich-text-editor/index.js +1 -1
- package/dist/components/features/schema-form/index.cjs +1 -1
- package/dist/components/features/schema-form/index.cjs.map +1 -1
- package/dist/components/features/schema-form/index.js +23 -23
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +1 -1
- package/dist/components/features/sync/index.cjs +1 -1
- package/dist/components/features/sync/index.cjs.map +1 -1
- package/dist/components/features/sync/index.js +53 -31
- package/dist/components/features/sync/index.js.map +1 -1
- package/dist/components/features/sync/sync-range-dialog-form.d.ts.map +1 -1
- package/dist/components/features/sync/sync.strings.d.ts +6 -0
- package/dist/components/features/sync/sync.strings.d.ts.map +1 -1
- package/dist/components/layout/app-shell/app-shell.types.d.ts +7 -7
- package/dist/components/layout/app-shell/app-shell.types.d.ts.map +1 -1
- package/dist/components/layout/app-shell/index.cjs +1 -1
- package/dist/components/layout/app-shell/index.js +1 -1
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts.map +1 -1
- package/dist/components/layout/auth/index.cjs +1 -1
- package/dist/components/layout/auth/index.js +1 -1
- package/dist/components/layout/header/index.cjs +1 -1
- package/dist/components/layout/header/index.js +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 +0 -1
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +11 -12
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/page/page.types.d.ts +2 -1
- package/dist/components/layout/page/page.types.d.ts.map +1 -1
- package/dist/components/layout/settings/index.cjs +1 -1
- package/dist/components/layout/settings/index.js +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts.map +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +2 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts.map +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/sidebar/sidebar.d.ts +2 -1
- package/dist/components/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/layout/sidebar/sidebar.types.d.ts +3 -2
- package/dist/components/layout/sidebar/sidebar.types.d.ts.map +1 -1
- package/dist/components/layout/workspace/index.cjs +1 -1
- package/dist/components/layout/workspace/index.js +1 -1
- package/dist/components/layout/workspace/workspace.d.ts.map +1 -1
- package/dist/components/typography/index.cjs +1 -1
- package/dist/components/typography/index.js +2 -3
- package/dist/components/typography/label.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +3 -3
- package/dist/lib/ui-provider/defaults.d.ts.map +1 -1
- package/dist/lib/ui-provider/hooks.d.ts +1 -2
- package/dist/lib/ui-provider/hooks.d.ts.map +1 -1
- package/dist/lib/ui-provider/index.cjs +1 -1
- package/dist/lib/ui-provider/index.d.ts +2 -2
- package/dist/lib/ui-provider/index.d.ts.map +1 -1
- package/dist/lib/ui-provider/index.js +2 -2
- package/dist/lib/ui-provider/types.d.ts +13 -14
- package/dist/lib/ui-provider/types.d.ts.map +1 -1
- package/dist/lib/utils.cjs +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +31 -10
- package/dist/lib/utils.js.map +1 -1
- package/dist/services/actions/index.cjs +1 -1
- package/dist/services/actions/index.js +1 -1
- package/dist/showcase/assets/AreaChart-CGkuyNyy.js +6 -0
- package/dist/showcase/assets/CSPContext-Bfs88_eg.js +1 -0
- package/dist/showcase/assets/CompositeItem-DAQ048AO.js +1 -0
- package/dist/showcase/assets/CompositeRoot-8-OuCMMq.js +1 -0
- package/dist/showcase/assets/DialogTrigger-1P-jwcoH.js +1 -0
- package/dist/showcase/assets/FieldItemContext-ChrM5Ge4.js +1 -0
- package/dist/showcase/assets/LabelableContext-BDyZArAc.js +1 -0
- package/dist/showcase/assets/PreviewLayout-wYGhlcJt.js +1 -0
- package/dist/showcase/assets/RadioGroup-DuiI4W--.js +1 -0
- package/dist/showcase/assets/ScrollAreaCorner-Df5uTkWT.js +1 -0
- package/dist/showcase/assets/Separator-BuTBo5a_.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-B4S4Fn7d.js +1 -0
- package/dist/showcase/assets/accordion-D3beuJpC.js +171 -0
- package/dist/showcase/assets/accordion-variants-BTMpfSPI.js +1 -0
- package/dist/showcase/assets/action-menu-DsAr1OqF.js +1 -0
- package/dist/showcase/assets/actions-BzyHAEZR.js +310 -0
- package/dist/showcase/assets/activities-BgoelWKu.js +500 -0
- package/dist/showcase/assets/activities-feed-card-DI4MIm3-.js +1 -0
- package/dist/showcase/assets/admin-n-JemkNh.js +140 -0
- package/dist/showcase/assets/ai-BXyk1mT0.js +207 -0
- package/dist/showcase/assets/ai-artifact-C8CmZ94f.js +2 -0
- package/dist/showcase/assets/ai-chat-CTQQ4e4X.js +568 -0
- package/dist/showcase/assets/ai-elements-DGnlBq8E.js +387 -0
- package/dist/showcase/assets/ai-tool-call-bHnWNBtN.js +1 -0
- package/dist/showcase/assets/alert-CIHGXUul.js +62 -0
- package/dist/showcase/assets/alert-N79A6qIx.js +93 -0
- package/dist/showcase/assets/alert-bPnj3_cC.js +1 -0
- package/dist/showcase/assets/api-key-list-Bf1KoRJq.js +1 -0
- package/dist/showcase/assets/api-key-list-DyZ_DaRx.js +73 -0
- package/dist/showcase/assets/app-sidebar-Co0LUSvz.js +1 -0
- package/dist/showcase/assets/arrow-down-BttnoDxP.js +1 -0
- package/dist/showcase/assets/arrow-left-B1kFGJ8v.js +1 -0
- package/dist/showcase/assets/arrow-right-Md96ra7v.js +1 -0
- package/dist/showcase/assets/arrow-up-B9e9cP-q.js +1 -0
- package/dist/showcase/assets/arrow-up-right-BOHJNdrp.js +1 -0
- package/dist/showcase/assets/avatar-CJaCYGWf.js +1 -0
- package/dist/showcase/assets/avatar-CxwFyL4T.js +57 -0
- package/dist/showcase/assets/avatar-D3kvVy00.js +1 -0
- package/dist/showcase/assets/avatar-DKLsNeBi.js +67 -0
- package/dist/showcase/assets/badge-CSMmwDLr.js +31 -0
- package/dist/showcase/assets/badge-check-TQRmqI7C.js +1 -0
- package/dist/showcase/assets/bell-CwRy7zpP.js +1 -0
- package/dist/showcase/assets/bot-Bt02Uzhq.js +1 -0
- package/dist/showcase/assets/box-Bfv5RQBf.js +1 -0
- package/dist/showcase/assets/braces-CxUoAPd4.js +1 -0
- package/dist/showcase/assets/brain-CNapE0CP.js +1 -0
- package/dist/showcase/assets/brand-CBq1YoS0.js +36 -0
- package/dist/showcase/assets/breadcrumb-DRioiUd_.js +1 -0
- package/dist/showcase/assets/breadcrumb-DyXpErBT.js +52 -0
- package/dist/showcase/assets/breadcrumbs-BzHeoItO.js +1 -0
- package/dist/showcase/assets/briefcase-N74Hu0O2.js +1 -0
- package/dist/showcase/assets/building-2-D81ygy-F.js +1 -0
- package/dist/showcase/assets/button-Bgqg7AmN.js +44 -0
- package/dist/showcase/assets/button-group-DPV1XIW3.js +1 -0
- package/dist/showcase/assets/buttons-qpZWlILG.js +272 -0
- package/dist/showcase/assets/calendar-BXG5CwbY.js +1 -0
- package/dist/showcase/assets/calendar-D-CSqGtC.js +16 -0
- package/dist/showcase/assets/calendar-DcYyOrNY.js +1 -0
- package/dist/showcase/assets/calendar-days-CNNiyV9e.js +1 -0
- package/dist/showcase/assets/camera-D0yVo0xC.js +1 -0
- package/dist/showcase/assets/card-Bl-y9-8y.js +1 -0
- package/dist/showcase/assets/card-CH7Ev3xS.js +188 -0
- package/dist/showcase/assets/card-primitives-CiU5lL3a.js +1 -0
- package/dist/showcase/assets/card-radio-group-DpeIWyiO.js +1 -0
- package/dist/showcase/assets/cards-7xave3ub.js +354 -0
- package/dist/showcase/assets/carousel--kHTFkC7.js +449 -0
- package/dist/showcase/assets/cell-renderers-Cx8rAZln.js +1 -0
- package/dist/showcase/assets/chart-DU8INHbt.js +358 -0
- package/dist/showcase/assets/chart-column-Dbekq8cy.js +1 -0
- package/dist/showcase/assets/checkbox-ClPnzko9.js +1 -0
- package/dist/showcase/assets/checkbox-Qhh92dbS.js +1 -0
- package/dist/showcase/assets/chevron-down-BqrI6QzQ.js +1 -0
- package/dist/showcase/assets/chevron-left-TJKYH3rG.js +1 -0
- package/dist/showcase/assets/chevron-up-CPuAmh-d.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-DZB44PVY.js +1 -0
- package/dist/showcase/assets/circle-CY0DkTje.js +1 -0
- package/dist/showcase/assets/circle-alert-9j29FrsT.js +1 -0
- package/dist/showcase/assets/circle-check-BkFKejsY.js +1 -0
- package/dist/showcase/assets/circle-check-big-vu3Znqdx.js +1 -0
- package/dist/showcase/assets/circle-dot-CsBIkbEH.js +1 -0
- package/dist/showcase/assets/circle-question-mark-BRiF5RV4.js +1 -0
- package/dist/showcase/assets/circle-x-BF20gddw.js +1 -0
- package/dist/showcase/assets/clock-3-mhWDhdka.js +1 -0
- package/dist/showcase/assets/clock-Dd-urPd2.js +1 -0
- package/dist/showcase/assets/code-xml-D2f-X63y.js +1 -0
- package/dist/showcase/assets/collapsible-CF0oQTVS.js +1 -0
- package/dist/showcase/assets/collapsible-Ru5-bssh.js +27 -0
- package/dist/showcase/assets/combobox-DpJTW_Rq.js +685 -0
- package/dist/showcase/assets/command-Dno8Ogez.js +1 -0
- package/dist/showcase/assets/command-LRFStKBy.js +1 -0
- package/dist/showcase/assets/comment-composer-Dht7nfbv.js +1 -0
- package/dist/showcase/assets/comment-item-B6IgQsMr.js +1 -0
- package/dist/showcase/assets/comments-B3ksV3Mn.js +357 -0
- package/dist/showcase/assets/commerce-B1_Offbz.js +267 -0
- package/dist/showcase/assets/composite-BjQWIYF-.js +1 -0
- package/dist/showcase/assets/contact-card-Bss4YHZz.js +65 -0
- package/dist/showcase/assets/content-container-D4BM1Zro.js +1 -0
- package/dist/showcase/assets/copyable-C0J88R_R.js +96 -0
- package/dist/showcase/assets/copyable-Dst8oaw5.js +1 -0
- package/dist/showcase/assets/course-card-BuqwjqtO.js +77 -0
- package/dist/showcase/assets/cpu-CFy0M0rN.js +1 -0
- package/dist/showcase/assets/credit-card-CFq0S1Ma.js +1 -0
- package/dist/showcase/assets/css-variables-BAALjDwD.js +1190 -0
- package/dist/showcase/assets/currency-BZzZRv2_.js +149 -0
- package/dist/showcase/assets/dark-surfaces-CVKt2Yww.js +90 -0
- package/dist/showcase/assets/data-view-Be0uoLqL.js +4 -0
- package/dist/showcase/assets/data-view-D6_zyFwk.js +124 -0
- package/dist/showcase/assets/database-DSC-ysYT.js +1 -0
- package/dist/showcase/assets/date-block-Bgu_LMxB.js +1 -0
- package/dist/showcase/assets/date-picker-ByYEZGMg.js +1 -0
- package/dist/showcase/assets/date-pickers-DzSQrvWs.js +73 -0
- package/dist/showcase/assets/dense-info-BhFkOQbt.js +106 -0
- package/dist/showcase/assets/design-system-consistency-D6iCJLcr.js +264 -0
- package/dist/showcase/assets/dialog-C1heXuxu.js +1 -0
- package/dist/showcase/assets/dialog-DzrcsKvl.js +1 -0
- package/dist/showcase/assets/display-utilities-eu-EVMrx.js +267 -0
- package/dist/showcase/assets/dist-BlIID0_L.js +1 -0
- package/dist/showcase/assets/dist-DV4Tv32d.js +45 -0
- package/dist/showcase/assets/dollar-sign-qp4G3P_K.js +1 -0
- package/dist/showcase/assets/download-zlcHjSdS.js +1 -0
- package/dist/showcase/assets/dropdown-menu-DZ47rJaE.js +1 -0
- package/dist/showcase/assets/dropzone-Dx4EqBHu.js +1 -0
- package/dist/showcase/assets/earth-BuXqXHh6.js +1 -0
- package/dist/showcase/assets/ellipsis-DgAjMZHc.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-BA8_YMyV.js +1 -0
- package/dist/showcase/assets/empty-DXjKmyNv.js +1 -0
- package/dist/showcase/assets/empty-item-DIGWYsI0.js +49 -0
- package/dist/showcase/assets/empty-state-BSc0tQNC.js +190 -0
- package/dist/showcase/assets/empty-state-CkixFVN1.js +1 -0
- package/dist/showcase/assets/enhanced-activities-CKbHgR4f.js +357 -0
- package/dist/showcase/assets/enhanced-combobox-DAKQyFUg.js +1 -0
- package/dist/showcase/assets/esm-C3PfkuOc.js +2 -0
- package/dist/showcase/assets/event-calendar-rNju8jaT.js +138 -0
- package/dist/showcase/assets/event-log-BUK1blGb.js +330 -0
- package/dist/showcase/assets/example-PsbgbESI.js +1 -0
- package/dist/showcase/assets/external-link-CgB9zfWz.js +1 -0
- package/dist/showcase/assets/eye-YnIHbdKe.js +1 -0
- package/dist/showcase/assets/feature-announcement-CWwjAPI1.js +34 -0
- package/dist/showcase/assets/file-3Z2xkc-8.js +1 -0
- package/dist/showcase/assets/file-text-BQeGXxPG.js +1 -0
- package/dist/showcase/assets/filter-layout-D7YskzbC.js +1 -0
- package/dist/showcase/assets/filters-2YY_wVwq.js +139 -0
- package/dist/showcase/assets/flag-Bw3wwRgF.js +1 -0
- package/dist/showcase/assets/folder-open-CZ5Bq4lK.js +1 -0
- package/dist/showcase/assets/form-field-AWNJL9FM.js +1 -0
- package/dist/showcase/assets/form-sizing-C3UG5WKC.js +1 -0
- package/dist/showcase/assets/format-DUU7-42g.js +1 -0
- package/dist/showcase/assets/forms-CWJ3HBbk.js +915 -0
- package/dist/showcase/assets/funnel-vxNNph7w.js +1 -0
- package/dist/showcase/assets/generic-DlyFJDj6.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-CibNto5h.js +1 -0
- package/dist/showcase/assets/gift-BjRHqTcQ.js +1 -0
- package/dist/showcase/assets/giftcard-cards-DcujCFff.js +85 -0
- package/dist/showcase/assets/git-branch-B7XnpQE0.js +1 -0
- package/dist/showcase/assets/global-search-CWvNfmpe.js +1 -0
- package/dist/showcase/assets/global-search-Ct7I1Xd2.js +215 -0
- package/dist/showcase/assets/globe-CHleXWd2.js +1 -0
- package/dist/showcase/assets/gradient-card-Bw4oJljh.js +58 -0
- package/dist/showcase/assets/hash-BVGqnm6_.js +1 -0
- package/dist/showcase/assets/header-CgApizpk.js +1 -0
- package/dist/showcase/assets/header-notifications-B2v1Mdri.js +1 -0
- package/dist/showcase/assets/heart-BwvHCA-d.js +1 -0
- package/dist/showcase/assets/hooks-A_AQLIRZ.js +217 -0
- package/dist/showcase/assets/house-opqNxOmP.js +1 -0
- package/dist/showcase/assets/icon-badge-CsG95J1Z.js +37 -0
- package/dist/showcase/assets/icon-badge-ognVhKWR.js +1 -0
- package/dist/showcase/assets/image-apDSlTAx.js +1 -0
- package/dist/showcase/assets/inbox-WrbeTKEw.js +1 -0
- package/dist/showcase/assets/index-CCxHwV7T.css +2 -0
- package/dist/showcase/assets/index-QESvAJrb.js +10 -0
- package/dist/showcase/assets/index.esm-BXmcbSs7.js +1 -0
- package/dist/showcase/assets/inertValue-DrANZiJk.js +1 -0
- package/dist/showcase/assets/info-C3G9KRCx.js +1 -0
- package/dist/showcase/assets/inline-stat-BnjUqzDM.js +15 -0
- package/dist/showcase/assets/inline-stat-CO01t7SJ.js +1 -0
- package/dist/showcase/assets/input-CBJy1dMs.js +1 -0
- package/dist/showcase/assets/input-group-CZyYSq4r.js +47 -0
- package/dist/showcase/assets/input-group-Dfqufdp4.js +1 -0
- package/dist/showcase/assets/input-yYoqWQQ7.js +1 -0
- package/dist/showcase/assets/inputs-Bhw_FGDY.js +155 -0
- package/dist/showcase/assets/installation-DnvS2ZUn.js +134 -0
- package/dist/showcase/assets/invoice-header-B9Ak8GXX.js +36 -0
- package/dist/showcase/assets/invoice-items-DY5zUZhE.js +36 -0
- package/dist/showcase/assets/invoice-mini-BAryECEH.js +14 -0
- package/dist/showcase/assets/invoice-table-BUvjee74.js +30 -0
- package/dist/showcase/assets/isSameDay-DVP1ae2V.js +1 -0
- package/dist/showcase/assets/isToday-CNAQB-p9.js +1 -0
- package/dist/showcase/assets/italic-CjQCLJci.js +1 -0
- package/dist/showcase/assets/item-BMSdEK3V.js +1 -0
- package/dist/showcase/assets/item-D1Jxrpia.js +1 -0
- package/dist/showcase/assets/item-DxPwk321.js +139 -0
- package/dist/showcase/assets/kanban-DXWCGieQ.js +188 -0
- package/dist/showcase/assets/key-round-DpuhXiJQ.js +1 -0
- package/dist/showcase/assets/label-D1wLK5nY.js +1 -0
- package/dist/showcase/assets/languages-CGYZVmbV.js +1 -0
- package/dist/showcase/assets/layers-DJZSVGAu.js +1 -0
- package/dist/showcase/assets/layout-app-shell-UX63nzTO.js +608 -0
- package/dist/showcase/assets/layout-auth-Bav5BBqp.js +790 -0
- package/dist/showcase/assets/layout-containers-DMHD2zdV.js +101 -0
- package/dist/showcase/assets/layout-header-CGesu_kM.js +203 -0
- package/dist/showcase/assets/layout-page-DHXu8SIv.js +314 -0
- package/dist/showcase/assets/layout-primitives-CokzGwd2.js +34 -0
- package/dist/showcase/assets/layout-sidebar-CLUYajcu.js +224 -0
- package/dist/showcase/assets/layout-users-DHUNAnFA.js +117 -0
- package/dist/showcase/assets/layout-workspace-y0v2FpDW.js +191 -0
- package/dist/showcase/assets/lib-g_kR7X9Z.js +1 -0
- package/dist/showcase/assets/list-checks-CXt8visd.js +1 -0
- package/dist/showcase/assets/lock-CpZ5kLUd.js +1 -0
- package/dist/showcase/assets/lock-keyhole-Cy2raRO6.js +1 -0
- package/dist/showcase/assets/mail-Cj6uT4TA.js +1 -0
- package/dist/showcase/assets/mail-check-Di70bdf6.js +1 -0
- package/dist/showcase/assets/map-DMXbG_04.js +124 -0
- package/dist/showcase/assets/map-pin-EKhu7vEj.js +1 -0
- package/dist/showcase/assets/media-library-Dnp9S0oW.js +699 -0
- package/dist/showcase/assets/mention-inline-suggestions-Bp-fVNYF.js +1 -0
- package/dist/showcase/assets/mentions-DNRk30XZ.js +138 -0
- package/dist/showcase/assets/menus-DFURb5VL.js +171 -0
- package/dist/showcase/assets/message-square-DG0qIsG_.js +1 -0
- package/dist/showcase/assets/metadata-list-BhlsEWYT.js +1 -0
- package/dist/showcase/assets/metadata-list-Cb1DQd4S.js +286 -0
- package/dist/showcase/assets/metric-BkzIsP8H.js +1 -0
- package/dist/showcase/assets/metric-bar-CU73nx89.js +1 -0
- package/dist/showcase/assets/metric-grid-BMLMbLjE.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-Dutl5uZo.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-AqG2oyIy.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-CrFHmR2f.js +50 -0
- package/dist/showcase/assets/metrics-comparison-CY-DyLv7.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-BmX_CkiP.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-C1IFjdJN.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-8Kbn034e.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-CodO02yA.js +42 -0
- package/dist/showcase/assets/metrics-overview-CdPqEAAG.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Cw7UMWmb.js +54 -0
- package/dist/showcase/assets/minus-B1es6KJX.js +1 -0
- package/dist/showcase/assets/money-display-CFfUZLus.js +1 -0
- package/dist/showcase/assets/month-year-picker-ChVcYm9f.js +1 -0
- package/dist/showcase/assets/navigation-Boyt1q-1.js +231 -0
- package/dist/showcase/assets/navigation-CThYYxkL.js +90 -0
- package/dist/showcase/assets/navigation-extras-CxLc-Mqx.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-C15gqmFc.js +119 -0
- package/dist/showcase/assets/overflow-tab-bar-B2Htn-Ft.js +1 -0
- package/dist/showcase/assets/overlays-CPZfp0nk.js +159 -0
- package/dist/showcase/assets/overlays-Cpj4akiw.js +408 -0
- package/dist/showcase/assets/overview-BB-Xbkff.js +184 -0
- package/dist/showcase/assets/package-DLn6nx-u.js +1 -0
- package/dist/showcase/assets/package-check-B0wyBUSU.js +1 -0
- package/dist/showcase/assets/page-BPFNsNh7.js +1 -0
- package/dist/showcase/assets/page-action-button-DMS8Vcmz.js +1 -0
- package/dist/showcase/assets/page-header-BGqE9hzO.js +1 -0
- package/dist/showcase/assets/pagination-Be6ynLCp.js +1 -0
- package/dist/showcase/assets/pagination-T4FmLNHn.js +42 -0
- package/dist/showcase/assets/paperclip-B_kxXzSN.js +1 -0
- package/dist/showcase/assets/password-input-qfQ5eIU4.js +1 -0
- package/dist/showcase/assets/pencil-DlDLApli.js +1 -0
- package/dist/showcase/assets/phone-D8tvvbSQ.js +1 -0
- package/dist/showcase/assets/plus-BkhJjfUv.js +1 -0
- package/dist/showcase/assets/popover-BsCx2XMI.js +1 -0
- package/dist/showcase/assets/popover-Bu7aaPjE.js +1 -0
- package/dist/showcase/assets/popover-menu-CD_JfEeq.js +1 -0
- package/dist/showcase/assets/products-BzHX1ta0.js +423 -0
- package/dist/showcase/assets/progress-CpW2ZGAy.js +18 -0
- package/dist/showcase/assets/progress-jIJ_EIKE.js +1 -0
- package/dist/showcase/assets/props-table-CCcohuyT.js +1 -0
- package/dist/showcase/assets/props.generated-cO7HmIpY.json +41578 -0
- package/dist/showcase/assets/quote-Bc9eHVKi.js +1 -0
- package/dist/showcase/assets/react-sKtkuLrH.js +1 -0
- package/dist/showcase/assets/receipt-B77_VWtt.js +1 -0
- package/dist/showcase/assets/receipt-text-BlL_TJsS.js +1 -0
- package/dist/showcase/assets/refinement-guide-BpzOvT_R.js +189 -0
- package/dist/showcase/assets/refresh-cw-CELG4taF.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-LRTUaJTb.js +1 -0
- package/dist/showcase/assets/resource-BT8_ck3n.js +1 -0
- package/dist/showcase/assets/resource-C7J3yZp6.js +139 -0
- package/dist/showcase/assets/resource-selector-card-Ay8ImvKg.js +43 -0
- package/dist/showcase/assets/rich-text-editor-CdGVvtsm.js +143 -0
- package/dist/showcase/assets/rich-text-editor-DVtTVuZ6.js +124 -0
- package/dist/showcase/assets/rotate-ccw-MwEZ1b11.js +1 -0
- package/dist/showcase/assets/route-CgBh1oKF.js +1 -0
- package/dist/showcase/assets/save-BFsAGR7O.js +1 -0
- package/dist/showcase/assets/schema-form-CaF-lBkN.js +327 -0
- package/dist/showcase/assets/scroll-area-BkZULoZA.js +1 -0
- package/dist/showcase/assets/scroll-area-CpDi_6FP.js +32 -0
- package/dist/showcase/assets/section-D-N8Ze16.js +1 -0
- package/dist/showcase/assets/select-C9Mfb_Gj.js +1 -0
- package/dist/showcase/assets/select-ReMZs8K6.js +1 -0
- package/dist/showcase/assets/send-C6PbwpHN.js +1 -0
- package/dist/showcase/assets/separator-CywPSoE0.js +28 -0
- package/dist/showcase/assets/separator-Ha9YxI2x.js +1 -0
- package/dist/showcase/assets/settings-2-CVq5Uyv5.js +1 -0
- package/dist/showcase/assets/settings-DkTHc0Ob.js +1 -0
- package/dist/showcase/assets/sheet-k-P0gWlk.js +1 -0
- package/dist/showcase/assets/shield-Cme7_JJR.js +1 -0
- package/dist/showcase/assets/shield-alert-CxV0S5w0.js +1 -0
- package/dist/showcase/assets/shield-check-BW_7p6Xf.js +1 -0
- package/dist/showcase/assets/shopping-bag-CoR8AMYU.js +1 -0
- package/dist/showcase/assets/showcase-m3FzbvoC.js +132 -0
- package/dist/showcase/assets/sidebar-bz_FzvjM.js +1 -0
- package/dist/showcase/assets/sidebar.context-BWMPnGn6.js +1 -0
- package/dist/showcase/assets/skeleton-BJMnQDgf.js +29 -0
- package/dist/showcase/assets/skeleton-DoWW5XZD.js +1 -0
- package/dist/showcase/assets/slider-BH1Gtp_p.js +1 -0
- package/dist/showcase/assets/smart-card-C6-idFYI.js +1 -0
- package/dist/showcase/assets/sonner-CGZ3FC4U.js +22 -0
- package/dist/showcase/assets/sortable.esm-CE0TA9V_.js +5 -0
- package/dist/showcase/assets/sparkles-8yQFcmte.js +1 -0
- package/dist/showcase/assets/spinner-BYUX0luk.js +30 -0
- package/dist/showcase/assets/spinner-CNveVfOr.js +49 -0
- package/dist/showcase/assets/spinner-CO8LjtjY.js +1 -0
- package/dist/showcase/assets/square-pen-CWylvezY.js +1 -0
- package/dist/showcase/assets/stacked-avatars-DiNA5OJK.js +1 -0
- package/dist/showcase/assets/star-t53uwwyp.js +1 -0
- package/dist/showcase/assets/startOfDay-BKFJecZ3.js +1 -0
- package/dist/showcase/assets/styles-CwpnwrEQ.js +1 -0
- package/dist/showcase/assets/suggestions-CvxZxsmc.js +126 -0
- package/dist/showcase/assets/switch-CewkokYT.js +1 -0
- package/dist/showcase/assets/switch-D-7uqDR8.js +1 -0
- package/dist/showcase/assets/sync-DnBSRAwH.js +124 -0
- package/dist/showcase/assets/table-3cUcSCBR.js +664 -0
- package/dist/showcase/assets/table-actions-CrujG5R-.js +1 -0
- package/dist/showcase/assets/table-ds5oNU0h.js +1 -0
- package/dist/showcase/assets/tabs-C-hJfSn5.js +19 -0
- package/dist/showcase/assets/tabs-GG911oaV.js +1 -0
- package/dist/showcase/assets/tags-input-DBeIaeVn.js +1 -0
- package/dist/showcase/assets/text-button-EZojp9Ye.js +1 -0
- package/dist/showcase/assets/text-link-DcKeYjEX.js +1 -0
- package/dist/showcase/assets/textarea-DgNgSl1g.js +1 -0
- package/dist/showcase/assets/textarea-PXKZSiRa.js +1 -0
- package/dist/showcase/assets/timelines-CaF_Ze8z.js +200 -0
- package/dist/showcase/assets/toggle-group-D_iuhL1G.js +1 -0
- package/dist/showcase/assets/toggles-BKaayRmE.js +71 -0
- package/dist/showcase/assets/toggles-group-DRAksOw2.js +32 -0
- package/dist/showcase/assets/tooltip-B_LnC5D2.js +31 -0
- package/dist/showcase/assets/trash-2-DhUpICQq.js +1 -0
- package/dist/showcase/assets/trending-up-Kfm5l65O.js +1 -0
- package/dist/showcase/assets/truck-D6SGLjv1.js +1 -0
- package/dist/showcase/assets/typography-qEz6MMn9.js +223 -0
- package/dist/showcase/assets/ui-badge-BA334hdB.js +28 -0
- package/dist/showcase/assets/ui-card-CjqUyGvB.js +30 -0
- package/dist/showcase/assets/ui-table-cDgI6WMk.js +42 -0
- package/dist/showcase/assets/upload-tray-BcA-7pqW.js +138 -0
- package/dist/showcase/assets/use-form-field-state-CGGJFfWu.js +1 -0
- package/dist/showcase/assets/use-layout-link-DIUWH-oo.js +1 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-BavpibMb.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-HDEJjv0f.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-CL0pCuxO.js +1 -0
- package/dist/showcase/assets/useCompositeItem-LkMSD9DW.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-C_oLUvf8.js +1 -0
- package/dist/showcase/assets/useControlled-BHUji6Sp.js +1 -0
- package/dist/showcase/assets/useLabelableId-DDpjUdIO.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-DQOSh-Eu.js +1 -0
- package/dist/showcase/assets/useRender-CnmFaF3Y.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-BPFrAxlp.js +1 -0
- package/dist/showcase/assets/useValueChanged-lYlHqRM1.js +1 -0
- package/dist/showcase/assets/user-DLuRcjl0.js +1 -0
- package/dist/showcase/assets/user-plus-B1Pi7SNv.js +1 -0
- package/dist/showcase/assets/users-DAlxvktS.js +1 -0
- package/dist/showcase/assets/vendor-profile-ClJ6G6SO.js +37 -0
- package/dist/showcase/assets/video-DxooIkh-.js +1 -0
- package/dist/showcase/assets/wrench-BiwmotMF.js +1 -0
- package/dist/showcase/assets/x-idpnOHil.js +1 -0
- package/dist/showcase/assets/zap-a90eC6iO.js +1 -0
- package/dist/showcase/index.html +3 -3
- package/dist/style.css +1 -1
- package/package.json +24 -23
- package/scripts/install-skill.mjs +2 -0
- package/scripts/metadata.json +67 -3
- package/scripts/publish-theme.mjs +245 -0
- package/src/App.css +10 -3
- package/src/css/defaults.css +12 -0
- package/src/css/themes/default.css +7 -0
- package/src/css/themes/shadcn.default.css +144 -0
- package/src/css/tokens/compat.css +46 -0
- package/src/css/tokens/components.css +55 -0
- package/src/css/tokens/foundation.css +90 -0
- package/src/css/tokens/layout.css +44 -0
- package/src/css/tokens/primitives.css +263 -0
- package/src/css/tokens/states.css +58 -0
- package/.agents/skills/component-library-rules/references/components/base__display.md +0 -627
- package/.agents/skills/component-library-rules/references/components/base__empty-state.md +0 -310
- package/.agents/skills/component-library-rules/references/components/base__frame.md +0 -235
- package/.agents/skills/component-library-rules/references/components/base__metadata-list.md +0 -430
- package/.agents/skills/component-library-rules/references/components/composed__ai-new.md +0 -221
- package/.agents/skills/component-library-rules/references/components/composed__commerce-extras.md +0 -295
- package/dist/_shared/accordion-Df1XrCDv.cjs +0 -2
- package/dist/_shared/accordion-Df1XrCDv.cjs.map +0 -1
- package/dist/_shared/accordion-Rzi9wEl6.js +0 -130
- package/dist/_shared/accordion-Rzi9wEl6.js.map +0 -1
- package/dist/_shared/action-menu-CrOJ63Q9.js +0 -96
- package/dist/_shared/action-menu-CrOJ63Q9.js.map +0 -1
- package/dist/_shared/action-menu-D9OowHKx.cjs +0 -2
- package/dist/_shared/action-menu-D9OowHKx.cjs.map +0 -1
- package/dist/_shared/ai-artifact--vEDQFvM.cjs +0 -3
- package/dist/_shared/ai-artifact--vEDQFvM.cjs.map +0 -1
- package/dist/_shared/ai-artifact-p45wDWWX.js +0 -1099
- package/dist/_shared/ai-artifact-p45wDWWX.js.map +0 -1
- package/dist/_shared/alert-CuIIKJC-.cjs +0 -2
- package/dist/_shared/alert-CuIIKJC-.cjs.map +0 -1
- package/dist/_shared/alert-k60OnTtb.js +0 -81
- package/dist/_shared/alert-k60OnTtb.js.map +0 -1
- package/dist/_shared/app-shell-DqDnnKT4.cjs +0 -2
- package/dist/_shared/app-shell-DqDnnKT4.cjs.map +0 -1
- package/dist/_shared/app-shell-w5h0vEKg.js +0 -69
- package/dist/_shared/app-shell-w5h0vEKg.js.map +0 -1
- package/dist/_shared/auth-1Fl_2u-c.js +0 -643
- package/dist/_shared/auth-1Fl_2u-c.js.map +0 -1
- package/dist/_shared/auth-CVDNwcge.cjs +0 -2
- package/dist/_shared/auth-CVDNwcge.cjs.map +0 -1
- package/dist/_shared/avatar-0spfQEHG.cjs +0 -2
- package/dist/_shared/avatar-0spfQEHG.cjs.map +0 -1
- package/dist/_shared/avatar-CBi4LGxy.js +0 -52
- package/dist/_shared/avatar-CBi4LGxy.js.map +0 -1
- package/dist/_shared/badge-A8wQRShC.js +0 -108
- package/dist/_shared/badge-A8wQRShC.js.map +0 -1
- package/dist/_shared/badge-D7A2LnSf.cjs +0 -2
- package/dist/_shared/badge-D7A2LnSf.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs +0 -2
- package/dist/_shared/breadcrumbs-Dqp2qAmo.cjs.map +0 -1
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js +0 -111
- package/dist/_shared/breadcrumbs-bJ-J0oCd.js.map +0 -1
- package/dist/_shared/button-BGKY8UY0.js +0 -173
- package/dist/_shared/button-BGKY8UY0.js.map +0 -1
- package/dist/_shared/button-BI347RlM.cjs +0 -2
- package/dist/_shared/button-BI347RlM.cjs.map +0 -1
- package/dist/_shared/buttons-PL-TGJ32.js +0 -143
- package/dist/_shared/buttons-PL-TGJ32.js.map +0 -1
- package/dist/_shared/buttons-kVvSD_oI.cjs +0 -2
- package/dist/_shared/buttons-kVvSD_oI.cjs.map +0 -1
- package/dist/_shared/card-radio-group-Bna2uZs1.cjs +0 -2
- package/dist/_shared/card-radio-group-Bna2uZs1.cjs.map +0 -1
- package/dist/_shared/card-radio-group-D_CY1HRy.js +0 -158
- package/dist/_shared/card-radio-group-D_CY1HRy.js.map +0 -1
- package/dist/_shared/checkbox-CTqqawIT.js +0 -22
- package/dist/_shared/checkbox-CTqqawIT.js.map +0 -1
- package/dist/_shared/checkbox-D1n-nfLP.cjs +0 -2
- package/dist/_shared/checkbox-D1n-nfLP.cjs.map +0 -1
- package/dist/_shared/combobox-CEzH533Y.cjs +0 -2
- package/dist/_shared/combobox-CEzH533Y.cjs.map +0 -1
- package/dist/_shared/combobox-Dc4vaeGt.js +0 -927
- package/dist/_shared/combobox-Dc4vaeGt.js.map +0 -1
- package/dist/_shared/command-Bxe_FmGD.cjs +0 -2
- package/dist/_shared/command-Bxe_FmGD.cjs.map +0 -1
- package/dist/_shared/command-DwRnPIGs.js +0 -39
- package/dist/_shared/command-DwRnPIGs.js.map +0 -1
- package/dist/_shared/comments-BDnq4RPN.js +0 -952
- package/dist/_shared/comments-BDnq4RPN.js.map +0 -1
- package/dist/_shared/comments-C4djB-nG.cjs +0 -2
- package/dist/_shared/comments-C4djB-nG.cjs.map +0 -1
- package/dist/_shared/copyable-Bx4J7fuT.cjs +0 -2
- package/dist/_shared/copyable-Bx4J7fuT.cjs.map +0 -1
- package/dist/_shared/copyable-cfF4gZoT.js +0 -38
- package/dist/_shared/copyable-cfF4gZoT.js.map +0 -1
- package/dist/_shared/date-picker-Dl91BM3D.js +0 -1361
- package/dist/_shared/date-picker-Dl91BM3D.js.map +0 -1
- package/dist/_shared/date-picker-zFOqtmAS.cjs +0 -2
- package/dist/_shared/date-picker-zFOqtmAS.cjs.map +0 -1
- package/dist/_shared/date-pickers-BBydcIjN.cjs +0 -2
- package/dist/_shared/date-pickers-BBydcIjN.cjs.map +0 -1
- package/dist/_shared/date-pickers-D2OsgV4V.js +0 -330
- package/dist/_shared/date-pickers-D2OsgV4V.js.map +0 -1
- package/dist/_shared/display-AtPyyUZc.cjs +0 -2
- package/dist/_shared/display-AtPyyUZc.cjs.map +0 -1
- package/dist/_shared/display-CL69dmsv.js +0 -1471
- package/dist/_shared/display-CL69dmsv.js.map +0 -1
- package/dist/_shared/form-sizing-D74IS9KG.js +0 -21
- package/dist/_shared/form-sizing-D74IS9KG.js.map +0 -1
- package/dist/_shared/form-sizing-aVwVuF-w.cjs +0 -2
- package/dist/_shared/form-sizing-aVwVuF-w.cjs.map +0 -1
- package/dist/_shared/forms-Bi5rUH3t.cjs +0 -2
- package/dist/_shared/forms-Bi5rUH3t.cjs.map +0 -1
- package/dist/_shared/forms-Yd0b-3MQ.js +0 -3556
- package/dist/_shared/forms-Yd0b-3MQ.js.map +0 -1
- package/dist/_shared/header-C4SvsbMn.cjs +0 -2
- package/dist/_shared/header-C4SvsbMn.cjs.map +0 -1
- package/dist/_shared/header-CcnW83Vs.js +0 -447
- package/dist/_shared/header-CcnW83Vs.js.map +0 -1
- package/dist/_shared/heading-0DYCOrgC.cjs +0 -2
- package/dist/_shared/heading-0DYCOrgC.cjs.map +0 -1
- package/dist/_shared/heading-HeP06nXG.js +0 -107
- package/dist/_shared/heading-HeP06nXG.js.map +0 -1
- package/dist/_shared/hooks-DsDGr8xz.cjs +0 -2
- package/dist/_shared/hooks-DsDGr8xz.cjs.map +0 -1
- package/dist/_shared/hooks-IEM3N4VG.js +0 -95
- package/dist/_shared/hooks-IEM3N4VG.js.map +0 -1
- package/dist/_shared/icon-badge-BAWl1oOe.cjs +0 -2
- package/dist/_shared/icon-badge-BAWl1oOe.cjs.map +0 -1
- package/dist/_shared/icon-badge-zTBVtgt9.js +0 -52
- package/dist/_shared/icon-badge-zTBVtgt9.js.map +0 -1
- package/dist/_shared/input-C7t-RHYq.js +0 -182
- package/dist/_shared/input-C7t-RHYq.js.map +0 -1
- package/dist/_shared/input-COMcb1WY.cjs +0 -2
- package/dist/_shared/input-COMcb1WY.cjs.map +0 -1
- package/dist/_shared/item-DAjqQhhj.js +0 -225
- package/dist/_shared/item-DAjqQhhj.js.map +0 -1
- package/dist/_shared/item-DoXXYgPm.cjs +0 -2
- package/dist/_shared/item-DoXXYgPm.cjs.map +0 -1
- package/dist/_shared/mentions-CqwT7pUL.cjs +0 -2
- package/dist/_shared/mentions-CqwT7pUL.cjs.map +0 -1
- package/dist/_shared/mentions-RxzSRAWE.js +0 -506
- package/dist/_shared/mentions-RxzSRAWE.js.map +0 -1
- package/dist/_shared/metadata-Ckcmar8d.js +0 -235
- package/dist/_shared/metadata-Ckcmar8d.js.map +0 -1
- package/dist/_shared/metadata-DamdYVZL.cjs +0 -2
- package/dist/_shared/metadata-DamdYVZL.cjs.map +0 -1
- package/dist/_shared/money-display-CFSMUtxS.cjs +0 -2
- package/dist/_shared/money-display-CFSMUtxS.cjs.map +0 -1
- package/dist/_shared/money-display-D4Z3P3f_.js +0 -198
- package/dist/_shared/money-display-D4Z3P3f_.js.map +0 -1
- package/dist/_shared/navigation-B-TE-HR-.cjs +0 -2
- package/dist/_shared/navigation-B-TE-HR-.cjs.map +0 -1
- package/dist/_shared/navigation-Cg0UqMDP.js +0 -424
- package/dist/_shared/navigation-Cg0UqMDP.js.map +0 -1
- package/dist/_shared/overlays-CJs_syAu.js +0 -648
- package/dist/_shared/overlays-CJs_syAu.js.map +0 -1
- package/dist/_shared/overlays-DWFEaAog.cjs +0 -2
- package/dist/_shared/overlays-DWFEaAog.cjs.map +0 -1
- package/dist/_shared/page-Bl_eSGLh.js +0 -262
- package/dist/_shared/page-Bl_eSGLh.js.map +0 -1
- package/dist/_shared/page-DTEqSyEK.cjs +0 -2
- package/dist/_shared/page-DTEqSyEK.cjs.map +0 -1
- package/dist/_shared/popover-CaHvG8Vj.cjs +0 -2
- package/dist/_shared/popover-CaHvG8Vj.cjs.map +0 -1
- package/dist/_shared/popover-L37RqoRO.js +0 -83
- package/dist/_shared/popover-L37RqoRO.js.map +0 -1
- package/dist/_shared/popover-menu-Fz-bvWJF.cjs +0 -2
- package/dist/_shared/popover-menu-Fz-bvWJF.cjs.map +0 -1
- package/dist/_shared/popover-menu-bKQatoYF.js +0 -93
- package/dist/_shared/popover-menu-bKQatoYF.js.map +0 -1
- package/dist/_shared/resource-Bb7dj-aj.cjs +0 -2
- package/dist/_shared/resource-Bb7dj-aj.cjs.map +0 -1
- package/dist/_shared/resource-DljsYA7W.js +0 -243
- package/dist/_shared/resource-DljsYA7W.js.map +0 -1
- package/dist/_shared/rich-text-editor-B2VqNi6j.js +0 -620
- package/dist/_shared/rich-text-editor-B2VqNi6j.js.map +0 -1
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs +0 -2
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs.map +0 -1
- package/dist/_shared/scroll-area-BH5CPQh4.js +0 -41
- package/dist/_shared/scroll-area-BH5CPQh4.js.map +0 -1
- package/dist/_shared/scroll-area-u46BOVcC.cjs +0 -2
- package/dist/_shared/scroll-area-u46BOVcC.cjs.map +0 -1
- package/dist/_shared/settings-BtNkFHl3.cjs +0 -2
- package/dist/_shared/settings-BtNkFHl3.cjs.map +0 -1
- package/dist/_shared/settings-Do6SuM-H.js +0 -143
- package/dist/_shared/settings-Do6SuM-H.js.map +0 -1
- package/dist/_shared/sidebar-BGpi9K_Q.js +0 -389
- package/dist/_shared/sidebar-BGpi9K_Q.js.map +0 -1
- package/dist/_shared/sidebar-BhcdQ9e9.cjs +0 -2
- package/dist/_shared/sidebar-BhcdQ9e9.cjs.map +0 -1
- package/dist/_shared/sidebar-CC3lcvNX.cjs +0 -2
- package/dist/_shared/sidebar-CC3lcvNX.cjs.map +0 -1
- package/dist/_shared/sidebar-CMoxtuSw.js +0 -538
- package/dist/_shared/sidebar-CMoxtuSw.js.map +0 -1
- package/dist/_shared/smart-card-B6m7tmt0.cjs +0 -2
- package/dist/_shared/smart-card-B6m7tmt0.cjs.map +0 -1
- package/dist/_shared/smart-card-thLb85Ih.js +0 -361
- package/dist/_shared/smart-card-thLb85Ih.js.map +0 -1
- package/dist/_shared/spinner-BfAbXTQ7.js +0 -67
- package/dist/_shared/spinner-BfAbXTQ7.js.map +0 -1
- package/dist/_shared/spinner-DWn3x9Tl.cjs +0 -2
- package/dist/_shared/spinner-DWn3x9Tl.cjs.map +0 -1
- package/dist/_shared/table-BgpL5Yt8.cjs +0 -2
- package/dist/_shared/table-BgpL5Yt8.cjs.map +0 -1
- package/dist/_shared/table-Ct3nl0lV.js +0 -1381
- package/dist/_shared/table-Ct3nl0lV.js.map +0 -1
- package/dist/_shared/textarea-C4SOrh0z.cjs +0 -2
- package/dist/_shared/textarea-C4SOrh0z.cjs.map +0 -1
- package/dist/_shared/textarea-CsMkelmp.js +0 -119
- package/dist/_shared/textarea-CsMkelmp.js.map +0 -1
- package/dist/_shared/typography-Bzsl7aTu.cjs +0 -2
- package/dist/_shared/typography-Bzsl7aTu.cjs.map +0 -1
- package/dist/_shared/typography-CdxyWB1T.js +0 -102
- package/dist/_shared/typography-CdxyWB1T.js.map +0 -1
- package/dist/_shared/ui-provider-BF4m2cR0.cjs +0 -2
- package/dist/_shared/ui-provider-BF4m2cR0.cjs.map +0 -1
- package/dist/_shared/ui-provider-C8Ot88lS.js +0 -85
- package/dist/_shared/ui-provider-C8Ot88lS.js.map +0 -1
- package/dist/_shared/workspace-BzTFBkmd.cjs +0 -2
- package/dist/_shared/workspace-BzTFBkmd.cjs.map +0 -1
- package/dist/_shared/workspace-CvUYln5V.js +0 -357
- package/dist/_shared/workspace-CvUYln5V.js.map +0 -1
- package/dist/components/base/data-view/data-view.d.ts.map +0 -1
- package/dist/components/base/data-view/data-view.strings.d.ts.map +0 -1
- package/dist/components/base/data-view/data-view.types.d.ts.map +0 -1
- package/dist/components/base/data-view/index.cjs +0 -2
- package/dist/components/base/data-view/index.cjs.map +0 -1
- package/dist/components/base/data-view/index.d.ts.map +0 -1
- package/dist/components/base/data-view/index.js +0 -146
- package/dist/components/base/data-view/index.js.map +0 -1
- package/dist/components/base/display/empty-state/empty-state.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/empty-state.strings.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/empty-state.types.d.ts +0 -85
- package/dist/components/base/display/empty-state/empty-state.types.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/index.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/document-stack.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/inbox-clean.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/index.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/search-glass.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/stacked-cards.d.ts.map +0 -1
- package/dist/components/base/display/empty-state/partials/illustrations/users-circle.d.ts.map +0 -1
- package/dist/components/base/display/fields/email-display.d.ts +0 -22
- package/dist/components/base/display/fields/email-display.d.ts.map +0 -1
- package/dist/components/base/display/fields/index.d.ts.map +0 -1
- package/dist/components/base/display/fields/phone-display.d.ts +0 -22
- package/dist/components/base/display/fields/phone-display.d.ts.map +0 -1
- package/dist/components/base/display/fields/url-display.d.ts +0 -28
- package/dist/components/base/display/fields/url-display.d.ts.map +0 -1
- package/dist/components/base/display/inline-stat/index.d.ts.map +0 -1
- package/dist/components/base/display/inline-stat/inline-stat.d.ts.map +0 -1
- package/dist/components/base/display/metadata/index.cjs +0 -1
- package/dist/components/base/display/metadata/index.d.ts.map +0 -1
- package/dist/components/base/display/metadata/index.js +0 -2
- package/dist/components/base/display/metadata/metadata-list.d.ts.map +0 -1
- package/dist/components/base/display/metadata/metadata-list.strings.d.ts.map +0 -1
- package/dist/components/base/display/numeric-value/index.d.ts.map +0 -1
- package/dist/components/base/display/numeric-value/numeric-value.d.ts.map +0 -1
- package/dist/components/base/display/section-header/index.d.ts.map +0 -1
- package/dist/components/base/display/section-header/section-header.d.ts.map +0 -1
- package/dist/components/base/display/user-cell/index.d.ts.map +0 -1
- package/dist/components/base/display/user-cell/user-cell.d.ts +0 -19
- package/dist/components/base/display/user-cell/user-cell.d.ts.map +0 -1
- package/dist/components/base/frame/frame.d.ts +0 -24
- package/dist/components/base/frame/frame.d.ts.map +0 -1
- package/dist/components/base/frame/index.cjs +0 -2
- package/dist/components/base/frame/index.cjs.map +0 -1
- package/dist/components/base/frame/index.d.ts +0 -2
- package/dist/components/base/frame/index.d.ts.map +0 -1
- package/dist/components/base/frame/index.js +0 -164
- package/dist/components/base/frame/index.js.map +0 -1
- package/dist/components/composed/data-display/index.cjs.map +0 -1
- package/dist/components/composed/data-display/index.js.map +0 -1
- package/dist/components/layout/resource/index.cjs +0 -1
- package/dist/components/layout/resource/index.d.ts.map +0 -1
- package/dist/components/layout/resource/index.js +0 -2
- package/dist/components/layout/resource/resource.d.ts.map +0 -1
- package/dist/components/layout/resource/resource.types.d.ts +0 -86
- package/dist/components/layout/resource/resource.types.d.ts.map +0 -1
- package/dist/showcase/assets/AreaChart-CPs34Emq.js +0 -6
- package/dist/showcase/assets/CSPContext-B11tftuK.js +0 -1
- package/dist/showcase/assets/CompositeItem-CRBdF4lY.js +0 -1
- package/dist/showcase/assets/CompositeRoot-BJL04x4e.js +0 -1
- package/dist/showcase/assets/DialogTrigger-DLTfNVyT.js +0 -1
- package/dist/showcase/assets/FieldItemContext-BSFHjS7g.js +0 -1
- package/dist/showcase/assets/LabelableContext-DqxJotB_.js +0 -1
- package/dist/showcase/assets/PreviewLayout-DQIZaXaO.js +0 -1
- package/dist/showcase/assets/RadioGroup-Bd_Zncc1.js +0 -1
- package/dist/showcase/assets/Separator-BP98bGSM.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-CHQj8-IW.js +0 -1
- package/dist/showcase/assets/accordion-C-grh_FX.js +0 -171
- package/dist/showcase/assets/accordion-variants-xiD_mqaf.js +0 -1
- package/dist/showcase/assets/action-menu-BkBav9jX.js +0 -1
- package/dist/showcase/assets/activities-DWhVEoyf.js +0 -501
- package/dist/showcase/assets/activities-feed-card-BW5nKGmZ.js +0 -1
- package/dist/showcase/assets/activity-poGMMgYW.js +0 -1
- package/dist/showcase/assets/admin-Dd5rNbt8.js +0 -140
- package/dist/showcase/assets/ai-B-HxItKA.js +0 -41
- package/dist/showcase/assets/ai-artifact-CakosBY2.js +0 -2
- package/dist/showcase/assets/ai-chat-DdxooReQ.js +0 -568
- package/dist/showcase/assets/ai-elements-D1Vv9_Tw.js +0 -387
- package/dist/showcase/assets/ai-new-nIwh-IOk.js +0 -167
- package/dist/showcase/assets/ai-tool-call-D_D0wP5v.js +0 -1
- package/dist/showcase/assets/alert-BUcCtIUZ.js +0 -1
- package/dist/showcase/assets/alert-Dia0s7JO.js +0 -62
- package/dist/showcase/assets/alert-T1jitthq.js +0 -93
- package/dist/showcase/assets/api-key-list-BH7hCegB.js +0 -1
- package/dist/showcase/assets/api-key-list-DGw5v3TM.js +0 -73
- package/dist/showcase/assets/app-sidebar-C9tjHr7T.js +0 -1
- package/dist/showcase/assets/arrow-down-B6kyPDb5.js +0 -1
- package/dist/showcase/assets/arrow-left-D0CtgCZo.js +0 -1
- package/dist/showcase/assets/arrow-right-KBaOzj0x.js +0 -1
- package/dist/showcase/assets/arrow-up-C4Mo45qq.js +0 -1
- package/dist/showcase/assets/arrow-up-right-DP1T-yaT.js +0 -1
- package/dist/showcase/assets/avatar-D7SDbnVK.js +0 -57
- package/dist/showcase/assets/avatar-Dk78XyHT.js +0 -1
- package/dist/showcase/assets/badge-BynPmAU-.js +0 -28
- package/dist/showcase/assets/badge-check-BLKxMna6.js +0 -1
- package/dist/showcase/assets/bell-YYeVQNAQ.js +0 -1
- package/dist/showcase/assets/bot-DW1y5yQ-.js +0 -1
- package/dist/showcase/assets/box-xRYm3qua.js +0 -1
- package/dist/showcase/assets/brain-D_5EG0Lz.js +0 -1
- package/dist/showcase/assets/brand-Dyp6oyOk.js +0 -36
- package/dist/showcase/assets/breadcrumb-DXvRsHCJ.js +0 -52
- package/dist/showcase/assets/breadcrumb-IsBRcWTe.js +0 -1
- package/dist/showcase/assets/breadcrumbs-BU7Rgcpu.js +0 -1
- package/dist/showcase/assets/briefcase-DNJAkTSQ.js +0 -1
- package/dist/showcase/assets/building-2-ew23uhTO.js +0 -1
- package/dist/showcase/assets/button-Vw1Oyu_k.js +0 -44
- package/dist/showcase/assets/button-group-B-jDeq6X.js +0 -1
- package/dist/showcase/assets/buttons-C51ePl4d.js +0 -270
- package/dist/showcase/assets/calendar-B5HmDXFy.js +0 -16
- package/dist/showcase/assets/calendar-BcfonDWf.js +0 -1
- package/dist/showcase/assets/calendar-C30zoOBE.js +0 -1
- package/dist/showcase/assets/calendar-days-RYOuU9Cg.js +0 -1
- package/dist/showcase/assets/camera-CyHnOpqm.js +0 -1
- package/dist/showcase/assets/card-Btuv-VxD.js +0 -188
- package/dist/showcase/assets/card-BvOjmZEl.js +0 -1
- package/dist/showcase/assets/card-primitives-FJQ8zNnk.js +0 -1
- package/dist/showcase/assets/card-radio-group-CEX1QGZc.js +0 -1
- package/dist/showcase/assets/cards-CL6XfZ22.js +0 -328
- package/dist/showcase/assets/carousel-D9G8bQhs.js +0 -449
- package/dist/showcase/assets/cell-renderers-CFw3ElYS.js +0 -1
- package/dist/showcase/assets/chart-CXAM6h1e.js +0 -358
- package/dist/showcase/assets/chart-column-BAuLvocu.js +0 -1
- package/dist/showcase/assets/checkbox-Bu3lf4gm.js +0 -1
- package/dist/showcase/assets/chevron-down-BbbFJsFU.js +0 -1
- package/dist/showcase/assets/chevron-left-CmperXCk.js +0 -1
- package/dist/showcase/assets/chevron-right-0nQcAzMY.js +0 -1
- package/dist/showcase/assets/chevron-up-BXSFzrxh.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-lvrM2T-O.js +0 -1
- package/dist/showcase/assets/circle-DswWOvJq.js +0 -1
- package/dist/showcase/assets/circle-alert-DM8Q0Da0.js +0 -1
- package/dist/showcase/assets/circle-check-BYi8zv0a.js +0 -1
- package/dist/showcase/assets/circle-check-big-WtxiRvrB.js +0 -1
- package/dist/showcase/assets/circle-dot-MfYw-Dij.js +0 -1
- package/dist/showcase/assets/circle-question-mark-CbXDG7RP.js +0 -1
- package/dist/showcase/assets/circle-x-DeZby2HN.js +0 -1
- package/dist/showcase/assets/clock-3-BxradwSg.js +0 -1
- package/dist/showcase/assets/clock-BBX3LCxu.js +0 -1
- package/dist/showcase/assets/code-xml-ldsBhjwS.js +0 -1
- package/dist/showcase/assets/collapsible-COxB1q4f.js +0 -1
- package/dist/showcase/assets/collapsible-D8iHSi7O.js +0 -27
- package/dist/showcase/assets/combobox-gNdpv0PU.js +0 -726
- package/dist/showcase/assets/command-BNVn6pYm.js +0 -1
- package/dist/showcase/assets/command-Bwp2eLDF.js +0 -1
- package/dist/showcase/assets/comment-composer-eU5HG1ZD.js +0 -1
- package/dist/showcase/assets/comment-item-AKJEHLvt.js +0 -1
- package/dist/showcase/assets/comments-hcLJicNU.js +0 -357
- package/dist/showcase/assets/commerce-C_RgOVxU.js +0 -79
- package/dist/showcase/assets/commerce-extras-CVVnDyB5.js +0 -189
- package/dist/showcase/assets/composite-BW91WkOo.js +0 -1
- package/dist/showcase/assets/contact-card-CE82BDxj.js +0 -65
- package/dist/showcase/assets/content-container-Cc8Vv5Wp.js +0 -1
- package/dist/showcase/assets/copyable-CD9f6sxk.js +0 -96
- package/dist/showcase/assets/copyable-DRvJ9iOu.js +0 -1
- package/dist/showcase/assets/course-card-DYzULN2A.js +0 -77
- package/dist/showcase/assets/cpu-Cc__BewW.js +0 -1
- package/dist/showcase/assets/credit-card-CoIW8_5L.js +0 -1
- package/dist/showcase/assets/currency-DEKUvlFU.js +0 -149
- package/dist/showcase/assets/dark-surfaces-D5WXaLLj.js +0 -90
- package/dist/showcase/assets/database-C8o4g1ov.js +0 -1
- package/dist/showcase/assets/date-block-Aw2riL52.js +0 -1
- package/dist/showcase/assets/date-picker-BrBCLxZ8.js +0 -1
- package/dist/showcase/assets/date-pickers-B84_YAGT.js +0 -73
- package/dist/showcase/assets/dense-info-BaI61NnP.js +0 -106
- package/dist/showcase/assets/dialog-CfKGB1qy.js +0 -1
- package/dist/showcase/assets/dialog-DpfYwJPk.js +0 -1
- package/dist/showcase/assets/display-ZDXpxNSP.js +0 -403
- package/dist/showcase/assets/dist-CnonIdcR.js +0 -1
- package/dist/showcase/assets/dist-DRkwLUFP.js +0 -45
- package/dist/showcase/assets/dollar-sign-BTuul0J-.js +0 -1
- package/dist/showcase/assets/download-Nn6XkM9l.js +0 -1
- package/dist/showcase/assets/dropdown-menu-CrcweCup.js +0 -1
- package/dist/showcase/assets/dropzone-MajEhAfA.js +0 -1
- package/dist/showcase/assets/earth-Cv_-EtPW.js +0 -1
- package/dist/showcase/assets/ellipsis-D0y6rUzm.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-B6ICYsU2.js +0 -1
- package/dist/showcase/assets/empty-CWtvDL2Z.js +0 -1
- package/dist/showcase/assets/empty-item-CBdSL5K4.js +0 -49
- package/dist/showcase/assets/empty-state-DpAXXKE_.js +0 -1
- package/dist/showcase/assets/empty-state-x7W66Jff.js +0 -188
- package/dist/showcase/assets/enhanced-activities-BgQBDjph.js +0 -361
- package/dist/showcase/assets/enhanced-combobox-BT-d7sfw.js +0 -1
- package/dist/showcase/assets/esm-CAF_uoYd.js +0 -2
- package/dist/showcase/assets/event-calendar-Bl3N30L5.js +0 -138
- package/dist/showcase/assets/event-log-BI24HOvx.js +0 -330
- package/dist/showcase/assets/example-CbMg22fx.js +0 -1
- package/dist/showcase/assets/external-link-C4QW5KPr.js +0 -1
- package/dist/showcase/assets/eye-rvb4fYw0.js +0 -1
- package/dist/showcase/assets/feature-announcement-CChQvOnH.js +0 -34
- package/dist/showcase/assets/file-GOMuLez7.js +0 -1
- package/dist/showcase/assets/file-text-B21ZcL9w.js +0 -1
- package/dist/showcase/assets/filters-Crp5EI1q.js +0 -139
- package/dist/showcase/assets/flag-D1iXMqPC.js +0 -1
- package/dist/showcase/assets/folder-open-CjZE_PS8.js +0 -1
- package/dist/showcase/assets/form-field-Dtn_NArM.js +0 -1
- package/dist/showcase/assets/form-sizing-DHUDpiPA.js +0 -1
- package/dist/showcase/assets/format-Cu09wP-k.js +0 -1
- package/dist/showcase/assets/forms-noSArwvn.js +0 -911
- package/dist/showcase/assets/frame-2DJdBXkw.js +0 -167
- package/dist/showcase/assets/generic-BH5YLC_H.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-DxlN6Yut.js +0 -1
- package/dist/showcase/assets/gift-DBIsZsVg.js +0 -1
- package/dist/showcase/assets/giftcard-cards-B3ffDDjK.js +0 -85
- package/dist/showcase/assets/git-branch-6eIv9W2g.js +0 -1
- package/dist/showcase/assets/global-search-BelZn8mj.js +0 -215
- package/dist/showcase/assets/global-search-DSMNBBiZ.js +0 -1
- package/dist/showcase/assets/globe-B_Lqx3uz.js +0 -1
- package/dist/showcase/assets/gradient-card-D_2eaE6O.js +0 -58
- package/dist/showcase/assets/hash-BC0RnYwr.js +0 -1
- package/dist/showcase/assets/header-CMjgUhtM.js +0 -1
- package/dist/showcase/assets/header-notifications-fOFoqfCR.js +0 -1
- package/dist/showcase/assets/heart-BM6yPMXn.js +0 -1
- package/dist/showcase/assets/house-CnsMNKdQ.js +0 -1
- package/dist/showcase/assets/icon-badge-IP9B3lQm.js +0 -1
- package/dist/showcase/assets/image-B5jt_w43.js +0 -1
- package/dist/showcase/assets/inbox-BcbV9uGN.js +0 -1
- package/dist/showcase/assets/index-Bn8k0P7-.css +0 -2
- package/dist/showcase/assets/index-DNH0y0r-.js +0 -10
- package/dist/showcase/assets/index.esm-Ducg7a0P.js +0 -1
- package/dist/showcase/assets/inertValue-B82SGILi.js +0 -1
- package/dist/showcase/assets/info-DO5VmDSw.js +0 -1
- package/dist/showcase/assets/inline-stat-B2s_ozrX.js +0 -1
- package/dist/showcase/assets/input-BCxdburb.js +0 -1
- package/dist/showcase/assets/input-DcQuALxy.js +0 -1
- package/dist/showcase/assets/input-group-DZJrOGbm.js +0 -1
- package/dist/showcase/assets/input-group-PwfoPR94.js +0 -47
- package/dist/showcase/assets/inputs-DetnUcEp.js +0 -155
- package/dist/showcase/assets/invoice-header-BMWL_9sW.js +0 -36
- package/dist/showcase/assets/invoice-items-DLEQR54f.js +0 -36
- package/dist/showcase/assets/invoice-mini-BxO8W_p2.js +0 -14
- package/dist/showcase/assets/invoice-table-ClMTdfvZ.js +0 -30
- package/dist/showcase/assets/isSameDay-B9x5Mpln.js +0 -1
- package/dist/showcase/assets/isToday-CT4NGB5x.js +0 -1
- package/dist/showcase/assets/italic-BiQv-7DA.js +0 -1
- package/dist/showcase/assets/item-CdgzxWcL.js +0 -1
- package/dist/showcase/assets/item-JreKWzkR.js +0 -134
- package/dist/showcase/assets/item-a8FCQMvC.js +0 -1
- package/dist/showcase/assets/kanban-CekpGtlO.js +0 -186
- package/dist/showcase/assets/key-round-CpIUGlhG.js +0 -1
- package/dist/showcase/assets/label-BE1d_Rxi.js +0 -1
- package/dist/showcase/assets/languages-DaFWrOam.js +0 -1
- package/dist/showcase/assets/layers-DDIuTz4-.js +0 -1
- package/dist/showcase/assets/layout-app-shell-BkqOwNe9.js +0 -608
- package/dist/showcase/assets/layout-auth-Bng_0NM0.js +0 -754
- package/dist/showcase/assets/layout-containers-Bk_jSDWd.js +0 -101
- package/dist/showcase/assets/layout-header-CuJVU1Rx.js +0 -203
- package/dist/showcase/assets/layout-page-DHOPox5Z.js +0 -278
- package/dist/showcase/assets/layout-primitives-BnIgANs6.js +0 -34
- package/dist/showcase/assets/layout-sidebar-BUOjQm9-.js +0 -224
- package/dist/showcase/assets/layout-users-DFlJQAuB.js +0 -117
- package/dist/showcase/assets/layout-workspace-Cq63UWwT.js +0 -183
- package/dist/showcase/assets/lib-DMGme4uo.js +0 -1
- package/dist/showcase/assets/lock-DTD3z5Vh.js +0 -1
- package/dist/showcase/assets/lock-keyhole-Bbs1Ry2S.js +0 -1
- package/dist/showcase/assets/mail-DAa8myka.js +0 -1
- package/dist/showcase/assets/mail-check-DrmYfqQb.js +0 -1
- package/dist/showcase/assets/map-DfYPJKDx.js +0 -124
- package/dist/showcase/assets/map-pin-Cf_uffQY.js +0 -1
- package/dist/showcase/assets/media-library-Duyf6M0c.js +0 -695
- package/dist/showcase/assets/mention-inline-suggestions-tOlG56Jr.js +0 -1
- package/dist/showcase/assets/mentions-LbZlN995.js +0 -138
- package/dist/showcase/assets/menus-Cs95R125.js +0 -165
- package/dist/showcase/assets/message-square-CjaeUwPc.js +0 -1
- package/dist/showcase/assets/metadata-list-Bcy5s1_q.js +0 -1
- package/dist/showcase/assets/metadata-list-C9L63gMM2.js +0 -288
- package/dist/showcase/assets/metric-D8bF87C1.js +0 -1
- package/dist/showcase/assets/metric-bar-DQF1jEsY.js +0 -1
- package/dist/showcase/assets/metric-grid-DJZjbFrm.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-C9YeKxwe.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-CfGjnKEG.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-C4R2q2ia.js +0 -50
- package/dist/showcase/assets/metrics-comparison-B2FZ-rUG.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-BS4EafAM.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-CyWA0Plw.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-CH_KTuo2.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-Dw1rbkBU.js +0 -42
- package/dist/showcase/assets/metrics-overview-BuLSn0GC.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-Zo4F0-y4.js +0 -54
- package/dist/showcase/assets/minus-COUx_vHQ.js +0 -1
- package/dist/showcase/assets/money-display-prumQLQ2.js +0 -1
- package/dist/showcase/assets/month-year-picker-BDTiuGOD.js +0 -1
- package/dist/showcase/assets/navigation-Bf_sgFei.js +0 -90
- package/dist/showcase/assets/navigation-Dnqq0un0.js +0 -230
- package/dist/showcase/assets/navigation-extras-ydwfzYfj.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-DBLaUqhZ.js +0 -119
- package/dist/showcase/assets/overflow-tab-bar-UXs-T5Fq.js +0 -1
- package/dist/showcase/assets/overlays-C1ET_VvE.js +0 -408
- package/dist/showcase/assets/overlays-dMd0EOT1.js +0 -159
- package/dist/showcase/assets/package-C9EnWNEP.js +0 -1
- package/dist/showcase/assets/package-check-BGT72daQ.js +0 -1
- package/dist/showcase/assets/page-action-button-8faHdFOD.js +0 -1
- package/dist/showcase/assets/page-header-DoZnb9z9.js +0 -1
- package/dist/showcase/assets/pagination-BJ3wQQtL.js +0 -42
- package/dist/showcase/assets/pagination-DJnga08n.js +0 -1
- package/dist/showcase/assets/paperclip-DsQ_IPLp.js +0 -1
- package/dist/showcase/assets/password-input-CLxvZdDC.js +0 -1
- package/dist/showcase/assets/pencil-37DzPmX5.js +0 -1
- package/dist/showcase/assets/phone-CLDh9lYU.js +0 -1
- package/dist/showcase/assets/plus-PKSdX45c.js +0 -1
- package/dist/showcase/assets/popover-BWbBoxN0.js +0 -1
- package/dist/showcase/assets/popover-DoEhmJ7G.js +0 -1
- package/dist/showcase/assets/popover-menu-wt8kWbr1.js +0 -1
- package/dist/showcase/assets/products-Bvl2zRfb.js +0 -407
- package/dist/showcase/assets/progress-BeusdG_D.js +0 -18
- package/dist/showcase/assets/progress-CQr08MPz.js +0 -1
- package/dist/showcase/assets/props-table-DSdjPLVr.js +0 -1
- package/dist/showcase/assets/props.generated-AlskAQY9.json +0 -41579
- package/dist/showcase/assets/quote-D1DrZRcn.js +0 -1
- package/dist/showcase/assets/react-dom-Bz4cALsF.js +0 -1
- package/dist/showcase/assets/receipt-CxNJvyC5.js +0 -1
- package/dist/showcase/assets/receipt-text-2YwFjXVP.js +0 -1
- package/dist/showcase/assets/refresh-cw-DlkWEAjG.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-Ctt-9xwK.js +0 -1
- package/dist/showcase/assets/resource-selector-card-C9zM67wN.js +0 -39
- package/dist/showcase/assets/rich-text-editor-DUWBkEdn.js +0 -124
- package/dist/showcase/assets/rich-text-editor-DjsgN-HX.js +0 -143
- package/dist/showcase/assets/rotate-ccw-ZkWMrEMJ.js +0 -1
- package/dist/showcase/assets/save-CQjTFBwm.js +0 -1
- package/dist/showcase/assets/schema-form-yfcV7ZHE.js +0 -325
- package/dist/showcase/assets/scroll-area-D73Zq5No.js +0 -32
- package/dist/showcase/assets/scroll-area-Toa6lE_G.js +0 -1
- package/dist/showcase/assets/select-BQWY3ndy.js +0 -1
- package/dist/showcase/assets/select-x02n3iNp.js +0 -1
- package/dist/showcase/assets/send-L-LNhDVx.js +0 -1
- package/dist/showcase/assets/separator-B57lhXSg.js +0 -28
- package/dist/showcase/assets/separator-kwh2KDqD.js +0 -1
- package/dist/showcase/assets/settings-Mbnp6hDe.js +0 -1
- package/dist/showcase/assets/sheet-DwYghriA.js +0 -1
- package/dist/showcase/assets/shield-D084AWSl.js +0 -1
- package/dist/showcase/assets/shield-alert-h6F2vnr-.js +0 -1
- package/dist/showcase/assets/shield-check-UiN6QwPl.js +0 -1
- package/dist/showcase/assets/shopping-bag-oxYbVKoz.js +0 -1
- package/dist/showcase/assets/sidebar-BWDrvFY1.js +0 -1
- package/dist/showcase/assets/sidebar.context-BhexAjPM.js +0 -1
- package/dist/showcase/assets/skeleton-BIS2X39p.js +0 -29
- package/dist/showcase/assets/skeleton-uyUucxJA.js +0 -1
- package/dist/showcase/assets/slider-DL--Jsf0.js +0 -1
- package/dist/showcase/assets/sliders-horizontal-C6SHwI9f.js +0 -1
- package/dist/showcase/assets/smart-card-DpvRHqI9.js +0 -1
- package/dist/showcase/assets/sonner-CvCutMP9.js +0 -22
- package/dist/showcase/assets/sortable.esm-COtQXiwU.js +0 -5
- package/dist/showcase/assets/sparkles-bMR7rbuC.js +0 -1
- package/dist/showcase/assets/spinner-CBXhPGyW.js +0 -30
- package/dist/showcase/assets/spinner-Dl2u80sI.js +0 -49
- package/dist/showcase/assets/spinner-ULnFdoGj.js +0 -1
- package/dist/showcase/assets/square-pen-3jbmTAqh.js +0 -1
- package/dist/showcase/assets/stacked-avatars-XKXaLCmk.js +0 -1
- package/dist/showcase/assets/star-0BUJBDj_.js +0 -1
- package/dist/showcase/assets/startOfDay-C8cGxdjJ.js +0 -1
- package/dist/showcase/assets/styles-Cl6qvIKS.js +0 -1
- package/dist/showcase/assets/suggestions-EB3TFZpP.js +0 -126
- package/dist/showcase/assets/switch-BbZ7_Rk-.js +0 -1
- package/dist/showcase/assets/switch-C0QtKm5H.js +0 -1
- package/dist/showcase/assets/sync-BAO20Naa.js +0 -107
- package/dist/showcase/assets/table-CnCYxSnD.js +0 -509
- package/dist/showcase/assets/table-DF7x4TGI.js +0 -1
- package/dist/showcase/assets/table-actions-CjaUIKQl.js +0 -1
- package/dist/showcase/assets/tabs-D3YHyrQ5.js +0 -1
- package/dist/showcase/assets/tabs-vUgN5IPn.js +0 -19
- package/dist/showcase/assets/tags-input-jtEAac1b.js +0 -1
- package/dist/showcase/assets/text-button-fiMDoWms.js +0 -1
- package/dist/showcase/assets/text-link-CSzy09hn.js +0 -1
- package/dist/showcase/assets/textarea-DnvQVkFU.js +0 -1
- package/dist/showcase/assets/textarea-mATRsiLJ.js +0 -1
- package/dist/showcase/assets/timelines-fQQIiGc4.js +0 -200
- package/dist/showcase/assets/toggle-group-B0hN7VRz.js +0 -1
- package/dist/showcase/assets/toggles-group-CXm2HDJ1.js +0 -32
- package/dist/showcase/assets/toggles-kwgQf4hQ.js +0 -71
- package/dist/showcase/assets/trash-2-xwHdvAn6.js +0 -1
- package/dist/showcase/assets/trending-up-CKnZUURN.js +0 -1
- package/dist/showcase/assets/truck-8P8-8rHh.js +0 -1
- package/dist/showcase/assets/typography-BP3SCf0c.js +0 -223
- package/dist/showcase/assets/ui-badge-eTC8uxVw.js +0 -28
- package/dist/showcase/assets/ui-card-AQkRKit0.js +0 -30
- package/dist/showcase/assets/ui-table-BTE7t50V.js +0 -42
- package/dist/showcase/assets/upload-tray-DpW8ZnxN.js +0 -138
- package/dist/showcase/assets/use-form-field-state-Sbo6tfr9.js +0 -1
- package/dist/showcase/assets/use-layout-link-DR4Apqbc.js +0 -1
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CT1urU5D.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-DiHf8Ou_.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-NNLPWtyS.js +0 -1
- package/dist/showcase/assets/useCompositeItem-BE0Lg9Iz.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-OwLLy0R3.js +0 -1
- package/dist/showcase/assets/useControlled-BF8maje6.js +0 -1
- package/dist/showcase/assets/useLabelableId-Y-6YW07q.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-CUTVNS1V.js +0 -1
- package/dist/showcase/assets/useRender-BiaVVD8L.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-DCMcmSgH.js +0 -1
- package/dist/showcase/assets/useValueChanged-kq4oH4So.js +0 -1
- package/dist/showcase/assets/user-BCzeUL5p.js +0 -1
- package/dist/showcase/assets/user-plus-CUbfQtkK.js +0 -1
- package/dist/showcase/assets/users-DOGJZmUN.js +0 -1
- package/dist/showcase/assets/vendor-profile-C7dXfVv_.js +0 -37
- package/dist/showcase/assets/video-DbaCGki8.js +0 -1
- package/dist/showcase/assets/wrench-TbDfItHQ.js +0 -1
- package/dist/showcase/assets/x-BpAEmld2.js +0 -1
- package/dist/showcase/assets/zap-E8G3kjwh.js +0 -1
- /package/dist/components/{base/display → composed/data-display}/empty-state/empty-state.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/empty-state.strings.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/document-stack.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/inbox-clean.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/search-glass.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/stacked-cards.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/empty-state/partials/illustrations/users-circle.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/fields/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/inline-stat/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/inline-stat/inline-stat.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/metadata/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/metadata/metadata-list.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/metadata/metadata-list.strings.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/numeric-value/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/numeric-value/numeric-value.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/section-header/index.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/section-header/section-header.d.ts +0 -0
- /package/dist/components/{base/display → composed/data-display}/user-cell/index.d.ts +0 -0
- /package/dist/components/{base → features}/data-view/data-view.d.ts +0 -0
- /package/dist/components/{base → features}/data-view/data-view.strings.d.ts +0 -0
- /package/dist/components/{base → features}/data-view/data-view.types.d.ts +0 -0
- /package/dist/components/{base → features}/data-view/index.d.ts +0 -0
- /package/dist/components/{layout → features}/resource/index.d.ts +0 -0
- /package/dist/components/{layout → features}/resource/resource.d.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-editor-B2VqNi6j.js","names":[],"sources":["../../src/components/features/rich-text-editor/partials/rich-text-editor-toolbar.tsx","../../src/components/features/rich-text-editor/rich-text-editor.strings.ts","../../src/components/features/rich-text-editor/partials/caret-helpers.ts","../../src/components/features/rich-text-editor/partials/counts-footer.tsx","../../src/components/features/rich-text-editor/partials/html-helpers.ts","../../src/components/features/rich-text-editor/partials/rich-text-editor-tiptap.tsx","../../src/components/features/rich-text-editor/partials/rich-text-editor-fallback.tsx","../../src/components/features/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { Code2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/base/buttons/button';\n\nimport type { RichTextEditorStrings } from '../rich-text-editor.strings';\nimport type {\n\tRichTextEditorToolbarItem,\n\tToolbarButtonConfig,\n} from '../rich-text-editor.types';\n\nexport interface RichTextEditorToolbarProps {\n\tbuttons: ToolbarButtonConfig[];\n\textraToolbarItems?: ReadonlyArray<RichTextEditorToolbarItem>;\n\thideSourceToggle?: boolean;\n\tsourceMode: boolean;\n\ttoggleSourceMode: () => void;\n\tdisabled?: boolean;\n\t/**\n\t * The TipTap variant disables built-in buttons until the editor instance\n\t * is ready; the fallback variant simply marks them disabled. This flag\n\t * lets callers force the disabled state without re-deriving it per button.\n\t */\n\thasEditor?: boolean;\n\ttoolbarTrailing?: ReactNode;\n\tstrings: RichTextEditorStrings;\n}\n\nexport function RichTextEditorToolbar({\n\tbuttons,\n\textraToolbarItems,\n\thideSourceToggle = false,\n\tsourceMode,\n\ttoggleSourceMode,\n\tdisabled = false,\n\thasEditor = true,\n\ttoolbarTrailing,\n\tstrings,\n}: RichTextEditorToolbarProps) {\n\tconst hasExtras = (extraToolbarItems?.length ?? 0) > 0;\n\n\treturn (\n\t\t<div className=\"border-border flex flex-wrap items-center gap-1 border-b p-1.5\">\n\t\t\t{buttons.map((button) => {\n\t\t\t\tconst Icon = button.icon;\n\t\t\t\tconst isActive = button.isActive();\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={button.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant={isActive ? 'primary' : 'secondary'}\n\t\t\t\t\t\tbuttonStyle={isActive ? 'solid' : 'ghost'}\n\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\tonClick={button.run}\n\t\t\t\t\t\tdisabled={disabled || !hasEditor || sourceMode || button.disabled}\n\t\t\t\t\t\taria-label={button.label}\n\t\t\t\t\t\ttitle={button.label}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{!hideSourceToggle && (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"bg-border mx-1 h-4 w-px\" />\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant={sourceMode ? 'primary' : 'secondary'}\n\t\t\t\t\t\tbuttonStyle={sourceMode ? 'solid' : 'ghost'}\n\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\tonClick={toggleSourceMode}\n\t\t\t\t\t\tdisabled={disabled || !hasEditor}\n\t\t\t\t\t\taria-label={strings.toolbar.sourceCode}\n\t\t\t\t\t\ttitle={strings.toolbar.sourceCode}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Code2 className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{hasExtras && (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"bg-border mx-1 h-4 w-px\" />\n\t\t\t\t\t{extraToolbarItems?.map((item) => {\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst isActive = item.isActive?.() ?? false;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant={isActive ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\t\tbuttonStyle={isActive ? 'solid' : 'ghost'}\n\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\tonClick={item.onClick}\n\t\t\t\t\t\t\t\tdisabled={disabled || !hasEditor || sourceMode || item.disabled}\n\t\t\t\t\t\t\t\taria-label={item.label}\n\t\t\t\t\t\t\t\ttitle={item.label}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{!!toolbarTrailing && (\n\t\t\t\t<div className=\"ml-auto flex items-center gap-1\">{toolbarTrailing}</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nRichTextEditorToolbar.displayName = 'RichTextEditorToolbar';\n","/**\n * Default user-facing strings for `<RichTextEditor>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <RichTextEditor strings={{ toolbar: { bold: t('editor.bold') } }} … />\n */\n\nexport interface RichTextEditorStrings {\n\t/** Accessible label for the editable rich-text surface. */\n\teditorLabel: string;\n\t/** Accessible label for the HTML source textarea. */\n\tsourceLabel: string;\n\t/** Toolbar button labels (used for `aria-label` and tooltip `title`). */\n\ttoolbar: {\n\t\tbold: string;\n\t\titalic: string;\n\t\tstrike: string;\n\t\tbulletList: string;\n\t\torderedList: string;\n\t\tblockquote: string;\n\t\tundo: string;\n\t\tredo: string;\n\t\tsourceCode: string;\n\t};\n\t/** Footer count labels — `{n}` is replaced with the count. */\n\tcounts: {\n\t\tcharacters: string;\n\t\twords: string;\n\t\tmax: string;\n\t};\n}\n\nexport const defaultRichTextEditorStrings: RichTextEditorStrings = {\n\teditorLabel: 'Rich text editor',\n\tsourceLabel: 'HTML source',\n\ttoolbar: {\n\t\tbold: 'Bold',\n\t\titalic: 'Italic',\n\t\tstrike: 'Strike',\n\t\tbulletList: 'Bullet list',\n\t\torderedList: 'Ordered list',\n\t\tblockquote: 'Quote',\n\t\tundo: 'Undo',\n\t\tredo: 'Redo',\n\t\tsourceCode: 'Source code',\n\t},\n\tcounts: {\n\t\tcharacters: 'characters',\n\t\twords: 'words',\n\t\tmax: 'max',\n\t},\n};\n","/**\n * Caret-introspection helpers used by `<RichTextEditor>` to expose the\n * text before the caret and replace a leading run of characters with\n * inline HTML — the building blocks for `@`-mention chips and similar\n * inline triggers.\n */\nimport type { RichTextCaretContext, TiptapEditor } from '../rich-text-editor.types';\n\n/**\n * Read the current selection's caret context.\n *\n * Walks back from the caret through the current text node and any\n * preceding sibling text nodes inside the same block-level container\n * (paragraph / list-item / heading) collecting plain text. Returns the\n * accumulated text plus the caret's bounding rect when available.\n *\n * Returns `null` when there is no live selection or the selection isn't\n * a text caret inside a contenteditable.\n */\nexport function readCaretContext(): RichTextCaretContext | null {\n\tif (typeof window === 'undefined') return null;\n\tconst sel = window.getSelection();\n\tif (!sel || sel.rangeCount === 0) return null;\n\tconst range = sel.getRangeAt(0);\n\tif (!range.collapsed) return null;\n\n\tconst startNode = range.startContainer;\n\tconst startOffset = range.startOffset;\n\n\tlet block: Node | null = startNode;\n\twhile (block && block.nodeType !== Node.ELEMENT_NODE) {\n\t\tblock = block.parentNode;\n\t}\n\tif (!block) return null;\n\tconst editable =\n\t\t(block as Element).closest('[contenteditable=\"true\"]') ??\n\t\t(block as Element).closest('.ProseMirror');\n\tif (!editable) return null;\n\n\tlet text = '';\n\tif (startNode.nodeType === Node.TEXT_NODE) {\n\t\ttext = (startNode.textContent ?? '').slice(0, startOffset);\n\t}\n\n\tlet cursor: Node | null = startNode;\n\twhile (cursor && cursor !== editable && cursor !== block) {\n\t\tlet prev: Node | null = cursor.previousSibling;\n\t\twhile (prev) {\n\t\t\ttext = (prev.textContent ?? '') + text;\n\t\t\tprev = prev.previousSibling;\n\t\t}\n\t\tcursor = cursor.parentNode;\n\t\tif (cursor && (cursor as Element).matches?.('p, li, h1, h2, h3, h4, h5, h6, blockquote')) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlet rect: RichTextCaretContext['rect'];\n\tconst r = range.getBoundingClientRect();\n\tif (r && (r.top || r.left || r.right || r.bottom)) {\n\t\trect = { top: r.top, left: r.left, bottom: r.bottom, right: r.right };\n\t}\n\n\treturn { textBefore: text, rect };\n}\n\n/**\n * Extend the selection backwards by `length` characters, then insert\n * `html`. The selection extension means `editor.insertContent` (or the\n * fallback's `range.deleteContents()` + insert) replaces the trigger\n * range with the chip atomically — no manual text-content mutation, no\n * timing races between \"delete\" and \"insert\".\n */\nexport function replaceBeforeCaret(\n\teditor: TiptapEditor | null,\n\tlength: number,\n\thtml: string,\n\tnotifyChange: (next: string) => void,\n): void {\n\tif (typeof window === 'undefined') return;\n\tconst sel = window.getSelection();\n\tif (!sel || sel.rangeCount === 0) return;\n\tconst caret = sel.getRangeAt(0);\n\tif (!caret.collapsed) return;\n\n\tlet remaining = length;\n\tlet startNode: Node = caret.startContainer;\n\tlet startOffset = caret.startOffset;\n\n\twhile (remaining > 0) {\n\t\tif (startNode.nodeType === Node.TEXT_NODE) {\n\t\t\tconst take = Math.min(startOffset, remaining);\n\t\t\tstartOffset -= take;\n\t\t\tremaining -= take;\n\t\t\tif (remaining === 0) break;\n\t\t}\n\t\tconst prev = previousTextNode(startNode);\n\t\tif (!prev) break;\n\t\tstartNode = prev;\n\t\tstartOffset = prev.textContent?.length ?? 0;\n\t}\n\n\tconst range = document.createRange();\n\trange.setStart(startNode, startOffset);\n\trange.setEnd(caret.endContainer, caret.endOffset);\n\tsel.removeAllRanges();\n\tsel.addRange(range);\n\n\tif (editor) {\n\t\teditor.chain().focus().insertContent(html).run();\n\t\tnotifyChange(editor.getHTML());\n\t\treturn;\n\t}\n\n\trange.deleteContents();\n\tconst fragment = document.createRange().createContextualFragment(html);\n\trange.insertNode(fragment);\n\tsel.collapseToEnd();\n\tconst editable =\n\t\t(startNode as Element | null)?.parentElement?.closest?.('[contenteditable=\"true\"]') ?? null;\n\tif (editable) notifyChange((editable as HTMLElement).innerHTML);\n}\n\nexport function insertHtmlIntoEditable(editable: HTMLElement | null, html: string): void {\n\tif (typeof window === 'undefined' || !editable) return;\n\teditable.focus();\n\n\tconst sel = window.getSelection();\n\tif (!sel || sel.rangeCount === 0) {\n\t\teditable.insertAdjacentHTML('beforeend', html);\n\t\treturn;\n\t}\n\n\tconst range = sel.getRangeAt(0);\n\tif (!editable.contains(range.commonAncestorContainer)) {\n\t\teditable.insertAdjacentHTML('beforeend', html);\n\t\treturn;\n\t}\n\n\trange.deleteContents();\n\tconst fragment = document.createRange().createContextualFragment(html);\n\trange.insertNode(fragment);\n\trange.collapse(false);\n\tsel.removeAllRanges();\n\tsel.addRange(range);\n}\n\nfunction previousTextNode(node: Node): Node | null {\n\tlet current: Node | null = node;\n\twhile (current) {\n\t\tif (current.previousSibling) {\n\t\t\tcurrent = current.previousSibling;\n\t\t\twhile (current && current.lastChild) {\n\t\t\t\tcurrent = current.lastChild;\n\t\t\t}\n\t\t\tif (current && current.nodeType === Node.TEXT_NODE) return current;\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent = current.parentNode;\n\t\tif (!current || (current as Element).matches?.('p, li, h1, h2, h3, h4, h5, h6, blockquote, [contenteditable=\"true\"]')) {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn null;\n}\n","import { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { RichTextEditorStrings } from '../rich-text-editor.strings';\nimport type { TiptapEditor } from '../rich-text-editor.types';\n\ninterface CountsFooterTextProps {\n\ttext: string;\n\tmaxLength?: number;\n\tstrings: RichTextEditorStrings;\n}\n\nexport function CountsFooterText({ text, maxLength, strings }: CountsFooterTextProps) {\n\tconst chars = text.length;\n\tconst words = text.trim().length > 0 ? text.trim().split(/\\s+/).length : 0;\n\tconst overLimit = typeof maxLength === 'number' && chars > maxLength;\n\n\treturn (\n\t\t<div className=\"border-border flex items-center justify-end gap-3 border-t px-3 py-1.5\">\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"xs\"\n\t\t\t\ttype={overLimit ? 'error' : 'secondary'}\n\t\t\t\tweight={overLimit ? 'medium' : 'regular'}\n\t\t\t\tclassName={cn('tabular-nums')}\n\t\t\t>\n\t\t\t\t{chars}\n\t\t\t\t{typeof maxLength === 'number' ? ` / ${maxLength}` : ''} {strings.counts.characters}\n\t\t\t</Text>\n\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t{words} {strings.counts.words}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n\nCountsFooterText.displayName = 'CountsFooterText';\n\ninterface CountsFooterProps {\n\teditor: TiptapEditor;\n\tsourceMode: boolean;\n\tsourceValue: string;\n\tmaxLength?: number;\n\tstrings: RichTextEditorStrings;\n}\n\nexport function CountsFooter({\n\teditor,\n\tsourceMode,\n\tsourceValue,\n\tmaxLength,\n\tstrings,\n}: CountsFooterProps) {\n\tconst text = sourceMode\n\t\t? sourceValue.replace(/<[^>]*>/g, '')\n\t\t: (editor?.getText() ?? '');\n\n\treturn <CountsFooterText text={text} maxLength={maxLength} strings={strings} />;\n}\n\nCountsFooter.displayName = 'CountsFooter';\n","/**\n * Plain HTML normalization shared by the TipTap and contenteditable\n * fallback editors. Keeping these out of the React tree means the\n * editor partials stay focused on rendering.\n */\n\nexport function normalizeHtml(value: string): string {\n\tconst trimmed = value.trim();\n\n\tif (trimmed === '' || trimmed === '<p></p>' || trimmed === '<p><br></p>') {\n\t\treturn '';\n\t}\n\n\treturn trimmed;\n}\n\nexport function toEditorContent(value: string): string {\n\tconst normalized = normalizeHtml(value);\n\treturn normalized === '' ? '<p></p>' : normalized;\n}\n","import {\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport {\n\tBold,\n\tItalic,\n\tList,\n\tListOrdered,\n\tQuote,\n\tRedo2,\n\tStrikethrough,\n\tUndo2,\n} from 'lucide-react';\nimport * as TiptapReact from '@tiptap/react';\nimport * as StarterKitModule from '@tiptap/starter-kit';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultRichTextEditorStrings } from '../rich-text-editor.strings';\nimport type {\n\tRichTextEditorHandle,\n\tRichTextEditorProps,\n\tToolbarButtonConfig,\n} from '../rich-text-editor.types';\nimport { readCaretContext, replaceBeforeCaret } from './caret-helpers';\nimport { CountsFooter } from './counts-footer';\nimport { normalizeHtml, toEditorContent } from './html-helpers';\nimport { RichTextEditorToolbar } from './rich-text-editor-toolbar';\n\nconst EditorContent = TiptapReact.EditorContent;\nconst useTiptapEditor = TiptapReact.useEditor;\nconst StarterKit =\n\t'default' in StarterKitModule ? StarterKitModule.default : StarterKitModule;\n\nexport const TiptapRichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(function TiptapRichTextEditor(\n\t{\n\t\tvalue,\n\t\tonChange,\n\t\tplaceholder,\n\t\tcompact = false,\n\t\tminHeight,\n\t\tmaxHeight,\n\t\tdisabled = false,\n\t\tshowCounts = false,\n\t\tmaxLength,\n\t\textraToolbarItems,\n\t\ttoolbarTrailing,\n\t\tfooterSlot,\n\t\thideSourceToggle = false,\n\t\tautoFocus = false,\n\t\tclassName,\n\t\tonCaretChange,\n\t\tstrings: stringsProp,\n\t},\n\tref,\n) {\n\tconst strings = useStrings(defaultRichTextEditorStrings, stringsProp);\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [sourceMode, setSourceMode] = useState(false);\n\tconst [sourceValue, setSourceValue] = useState('');\n\tconst isFocusedRef = useRef(false);\n\tconst externalValueRef = useRef<string>(normalizeHtml(value));\n\tconst onCaretChangeRef = useRef(onCaretChange);\n\tonCaretChangeRef.current = onCaretChange;\n\n\tconst editor = useTiptapEditor({\n\t\textensions: [StarterKit],\n\t\tcontent: toEditorContent(value),\n\t\teditable: !disabled,\n\t\timmediatelyRender: false,\n\t\tautofocus: autoFocus ? 'end' : false,\n\t\tonFocus: () => {\n\t\t\tisFocusedRef.current = true;\n\t\t\tsetIsFocused(true);\n\t\t},\n\t\tonBlur: () => {\n\t\t\tisFocusedRef.current = false;\n\t\t\tsetIsFocused(false);\n\t\t},\n\t\tonUpdate: ({ editor: currentEditor }: { editor: { getHTML: () => string } }) => {\n\t\t\tconst html = normalizeHtml(currentEditor.getHTML());\n\t\t\tif (!isFocusedRef.current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (html !== externalValueRef.current) {\n\t\t\t\texternalValueRef.current = html;\n\t\t\t\tonChange(html);\n\t\t\t}\n\n\t\t\tonCaretChangeRef.current?.();\n\t\t},\n\t\teditorProps: {\n\t\t\tattributes: {\n\t\t\t\trole: 'textbox',\n\t\t\t\t'aria-label': strings.editorLabel,\n\t\t\t\t'aria-multiline': 'true',\n\t\t\t\tclass: 'prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0.5 max-w-none px-3 py-2 text-sm focus-visible:outline-none dark:prose-invert',\n\t\t\t},\n\t\t},\n\t});\n\n\tuseEffect(() => {\n\t\tif (!editor) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst current = normalizeHtml(editor.getHTML());\n\t\tconst next = normalizeHtml(value);\n\t\texternalValueRef.current = next;\n\n\t\tif (current !== next) {\n\t\t\teditor.commands.setContent(toEditorContent(next), { emitUpdate: false });\n\t\t}\n\t}, [editor, value]);\n\n\tuseEffect(() => {\n\t\tif (!editor) {\n\t\t\treturn;\n\t\t}\n\n\t\teditor.setEditable(!disabled);\n\t}, [disabled, editor]);\n\n\tuseEffect(() => {\n\t\tif (typeof document === 'undefined') return;\n\t\tconst handler = () => {\n\t\t\tif (!isFocusedRef.current) return;\n\t\t\tonCaretChangeRef.current?.();\n\t\t};\n\t\tdocument.addEventListener('selectionchange', handler);\n\t\treturn () => document.removeEventListener('selectionchange', handler);\n\t}, []);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tfocus: () => {\n\t\t\t\teditor?.chain().focus().run();\n\t\t\t},\n\t\t\tgetHTML: () => normalizeHtml(editor?.getHTML() ?? ''),\n\t\t\tsetHTML: (html: string) => {\n\t\t\t\tconst next = normalizeHtml(html);\n\t\t\t\texternalValueRef.current = next;\n\t\t\t\teditor?.commands.setContent(toEditorContent(next), { emitUpdate: false });\n\t\t\t\tonChange(next);\n\t\t\t},\n\t\t\tinsertHTML: (html: string) => {\n\t\t\t\tif (!editor) return;\n\t\t\t\teditor.chain().focus().insertContent(html).run();\n\t\t\t},\n\t\t\tisEmpty: () => normalizeHtml(editor?.getHTML() ?? '') === '',\n\t\t\tclear: () => {\n\t\t\t\texternalValueRef.current = '';\n\t\t\t\teditor?.commands.setContent('<p></p>', { emitUpdate: false });\n\t\t\t\tonChange('');\n\t\t\t},\n\t\t\tgetCaretContext: () => readCaretContext(),\n\t\t\treplaceBeforeCaret: (length: number, html: string) => {\n\t\t\t\treplaceBeforeCaret(editor, length, html, (next) => {\n\t\t\t\t\texternalValueRef.current = normalizeHtml(next);\n\t\t\t\t\tonChange(externalValueRef.current);\n\t\t\t\t});\n\t\t\t},\n\t\t}),\n\t\t[editor, onChange],\n\t);\n\n\tconst contentStyle = useMemo(\n\t\t() => ({\n\t\t\tminHeight: minHeight ?? (compact ? '2rem' : '12rem'),\n\t\t\t...(maxHeight ? { maxHeight, overflowY: 'auto' as const } : {}),\n\t\t}),\n\t\t[compact, maxHeight, minHeight],\n\t);\n\n\tconst toggleSourceMode = useCallback(() => {\n\t\tif (!editor) return;\n\n\t\tif (sourceMode) {\n\t\t\tconst html = toEditorContent(sourceValue);\n\t\t\teditor.commands.setContent(html, { emitUpdate: false });\n\t\t\tconst normalized = normalizeHtml(sourceValue);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tonChange(normalized);\n\t\t\tsetSourceMode(false);\n\t\t} else {\n\t\t\tsetSourceValue(editor.getHTML());\n\t\t\tsetSourceMode(true);\n\t\t}\n\t}, [editor, onChange, sourceMode, sourceValue]);\n\n\tconst handleSourceChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\t\tconst next = e.target.value;\n\t\t\tsetSourceValue(next);\n\t\t\tconst normalized = normalizeHtml(next);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tonChange(normalized);\n\t\t},\n\t\t[onChange],\n\t);\n\n\tconst toolbarButtons = useMemo<ToolbarButtonConfig[]>(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'bold',\n\t\t\t\ticon: Bold,\n\t\t\t\tlabel: strings.toolbar.bold,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('bold')),\n\t\t\t\trun: () => editor?.chain().focus().toggleBold().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'italic',\n\t\t\t\ticon: Italic,\n\t\t\t\tlabel: strings.toolbar.italic,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('italic')),\n\t\t\t\trun: () => editor?.chain().focus().toggleItalic().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'strike',\n\t\t\t\ticon: Strikethrough,\n\t\t\t\tlabel: strings.toolbar.strike,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('strike')),\n\t\t\t\trun: () => editor?.chain().focus().toggleStrike().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'bullet-list',\n\t\t\t\ticon: List,\n\t\t\t\tlabel: strings.toolbar.bulletList,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('bulletList')),\n\t\t\t\trun: () => editor?.chain().focus().toggleBulletList().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'ordered-list',\n\t\t\t\ticon: ListOrdered,\n\t\t\t\tlabel: strings.toolbar.orderedList,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('orderedList')),\n\t\t\t\trun: () => editor?.chain().focus().toggleOrderedList().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'blockquote',\n\t\t\t\ticon: Quote,\n\t\t\t\tlabel: strings.toolbar.blockquote,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('blockquote')),\n\t\t\t\trun: () => editor?.chain().focus().toggleBlockquote().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'undo',\n\t\t\t\ticon: Undo2,\n\t\t\t\tlabel: strings.toolbar.undo,\n\t\t\t\tisActive: () => false,\n\t\t\t\trun: () => editor?.chain().focus().undo().run(),\n\t\t\t\tdisabled: !editor?.can().chain().focus().undo().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'redo',\n\t\t\t\ticon: Redo2,\n\t\t\t\tlabel: strings.toolbar.redo,\n\t\t\t\tisActive: () => false,\n\t\t\t\trun: () => editor?.chain().focus().redo().run(),\n\t\t\t\tdisabled: !editor?.can().chain().focus().redo().run(),\n\t\t\t},\n\t\t],\n\t\t[editor, strings],\n\t);\n\n\tconst countsFooter =\n\t\tshowCounts && editor ? (\n\t\t\t<CountsFooter\n\t\t\t\teditor={editor}\n\t\t\t\tsourceMode={sourceMode}\n\t\t\t\tsourceValue={sourceValue}\n\t\t\t\tmaxLength={maxLength}\n\t\t\t\tstrings={strings}\n\t\t\t/>\n\t\t) : null;\n\n\tconst placeholderText = typeof placeholder === 'string' ? placeholder : '';\n\tconst showPlaceholder =\n\t\tplaceholderText.length > 0 && !isFocused && Boolean(editor?.isEmpty);\n\tconst placeholderNode = showPlaceholder ? (\n\t\t<span className=\"text-muted-foreground pointer-events-none absolute left-3 top-2 text-sm\">\n\t\t\t{placeholderText}\n\t\t</span>\n\t) : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'border-input bg-background rounded-md border',\n\t\t\t\tdisabled && 'opacity-70',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<RichTextEditorToolbar\n\t\t\t\tbuttons={toolbarButtons}\n\t\t\t\textraToolbarItems={extraToolbarItems}\n\t\t\t\thideSourceToggle={hideSourceToggle}\n\t\t\t\tsourceMode={sourceMode}\n\t\t\t\ttoggleSourceMode={toggleSourceMode}\n\t\t\t\tdisabled={disabled}\n\t\t\t\thasEditor={Boolean(editor)}\n\t\t\t\ttoolbarTrailing={toolbarTrailing}\n\t\t\t\tstrings={strings}\n\t\t\t/>\n\n\t\t\t{sourceMode ? (\n\t\t\t\t<textarea\n\t\t\t\t\taria-label={strings.sourceLabel}\n\t\t\t\t\tvalue={sourceValue}\n\t\t\t\t\tonChange={handleSourceChange}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tspellCheck={false}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'bg-muted/50 w-full resize-y px-3 py-2 font-mono text-xs leading-relaxed focus-visible:outline-none',\n\t\t\t\t\t\tdisabled && 'cursor-not-allowed',\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={contentStyle}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div className=\"relative\" style={contentStyle}>\n\t\t\t\t\t{placeholderNode}\n\n\t\t\t\t\t<EditorContent\n\t\t\t\t\t\teditor={editor}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'h-full',\n\t\t\t\t\t\t\t'[&_.ProseMirror]:h-full',\n\t\t\t\t\t\t\t'[&_.ProseMirror]:min-h-full',\n\t\t\t\t\t\t\t'[&_.ProseMirror]:outline-none',\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!footerSlot && (\n\t\t\t\t<div className=\"px-3 pb-2 pt-1\">{footerSlot}</div>\n\t\t\t)}\n\n\t\t\t{countsFooter}\n\t\t</div>\n\t);\n});\n\nTiptapRichTextEditor.displayName = 'TiptapRichTextEditor';\n\nexport const hasTiptapRuntime =\n\ttypeof EditorContent === 'function' &&\n\ttypeof useTiptapEditor === 'function' &&\n\ttypeof StarterKit === 'object' &&\n\tStarterKit !== null;\n","import {\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport {\n\tBold,\n\tItalic,\n\tList,\n\tListOrdered,\n\tQuote,\n\tRedo2,\n\tStrikethrough,\n\tUndo2,\n} from 'lucide-react';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultRichTextEditorStrings } from '../rich-text-editor.strings';\nimport type {\n\tRichTextEditorHandle,\n\tRichTextEditorProps,\n\tToolbarButtonConfig,\n} from '../rich-text-editor.types';\nimport {\n\tinsertHtmlIntoEditable,\n\treadCaretContext,\n\treplaceBeforeCaret,\n} from './caret-helpers';\nimport { CountsFooterText } from './counts-footer';\nimport { normalizeHtml, toEditorContent } from './html-helpers';\nimport { RichTextEditorToolbar } from './rich-text-editor-toolbar';\n\n/**\n * Fallback editor used when the TipTap runtime is unavailable (e.g. in\n * environments where the package failed to load). Renders a\n * `contenteditable` surface with the same imperative handle so callers\n * never need to care which variant they got.\n */\nexport const FallbackRichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(function FallbackRichTextEditor(\n\t{\n\t\tvalue,\n\t\tonChange,\n\t\tplaceholder,\n\t\tcompact = false,\n\t\tminHeight,\n\t\tmaxHeight,\n\t\tdisabled = false,\n\t\tshowCounts = false,\n\t\tmaxLength,\n\t\textraToolbarItems,\n\t\ttoolbarTrailing,\n\t\tfooterSlot,\n\t\thideSourceToggle = false,\n\t\tautoFocus = false,\n\t\tclassName,\n\t\tonCaretChange,\n\t\tstrings: stringsProp,\n\t},\n\tref,\n) {\n\tconst strings = useStrings(defaultRichTextEditorStrings, stringsProp);\n\tconst editableRef = useRef<HTMLDivElement>(null);\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [sourceMode, setSourceMode] = useState(false);\n\tconst [sourceValue, setSourceValue] = useState('');\n\tconst externalValueRef = useRef<string>(normalizeHtml(value));\n\tconst onCaretChangeRef = useRef(onCaretChange);\n\tonCaretChangeRef.current = onCaretChange;\n\n\tuseEffect(() => {\n\t\tconst editable = editableRef.current;\n\t\tif (!editable || isFocused) return;\n\t\tconst next = toEditorContent(value);\n\t\tif (normalizeHtml(editable.innerHTML) !== normalizeHtml(next)) {\n\t\t\teditable.innerHTML = next;\n\t\t}\n\t\texternalValueRef.current = normalizeHtml(value);\n\t}, [isFocused, value]);\n\n\tuseEffect(() => {\n\t\tif (!autoFocus) return;\n\t\teditableRef.current?.focus();\n\t}, [autoFocus]);\n\n\tconst emitEditableChange = useCallback(() => {\n\t\tconst editable = editableRef.current;\n\t\tconst html = normalizeHtml(editable?.innerHTML ?? '');\n\t\texternalValueRef.current = html;\n\t\tonChange(html);\n\t\tonCaretChangeRef.current?.();\n\t}, [onChange]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tfocus: () => editableRef.current?.focus(),\n\t\t\tgetHTML: () => normalizeHtml(editableRef.current?.innerHTML ?? ''),\n\t\t\tsetHTML: (html: string) => {\n\t\t\t\tconst next = normalizeHtml(html);\n\t\t\t\texternalValueRef.current = next;\n\t\t\t\tif (editableRef.current) {\n\t\t\t\t\teditableRef.current.innerHTML = toEditorContent(next);\n\t\t\t\t}\n\t\t\t\tonChange(next);\n\t\t\t},\n\t\t\tinsertHTML: (html: string) => {\n\t\t\t\tinsertHtmlIntoEditable(editableRef.current, html);\n\t\t\t\temitEditableChange();\n\t\t\t},\n\t\t\tisEmpty: () => normalizeHtml(editableRef.current?.innerHTML ?? '') === '',\n\t\t\tclear: () => {\n\t\t\t\texternalValueRef.current = '';\n\t\t\t\tif (editableRef.current) editableRef.current.innerHTML = '<p></p>';\n\t\t\t\tonChange('');\n\t\t\t},\n\t\t\tgetCaretContext: () => readCaretContext(),\n\t\t\treplaceBeforeCaret: (length: number, html: string) => {\n\t\t\t\treplaceBeforeCaret(null, length, html, () => emitEditableChange());\n\t\t\t},\n\t\t}),\n\t\t[emitEditableChange, onChange],\n\t);\n\n\tconst contentStyle = useMemo(\n\t\t() => ({\n\t\t\tminHeight: minHeight ?? (compact ? '2rem' : '12rem'),\n\t\t\t...(maxHeight ? { maxHeight, overflowY: 'auto' as const } : {}),\n\t\t}),\n\t\t[compact, maxHeight, minHeight],\n\t);\n\n\tconst toggleSourceMode = useCallback(() => {\n\t\tif (sourceMode) {\n\t\t\tconst normalized = normalizeHtml(sourceValue);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tif (editableRef.current) {\n\t\t\t\teditableRef.current.innerHTML = toEditorContent(normalized);\n\t\t\t}\n\t\t\tonChange(normalized);\n\t\t\tsetSourceMode(false);\n\t\t\treturn;\n\t\t}\n\t\tsetSourceValue(editableRef.current?.innerHTML ?? toEditorContent(value));\n\t\tsetSourceMode(true);\n\t}, [onChange, sourceMode, sourceValue, value]);\n\n\tconst handleSourceChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\t\tconst next = e.target.value;\n\t\t\tsetSourceValue(next);\n\t\t\tconst normalized = normalizeHtml(next);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tonChange(normalized);\n\t\t},\n\t\t[onChange],\n\t);\n\n\tconst placeholderText = typeof placeholder === 'string' ? placeholder : '';\n\tconst isEmpty = normalizeHtml(externalValueRef.current) === '';\n\tconst placeholderNode =\n\t\tplaceholderText.length > 0 && !isFocused && isEmpty ? (\n\t\t\t<span className=\"text-muted-foreground pointer-events-none absolute left-3 top-2 text-sm\">\n\t\t\t\t{placeholderText}\n\t\t\t</span>\n\t\t) : null;\n\n\tconst toolbarButtons = useMemo<ToolbarButtonConfig[]>(\n\t\t() => [\n\t\t\t{ id: 'bold', icon: Bold, label: strings.toolbar.bold, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'italic', icon: Italic, label: strings.toolbar.italic, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'strike', icon: Strikethrough, label: strings.toolbar.strike, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'bullet-list', icon: List, label: strings.toolbar.bulletList, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'ordered-list', icon: ListOrdered, label: strings.toolbar.orderedList, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'blockquote', icon: Quote, label: strings.toolbar.blockquote, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'undo', icon: Undo2, label: strings.toolbar.undo, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'redo', icon: Redo2, label: strings.toolbar.redo, isActive: () => false, run: () => undefined, disabled: true },\n\t\t],\n\t\t[strings],\n\t);\n\n\tconst text = sourceMode\n\t\t? sourceValue.replace(/<[^>]*>/g, '')\n\t\t: (editableRef.current?.innerText ?? normalizeHtml(value).replace(/<[^>]*>/g, ''));\n\tconst countsFooter =\n\t\tshowCounts ? (\n\t\t\t<CountsFooterText text={text} maxLength={maxLength} strings={strings} />\n\t\t) : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'border-input bg-background rounded-md border',\n\t\t\t\tdisabled && 'opacity-70',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<RichTextEditorToolbar\n\t\t\t\tbuttons={toolbarButtons}\n\t\t\t\textraToolbarItems={extraToolbarItems}\n\t\t\t\thideSourceToggle={hideSourceToggle}\n\t\t\t\tsourceMode={sourceMode}\n\t\t\t\ttoggleSourceMode={toggleSourceMode}\n\t\t\t\tdisabled={disabled}\n\t\t\t\thasEditor\n\t\t\t\ttoolbarTrailing={toolbarTrailing}\n\t\t\t\tstrings={strings}\n\t\t\t/>\n\n\t\t\t{sourceMode ? (\n\t\t\t\t<textarea\n\t\t\t\t\taria-label={strings.sourceLabel}\n\t\t\t\t\tvalue={sourceValue}\n\t\t\t\t\tonChange={handleSourceChange}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tspellCheck={false}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'bg-muted/50 w-full resize-y px-3 py-2 font-mono text-xs leading-relaxed focus-visible:outline-none',\n\t\t\t\t\t\tdisabled && 'cursor-not-allowed',\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={contentStyle}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div className=\"relative\" style={contentStyle}>\n\t\t\t\t\t{placeholderNode}\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={editableRef}\n\t\t\t\t\t\trole=\"textbox\"\n\t\t\t\t\t\taria-label={strings.editorLabel}\n\t\t\t\t\t\taria-multiline=\"true\"\n\t\t\t\t\t\tcontentEditable={!disabled}\n\t\t\t\t\t\tsuppressContentEditableWarning\n\t\t\t\t\t\tonInput={emitEditableChange}\n\t\t\t\t\t\tonKeyUp={() => onCaretChangeRef.current?.()}\n\t\t\t\t\t\tonMouseUp={() => onCaretChangeRef.current?.()}\n\t\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\t\tonBlur={() => setIsFocused(false)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0.5 max-w-none px-3 py-2 text-sm focus-visible:outline-none dark:prose-invert',\n\t\t\t\t\t\t\t'h-full min-h-full',\n\t\t\t\t\t\t\tdisabled && 'cursor-not-allowed',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: toEditorContent(value) }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!footerSlot && (\n\t\t\t\t<div className=\"px-3 pb-2 pt-1\">{footerSlot}</div>\n\t\t\t)}\n\n\t\t\t{countsFooter}\n\t\t</div>\n\t);\n});\n\nFallbackRichTextEditor.displayName = 'FallbackRichTextEditor';\n","/**\n * Public `<RichTextEditor>` shell — picks the TipTap-backed editor when\n * the runtime is loaded and falls back to a plain `contenteditable`\n * surface otherwise. Both variants implement the same imperative\n * `RichTextEditorHandle`, so callers don't have to branch.\n *\n * Heavy lifting lives in `partials/`:\n * - `partials/rich-text-editor-tiptap.tsx` — TipTap variant\n * - `partials/rich-text-editor-fallback.tsx` — contenteditable variant\n * - `partials/rich-text-editor-toolbar.tsx` — shared toolbar\n * - `partials/counts-footer.tsx` — char/word counts\n * - `partials/caret-helpers.ts` — caret introspection\n * - `partials/html-helpers.ts` — HTML normalization\n */\nimport { forwardRef } from 'react';\n\nimport {\n\tFallbackRichTextEditor,\n\tTiptapRichTextEditor,\n\thasTiptapRuntime,\n} from './partials';\nimport type {\n\tRichTextEditorHandle,\n\tRichTextEditorProps,\n} from './rich-text-editor.types';\n\nexport const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(function RichTextEditor(\n\tprops,\n\tref,\n) {\n\tif (!hasTiptapRuntime) {\n\t\treturn <FallbackRichTextEditor className=\"rich-text-editor--component\" {...props} ref={ref} />;\n\t}\n\n\treturn <TiptapRichTextEditor {...props} ref={ref} />;\n});\n\nRichTextEditor.displayName = 'RichTextEditor';\n\nexport type {\n\tRichTextEditorProps,\n\tRichTextEditorHandle,\n\tRichTextEditorToolbarItem,\n\tRichTextCaretContext,\n} from './rich-text-editor.types';\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/strings.cjs"),n=require("../lib/utils.cjs"),r=require("./button-BI347RlM.cjs"),i=require("./heading-0DYCOrgC.cjs");let a=require("react"),o=require("react/jsx-runtime"),s=require("lucide-react"),c=require("@tiptap/react");c=e.t(c,1);let l=require("@tiptap/starter-kit");l=e.t(l,1);function u({buttons:e,extraToolbarItems:t,hideSourceToggle:n=!1,sourceMode:i,toggleSourceMode:a,disabled:c=!1,hasEditor:l=!0,toolbarTrailing:u,strings:d}){let f=(t?.length??0)>0;return(0,o.jsxs)(`div`,{className:`border-border flex flex-wrap items-center gap-1 border-b p-1.5`,children:[e.map(e=>{let t=e.icon,n=e.isActive();return(0,o.jsx)(r.t,{type:`button`,variant:n?`primary`:`secondary`,buttonStyle:n?`solid`:`ghost`,size:`icon-xs`,onClick:e.run,disabled:c||!l||i||e.disabled,"aria-label":e.label,title:e.label,children:(0,o.jsx)(t,{className:`h-3.5 w-3.5`})},e.id)}),!n&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`div`,{className:`bg-border mx-1 h-4 w-px`}),(0,o.jsx)(r.t,{type:`button`,variant:i?`primary`:`secondary`,buttonStyle:i?`solid`:`ghost`,size:`icon-xs`,onClick:a,disabled:c||!l,"aria-label":d.toolbar.sourceCode,title:d.toolbar.sourceCode,children:(0,o.jsx)(s.Code2,{className:`h-3.5 w-3.5`})})]}),f&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`div`,{className:`bg-border mx-1 h-4 w-px`}),t?.map(e=>{let t=e.icon,n=e.isActive?.()??!1;return(0,o.jsx)(r.t,{type:`button`,variant:n?`primary`:`secondary`,buttonStyle:n?`solid`:`ghost`,size:`icon-xs`,onClick:e.onClick,disabled:c||!l||i||e.disabled,"aria-label":e.label,title:e.label,children:(0,o.jsx)(t,{className:`h-3.5 w-3.5`})},e.id)})]}),!!u&&(0,o.jsx)(`div`,{className:`ml-auto flex items-center gap-1`,children:u})]})}u.displayName=`RichTextEditorToolbar`;var d={editorLabel:`Rich text editor`,sourceLabel:`HTML source`,toolbar:{bold:`Bold`,italic:`Italic`,strike:`Strike`,bulletList:`Bullet list`,orderedList:`Ordered list`,blockquote:`Quote`,undo:`Undo`,redo:`Redo`,sourceCode:`Source code`},counts:{characters:`characters`,words:`words`,max:`max`}};function f(){if(typeof window>`u`)return null;let e=window.getSelection();if(!e||e.rangeCount===0)return null;let t=e.getRangeAt(0);if(!t.collapsed)return null;let n=t.startContainer,r=t.startOffset,i=n;for(;i&&i.nodeType!==Node.ELEMENT_NODE;)i=i.parentNode;if(!i)return null;let a=i.closest(`[contenteditable="true"]`)??i.closest(`.ProseMirror`);if(!a)return null;let o=``;n.nodeType===Node.TEXT_NODE&&(o=(n.textContent??``).slice(0,r));let s=n;for(;s&&s!==a&&s!==i;){let e=s.previousSibling;for(;e;)o=(e.textContent??``)+o,e=e.previousSibling;if(s=s.parentNode,s&&s.matches?.(`p, li, h1, h2, h3, h4, h5, h6, blockquote`))break}let c,l=t.getBoundingClientRect();return l&&(l.top||l.left||l.right||l.bottom)&&(c={top:l.top,left:l.left,bottom:l.bottom,right:l.right}),{textBefore:o,rect:c}}function p(e,t,n,r){if(typeof window>`u`)return;let i=window.getSelection();if(!i||i.rangeCount===0)return;let a=i.getRangeAt(0);if(!a.collapsed)return;let o=t,s=a.startContainer,c=a.startOffset;for(;o>0;){if(s.nodeType===Node.TEXT_NODE){let e=Math.min(c,o);if(c-=e,o-=e,o===0)break}let e=h(s);if(!e)break;s=e,c=e.textContent?.length??0}let l=document.createRange();if(l.setStart(s,c),l.setEnd(a.endContainer,a.endOffset),i.removeAllRanges(),i.addRange(l),e){e.chain().focus().insertContent(n).run(),r(e.getHTML());return}l.deleteContents();let u=document.createRange().createContextualFragment(n);l.insertNode(u),i.collapseToEnd();let d=s?.parentElement?.closest?.(`[contenteditable="true"]`)??null;d&&r(d.innerHTML)}function m(e,t){if(typeof window>`u`||!e)return;e.focus();let n=window.getSelection();if(!n||n.rangeCount===0){e.insertAdjacentHTML(`beforeend`,t);return}let r=n.getRangeAt(0);if(!e.contains(r.commonAncestorContainer)){e.insertAdjacentHTML(`beforeend`,t);return}r.deleteContents();let i=document.createRange().createContextualFragment(t);r.insertNode(i),r.collapse(!1),n.removeAllRanges(),n.addRange(r)}function h(e){let t=e;for(;t;){if(t.previousSibling){for(t=t.previousSibling;t&&t.lastChild;)t=t.lastChild;if(t&&t.nodeType===Node.TEXT_NODE)return t;continue}if(t=t.parentNode,!t||t.matches?.(`p, li, h1, h2, h3, h4, h5, h6, blockquote, [contenteditable="true"]`))return null}return null}function g({text:e,maxLength:t,strings:r}){let a=e.length,s=e.trim().length>0?e.trim().split(/\s+/).length:0,c=typeof t==`number`&&a>t;return(0,o.jsxs)(`div`,{className:`border-border flex items-center justify-end gap-3 border-t px-3 py-1.5`,children:[(0,o.jsxs)(i.n,{tag:`span`,size:`xs`,type:c?`error`:`secondary`,weight:c?`medium`:`regular`,className:n.cn(`tabular-nums`),children:[a,typeof t==`number`?` / ${t}`:``,` `,r.counts.characters]}),(0,o.jsxs)(i.n,{tag:`span`,size:`xs`,type:`secondary`,className:`tabular-nums`,children:[s,` `,r.counts.words]})]})}g.displayName=`CountsFooterText`;function _({editor:e,sourceMode:t,sourceValue:n,maxLength:r,strings:i}){return(0,o.jsx)(g,{text:t?n.replace(/<[^>]*>/g,``):e?.getText()??``,maxLength:r,strings:i})}_.displayName=`CountsFooter`;function v(e){let t=e.trim();return t===``||t===`<p></p>`||t===`<p><br></p>`?``:t}function y(e){let t=v(e);return t===``?`<p></p>`:t}var b=c.EditorContent,x=c.useEditor,S=`default`in l?l.default:l,C=(0,a.forwardRef)(function({value:e,onChange:r,placeholder:i,compact:c=!1,minHeight:l,maxHeight:m,disabled:h=!1,showCounts:g=!1,maxLength:C,extraToolbarItems:w,toolbarTrailing:T,footerSlot:E,hideSourceToggle:D=!1,autoFocus:O=!1,className:k,onCaretChange:A,strings:j},M){let N=t.useStrings(d,j),[P,F]=(0,a.useState)(!1),[I,L]=(0,a.useState)(!1),[R,z]=(0,a.useState)(``),B=(0,a.useRef)(!1),V=(0,a.useRef)(v(e)),H=(0,a.useRef)(A);H.current=A;let U=x({extensions:[S],content:y(e),editable:!h,immediatelyRender:!1,autofocus:O?`end`:!1,onFocus:()=>{B.current=!0,F(!0)},onBlur:()=>{B.current=!1,F(!1)},onUpdate:({editor:e})=>{let t=v(e.getHTML());B.current&&(t!==V.current&&(V.current=t,r(t)),H.current?.())},editorProps:{attributes:{role:`textbox`,"aria-label":N.editorLabel,"aria-multiline":`true`,class:`prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0.5 max-w-none px-3 py-2 text-sm focus-visible:outline-none dark:prose-invert`}}});(0,a.useEffect)(()=>{if(!U)return;let t=v(U.getHTML()),n=v(e);V.current=n,t!==n&&U.commands.setContent(y(n),{emitUpdate:!1})},[U,e]),(0,a.useEffect)(()=>{U&&U.setEditable(!h)},[h,U]),(0,a.useEffect)(()=>{if(typeof document>`u`)return;let e=()=>{B.current&&H.current?.()};return document.addEventListener(`selectionchange`,e),()=>document.removeEventListener(`selectionchange`,e)},[]),(0,a.useImperativeHandle)(M,()=>({focus:()=>{U?.chain().focus().run()},getHTML:()=>v(U?.getHTML()??``),setHTML:e=>{let t=v(e);V.current=t,U?.commands.setContent(y(t),{emitUpdate:!1}),r(t)},insertHTML:e=>{U&&U.chain().focus().insertContent(e).run()},isEmpty:()=>v(U?.getHTML()??``)===``,clear:()=>{V.current=``,U?.commands.setContent(`<p></p>`,{emitUpdate:!1}),r(``)},getCaretContext:()=>f(),replaceBeforeCaret:(e,t)=>{p(U,e,t,e=>{V.current=v(e),r(V.current)})}}),[U,r]);let W=(0,a.useMemo)(()=>({minHeight:l??(c?`2rem`:`12rem`),...m?{maxHeight:m,overflowY:`auto`}:{}}),[c,m,l]),G=(0,a.useCallback)(()=>{if(U)if(I){let e=y(R);U.commands.setContent(e,{emitUpdate:!1});let t=v(R);V.current=t,r(t),L(!1)}else z(U.getHTML()),L(!0)},[U,r,I,R]),K=(0,a.useCallback)(e=>{let t=e.target.value;z(t);let n=v(t);V.current=n,r(n)},[r]),q=(0,a.useMemo)(()=>[{id:`bold`,icon:s.Bold,label:N.toolbar.bold,isActive:()=>!!U?.isActive(`bold`),run:()=>U?.chain().focus().toggleBold().run()},{id:`italic`,icon:s.Italic,label:N.toolbar.italic,isActive:()=>!!U?.isActive(`italic`),run:()=>U?.chain().focus().toggleItalic().run()},{id:`strike`,icon:s.Strikethrough,label:N.toolbar.strike,isActive:()=>!!U?.isActive(`strike`),run:()=>U?.chain().focus().toggleStrike().run()},{id:`bullet-list`,icon:s.List,label:N.toolbar.bulletList,isActive:()=>!!U?.isActive(`bulletList`),run:()=>U?.chain().focus().toggleBulletList().run()},{id:`ordered-list`,icon:s.ListOrdered,label:N.toolbar.orderedList,isActive:()=>!!U?.isActive(`orderedList`),run:()=>U?.chain().focus().toggleOrderedList().run()},{id:`blockquote`,icon:s.Quote,label:N.toolbar.blockquote,isActive:()=>!!U?.isActive(`blockquote`),run:()=>U?.chain().focus().toggleBlockquote().run()},{id:`undo`,icon:s.Undo2,label:N.toolbar.undo,isActive:()=>!1,run:()=>U?.chain().focus().undo().run(),disabled:!U?.can().chain().focus().undo().run()},{id:`redo`,icon:s.Redo2,label:N.toolbar.redo,isActive:()=>!1,run:()=>U?.chain().focus().redo().run(),disabled:!U?.can().chain().focus().redo().run()}],[U,N]),J=g&&U?(0,o.jsx)(_,{editor:U,sourceMode:I,sourceValue:R,maxLength:C,strings:N}):null,Y=typeof i==`string`?i:``,X=Y.length>0&&!P&&U?.isEmpty?(0,o.jsx)(`span`,{className:`text-muted-foreground pointer-events-none absolute left-3 top-2 text-sm`,children:Y}):null;return(0,o.jsxs)(`div`,{className:n.cn(`border-input bg-background rounded-md border`,h&&`opacity-70`,k),children:[(0,o.jsx)(u,{buttons:q,extraToolbarItems:w,hideSourceToggle:D,sourceMode:I,toggleSourceMode:G,disabled:h,hasEditor:!!U,toolbarTrailing:T,strings:N}),I?(0,o.jsx)(`textarea`,{"aria-label":N.sourceLabel,value:R,onChange:K,disabled:h,spellCheck:!1,className:n.cn(`bg-muted/50 w-full resize-y px-3 py-2 font-mono text-xs leading-relaxed focus-visible:outline-none`,h&&`cursor-not-allowed`),style:W}):(0,o.jsxs)(`div`,{className:`relative`,style:W,children:[X,(0,o.jsx)(b,{editor:U,className:n.cn(`h-full`,`[&_.ProseMirror]:h-full`,`[&_.ProseMirror]:min-h-full`,`[&_.ProseMirror]:outline-none`)})]}),!!E&&(0,o.jsx)(`div`,{className:`px-3 pb-2 pt-1`,children:E}),J]})});C.displayName=`TiptapRichTextEditor`;var w=typeof b==`function`&&typeof x==`function`&&typeof S==`object`&&!!S,T=(0,a.forwardRef)(function({value:e,onChange:r,placeholder:i,compact:c=!1,minHeight:l,maxHeight:h,disabled:_=!1,showCounts:b=!1,maxLength:x,extraToolbarItems:S,toolbarTrailing:C,footerSlot:w,hideSourceToggle:T=!1,autoFocus:E=!1,className:D,onCaretChange:O,strings:k},A){let j=t.useStrings(d,k),M=(0,a.useRef)(null),[N,P]=(0,a.useState)(!1),[F,I]=(0,a.useState)(!1),[L,R]=(0,a.useState)(``),z=(0,a.useRef)(v(e)),B=(0,a.useRef)(O);B.current=O,(0,a.useEffect)(()=>{let t=M.current;if(!t||N)return;let n=y(e);v(t.innerHTML)!==v(n)&&(t.innerHTML=n),z.current=v(e)},[N,e]),(0,a.useEffect)(()=>{E&&M.current?.focus()},[E]);let V=(0,a.useCallback)(()=>{let e=M.current,t=v(e?.innerHTML??``);z.current=t,r(t),B.current?.()},[r]);(0,a.useImperativeHandle)(A,()=>({focus:()=>M.current?.focus(),getHTML:()=>v(M.current?.innerHTML??``),setHTML:e=>{let t=v(e);z.current=t,M.current&&(M.current.innerHTML=y(t)),r(t)},insertHTML:e=>{m(M.current,e),V()},isEmpty:()=>v(M.current?.innerHTML??``)===``,clear:()=>{z.current=``,M.current&&(M.current.innerHTML=`<p></p>`),r(``)},getCaretContext:()=>f(),replaceBeforeCaret:(e,t)=>{p(null,e,t,()=>V())}}),[V,r]);let H=(0,a.useMemo)(()=>({minHeight:l??(c?`2rem`:`12rem`),...h?{maxHeight:h,overflowY:`auto`}:{}}),[c,h,l]),U=(0,a.useCallback)(()=>{if(F){let e=v(L);z.current=e,M.current&&(M.current.innerHTML=y(e)),r(e),I(!1);return}R(M.current?.innerHTML??y(e)),I(!0)},[r,F,L,e]),W=(0,a.useCallback)(e=>{let t=e.target.value;R(t);let n=v(t);z.current=n,r(n)},[r]),G=typeof i==`string`?i:``,K=v(z.current)===``,q=G.length>0&&!N&&K?(0,o.jsx)(`span`,{className:`text-muted-foreground pointer-events-none absolute left-3 top-2 text-sm`,children:G}):null,J=(0,a.useMemo)(()=>[{id:`bold`,icon:s.Bold,label:j.toolbar.bold,isActive:()=>!1,run:()=>void 0,disabled:!0},{id:`italic`,icon:s.Italic,label:j.toolbar.italic,isActive:()=>!1,run:()=>void 0,disabled:!0},{id:`strike`,icon:s.Strikethrough,label:j.toolbar.strike,isActive:()=>!1,run:()=>void 0,disabled:!0},{id:`bullet-list`,icon:s.List,label:j.toolbar.bulletList,isActive:()=>!1,run:()=>void 0,disabled:!0},{id:`ordered-list`,icon:s.ListOrdered,label:j.toolbar.orderedList,isActive:()=>!1,run:()=>void 0,disabled:!0},{id:`blockquote`,icon:s.Quote,label:j.toolbar.blockquote,isActive:()=>!1,run:()=>void 0,disabled:!0},{id:`undo`,icon:s.Undo2,label:j.toolbar.undo,isActive:()=>!1,run:()=>void 0,disabled:!0},{id:`redo`,icon:s.Redo2,label:j.toolbar.redo,isActive:()=>!1,run:()=>void 0,disabled:!0}],[j]),Y=F?L.replace(/<[^>]*>/g,``):M.current?.innerText??v(e).replace(/<[^>]*>/g,``),X=b?(0,o.jsx)(g,{text:Y,maxLength:x,strings:j}):null;return(0,o.jsxs)(`div`,{className:n.cn(`border-input bg-background rounded-md border`,_&&`opacity-70`,D),children:[(0,o.jsx)(u,{buttons:J,extraToolbarItems:S,hideSourceToggle:T,sourceMode:F,toggleSourceMode:U,disabled:_,hasEditor:!0,toolbarTrailing:C,strings:j}),F?(0,o.jsx)(`textarea`,{"aria-label":j.sourceLabel,value:L,onChange:W,disabled:_,spellCheck:!1,className:n.cn(`bg-muted/50 w-full resize-y px-3 py-2 font-mono text-xs leading-relaxed focus-visible:outline-none`,_&&`cursor-not-allowed`),style:H}):(0,o.jsxs)(`div`,{className:`relative`,style:H,children:[q,(0,o.jsx)(`div`,{ref:M,role:`textbox`,"aria-label":j.editorLabel,"aria-multiline":`true`,contentEditable:!_,suppressContentEditableWarning:!0,onInput:V,onKeyUp:()=>B.current?.(),onMouseUp:()=>B.current?.(),onFocus:()=>P(!0),onBlur:()=>P(!1),className:n.cn(`prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0.5 max-w-none px-3 py-2 text-sm focus-visible:outline-none dark:prose-invert`,`h-full min-h-full`,_&&`cursor-not-allowed`),dangerouslySetInnerHTML:{__html:y(e)}})]}),!!w&&(0,o.jsx)(`div`,{className:`px-3 pb-2 pt-1`,children:w}),X]})});T.displayName=`FallbackRichTextEditor`;var E=(0,a.forwardRef)(function(e,t){return w?(0,o.jsx)(C,{...e,ref:t}):(0,o.jsx)(T,{className:`rich-text-editor--component`,...e,ref:t})});E.displayName=`RichTextEditor`,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return E}});
|
|
2
|
-
//# sourceMappingURL=rich-text-editor-ChE-pI3N.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-editor-ChE-pI3N.cjs","names":[],"sources":["../../src/components/features/rich-text-editor/partials/rich-text-editor-toolbar.tsx","../../src/components/features/rich-text-editor/rich-text-editor.strings.ts","../../src/components/features/rich-text-editor/partials/caret-helpers.ts","../../src/components/features/rich-text-editor/partials/counts-footer.tsx","../../src/components/features/rich-text-editor/partials/html-helpers.ts","../../src/components/features/rich-text-editor/partials/rich-text-editor-tiptap.tsx","../../src/components/features/rich-text-editor/partials/rich-text-editor-fallback.tsx","../../src/components/features/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { Code2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/base/buttons/button';\n\nimport type { RichTextEditorStrings } from '../rich-text-editor.strings';\nimport type {\n\tRichTextEditorToolbarItem,\n\tToolbarButtonConfig,\n} from '../rich-text-editor.types';\n\nexport interface RichTextEditorToolbarProps {\n\tbuttons: ToolbarButtonConfig[];\n\textraToolbarItems?: ReadonlyArray<RichTextEditorToolbarItem>;\n\thideSourceToggle?: boolean;\n\tsourceMode: boolean;\n\ttoggleSourceMode: () => void;\n\tdisabled?: boolean;\n\t/**\n\t * The TipTap variant disables built-in buttons until the editor instance\n\t * is ready; the fallback variant simply marks them disabled. This flag\n\t * lets callers force the disabled state without re-deriving it per button.\n\t */\n\thasEditor?: boolean;\n\ttoolbarTrailing?: ReactNode;\n\tstrings: RichTextEditorStrings;\n}\n\nexport function RichTextEditorToolbar({\n\tbuttons,\n\textraToolbarItems,\n\thideSourceToggle = false,\n\tsourceMode,\n\ttoggleSourceMode,\n\tdisabled = false,\n\thasEditor = true,\n\ttoolbarTrailing,\n\tstrings,\n}: RichTextEditorToolbarProps) {\n\tconst hasExtras = (extraToolbarItems?.length ?? 0) > 0;\n\n\treturn (\n\t\t<div className=\"border-border flex flex-wrap items-center gap-1 border-b p-1.5\">\n\t\t\t{buttons.map((button) => {\n\t\t\t\tconst Icon = button.icon;\n\t\t\t\tconst isActive = button.isActive();\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={button.id}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant={isActive ? 'primary' : 'secondary'}\n\t\t\t\t\t\tbuttonStyle={isActive ? 'solid' : 'ghost'}\n\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\tonClick={button.run}\n\t\t\t\t\t\tdisabled={disabled || !hasEditor || sourceMode || button.disabled}\n\t\t\t\t\t\taria-label={button.label}\n\t\t\t\t\t\ttitle={button.label}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t})}\n\n\t\t\t{!hideSourceToggle && (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"bg-border mx-1 h-4 w-px\" />\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant={sourceMode ? 'primary' : 'secondary'}\n\t\t\t\t\t\tbuttonStyle={sourceMode ? 'solid' : 'ghost'}\n\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\tonClick={toggleSourceMode}\n\t\t\t\t\t\tdisabled={disabled || !hasEditor}\n\t\t\t\t\t\taria-label={strings.toolbar.sourceCode}\n\t\t\t\t\t\ttitle={strings.toolbar.sourceCode}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Code2 className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{hasExtras && (\n\t\t\t\t<>\n\t\t\t\t\t<div className=\"bg-border mx-1 h-4 w-px\" />\n\t\t\t\t\t{extraToolbarItems?.map((item) => {\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst isActive = item.isActive?.() ?? false;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tvariant={isActive ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\t\tbuttonStyle={isActive ? 'solid' : 'ghost'}\n\t\t\t\t\t\t\t\tsize=\"icon-xs\"\n\t\t\t\t\t\t\t\tonClick={item.onClick}\n\t\t\t\t\t\t\t\tdisabled={disabled || !hasEditor || sourceMode || item.disabled}\n\t\t\t\t\t\t\t\taria-label={item.label}\n\t\t\t\t\t\t\t\ttitle={item.label}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{!!toolbarTrailing && (\n\t\t\t\t<div className=\"ml-auto flex items-center gap-1\">{toolbarTrailing}</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nRichTextEditorToolbar.displayName = 'RichTextEditorToolbar';\n","/**\n * Default user-facing strings for `<RichTextEditor>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <RichTextEditor strings={{ toolbar: { bold: t('editor.bold') } }} … />\n */\n\nexport interface RichTextEditorStrings {\n\t/** Accessible label for the editable rich-text surface. */\n\teditorLabel: string;\n\t/** Accessible label for the HTML source textarea. */\n\tsourceLabel: string;\n\t/** Toolbar button labels (used for `aria-label` and tooltip `title`). */\n\ttoolbar: {\n\t\tbold: string;\n\t\titalic: string;\n\t\tstrike: string;\n\t\tbulletList: string;\n\t\torderedList: string;\n\t\tblockquote: string;\n\t\tundo: string;\n\t\tredo: string;\n\t\tsourceCode: string;\n\t};\n\t/** Footer count labels — `{n}` is replaced with the count. */\n\tcounts: {\n\t\tcharacters: string;\n\t\twords: string;\n\t\tmax: string;\n\t};\n}\n\nexport const defaultRichTextEditorStrings: RichTextEditorStrings = {\n\teditorLabel: 'Rich text editor',\n\tsourceLabel: 'HTML source',\n\ttoolbar: {\n\t\tbold: 'Bold',\n\t\titalic: 'Italic',\n\t\tstrike: 'Strike',\n\t\tbulletList: 'Bullet list',\n\t\torderedList: 'Ordered list',\n\t\tblockquote: 'Quote',\n\t\tundo: 'Undo',\n\t\tredo: 'Redo',\n\t\tsourceCode: 'Source code',\n\t},\n\tcounts: {\n\t\tcharacters: 'characters',\n\t\twords: 'words',\n\t\tmax: 'max',\n\t},\n};\n","/**\n * Caret-introspection helpers used by `<RichTextEditor>` to expose the\n * text before the caret and replace a leading run of characters with\n * inline HTML — the building blocks for `@`-mention chips and similar\n * inline triggers.\n */\nimport type { RichTextCaretContext, TiptapEditor } from '../rich-text-editor.types';\n\n/**\n * Read the current selection's caret context.\n *\n * Walks back from the caret through the current text node and any\n * preceding sibling text nodes inside the same block-level container\n * (paragraph / list-item / heading) collecting plain text. Returns the\n * accumulated text plus the caret's bounding rect when available.\n *\n * Returns `null` when there is no live selection or the selection isn't\n * a text caret inside a contenteditable.\n */\nexport function readCaretContext(): RichTextCaretContext | null {\n\tif (typeof window === 'undefined') return null;\n\tconst sel = window.getSelection();\n\tif (!sel || sel.rangeCount === 0) return null;\n\tconst range = sel.getRangeAt(0);\n\tif (!range.collapsed) return null;\n\n\tconst startNode = range.startContainer;\n\tconst startOffset = range.startOffset;\n\n\tlet block: Node | null = startNode;\n\twhile (block && block.nodeType !== Node.ELEMENT_NODE) {\n\t\tblock = block.parentNode;\n\t}\n\tif (!block) return null;\n\tconst editable =\n\t\t(block as Element).closest('[contenteditable=\"true\"]') ??\n\t\t(block as Element).closest('.ProseMirror');\n\tif (!editable) return null;\n\n\tlet text = '';\n\tif (startNode.nodeType === Node.TEXT_NODE) {\n\t\ttext = (startNode.textContent ?? '').slice(0, startOffset);\n\t}\n\n\tlet cursor: Node | null = startNode;\n\twhile (cursor && cursor !== editable && cursor !== block) {\n\t\tlet prev: Node | null = cursor.previousSibling;\n\t\twhile (prev) {\n\t\t\ttext = (prev.textContent ?? '') + text;\n\t\t\tprev = prev.previousSibling;\n\t\t}\n\t\tcursor = cursor.parentNode;\n\t\tif (cursor && (cursor as Element).matches?.('p, li, h1, h2, h3, h4, h5, h6, blockquote')) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlet rect: RichTextCaretContext['rect'];\n\tconst r = range.getBoundingClientRect();\n\tif (r && (r.top || r.left || r.right || r.bottom)) {\n\t\trect = { top: r.top, left: r.left, bottom: r.bottom, right: r.right };\n\t}\n\n\treturn { textBefore: text, rect };\n}\n\n/**\n * Extend the selection backwards by `length` characters, then insert\n * `html`. The selection extension means `editor.insertContent` (or the\n * fallback's `range.deleteContents()` + insert) replaces the trigger\n * range with the chip atomically — no manual text-content mutation, no\n * timing races between \"delete\" and \"insert\".\n */\nexport function replaceBeforeCaret(\n\teditor: TiptapEditor | null,\n\tlength: number,\n\thtml: string,\n\tnotifyChange: (next: string) => void,\n): void {\n\tif (typeof window === 'undefined') return;\n\tconst sel = window.getSelection();\n\tif (!sel || sel.rangeCount === 0) return;\n\tconst caret = sel.getRangeAt(0);\n\tif (!caret.collapsed) return;\n\n\tlet remaining = length;\n\tlet startNode: Node = caret.startContainer;\n\tlet startOffset = caret.startOffset;\n\n\twhile (remaining > 0) {\n\t\tif (startNode.nodeType === Node.TEXT_NODE) {\n\t\t\tconst take = Math.min(startOffset, remaining);\n\t\t\tstartOffset -= take;\n\t\t\tremaining -= take;\n\t\t\tif (remaining === 0) break;\n\t\t}\n\t\tconst prev = previousTextNode(startNode);\n\t\tif (!prev) break;\n\t\tstartNode = prev;\n\t\tstartOffset = prev.textContent?.length ?? 0;\n\t}\n\n\tconst range = document.createRange();\n\trange.setStart(startNode, startOffset);\n\trange.setEnd(caret.endContainer, caret.endOffset);\n\tsel.removeAllRanges();\n\tsel.addRange(range);\n\n\tif (editor) {\n\t\teditor.chain().focus().insertContent(html).run();\n\t\tnotifyChange(editor.getHTML());\n\t\treturn;\n\t}\n\n\trange.deleteContents();\n\tconst fragment = document.createRange().createContextualFragment(html);\n\trange.insertNode(fragment);\n\tsel.collapseToEnd();\n\tconst editable =\n\t\t(startNode as Element | null)?.parentElement?.closest?.('[contenteditable=\"true\"]') ?? null;\n\tif (editable) notifyChange((editable as HTMLElement).innerHTML);\n}\n\nexport function insertHtmlIntoEditable(editable: HTMLElement | null, html: string): void {\n\tif (typeof window === 'undefined' || !editable) return;\n\teditable.focus();\n\n\tconst sel = window.getSelection();\n\tif (!sel || sel.rangeCount === 0) {\n\t\teditable.insertAdjacentHTML('beforeend', html);\n\t\treturn;\n\t}\n\n\tconst range = sel.getRangeAt(0);\n\tif (!editable.contains(range.commonAncestorContainer)) {\n\t\teditable.insertAdjacentHTML('beforeend', html);\n\t\treturn;\n\t}\n\n\trange.deleteContents();\n\tconst fragment = document.createRange().createContextualFragment(html);\n\trange.insertNode(fragment);\n\trange.collapse(false);\n\tsel.removeAllRanges();\n\tsel.addRange(range);\n}\n\nfunction previousTextNode(node: Node): Node | null {\n\tlet current: Node | null = node;\n\twhile (current) {\n\t\tif (current.previousSibling) {\n\t\t\tcurrent = current.previousSibling;\n\t\t\twhile (current && current.lastChild) {\n\t\t\t\tcurrent = current.lastChild;\n\t\t\t}\n\t\t\tif (current && current.nodeType === Node.TEXT_NODE) return current;\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent = current.parentNode;\n\t\tif (!current || (current as Element).matches?.('p, li, h1, h2, h3, h4, h5, h6, blockquote, [contenteditable=\"true\"]')) {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn null;\n}\n","import { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { RichTextEditorStrings } from '../rich-text-editor.strings';\nimport type { TiptapEditor } from '../rich-text-editor.types';\n\ninterface CountsFooterTextProps {\n\ttext: string;\n\tmaxLength?: number;\n\tstrings: RichTextEditorStrings;\n}\n\nexport function CountsFooterText({ text, maxLength, strings }: CountsFooterTextProps) {\n\tconst chars = text.length;\n\tconst words = text.trim().length > 0 ? text.trim().split(/\\s+/).length : 0;\n\tconst overLimit = typeof maxLength === 'number' && chars > maxLength;\n\n\treturn (\n\t\t<div className=\"border-border flex items-center justify-end gap-3 border-t px-3 py-1.5\">\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"xs\"\n\t\t\t\ttype={overLimit ? 'error' : 'secondary'}\n\t\t\t\tweight={overLimit ? 'medium' : 'regular'}\n\t\t\t\tclassName={cn('tabular-nums')}\n\t\t\t>\n\t\t\t\t{chars}\n\t\t\t\t{typeof maxLength === 'number' ? ` / ${maxLength}` : ''} {strings.counts.characters}\n\t\t\t</Text>\n\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"tabular-nums\">\n\t\t\t\t{words} {strings.counts.words}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n\nCountsFooterText.displayName = 'CountsFooterText';\n\ninterface CountsFooterProps {\n\teditor: TiptapEditor;\n\tsourceMode: boolean;\n\tsourceValue: string;\n\tmaxLength?: number;\n\tstrings: RichTextEditorStrings;\n}\n\nexport function CountsFooter({\n\teditor,\n\tsourceMode,\n\tsourceValue,\n\tmaxLength,\n\tstrings,\n}: CountsFooterProps) {\n\tconst text = sourceMode\n\t\t? sourceValue.replace(/<[^>]*>/g, '')\n\t\t: (editor?.getText() ?? '');\n\n\treturn <CountsFooterText text={text} maxLength={maxLength} strings={strings} />;\n}\n\nCountsFooter.displayName = 'CountsFooter';\n","/**\n * Plain HTML normalization shared by the TipTap and contenteditable\n * fallback editors. Keeping these out of the React tree means the\n * editor partials stay focused on rendering.\n */\n\nexport function normalizeHtml(value: string): string {\n\tconst trimmed = value.trim();\n\n\tif (trimmed === '' || trimmed === '<p></p>' || trimmed === '<p><br></p>') {\n\t\treturn '';\n\t}\n\n\treturn trimmed;\n}\n\nexport function toEditorContent(value: string): string {\n\tconst normalized = normalizeHtml(value);\n\treturn normalized === '' ? '<p></p>' : normalized;\n}\n","import {\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport {\n\tBold,\n\tItalic,\n\tList,\n\tListOrdered,\n\tQuote,\n\tRedo2,\n\tStrikethrough,\n\tUndo2,\n} from 'lucide-react';\nimport * as TiptapReact from '@tiptap/react';\nimport * as StarterKitModule from '@tiptap/starter-kit';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultRichTextEditorStrings } from '../rich-text-editor.strings';\nimport type {\n\tRichTextEditorHandle,\n\tRichTextEditorProps,\n\tToolbarButtonConfig,\n} from '../rich-text-editor.types';\nimport { readCaretContext, replaceBeforeCaret } from './caret-helpers';\nimport { CountsFooter } from './counts-footer';\nimport { normalizeHtml, toEditorContent } from './html-helpers';\nimport { RichTextEditorToolbar } from './rich-text-editor-toolbar';\n\nconst EditorContent = TiptapReact.EditorContent;\nconst useTiptapEditor = TiptapReact.useEditor;\nconst StarterKit =\n\t'default' in StarterKitModule ? StarterKitModule.default : StarterKitModule;\n\nexport const TiptapRichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(function TiptapRichTextEditor(\n\t{\n\t\tvalue,\n\t\tonChange,\n\t\tplaceholder,\n\t\tcompact = false,\n\t\tminHeight,\n\t\tmaxHeight,\n\t\tdisabled = false,\n\t\tshowCounts = false,\n\t\tmaxLength,\n\t\textraToolbarItems,\n\t\ttoolbarTrailing,\n\t\tfooterSlot,\n\t\thideSourceToggle = false,\n\t\tautoFocus = false,\n\t\tclassName,\n\t\tonCaretChange,\n\t\tstrings: stringsProp,\n\t},\n\tref,\n) {\n\tconst strings = useStrings(defaultRichTextEditorStrings, stringsProp);\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [sourceMode, setSourceMode] = useState(false);\n\tconst [sourceValue, setSourceValue] = useState('');\n\tconst isFocusedRef = useRef(false);\n\tconst externalValueRef = useRef<string>(normalizeHtml(value));\n\tconst onCaretChangeRef = useRef(onCaretChange);\n\tonCaretChangeRef.current = onCaretChange;\n\n\tconst editor = useTiptapEditor({\n\t\textensions: [StarterKit],\n\t\tcontent: toEditorContent(value),\n\t\teditable: !disabled,\n\t\timmediatelyRender: false,\n\t\tautofocus: autoFocus ? 'end' : false,\n\t\tonFocus: () => {\n\t\t\tisFocusedRef.current = true;\n\t\t\tsetIsFocused(true);\n\t\t},\n\t\tonBlur: () => {\n\t\t\tisFocusedRef.current = false;\n\t\t\tsetIsFocused(false);\n\t\t},\n\t\tonUpdate: ({ editor: currentEditor }: { editor: { getHTML: () => string } }) => {\n\t\t\tconst html = normalizeHtml(currentEditor.getHTML());\n\t\t\tif (!isFocusedRef.current) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (html !== externalValueRef.current) {\n\t\t\t\texternalValueRef.current = html;\n\t\t\t\tonChange(html);\n\t\t\t}\n\n\t\t\tonCaretChangeRef.current?.();\n\t\t},\n\t\teditorProps: {\n\t\t\tattributes: {\n\t\t\t\trole: 'textbox',\n\t\t\t\t'aria-label': strings.editorLabel,\n\t\t\t\t'aria-multiline': 'true',\n\t\t\t\tclass: 'prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0.5 max-w-none px-3 py-2 text-sm focus-visible:outline-none dark:prose-invert',\n\t\t\t},\n\t\t},\n\t});\n\n\tuseEffect(() => {\n\t\tif (!editor) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst current = normalizeHtml(editor.getHTML());\n\t\tconst next = normalizeHtml(value);\n\t\texternalValueRef.current = next;\n\n\t\tif (current !== next) {\n\t\t\teditor.commands.setContent(toEditorContent(next), { emitUpdate: false });\n\t\t}\n\t}, [editor, value]);\n\n\tuseEffect(() => {\n\t\tif (!editor) {\n\t\t\treturn;\n\t\t}\n\n\t\teditor.setEditable(!disabled);\n\t}, [disabled, editor]);\n\n\tuseEffect(() => {\n\t\tif (typeof document === 'undefined') return;\n\t\tconst handler = () => {\n\t\t\tif (!isFocusedRef.current) return;\n\t\t\tonCaretChangeRef.current?.();\n\t\t};\n\t\tdocument.addEventListener('selectionchange', handler);\n\t\treturn () => document.removeEventListener('selectionchange', handler);\n\t}, []);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tfocus: () => {\n\t\t\t\teditor?.chain().focus().run();\n\t\t\t},\n\t\t\tgetHTML: () => normalizeHtml(editor?.getHTML() ?? ''),\n\t\t\tsetHTML: (html: string) => {\n\t\t\t\tconst next = normalizeHtml(html);\n\t\t\t\texternalValueRef.current = next;\n\t\t\t\teditor?.commands.setContent(toEditorContent(next), { emitUpdate: false });\n\t\t\t\tonChange(next);\n\t\t\t},\n\t\t\tinsertHTML: (html: string) => {\n\t\t\t\tif (!editor) return;\n\t\t\t\teditor.chain().focus().insertContent(html).run();\n\t\t\t},\n\t\t\tisEmpty: () => normalizeHtml(editor?.getHTML() ?? '') === '',\n\t\t\tclear: () => {\n\t\t\t\texternalValueRef.current = '';\n\t\t\t\teditor?.commands.setContent('<p></p>', { emitUpdate: false });\n\t\t\t\tonChange('');\n\t\t\t},\n\t\t\tgetCaretContext: () => readCaretContext(),\n\t\t\treplaceBeforeCaret: (length: number, html: string) => {\n\t\t\t\treplaceBeforeCaret(editor, length, html, (next) => {\n\t\t\t\t\texternalValueRef.current = normalizeHtml(next);\n\t\t\t\t\tonChange(externalValueRef.current);\n\t\t\t\t});\n\t\t\t},\n\t\t}),\n\t\t[editor, onChange],\n\t);\n\n\tconst contentStyle = useMemo(\n\t\t() => ({\n\t\t\tminHeight: minHeight ?? (compact ? '2rem' : '12rem'),\n\t\t\t...(maxHeight ? { maxHeight, overflowY: 'auto' as const } : {}),\n\t\t}),\n\t\t[compact, maxHeight, minHeight],\n\t);\n\n\tconst toggleSourceMode = useCallback(() => {\n\t\tif (!editor) return;\n\n\t\tif (sourceMode) {\n\t\t\tconst html = toEditorContent(sourceValue);\n\t\t\teditor.commands.setContent(html, { emitUpdate: false });\n\t\t\tconst normalized = normalizeHtml(sourceValue);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tonChange(normalized);\n\t\t\tsetSourceMode(false);\n\t\t} else {\n\t\t\tsetSourceValue(editor.getHTML());\n\t\t\tsetSourceMode(true);\n\t\t}\n\t}, [editor, onChange, sourceMode, sourceValue]);\n\n\tconst handleSourceChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\t\tconst next = e.target.value;\n\t\t\tsetSourceValue(next);\n\t\t\tconst normalized = normalizeHtml(next);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tonChange(normalized);\n\t\t},\n\t\t[onChange],\n\t);\n\n\tconst toolbarButtons = useMemo<ToolbarButtonConfig[]>(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'bold',\n\t\t\t\ticon: Bold,\n\t\t\t\tlabel: strings.toolbar.bold,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('bold')),\n\t\t\t\trun: () => editor?.chain().focus().toggleBold().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'italic',\n\t\t\t\ticon: Italic,\n\t\t\t\tlabel: strings.toolbar.italic,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('italic')),\n\t\t\t\trun: () => editor?.chain().focus().toggleItalic().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'strike',\n\t\t\t\ticon: Strikethrough,\n\t\t\t\tlabel: strings.toolbar.strike,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('strike')),\n\t\t\t\trun: () => editor?.chain().focus().toggleStrike().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'bullet-list',\n\t\t\t\ticon: List,\n\t\t\t\tlabel: strings.toolbar.bulletList,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('bulletList')),\n\t\t\t\trun: () => editor?.chain().focus().toggleBulletList().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'ordered-list',\n\t\t\t\ticon: ListOrdered,\n\t\t\t\tlabel: strings.toolbar.orderedList,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('orderedList')),\n\t\t\t\trun: () => editor?.chain().focus().toggleOrderedList().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'blockquote',\n\t\t\t\ticon: Quote,\n\t\t\t\tlabel: strings.toolbar.blockquote,\n\t\t\t\tisActive: () => Boolean(editor?.isActive('blockquote')),\n\t\t\t\trun: () => editor?.chain().focus().toggleBlockquote().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'undo',\n\t\t\t\ticon: Undo2,\n\t\t\t\tlabel: strings.toolbar.undo,\n\t\t\t\tisActive: () => false,\n\t\t\t\trun: () => editor?.chain().focus().undo().run(),\n\t\t\t\tdisabled: !editor?.can().chain().focus().undo().run(),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'redo',\n\t\t\t\ticon: Redo2,\n\t\t\t\tlabel: strings.toolbar.redo,\n\t\t\t\tisActive: () => false,\n\t\t\t\trun: () => editor?.chain().focus().redo().run(),\n\t\t\t\tdisabled: !editor?.can().chain().focus().redo().run(),\n\t\t\t},\n\t\t],\n\t\t[editor, strings],\n\t);\n\n\tconst countsFooter =\n\t\tshowCounts && editor ? (\n\t\t\t<CountsFooter\n\t\t\t\teditor={editor}\n\t\t\t\tsourceMode={sourceMode}\n\t\t\t\tsourceValue={sourceValue}\n\t\t\t\tmaxLength={maxLength}\n\t\t\t\tstrings={strings}\n\t\t\t/>\n\t\t) : null;\n\n\tconst placeholderText = typeof placeholder === 'string' ? placeholder : '';\n\tconst showPlaceholder =\n\t\tplaceholderText.length > 0 && !isFocused && Boolean(editor?.isEmpty);\n\tconst placeholderNode = showPlaceholder ? (\n\t\t<span className=\"text-muted-foreground pointer-events-none absolute left-3 top-2 text-sm\">\n\t\t\t{placeholderText}\n\t\t</span>\n\t) : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'border-input bg-background rounded-md border',\n\t\t\t\tdisabled && 'opacity-70',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<RichTextEditorToolbar\n\t\t\t\tbuttons={toolbarButtons}\n\t\t\t\textraToolbarItems={extraToolbarItems}\n\t\t\t\thideSourceToggle={hideSourceToggle}\n\t\t\t\tsourceMode={sourceMode}\n\t\t\t\ttoggleSourceMode={toggleSourceMode}\n\t\t\t\tdisabled={disabled}\n\t\t\t\thasEditor={Boolean(editor)}\n\t\t\t\ttoolbarTrailing={toolbarTrailing}\n\t\t\t\tstrings={strings}\n\t\t\t/>\n\n\t\t\t{sourceMode ? (\n\t\t\t\t<textarea\n\t\t\t\t\taria-label={strings.sourceLabel}\n\t\t\t\t\tvalue={sourceValue}\n\t\t\t\t\tonChange={handleSourceChange}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tspellCheck={false}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'bg-muted/50 w-full resize-y px-3 py-2 font-mono text-xs leading-relaxed focus-visible:outline-none',\n\t\t\t\t\t\tdisabled && 'cursor-not-allowed',\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={contentStyle}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div className=\"relative\" style={contentStyle}>\n\t\t\t\t\t{placeholderNode}\n\n\t\t\t\t\t<EditorContent\n\t\t\t\t\t\teditor={editor}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'h-full',\n\t\t\t\t\t\t\t'[&_.ProseMirror]:h-full',\n\t\t\t\t\t\t\t'[&_.ProseMirror]:min-h-full',\n\t\t\t\t\t\t\t'[&_.ProseMirror]:outline-none',\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!footerSlot && (\n\t\t\t\t<div className=\"px-3 pb-2 pt-1\">{footerSlot}</div>\n\t\t\t)}\n\n\t\t\t{countsFooter}\n\t\t</div>\n\t);\n});\n\nTiptapRichTextEditor.displayName = 'TiptapRichTextEditor';\n\nexport const hasTiptapRuntime =\n\ttypeof EditorContent === 'function' &&\n\ttypeof useTiptapEditor === 'function' &&\n\ttypeof StarterKit === 'object' &&\n\tStarterKit !== null;\n","import {\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport {\n\tBold,\n\tItalic,\n\tList,\n\tListOrdered,\n\tQuote,\n\tRedo2,\n\tStrikethrough,\n\tUndo2,\n} from 'lucide-react';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultRichTextEditorStrings } from '../rich-text-editor.strings';\nimport type {\n\tRichTextEditorHandle,\n\tRichTextEditorProps,\n\tToolbarButtonConfig,\n} from '../rich-text-editor.types';\nimport {\n\tinsertHtmlIntoEditable,\n\treadCaretContext,\n\treplaceBeforeCaret,\n} from './caret-helpers';\nimport { CountsFooterText } from './counts-footer';\nimport { normalizeHtml, toEditorContent } from './html-helpers';\nimport { RichTextEditorToolbar } from './rich-text-editor-toolbar';\n\n/**\n * Fallback editor used when the TipTap runtime is unavailable (e.g. in\n * environments where the package failed to load). Renders a\n * `contenteditable` surface with the same imperative handle so callers\n * never need to care which variant they got.\n */\nexport const FallbackRichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(function FallbackRichTextEditor(\n\t{\n\t\tvalue,\n\t\tonChange,\n\t\tplaceholder,\n\t\tcompact = false,\n\t\tminHeight,\n\t\tmaxHeight,\n\t\tdisabled = false,\n\t\tshowCounts = false,\n\t\tmaxLength,\n\t\textraToolbarItems,\n\t\ttoolbarTrailing,\n\t\tfooterSlot,\n\t\thideSourceToggle = false,\n\t\tautoFocus = false,\n\t\tclassName,\n\t\tonCaretChange,\n\t\tstrings: stringsProp,\n\t},\n\tref,\n) {\n\tconst strings = useStrings(defaultRichTextEditorStrings, stringsProp);\n\tconst editableRef = useRef<HTMLDivElement>(null);\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [sourceMode, setSourceMode] = useState(false);\n\tconst [sourceValue, setSourceValue] = useState('');\n\tconst externalValueRef = useRef<string>(normalizeHtml(value));\n\tconst onCaretChangeRef = useRef(onCaretChange);\n\tonCaretChangeRef.current = onCaretChange;\n\n\tuseEffect(() => {\n\t\tconst editable = editableRef.current;\n\t\tif (!editable || isFocused) return;\n\t\tconst next = toEditorContent(value);\n\t\tif (normalizeHtml(editable.innerHTML) !== normalizeHtml(next)) {\n\t\t\teditable.innerHTML = next;\n\t\t}\n\t\texternalValueRef.current = normalizeHtml(value);\n\t}, [isFocused, value]);\n\n\tuseEffect(() => {\n\t\tif (!autoFocus) return;\n\t\teditableRef.current?.focus();\n\t}, [autoFocus]);\n\n\tconst emitEditableChange = useCallback(() => {\n\t\tconst editable = editableRef.current;\n\t\tconst html = normalizeHtml(editable?.innerHTML ?? '');\n\t\texternalValueRef.current = html;\n\t\tonChange(html);\n\t\tonCaretChangeRef.current?.();\n\t}, [onChange]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\tfocus: () => editableRef.current?.focus(),\n\t\t\tgetHTML: () => normalizeHtml(editableRef.current?.innerHTML ?? ''),\n\t\t\tsetHTML: (html: string) => {\n\t\t\t\tconst next = normalizeHtml(html);\n\t\t\t\texternalValueRef.current = next;\n\t\t\t\tif (editableRef.current) {\n\t\t\t\t\teditableRef.current.innerHTML = toEditorContent(next);\n\t\t\t\t}\n\t\t\t\tonChange(next);\n\t\t\t},\n\t\t\tinsertHTML: (html: string) => {\n\t\t\t\tinsertHtmlIntoEditable(editableRef.current, html);\n\t\t\t\temitEditableChange();\n\t\t\t},\n\t\t\tisEmpty: () => normalizeHtml(editableRef.current?.innerHTML ?? '') === '',\n\t\t\tclear: () => {\n\t\t\t\texternalValueRef.current = '';\n\t\t\t\tif (editableRef.current) editableRef.current.innerHTML = '<p></p>';\n\t\t\t\tonChange('');\n\t\t\t},\n\t\t\tgetCaretContext: () => readCaretContext(),\n\t\t\treplaceBeforeCaret: (length: number, html: string) => {\n\t\t\t\treplaceBeforeCaret(null, length, html, () => emitEditableChange());\n\t\t\t},\n\t\t}),\n\t\t[emitEditableChange, onChange],\n\t);\n\n\tconst contentStyle = useMemo(\n\t\t() => ({\n\t\t\tminHeight: minHeight ?? (compact ? '2rem' : '12rem'),\n\t\t\t...(maxHeight ? { maxHeight, overflowY: 'auto' as const } : {}),\n\t\t}),\n\t\t[compact, maxHeight, minHeight],\n\t);\n\n\tconst toggleSourceMode = useCallback(() => {\n\t\tif (sourceMode) {\n\t\t\tconst normalized = normalizeHtml(sourceValue);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tif (editableRef.current) {\n\t\t\t\teditableRef.current.innerHTML = toEditorContent(normalized);\n\t\t\t}\n\t\t\tonChange(normalized);\n\t\t\tsetSourceMode(false);\n\t\t\treturn;\n\t\t}\n\t\tsetSourceValue(editableRef.current?.innerHTML ?? toEditorContent(value));\n\t\tsetSourceMode(true);\n\t}, [onChange, sourceMode, sourceValue, value]);\n\n\tconst handleSourceChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLTextAreaElement>) => {\n\t\t\tconst next = e.target.value;\n\t\t\tsetSourceValue(next);\n\t\t\tconst normalized = normalizeHtml(next);\n\t\t\texternalValueRef.current = normalized;\n\t\t\tonChange(normalized);\n\t\t},\n\t\t[onChange],\n\t);\n\n\tconst placeholderText = typeof placeholder === 'string' ? placeholder : '';\n\tconst isEmpty = normalizeHtml(externalValueRef.current) === '';\n\tconst placeholderNode =\n\t\tplaceholderText.length > 0 && !isFocused && isEmpty ? (\n\t\t\t<span className=\"text-muted-foreground pointer-events-none absolute left-3 top-2 text-sm\">\n\t\t\t\t{placeholderText}\n\t\t\t</span>\n\t\t) : null;\n\n\tconst toolbarButtons = useMemo<ToolbarButtonConfig[]>(\n\t\t() => [\n\t\t\t{ id: 'bold', icon: Bold, label: strings.toolbar.bold, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'italic', icon: Italic, label: strings.toolbar.italic, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'strike', icon: Strikethrough, label: strings.toolbar.strike, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'bullet-list', icon: List, label: strings.toolbar.bulletList, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'ordered-list', icon: ListOrdered, label: strings.toolbar.orderedList, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'blockquote', icon: Quote, label: strings.toolbar.blockquote, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'undo', icon: Undo2, label: strings.toolbar.undo, isActive: () => false, run: () => undefined, disabled: true },\n\t\t\t{ id: 'redo', icon: Redo2, label: strings.toolbar.redo, isActive: () => false, run: () => undefined, disabled: true },\n\t\t],\n\t\t[strings],\n\t);\n\n\tconst text = sourceMode\n\t\t? sourceValue.replace(/<[^>]*>/g, '')\n\t\t: (editableRef.current?.innerText ?? normalizeHtml(value).replace(/<[^>]*>/g, ''));\n\tconst countsFooter =\n\t\tshowCounts ? (\n\t\t\t<CountsFooterText text={text} maxLength={maxLength} strings={strings} />\n\t\t) : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'border-input bg-background rounded-md border',\n\t\t\t\tdisabled && 'opacity-70',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<RichTextEditorToolbar\n\t\t\t\tbuttons={toolbarButtons}\n\t\t\t\textraToolbarItems={extraToolbarItems}\n\t\t\t\thideSourceToggle={hideSourceToggle}\n\t\t\t\tsourceMode={sourceMode}\n\t\t\t\ttoggleSourceMode={toggleSourceMode}\n\t\t\t\tdisabled={disabled}\n\t\t\t\thasEditor\n\t\t\t\ttoolbarTrailing={toolbarTrailing}\n\t\t\t\tstrings={strings}\n\t\t\t/>\n\n\t\t\t{sourceMode ? (\n\t\t\t\t<textarea\n\t\t\t\t\taria-label={strings.sourceLabel}\n\t\t\t\t\tvalue={sourceValue}\n\t\t\t\t\tonChange={handleSourceChange}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tspellCheck={false}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'bg-muted/50 w-full resize-y px-3 py-2 font-mono text-xs leading-relaxed focus-visible:outline-none',\n\t\t\t\t\t\tdisabled && 'cursor-not-allowed',\n\t\t\t\t\t)}\n\t\t\t\t\tstyle={contentStyle}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div className=\"relative\" style={contentStyle}>\n\t\t\t\t\t{placeholderNode}\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={editableRef}\n\t\t\t\t\t\trole=\"textbox\"\n\t\t\t\t\t\taria-label={strings.editorLabel}\n\t\t\t\t\t\taria-multiline=\"true\"\n\t\t\t\t\t\tcontentEditable={!disabled}\n\t\t\t\t\t\tsuppressContentEditableWarning\n\t\t\t\t\t\tonInput={emitEditableChange}\n\t\t\t\t\t\tonKeyUp={() => onCaretChangeRef.current?.()}\n\t\t\t\t\t\tonMouseUp={() => onCaretChangeRef.current?.()}\n\t\t\t\t\t\tonFocus={() => setIsFocused(true)}\n\t\t\t\t\t\tonBlur={() => setIsFocused(false)}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-ul:my-1 prose-ol:my-1 prose-li:my-0.5 max-w-none px-3 py-2 text-sm focus-visible:outline-none dark:prose-invert',\n\t\t\t\t\t\t\t'h-full min-h-full',\n\t\t\t\t\t\t\tdisabled && 'cursor-not-allowed',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: toEditorContent(value) }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!footerSlot && (\n\t\t\t\t<div className=\"px-3 pb-2 pt-1\">{footerSlot}</div>\n\t\t\t)}\n\n\t\t\t{countsFooter}\n\t\t</div>\n\t);\n});\n\nFallbackRichTextEditor.displayName = 'FallbackRichTextEditor';\n","/**\n * Public `<RichTextEditor>` shell — picks the TipTap-backed editor when\n * the runtime is loaded and falls back to a plain `contenteditable`\n * surface otherwise. Both variants implement the same imperative\n * `RichTextEditorHandle`, so callers don't have to branch.\n *\n * Heavy lifting lives in `partials/`:\n * - `partials/rich-text-editor-tiptap.tsx` — TipTap variant\n * - `partials/rich-text-editor-fallback.tsx` — contenteditable variant\n * - `partials/rich-text-editor-toolbar.tsx` — shared toolbar\n * - `partials/counts-footer.tsx` — char/word counts\n * - `partials/caret-helpers.ts` — caret introspection\n * - `partials/html-helpers.ts` — HTML normalization\n */\nimport { forwardRef } from 'react';\n\nimport {\n\tFallbackRichTextEditor,\n\tTiptapRichTextEditor,\n\thasTiptapRuntime,\n} from './partials';\nimport type {\n\tRichTextEditorHandle,\n\tRichTextEditorProps,\n} from './rich-text-editor.types';\n\nexport const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(function RichTextEditor(\n\tprops,\n\tref,\n) {\n\tif (!hasTiptapRuntime) {\n\t\treturn <FallbackRichTextEditor className=\"rich-text-editor--component\" {...props} ref={ref} />;\n\t}\n\n\treturn <TiptapRichTextEditor {...props} ref={ref} />;\n});\n\nRichTextEditor.displayName = 'RichTextEditor';\n\nexport type {\n\tRichTextEditorProps,\n\tRichTextEditorHandle,\n\tRichTextEditorToolbarItem,\n\tRichTextCaretContext,\n} from './rich-text-editor.types';\n"],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { cn as e } from "../lib/utils.js";
|
|
2
|
-
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
-
import { ScrollArea as r } from "@base-ui/react/scroll-area";
|
|
4
|
-
//#region src/components/ui/scroll-area.tsx
|
|
5
|
-
function i({ className: i, children: o, ...s }) {
|
|
6
|
-
return /* @__PURE__ */ n(r.Root, {
|
|
7
|
-
"data-slot": "scroll-area",
|
|
8
|
-
className: e("relative", i),
|
|
9
|
-
...s,
|
|
10
|
-
children: [
|
|
11
|
-
/* @__PURE__ */ t(r.Viewport, {
|
|
12
|
-
"data-slot": "scroll-area-viewport",
|
|
13
|
-
"data-overflow-y-end": !0,
|
|
14
|
-
className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",
|
|
15
|
-
children: o
|
|
16
|
-
}),
|
|
17
|
-
/* @__PURE__ */ t(a, {}),
|
|
18
|
-
/* @__PURE__ */ t(r.Corner, {})
|
|
19
|
-
]
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
function a({ className: n, orientation: i = "vertical", ...a }) {
|
|
23
|
-
return /* @__PURE__ */ t(r.Scrollbar, {
|
|
24
|
-
"data-slot": "scroll-area-scrollbar",
|
|
25
|
-
"data-orientation": i,
|
|
26
|
-
orientation: i,
|
|
27
|
-
className: e({
|
|
28
|
-
"h-2.5 flex-col border-t border-t-transparent": i === "horizontal",
|
|
29
|
-
"h-full w-[7px] border-l border-l-transparent": i === "vertical"
|
|
30
|
-
}, "data-hovering:opacity-100 transition-opacity data-hovering:pointer-events-none opacity-0", "flex touch-none p-px transition-colors select-none rounded-3xl", n),
|
|
31
|
-
...a,
|
|
32
|
-
children: /* @__PURE__ */ t(r.Thumb, {
|
|
33
|
-
"data-slot": "scroll-area-thumb",
|
|
34
|
-
className: "rounded-full bg-border relative flex-1"
|
|
35
|
-
})
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
//#endregion
|
|
39
|
-
export { a as n, i as t };
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=scroll-area-BH5CPQh4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area-BH5CPQh4.js","names":[],"sources":["../../src/components/ui/scroll-area.tsx"],"sourcesContent":["import { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n }: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn('relative', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n data-overflow-y-end\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n }: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n\n className={cn({\n 'h-2.5 flex-col border-t border-t-transparent': orientation === 'horizontal',\n 'h-full w-[7px] border-l border-l-transparent': orientation === 'vertical'\n },\n 'data-hovering:opacity-100 transition-opacity data-hovering:pointer-events-none opacity-0',\n 'flex touch-none p-px transition-colors select-none rounded-3xl',\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n"],"mappings":";;;;AAIA,SAAS,EAAW,EACI,cACA,aACA,GAAG,KAC4B;CACnD,OACI,kBAAC,EAAoB,MAArB;EACI,aAAU;EACV,WAAW,EAAG,YAAY,CAAS;EACnC,GAAI;YAHR;GAKI,kBAAC,EAAoB,UAArB;IACI,aAAU;IACV,uBAAA;IACA,WAAU;IAET;GAEyB,CAAA;GAC9B,kBAAC,GAAD,CAAY,CAAA;GACZ,kBAAC,EAAoB,QAArB,CAA6B,CAAA;EACP;;AAElC;AAEA,SAAS,EAAU,EACI,cACA,iBAAc,YACd,GAAG,KACiC;CACvD,OACI,kBAAC,EAAoB,WAArB;EACI,aAAU;EACV,oBAAkB;EACL;EAEb,WAAW,EAAG;GACN,gDAAgD,MAAgB;GAChE,gDAAgD,MAAgB;EACpE,GACA,4FACA,kEACA,CACJ;EACA,GAAI;YAEJ,kBAAC,EAAoB,OAArB;GACI,aAAU;GACV,WAAU;EACb,CAAA;CAC0B,CAAA;AAEvC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("../lib/utils.cjs");let t=require("react/jsx-runtime"),n=require("@base-ui/react/scroll-area");function r({className:r,children:a,...o}){return(0,t.jsxs)(n.ScrollArea.Root,{"data-slot":`scroll-area`,className:e.cn(`relative`,r),...o,children:[(0,t.jsx)(n.ScrollArea.Viewport,{"data-slot":`scroll-area-viewport`,"data-overflow-y-end":!0,className:`focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1`,children:a}),(0,t.jsx)(i,{}),(0,t.jsx)(n.ScrollArea.Corner,{})]})}function i({className:r,orientation:i=`vertical`,...a}){return(0,t.jsx)(n.ScrollArea.Scrollbar,{"data-slot":`scroll-area-scrollbar`,"data-orientation":i,orientation:i,className:e.cn({"h-2.5 flex-col border-t border-t-transparent":i===`horizontal`,"h-full w-[7px] border-l border-l-transparent":i===`vertical`},`data-hovering:opacity-100 transition-opacity data-hovering:pointer-events-none opacity-0`,`flex touch-none p-px transition-colors select-none rounded-3xl`,r),...a,children:(0,t.jsx)(n.ScrollArea.Thumb,{"data-slot":`scroll-area-thumb`,className:`rounded-full bg-border relative flex-1`})})}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return r}});
|
|
2
|
-
//# sourceMappingURL=scroll-area-u46BOVcC.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area-u46BOVcC.cjs","names":[],"sources":["../../src/components/ui/scroll-area.tsx"],"sourcesContent":["import { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';\n\nimport { cn } from '@/lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n }: ScrollAreaPrimitive.Root.Props) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn('relative', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n data-overflow-y-end\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n }: ScrollAreaPrimitive.Scrollbar.Props) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n\n className={cn({\n 'h-2.5 flex-col border-t border-t-transparent': orientation === 'horizontal',\n 'h-full w-[7px] border-l border-l-transparent': orientation === 'vertical'\n },\n 'data-hovering:opacity-100 transition-opacity data-hovering:pointer-events-none opacity-0',\n 'flex touch-none p-px transition-colors select-none rounded-3xl',\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"rounded-full bg-border relative flex-1\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n"],"mappings":"+GAIA,SAAS,EAAW,CACI,YACA,WACA,GAAG,GAC4B,CACnD,OACI,EAAA,EAAA,MAAC,EAAA,WAAoB,KAArB,CACI,YAAU,cACV,UAAW,EAAA,GAAG,WAAY,CAAS,EACnC,GAAI,WAHR,EAKI,EAAA,EAAA,KAAC,EAAA,WAAoB,SAArB,CACI,YAAU,uBACV,sBAAA,GACA,UAAU,qJAET,UAEyB,CAAA,GAC9B,EAAA,EAAA,KAAC,EAAD,CAAY,CAAA,GACZ,EAAA,EAAA,KAAC,EAAA,WAAoB,OAArB,CAA6B,CAAA,CACP,GAElC,CAEA,SAAS,EAAU,CACI,YACA,cAAc,WACd,GAAG,GACiC,CACvD,OACI,EAAA,EAAA,KAAC,EAAA,WAAoB,UAArB,CACI,YAAU,wBACV,mBAAkB,EACL,cAEb,UAAW,EAAA,GAAG,CACN,+CAAgD,IAAgB,aAChE,+CAAgD,IAAgB,UACpE,EACA,2FACA,iEACA,CACJ,EACA,GAAI,YAEJ,EAAA,EAAA,KAAC,EAAA,WAAoB,MAArB,CACI,YAAU,oBACV,UAAU,wCACb,CAAA,CAC0B,CAAA,CAEvC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("../lib/strings.cjs"),t=require("../lib/utils.cjs"),n=require("./heading-0DYCOrgC.cjs"),r=require("./badge-D7A2LnSf.cjs"),i=require("./smart-card-B6m7tmt0.cjs"),a=require("./layout.types-CYuDZ_4h.cjs");let o=require("react/jsx-runtime");var s={navigationAriaLabel:`Settings navigation`};function c(e){if(!e)return``;try{let t=typeof window<`u`?window.location.origin:`http://localhost`,n=new URL(e,t).pathname.replace(/\/+$/,``);return n.length>0?n:`/`}catch{let t=(e.split(`?`)[0]??e).replace(/\/+$/,``);return t.length>0?t:`/`}}function l(e,t,n){if(t)return e.id===t;if(!n||!e.href)return!1;let r=c(n),i=c(e.href);return r===i||r.startsWith(`${i}/`)}function u({title:c,description:u,groups:d,currentId:f,currentPath:p,children:m,aside:h,actions:g,footer:_,className:v,navClassName:y,contentClassName:b,renderLink:x,LinkComponent:S,strings:C}){let w=e.useStrings(s,C),T=a.r({renderLink:x,LinkComponent:S});return(0,o.jsxs)(`section`,{"data-component":`aside-nav-shell`,"data-slot":`aside-nav-shell`,className:t.cn(`aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]`,v),children:[(0,o.jsx)(`aside`,{"data-slot":`aside-nav-shell-aside`,className:`aside-nav-shell--aside min-w-0`,children:(0,o.jsxs)(i.t,{padding:`sm`,surface:`card`,className:t.cn(`aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]`,y),contentClassName:`grid gap-4`,children:[!!h&&(0,o.jsx)(`div`,{className:`aside-nav-shell--aside-header`,children:h}),(0,o.jsx)(`nav`,{"aria-label":w.navigationAriaLabel,className:`grid gap-4`,children:d.map(e=>(0,o.jsxs)(`div`,{className:`grid gap-1.5`,children:[!!e.label&&(0,o.jsx)(n.n,{size:`xxs`,type:`secondary`,weight:`medium`,className:`px-2 uppercase tracking-normal`,children:e.label}),(0,o.jsx)(`div`,{className:`grid gap-0.5`,children:e.items.map(e=>{let i=e.icon,a=l(e,f,p),s=(0,o.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[!!i&&(0,o.jsx)(i,{className:t.cn(`size-4 shrink-0`,a?`text-primary`:`text-muted-foreground`)}),(0,o.jsxs)(`span`,{className:`grid min-w-0 flex-1 gap-0.5`,children:[(0,o.jsx)(n.n,{tag:`span`,weight:a?`semibold`:`medium`,className:`truncate`,children:e.label}),!!e.description&&(0,o.jsx)(n.n,{tag:`span`,size:`xs`,type:`secondary`,className:`truncate`,children:e.description})]}),!!e.badge&&(0,o.jsx)(r.t,{variant:a?`primary`:`secondary`,className:`shrink-0`,children:e.badge})]});return(0,o.jsx)(`div`,{onClick:()=>e.onSelect?.(e.id),children:T({href:e.href,children:s,active:a,disabled:e.disabled,external:e.external,className:t.cn(`aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,a?`bg-primary/8 text-foreground`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`,e.disabled&&`pointer-events-none opacity-50`),"aria-label":typeof e.label==`string`?e.label:void 0})},e.id)})})]},e.id))})]})}),(0,o.jsxs)(`div`,{"data-slot":`aside-nav-shell-main`,className:t.cn(`aside-nav-shell--main min-w-0 space-y-4`,b),children:[(c||u||g)&&(0,o.jsxs)(`header`,{className:`aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,children:[(0,o.jsxs)(`div`,{className:`min-w-0`,children:[!!c&&(0,o.jsx)(n.t,{tag:`h2`,className:`border-0 pb-0`,children:c}),!!u&&(0,o.jsx)(n.n,{type:`secondary`,className:`mt-1 max-w-3xl`,children:u})]}),!!g&&(0,o.jsx)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:g})]}),(0,o.jsx)(`div`,{"data-slot":`aside-nav-shell-content`,className:`aside-nav-shell--content min-w-0`,children:m}),!!_&&(0,o.jsx)(`footer`,{className:`aside-nav-shell--footer`,children:_})]})]})}var d=u;u.displayName=`AsideNavShell`,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return u}});
|
|
2
|
-
//# sourceMappingURL=settings-BtNkFHl3.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings-BtNkFHl3.cjs","names":[],"sources":["../../src/components/layout/settings/settings.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport interface AsideNavShellStrings {\n\tnavigationAriaLabel: string;\n}\n\nexport const defaultAsideNavShellStrings: AsideNavShellStrings = {\n\tnavigationAriaLabel: 'Settings navigation',\n};\n\nexport interface AsideNavItem {\n\tid: string;\n\tlabel: ReactNode;\n\thref?: string;\n\tdescription?: ReactNode;\n\ticon?: ComponentType<{ className?: string }>;\n\tbadge?: ReactNode;\n\tdisabled?: boolean;\n\texternal?: boolean;\n\tonSelect?: (id: string) => void;\n}\n\nexport interface AsideNavGroup {\n\tid: string;\n\tlabel?: ReactNode;\n\titems: AsideNavItem[];\n}\n\nexport interface AsideNavShellProps extends LayoutNavigationAdapter {\n\ttitle?: ReactNode;\n\tdescription?: ReactNode;\n\tgroups: AsideNavGroup[];\n\tcurrentId?: string;\n\tcurrentPath?: string;\n\tchildren?: ReactNode;\n\taside?: ReactNode;\n\tactions?: ReactNode;\n\tfooter?: ReactNode;\n\tclassName?: string;\n\tnavClassName?: string;\n\tcontentClassName?: string;\n\tstrings?: StringsProp<AsideNavShellStrings>;\n}\n\nexport type SettingsShellProps = AsideNavShellProps;\n\nfunction normalizePath(rawUrl?: string): string {\n\tif (!rawUrl) return '';\n\ttry {\n\t\tconst baseOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nfunction isActiveItem(item: AsideNavItem, currentId?: string, currentPath?: string): boolean {\n\tif (currentId) return item.id === currentId;\n\tif (!currentPath || !item.href) return false;\n\tconst activePath = normalizePath(currentPath);\n\tconst itemPath = normalizePath(item.href);\n\treturn activePath === itemPath || activePath.startsWith(`${itemPath}/`);\n}\n\nexport function AsideNavShell({\n\ttitle,\n\tdescription,\n\tgroups,\n\tcurrentId,\n\tcurrentPath,\n\tchildren,\n\taside,\n\tactions,\n\tfooter,\n\tclassName,\n\tnavClassName,\n\tcontentClassName,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n}: AsideNavShellProps) {\n\tconst strings = useStrings(defaultAsideNavShellStrings, stringsProp);\n\tconst linkRenderer = resolveLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<section\n\t\t\tdata-component=\"aside-nav-shell\"\n\t\t\tdata-slot=\"aside-nav-shell\"\n\t\t\tclassName={cn('aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]', className)}\n\t\t>\n\t\t\t<aside data-slot=\"aside-nav-shell-aside\" className=\"aside-nav-shell--aside min-w-0\">\n\t\t\t\t<SmartCard\n\t\t\t\t\tpadding=\"sm\"\n\t\t\t\t\tsurface=\"card\"\n\t\t\t\t\tclassName={cn('aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]', navClassName)}\n\t\t\t\t\tcontentClassName=\"grid gap-4\"\n\t\t\t\t>\n\t\t\t\t\t{!!aside && <div className=\"aside-nav-shell--aside-header\">{aside}</div>}\n\t\t\t\t\t<nav aria-label={strings.navigationAriaLabel} className=\"grid gap-4\">\n\t\t\t\t\t\t{groups.map((group) => (\n\t\t\t\t\t\t\t<div key={group.id} className=\"grid gap-1.5\">\n\t\t\t\t\t\t\t\t{!!group.label && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"px-2 uppercase tracking-normal\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className=\"grid gap-0.5\">\n\t\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\t\t\tconst active = isActiveItem(item, currentId, currentPath);\n\t\t\t\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex min-w-0 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-4 shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive ? 'text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"grid min-w-0 flex-1 gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight={active ? 'semibold' : 'medium'} className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant={active ? 'primary' : 'secondary'} className=\"shrink-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div key={item.id} onClick={() => item.onSelect?.(item.id)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{linkRenderer({\n\t\t\t\t\t\t\t\t\t\t\t\t\thref: item.href,\n\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: content,\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled: item.disabled,\n\t\t\t\t\t\t\t\t\t\t\t\t\texternal: item.external,\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-primary/8 text-foreground'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:bg-muted/60 hover:text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t'aria-label': typeof item.label === 'string' ? item.label : undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</nav>\n\t\t\t\t</SmartCard>\n\t\t\t</aside>\n\n\t\t\t<div data-slot=\"aside-nav-shell-main\" className={cn('aside-nav-shell--main min-w-0 space-y-4', contentClassName)}>\n\t\t\t\t{(title || description || actions) && (\n\t\t\t\t\t<header className=\"aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t{!!title && <Heading tag=\"h2\" className=\"border-0 pb-0\">{title}</Heading>}\n\t\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"mt-1 max-w-3xl\">\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!actions && <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{actions}</div>}\n\t\t\t\t\t</header>\n\t\t\t\t)}\n\t\t\t\t<div data-slot=\"aside-nav-shell-content\" className=\"aside-nav-shell--content min-w-0\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t\t{!!footer && <footer className=\"aside-nav-shell--footer\">{footer}</footer>}\n\t\t\t</div>\n\t\t</section>\n\t);\n}\n\nexport const SettingsShell = AsideNavShell;\n\nAsideNavShell.displayName = 'AsideNavShell';\n"],"mappings":"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"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { useStrings as e } from "../lib/strings.js";
|
|
2
|
-
import { cn as t } from "../lib/utils.js";
|
|
3
|
-
import { n, t as r } from "./heading-HeP06nXG.js";
|
|
4
|
-
import { t as i } from "./badge-A8wQRShC.js";
|
|
5
|
-
import { t as a } from "./smart-card-thLb85Ih.js";
|
|
6
|
-
import { r as o } from "./layout.types-j7zZAPtg.js";
|
|
7
|
-
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
|
-
//#region src/components/layout/settings/settings.tsx
|
|
9
|
-
var l = { navigationAriaLabel: "Settings navigation" };
|
|
10
|
-
function u(e) {
|
|
11
|
-
if (!e) return "";
|
|
12
|
-
try {
|
|
13
|
-
let t = typeof window < "u" ? window.location.origin : "http://localhost", n = new URL(e, t).pathname.replace(/\/+$/, "");
|
|
14
|
-
return n.length > 0 ? n : "/";
|
|
15
|
-
} catch {
|
|
16
|
-
let t = (e.split("?")[0] ?? e).replace(/\/+$/, "");
|
|
17
|
-
return t.length > 0 ? t : "/";
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
function d(e, t, n) {
|
|
21
|
-
if (t) return e.id === t;
|
|
22
|
-
if (!n || !e.href) return !1;
|
|
23
|
-
let r = u(n), i = u(e.href);
|
|
24
|
-
return r === i || r.startsWith(`${i}/`);
|
|
25
|
-
}
|
|
26
|
-
function f({ title: u, description: f, groups: p, currentId: m, currentPath: h, children: g, aside: _, actions: v, footer: y, className: b, navClassName: x, contentClassName: S, renderLink: C, LinkComponent: w, strings: T }) {
|
|
27
|
-
let E = e(l, T), D = o({
|
|
28
|
-
renderLink: C,
|
|
29
|
-
LinkComponent: w
|
|
30
|
-
});
|
|
31
|
-
return /* @__PURE__ */ c("section", {
|
|
32
|
-
"data-component": "aside-nav-shell",
|
|
33
|
-
"data-slot": "aside-nav-shell",
|
|
34
|
-
className: t("aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]", b),
|
|
35
|
-
children: [/* @__PURE__ */ s("aside", {
|
|
36
|
-
"data-slot": "aside-nav-shell-aside",
|
|
37
|
-
className: "aside-nav-shell--aside min-w-0",
|
|
38
|
-
children: /* @__PURE__ */ c(a, {
|
|
39
|
-
padding: "sm",
|
|
40
|
-
surface: "card",
|
|
41
|
-
className: t("aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]", x),
|
|
42
|
-
contentClassName: "grid gap-4",
|
|
43
|
-
children: [!!_ && /* @__PURE__ */ s("div", {
|
|
44
|
-
className: "aside-nav-shell--aside-header",
|
|
45
|
-
children: _
|
|
46
|
-
}), /* @__PURE__ */ s("nav", {
|
|
47
|
-
"aria-label": E.navigationAriaLabel,
|
|
48
|
-
className: "grid gap-4",
|
|
49
|
-
children: p.map((e) => /* @__PURE__ */ c("div", {
|
|
50
|
-
className: "grid gap-1.5",
|
|
51
|
-
children: [!!e.label && /* @__PURE__ */ s(n, {
|
|
52
|
-
size: "xxs",
|
|
53
|
-
type: "secondary",
|
|
54
|
-
weight: "medium",
|
|
55
|
-
className: "px-2 uppercase tracking-normal",
|
|
56
|
-
children: e.label
|
|
57
|
-
}), /* @__PURE__ */ s("div", {
|
|
58
|
-
className: "grid gap-0.5",
|
|
59
|
-
children: e.items.map((e) => {
|
|
60
|
-
let r = e.icon, a = d(e, m, h), o = /* @__PURE__ */ c("span", {
|
|
61
|
-
className: "flex min-w-0 items-center gap-2",
|
|
62
|
-
children: [
|
|
63
|
-
!!r && /* @__PURE__ */ s(r, { className: t("size-4 shrink-0", a ? "text-primary" : "text-muted-foreground") }),
|
|
64
|
-
/* @__PURE__ */ c("span", {
|
|
65
|
-
className: "grid min-w-0 flex-1 gap-0.5",
|
|
66
|
-
children: [/* @__PURE__ */ s(n, {
|
|
67
|
-
tag: "span",
|
|
68
|
-
weight: a ? "semibold" : "medium",
|
|
69
|
-
className: "truncate",
|
|
70
|
-
children: e.label
|
|
71
|
-
}), !!e.description && /* @__PURE__ */ s(n, {
|
|
72
|
-
tag: "span",
|
|
73
|
-
size: "xs",
|
|
74
|
-
type: "secondary",
|
|
75
|
-
className: "truncate",
|
|
76
|
-
children: e.description
|
|
77
|
-
})]
|
|
78
|
-
}),
|
|
79
|
-
!!e.badge && /* @__PURE__ */ s(i, {
|
|
80
|
-
variant: a ? "primary" : "secondary",
|
|
81
|
-
className: "shrink-0",
|
|
82
|
-
children: e.badge
|
|
83
|
-
})
|
|
84
|
-
]
|
|
85
|
-
});
|
|
86
|
-
return /* @__PURE__ */ s("div", {
|
|
87
|
-
onClick: () => e.onSelect?.(e.id),
|
|
88
|
-
children: D({
|
|
89
|
-
href: e.href,
|
|
90
|
-
children: o,
|
|
91
|
-
active: a,
|
|
92
|
-
disabled: e.disabled,
|
|
93
|
-
external: e.external,
|
|
94
|
-
className: t("aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40", a ? "bg-primary/8 text-foreground" : "text-muted-foreground hover:bg-muted/60 hover:text-foreground", e.disabled && "pointer-events-none opacity-50"),
|
|
95
|
-
"aria-label": typeof e.label == "string" ? e.label : void 0
|
|
96
|
-
})
|
|
97
|
-
}, e.id);
|
|
98
|
-
})
|
|
99
|
-
})]
|
|
100
|
-
}, e.id))
|
|
101
|
-
})]
|
|
102
|
-
})
|
|
103
|
-
}), /* @__PURE__ */ c("div", {
|
|
104
|
-
"data-slot": "aside-nav-shell-main",
|
|
105
|
-
className: t("aside-nav-shell--main min-w-0 space-y-4", S),
|
|
106
|
-
children: [
|
|
107
|
-
(u || f || v) && /* @__PURE__ */ c("header", {
|
|
108
|
-
className: "aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",
|
|
109
|
-
children: [/* @__PURE__ */ c("div", {
|
|
110
|
-
className: "min-w-0",
|
|
111
|
-
children: [!!u && /* @__PURE__ */ s(r, {
|
|
112
|
-
tag: "h2",
|
|
113
|
-
className: "border-0 pb-0",
|
|
114
|
-
children: u
|
|
115
|
-
}), !!f && /* @__PURE__ */ s(n, {
|
|
116
|
-
type: "secondary",
|
|
117
|
-
className: "mt-1 max-w-3xl",
|
|
118
|
-
children: f
|
|
119
|
-
})]
|
|
120
|
-
}), !!v && /* @__PURE__ */ s("div", {
|
|
121
|
-
className: "flex shrink-0 flex-wrap items-center gap-2",
|
|
122
|
-
children: v
|
|
123
|
-
})]
|
|
124
|
-
}),
|
|
125
|
-
/* @__PURE__ */ s("div", {
|
|
126
|
-
"data-slot": "aside-nav-shell-content",
|
|
127
|
-
className: "aside-nav-shell--content min-w-0",
|
|
128
|
-
children: g
|
|
129
|
-
}),
|
|
130
|
-
!!y && /* @__PURE__ */ s("footer", {
|
|
131
|
-
className: "aside-nav-shell--footer",
|
|
132
|
-
children: y
|
|
133
|
-
})
|
|
134
|
-
]
|
|
135
|
-
})]
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
var p = f;
|
|
139
|
-
f.displayName = "AsideNavShell";
|
|
140
|
-
//#endregion
|
|
141
|
-
export { p as n, l as r, f as t };
|
|
142
|
-
|
|
143
|
-
//# sourceMappingURL=settings-Do6SuM-H.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"settings-Do6SuM-H.js","names":[],"sources":["../../src/components/layout/settings/settings.tsx"],"sourcesContent":["import type { ComponentType, ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { SmartCard } from '@/components/base/cards';\nimport { Heading, Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tresolveLayoutLinkRenderer,\n\ttype LayoutNavigationAdapter,\n} from '../layout.types';\n\nexport interface AsideNavShellStrings {\n\tnavigationAriaLabel: string;\n}\n\nexport const defaultAsideNavShellStrings: AsideNavShellStrings = {\n\tnavigationAriaLabel: 'Settings navigation',\n};\n\nexport interface AsideNavItem {\n\tid: string;\n\tlabel: ReactNode;\n\thref?: string;\n\tdescription?: ReactNode;\n\ticon?: ComponentType<{ className?: string }>;\n\tbadge?: ReactNode;\n\tdisabled?: boolean;\n\texternal?: boolean;\n\tonSelect?: (id: string) => void;\n}\n\nexport interface AsideNavGroup {\n\tid: string;\n\tlabel?: ReactNode;\n\titems: AsideNavItem[];\n}\n\nexport interface AsideNavShellProps extends LayoutNavigationAdapter {\n\ttitle?: ReactNode;\n\tdescription?: ReactNode;\n\tgroups: AsideNavGroup[];\n\tcurrentId?: string;\n\tcurrentPath?: string;\n\tchildren?: ReactNode;\n\taside?: ReactNode;\n\tactions?: ReactNode;\n\tfooter?: ReactNode;\n\tclassName?: string;\n\tnavClassName?: string;\n\tcontentClassName?: string;\n\tstrings?: StringsProp<AsideNavShellStrings>;\n}\n\nexport type SettingsShellProps = AsideNavShellProps;\n\nfunction normalizePath(rawUrl?: string): string {\n\tif (!rawUrl) return '';\n\ttry {\n\t\tconst baseOrigin = typeof window !== 'undefined' ? window.location.origin : 'http://localhost';\n\t\tconst parsed = new URL(rawUrl, baseOrigin);\n\t\tconst trimmed = parsed.pathname.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t} catch {\n\t\tconst clean = rawUrl.split('?')[0] ?? rawUrl;\n\t\tconst trimmed = clean.replace(/\\/+$/, '');\n\t\treturn trimmed.length > 0 ? trimmed : '/';\n\t}\n}\n\nfunction isActiveItem(item: AsideNavItem, currentId?: string, currentPath?: string): boolean {\n\tif (currentId) return item.id === currentId;\n\tif (!currentPath || !item.href) return false;\n\tconst activePath = normalizePath(currentPath);\n\tconst itemPath = normalizePath(item.href);\n\treturn activePath === itemPath || activePath.startsWith(`${itemPath}/`);\n}\n\nexport function AsideNavShell({\n\ttitle,\n\tdescription,\n\tgroups,\n\tcurrentId,\n\tcurrentPath,\n\tchildren,\n\taside,\n\tactions,\n\tfooter,\n\tclassName,\n\tnavClassName,\n\tcontentClassName,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n}: AsideNavShellProps) {\n\tconst strings = useStrings(defaultAsideNavShellStrings, stringsProp);\n\tconst linkRenderer = resolveLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\treturn (\n\t\t<section\n\t\t\tdata-component=\"aside-nav-shell\"\n\t\t\tdata-slot=\"aside-nav-shell\"\n\t\t\tclassName={cn('aside-nav-shell--component grid min-w-0 gap-5 lg:grid-cols-[17rem_minmax(0,1fr)]', className)}\n\t\t>\n\t\t\t<aside data-slot=\"aside-nav-shell-aside\" className=\"aside-nav-shell--aside min-w-0\">\n\t\t\t\t<SmartCard\n\t\t\t\t\tpadding=\"sm\"\n\t\t\t\t\tsurface=\"card\"\n\t\t\t\t\tclassName={cn('aside-nav-shell--nav-card sticky top-[calc(var(--topbar-height)_+_1rem)]', navClassName)}\n\t\t\t\t\tcontentClassName=\"grid gap-4\"\n\t\t\t\t>\n\t\t\t\t\t{!!aside && <div className=\"aside-nav-shell--aside-header\">{aside}</div>}\n\t\t\t\t\t<nav aria-label={strings.navigationAriaLabel} className=\"grid gap-4\">\n\t\t\t\t\t\t{groups.map((group) => (\n\t\t\t\t\t\t\t<div key={group.id} className=\"grid gap-1.5\">\n\t\t\t\t\t\t\t\t{!!group.label && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tsize=\"xxs\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"px-2 uppercase tracking-normal\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{group.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div className=\"grid gap-0.5\">\n\t\t\t\t\t\t\t\t\t{group.items.map((item) => {\n\t\t\t\t\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\t\t\t\t\tconst active = isActiveItem(item, currentId, currentPath);\n\t\t\t\t\t\t\t\t\t\tconst content = (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex min-w-0 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'size-4 shrink-0',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive ? 'text-primary' : 'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"grid min-w-0 flex-1 gap-0.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight={active ? 'semibold' : 'medium'} className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant={active ? 'primary' : 'secondary'} className=\"shrink-0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div key={item.id} onClick={() => item.onSelect?.(item.id)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{linkRenderer({\n\t\t\t\t\t\t\t\t\t\t\t\t\thref: item.href,\n\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: content,\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled: item.disabled,\n\t\t\t\t\t\t\t\t\t\t\t\t\texternal: item.external,\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName: cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'aside-nav-shell--item flex min-w-0 rounded-md px-2 py-2 text-sm transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-primary/8 text-foreground'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'text-muted-foreground hover:bg-muted/60 hover:text-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.disabled && 'pointer-events-none opacity-50',\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t'aria-label': typeof item.label === 'string' ? item.label : undefined,\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</nav>\n\t\t\t\t</SmartCard>\n\t\t\t</aside>\n\n\t\t\t<div data-slot=\"aside-nav-shell-main\" className={cn('aside-nav-shell--main min-w-0 space-y-4', contentClassName)}>\n\t\t\t\t{(title || description || actions) && (\n\t\t\t\t\t<header className=\"aside-nav-shell--header flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t{!!title && <Heading tag=\"h2\" className=\"border-0 pb-0\">{title}</Heading>}\n\t\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t\t<Text type=\"secondary\" className=\"mt-1 max-w-3xl\">\n\t\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!actions && <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{actions}</div>}\n\t\t\t\t\t</header>\n\t\t\t\t)}\n\t\t\t\t<div data-slot=\"aside-nav-shell-content\" className=\"aside-nav-shell--content min-w-0\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t\t{!!footer && <footer className=\"aside-nav-shell--footer\">{footer}</footer>}\n\t\t\t</div>\n\t\t</section>\n\t);\n}\n\nexport const SettingsShell = AsideNavShell;\n\nAsideNavShell.displayName = 'AsideNavShell';\n"],"mappings":"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"}
|