admin-ui-starter-kit 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/admin-ui-consumer-migration/SKILL.md +10 -0
- package/.agents/skills/admin-ui-consumer-migration/references/actions-service.md +377 -0
- package/CHANGELOG.md +37 -1
- package/COMPONENT_SELECTION.md +10 -1
- package/INTEGRATION.md +93 -0
- package/README.md +95 -1
- package/dist/_shared/accordion-Df1XrCDv.cjs +2 -0
- package/dist/_shared/accordion-Df1XrCDv.cjs.map +1 -0
- package/dist/_shared/accordion-Rzi9wEl6.js +130 -0
- package/dist/_shared/accordion-Rzi9wEl6.js.map +1 -0
- package/dist/_shared/action-menu-CrOJ63Q9.js +96 -0
- package/dist/_shared/action-menu-CrOJ63Q9.js.map +1 -0
- package/dist/_shared/action-menu-D9OowHKx.cjs +2 -0
- package/dist/_shared/action-menu-D9OowHKx.cjs.map +1 -0
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs +3 -0
- package/dist/_shared/ai-artifact-D4EjKoq6.cjs.map +1 -0
- package/dist/_shared/ai-artifact-nlOrSeqT.js +1099 -0
- package/dist/_shared/ai-artifact-nlOrSeqT.js.map +1 -0
- package/dist/_shared/auth-C5HawWvp.cjs +2 -0
- package/dist/_shared/auth-C5HawWvp.cjs.map +1 -0
- package/dist/_shared/auth-DnMEJXP9.js +643 -0
- package/dist/_shared/auth-DnMEJXP9.js.map +1 -0
- package/dist/_shared/badge-6WYAMJwA.js +108 -0
- package/dist/_shared/badge-6WYAMJwA.js.map +1 -0
- package/dist/_shared/badge-CBof1rbF.cjs +2 -0
- package/dist/_shared/badge-CBof1rbF.cjs.map +1 -0
- package/dist/_shared/button-BGKY8UY0.js +173 -0
- package/dist/_shared/button-BGKY8UY0.js.map +1 -0
- package/dist/_shared/button-BI347RlM.cjs +2 -0
- package/dist/_shared/button-BI347RlM.cjs.map +1 -0
- package/dist/_shared/button-DEFoa7-c.cjs +2 -0
- package/dist/_shared/button-DEFoa7-c.cjs.map +1 -0
- package/dist/_shared/button-DlqryxqA.js +46 -0
- package/dist/_shared/button-DlqryxqA.js.map +1 -0
- package/dist/_shared/buttons-PL-TGJ32.js +143 -0
- package/dist/_shared/buttons-PL-TGJ32.js.map +1 -0
- package/dist/_shared/buttons-kVvSD_oI.cjs +2 -0
- package/dist/_shared/buttons-kVvSD_oI.cjs.map +1 -0
- package/dist/_shared/combobox-B4KmDZK0.cjs +2 -0
- package/dist/_shared/combobox-B4KmDZK0.cjs.map +1 -0
- package/dist/_shared/combobox-YUGi3xSc.js +810 -0
- package/dist/_shared/combobox-YUGi3xSc.js.map +1 -0
- package/dist/_shared/comments-GzXdwpq4.js +952 -0
- package/dist/_shared/comments-GzXdwpq4.js.map +1 -0
- package/dist/_shared/comments-Zj_foV1V.cjs +2 -0
- package/dist/_shared/comments-Zj_foV1V.cjs.map +1 -0
- package/dist/_shared/date-picker-Dl91BM3D.js +1361 -0
- package/dist/_shared/date-picker-Dl91BM3D.js.map +1 -0
- package/dist/_shared/date-picker-zFOqtmAS.cjs +2 -0
- package/dist/_shared/date-picker-zFOqtmAS.cjs.map +1 -0
- package/dist/_shared/date-pickers-BBydcIjN.cjs +2 -0
- package/dist/_shared/date-pickers-BBydcIjN.cjs.map +1 -0
- package/dist/_shared/date-pickers-D2OsgV4V.js +330 -0
- package/dist/_shared/date-pickers-D2OsgV4V.js.map +1 -0
- package/dist/_shared/dialog-CCN4tjU9.js +101 -0
- package/dist/_shared/dialog-CCN4tjU9.js.map +1 -0
- package/dist/_shared/dialog-Dd0ENSrU.cjs +2 -0
- package/dist/_shared/dialog-Dd0ENSrU.cjs.map +1 -0
- package/dist/_shared/display-Dhy5ogxC.cjs +2 -0
- package/dist/_shared/display-Dhy5ogxC.cjs.map +1 -0
- package/dist/_shared/display-NBtWdAMl.js +1154 -0
- package/dist/_shared/display-NBtWdAMl.js.map +1 -0
- package/dist/_shared/forms-BweX9Lm8.cjs +2 -0
- package/dist/_shared/forms-BweX9Lm8.cjs.map +1 -0
- package/dist/_shared/forms-L1hyNKpZ.js +3430 -0
- package/dist/_shared/forms-L1hyNKpZ.js.map +1 -0
- package/dist/_shared/header-BSBPtGn4.cjs +2 -0
- package/dist/_shared/header-BSBPtGn4.cjs.map +1 -0
- package/dist/_shared/header-No6GSp4R.js +360 -0
- package/dist/_shared/header-No6GSp4R.js.map +1 -0
- package/dist/_shared/hooks-BkXvZ4py.js +118 -0
- package/dist/_shared/hooks-BkXvZ4py.js.map +1 -0
- package/dist/_shared/hooks-D3SbLBRk.cjs +2 -0
- package/dist/_shared/hooks-D3SbLBRk.cjs.map +1 -0
- package/dist/_shared/mentions-CA1Ka_Bv.cjs +2 -0
- package/dist/_shared/mentions-CA1Ka_Bv.cjs.map +1 -0
- package/dist/_shared/mentions-CdvvLGQG.js +506 -0
- package/dist/_shared/mentions-CdvvLGQG.js.map +1 -0
- package/dist/_shared/metadata-Ckcmar8d.js +235 -0
- package/dist/_shared/metadata-Ckcmar8d.js.map +1 -0
- package/dist/_shared/metadata-DamdYVZL.cjs +2 -0
- package/dist/_shared/metadata-DamdYVZL.cjs.map +1 -0
- package/dist/_shared/navigation-BemwPPC8.cjs +2 -0
- package/dist/_shared/navigation-BemwPPC8.cjs.map +1 -0
- package/dist/_shared/navigation-DY540HB0.js +419 -0
- package/dist/_shared/navigation-DY540HB0.js.map +1 -0
- package/dist/_shared/overlays-CJs_syAu.js +648 -0
- package/dist/_shared/overlays-CJs_syAu.js.map +1 -0
- package/dist/_shared/overlays-DWFEaAog.cjs +2 -0
- package/dist/_shared/overlays-DWFEaAog.cjs.map +1 -0
- package/dist/_shared/page-Cg_gNpyK.js +262 -0
- package/dist/_shared/page-Cg_gNpyK.js.map +1 -0
- package/dist/_shared/page-CpFWQuWU.cjs +2 -0
- package/dist/_shared/page-CpFWQuWU.cjs.map +1 -0
- package/dist/_shared/rich-text-editor-B2VqNi6j.js +620 -0
- package/dist/_shared/rich-text-editor-B2VqNi6j.js.map +1 -0
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs +2 -0
- package/dist/_shared/rich-text-editor-ChE-pI3N.cjs.map +1 -0
- package/dist/_shared/sheet-BOgUA4fC.cjs +2 -0
- package/dist/_shared/sheet-BOgUA4fC.cjs.map +1 -0
- package/dist/_shared/sheet-DWQuyRRz.js +100 -0
- package/dist/_shared/sheet-DWQuyRRz.js.map +1 -0
- package/dist/_shared/sidebar-BGpi9K_Q.js +389 -0
- package/dist/_shared/sidebar-BGpi9K_Q.js.map +1 -0
- package/dist/_shared/sidebar-BTFfxmNG.cjs +2 -0
- package/dist/_shared/sidebar-BTFfxmNG.cjs.map +1 -0
- package/dist/_shared/sidebar-CC3lcvNX.cjs +2 -0
- package/dist/_shared/sidebar-CC3lcvNX.cjs.map +1 -0
- package/dist/_shared/sidebar-wmztVpnO.js +538 -0
- package/dist/_shared/sidebar-wmztVpnO.js.map +1 -0
- package/dist/_shared/smart-card-B6m7tmt0.cjs +2 -0
- package/dist/_shared/smart-card-B6m7tmt0.cjs.map +1 -0
- package/dist/_shared/smart-card-thLb85Ih.js +361 -0
- package/dist/_shared/smart-card-thLb85Ih.js.map +1 -0
- package/dist/_shared/table-BItnJ8lG.cjs +2 -0
- package/dist/_shared/table-BItnJ8lG.cjs.map +1 -0
- package/dist/_shared/table-D3349b-v.js +1189 -0
- package/dist/_shared/table-D3349b-v.js.map +1 -0
- package/dist/_shared/workspace-BGVeTeJy.js +357 -0
- package/dist/_shared/workspace-BGVeTeJy.js.map +1 -0
- package/dist/_shared/workspace-CWyzTUmE.cjs +2 -0
- package/dist/_shared/workspace-CWyzTUmE.cjs.map +1 -0
- package/dist/components/base/accordion/index.cjs +1 -1
- package/dist/components/base/accordion/index.js +1 -1
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/index.js +1 -1
- package/dist/components/base/buttons/index.cjs +1 -1
- package/dist/components/base/buttons/index.js +2 -2
- package/dist/components/base/cards/index.cjs +1 -1
- package/dist/components/base/cards/index.js +1 -1
- package/dist/components/base/carousel/index.cjs +1 -1
- package/dist/components/base/carousel/index.js +1 -1
- package/dist/components/base/combobox/index.cjs +1 -1
- package/dist/components/base/combobox/index.js +1 -1
- package/dist/components/base/date-pickers/index.cjs +1 -1
- package/dist/components/base/date-pickers/index.js +2 -2
- package/dist/components/base/display/alert.d.ts +1 -1
- package/dist/components/base/display/index.cjs +1 -1
- package/dist/components/base/display/index.js +6 -6
- package/dist/components/base/display/metadata/index.cjs +1 -1
- package/dist/components/base/display/metadata/index.js +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.js +41 -41
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +1 -1
- package/dist/components/base/map/index.cjs +1 -1
- package/dist/components/base/map/index.js +31 -31
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/index.js +2 -2
- package/dist/components/base/sheet/index.cjs +1 -1
- package/dist/components/base/sheet/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/table/index.cjs +1 -1
- package/dist/components/base/table/index.js +1 -1
- package/dist/components/composed/admin/index.cjs +1 -1
- package/dist/components/composed/admin/index.js +47 -47
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.js +105 -105
- package/dist/components/composed/analytics/index.cjs +1 -1
- package/dist/components/composed/analytics/index.js +89 -89
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.js +116 -116
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.js +127 -127
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.js +37 -37
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.js +3 -3
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.js +55 -55
- package/dist/components/composed/onboarding/index.cjs +1 -1
- package/dist/components/composed/onboarding/index.js +1 -1
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.js +2 -2
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.js +56 -56
- package/dist/components/features/ai-chat/index.cjs +2 -2
- package/dist/components/features/ai-chat/index.js +53 -53
- package/dist/components/features/card/index.cjs +1 -1
- package/dist/components/features/card/index.js +21 -21
- package/dist/components/features/comments/index.cjs +1 -1
- package/dist/components/features/comments/index.js +2 -2
- package/dist/components/features/event-log/index.cjs +1 -1
- package/dist/components/features/event-log/index.js +3 -3
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.js +143 -143
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.js +57 -57
- package/dist/components/features/kanban/index.cjs +1 -1
- package/dist/components/features/kanban/index.js +14 -14
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.js +178 -178
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/alert-dialog.d.ts.map +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts.map +1 -1
- package/dist/components/features/overlays/index.cjs +1 -1
- package/dist/components/features/overlays/index.js +1 -1
- package/dist/components/features/overlays/overlays.types.d.ts +1 -0
- package/dist/components/features/overlays/overlays.types.d.ts.map +1 -1
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.js +124 -124
- 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.js +26 -26
- package/dist/components/features/suggestions/index.cjs +1 -1
- package/dist/components/features/suggestions/index.js +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.js +6 -6
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/sidebar/index.cjs +1 -1
- package/dist/components/layout/sidebar/index.js +2 -2
- package/dist/components/layout/workspace/index.cjs +1 -1
- package/dist/components/layout/workspace/index.js +1 -1
- package/dist/components/ui/alert.d.ts +1 -1
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/services/actions/action-adapters.d.ts +97 -0
- package/dist/services/actions/action-adapters.d.ts.map +1 -0
- package/dist/services/actions/action-overlay-outlet.d.ts +4 -0
- package/dist/services/actions/action-overlay-outlet.d.ts.map +1 -0
- package/dist/services/actions/action-provider.d.ts +8 -0
- package/dist/services/actions/action-provider.d.ts.map +1 -0
- package/dist/services/actions/action-scope.d.ts +4 -0
- package/dist/services/actions/action-scope.d.ts.map +1 -0
- package/dist/services/actions/action-store.d.ts +56 -0
- package/dist/services/actions/action-store.d.ts.map +1 -0
- package/dist/services/actions/actions.strings.d.ts +3 -0
- package/dist/services/actions/actions.strings.d.ts.map +1 -0
- package/dist/services/actions/actions.types.d.ts +309 -0
- package/dist/services/actions/actions.types.d.ts.map +1 -0
- package/dist/services/actions/hooks.d.ts +9 -0
- package/dist/services/actions/hooks.d.ts.map +1 -0
- package/dist/services/actions/index.cjs +2 -0
- package/dist/services/actions/index.cjs.map +1 -0
- package/dist/services/actions/index.d.ts +9 -0
- package/dist/services/actions/index.d.ts.map +1 -0
- package/dist/services/actions/index.js +844 -0
- package/dist/services/actions/index.js.map +1 -0
- package/dist/showcase/assets/AreaChart-BYEewdc_.js +6 -0
- package/dist/showcase/assets/CompositeItem-Duekeg4m.js +1 -0
- package/dist/showcase/assets/CompositeRoot-BgNU3T7R.js +1 -0
- package/dist/showcase/assets/DialogTrigger-9xWmoeF5.js +1 -0
- package/dist/showcase/assets/LabelableContext-B3W_70Qk.js +1 -0
- package/dist/showcase/assets/PreviewLayout-nADJqRlP.js +1 -0
- package/dist/showcase/assets/RadioGroup-Bp1VCzxr.js +1 -0
- package/dist/showcase/assets/Separator-9PWX3shz.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-DwELw9xS.js +1 -0
- package/dist/showcase/assets/accordion-CfqHO9_z.js +171 -0
- package/dist/showcase/assets/accordion-variants-pkPHxkLW.js +1 -0
- package/dist/showcase/assets/action-menu-DFzSuDjI.js +1 -0
- package/dist/showcase/assets/activities-Bo97b2-I.js +501 -0
- package/dist/showcase/assets/activities-feed-card-D77gf27B.js +1 -0
- package/dist/showcase/assets/activity-BUlCWLI8.js +1 -0
- package/dist/showcase/assets/admin-CxTV4kZX.js +80 -0
- package/dist/showcase/assets/ai-Bym5H8bn.js +41 -0
- package/dist/showcase/assets/ai-artifact-DZVl1WmK.js +2 -0
- package/dist/showcase/assets/ai-chat-M3X5-PgT.js +568 -0
- package/dist/showcase/assets/ai-elements-DjppcMBD.js +387 -0
- package/dist/showcase/assets/ai-new-CXnrIi5S.js +167 -0
- package/dist/showcase/assets/ai-tool-call-DyMI8DqD.js +1 -0
- package/dist/showcase/assets/alert-D6Pygy2s.js +62 -0
- package/dist/showcase/assets/alert-DCrWLbEx.js +93 -0
- package/dist/showcase/assets/alert-qTNM0vld.js +1 -0
- package/dist/showcase/assets/api-key-list-CCpuHYHc.js +73 -0
- package/dist/showcase/assets/app-sidebar-CxTRNC5L.js +1 -0
- package/dist/showcase/assets/arrow-down--phuskCV.js +1 -0
- package/dist/showcase/assets/arrow-left-B__WWqyA.js +1 -0
- package/dist/showcase/assets/arrow-right-1-EvXxjB.js +1 -0
- package/dist/showcase/assets/arrow-up-lWotnmo7.js +1 -0
- package/dist/showcase/assets/arrow-up-right-IyQ3oeq0.js +1 -0
- package/dist/showcase/assets/avatar-gugtNx4D.js +57 -0
- package/dist/showcase/assets/avatar-n1nywTlx.js +1 -0
- package/dist/showcase/assets/badge-TuE-u3Hv.js +28 -0
- package/dist/showcase/assets/badge-check-CPDvpVzK.js +1 -0
- package/dist/showcase/assets/bell-DeCVddCA.js +1 -0
- package/dist/showcase/assets/bot-B_vzJEJH.js +1 -0
- package/dist/showcase/assets/box-z4O8t_K5.js +1 -0
- package/dist/showcase/assets/brain-DdKBE4Bh.js +1 -0
- package/dist/showcase/assets/brand-CfW7mgTY.js +36 -0
- package/dist/showcase/assets/breadcrumb-B4TBbKv3.js +52 -0
- package/dist/showcase/assets/breadcrumb-bF_sFVBL.js +1 -0
- package/dist/showcase/assets/breadcrumbs-CBv3EaMX.js +1 -0
- package/dist/showcase/assets/briefcase-ClqzeNt3.js +1 -0
- package/dist/showcase/assets/building-2-BQuWgjZj.js +1 -0
- package/dist/showcase/assets/button-CWKNCI82.js +44 -0
- package/dist/showcase/assets/button-group-BYhxtFwV.js +1 -0
- package/dist/showcase/assets/buttons-mBRyBw3Q.js +270 -0
- package/dist/showcase/assets/calendar-BgloJjlW.js +1 -0
- package/dist/showcase/assets/calendar-CJDWspzi.js +1 -0
- package/dist/showcase/assets/calendar-CgML2kJt.js +16 -0
- package/dist/showcase/assets/calendar-days-C0gTLVnY.js +1 -0
- package/dist/showcase/assets/camera-nIlaz4Sn.js +1 -0
- package/dist/showcase/assets/card-1ncRnRvq.js +1 -0
- package/dist/showcase/assets/card-CcgWzFB-.js +188 -0
- package/dist/showcase/assets/card-primitives-By4-RTuP.js +1 -0
- package/dist/showcase/assets/card-radio-group-DeX3qsRg.js +1 -0
- package/dist/showcase/assets/cards-DdqQr8rY.js +328 -0
- package/dist/showcase/assets/carousel-CV8ltDl8.js +449 -0
- package/dist/showcase/assets/chart-BNzHjskC.js +358 -0
- package/dist/showcase/assets/chart-column-CpTxRLEH.js +1 -0
- package/dist/showcase/assets/checkbox-CZTTm4Dv.js +1 -0
- package/dist/showcase/assets/chevron-down-LWBNHe9S.js +1 -0
- package/dist/showcase/assets/chevron-left-BsshO7nf.js +1 -0
- package/dist/showcase/assets/chevron-right-t68um2_G.js +1 -0
- package/dist/showcase/assets/chevron-up-DjhlESJB.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-ZUo0Do59.js +1 -0
- package/dist/showcase/assets/circle-BL52dLr9.js +1 -0
- package/dist/showcase/assets/circle-alert-CXCt6zxc.js +1 -0
- package/dist/showcase/assets/circle-check-CbiRRw7s.js +1 -0
- package/dist/showcase/assets/circle-check-big-BSgn7lyt.js +1 -0
- package/dist/showcase/assets/circle-dot-WEOpGGJf.js +1 -0
- package/dist/showcase/assets/circle-question-mark-C9hLlsD7.js +1 -0
- package/dist/showcase/assets/circle-x-BT9TJbJC.js +1 -0
- package/dist/showcase/assets/clock-3-CfRK8ckc.js +1 -0
- package/dist/showcase/assets/clock-D-3zf0c1.js +1 -0
- package/dist/showcase/assets/code-xml-CQYKKuBU.js +1 -0
- package/dist/showcase/assets/collapsible-BC0hQvat.js +27 -0
- package/dist/showcase/assets/collapsible-CRVtVDCF.js +1 -0
- package/dist/showcase/assets/combobox-D4VYvYCT.js +696 -0
- package/dist/showcase/assets/command-CxeHT4lL.js +1 -0
- package/dist/showcase/assets/command-Do_t_Zou.js +1 -0
- package/dist/showcase/assets/comment-composer-DoFwvVlq.js +1 -0
- package/dist/showcase/assets/comment-item-CT8UbVeg.js +1 -0
- package/dist/showcase/assets/comments-CqdXrjUn.js +357 -0
- package/dist/showcase/assets/commerce-B9V2Wo_q.js +79 -0
- package/dist/showcase/assets/commerce-extras-CNT3QmAT.js +189 -0
- package/dist/showcase/assets/composite-BXLXcagx.js +1 -0
- package/dist/showcase/assets/contact-card-BLcAXepj.js +65 -0
- package/dist/showcase/assets/content-container-DJVD3ZmI.js +1 -0
- package/dist/showcase/assets/copyable-od17NrMu.js +96 -0
- package/dist/showcase/assets/course-card-CdZQr5yy.js +77 -0
- package/dist/showcase/assets/cpu-B8kRNR1R.js +1 -0
- package/dist/showcase/assets/credit-card-BYMQj03s.js +1 -0
- package/dist/showcase/assets/currency-Cxv3Cp6B.js +149 -0
- package/dist/showcase/assets/dark-surfaces-Cfp58iFb.js +90 -0
- package/dist/showcase/assets/database-DuUABvxU.js +1 -0
- package/dist/showcase/assets/date-block-E9qfY7W7.js +1 -0
- package/dist/showcase/assets/date-picker-I8BdaiiU.js +1 -0
- package/dist/showcase/assets/date-pickers-BLJaqhcS.js +73 -0
- package/dist/showcase/assets/dense-info-Bk1K_7Ww.js +106 -0
- package/dist/showcase/assets/dialog-BuatDnQ9.js +1 -0
- package/dist/showcase/assets/dialog-DCx-LydW.js +1 -0
- package/dist/showcase/assets/display-Bt7busw5.js +403 -0
- package/dist/showcase/assets/dist-BPyBHOXU.js +45 -0
- package/dist/showcase/assets/dollar-sign-qXQSS6Gh.js +1 -0
- package/dist/showcase/assets/download-B2JAmHmJ.js +1 -0
- package/dist/showcase/assets/dropdown-menu-DXT3BZLa.js +1 -0
- package/dist/showcase/assets/dropzone-BKIxDJNy.js +1 -0
- package/dist/showcase/assets/earth-7-Z3Gv2v.js +1 -0
- package/dist/showcase/assets/ellipsis-6Krb3RRW.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-DeOMIw1J.js +1 -0
- package/dist/showcase/assets/empty-BSYKaeXQ.js +1 -0
- package/dist/showcase/assets/empty-item-YElgv25f.js +49 -0
- package/dist/showcase/assets/empty-state-D-LrvnKF.js +1 -0
- package/dist/showcase/assets/empty-state-dNh1GtVU.js +188 -0
- package/dist/showcase/assets/enhanced-activities-Bw99ItYl.js +361 -0
- package/dist/showcase/assets/enhanced-combobox-CqLZmU3K.js +1 -0
- package/dist/showcase/assets/event-calendar-CcSi7g5A.js +138 -0
- package/dist/showcase/assets/event-log-2uq-eYxh.js +330 -0
- package/dist/showcase/assets/example-CTJ8AdNR.js +1 -0
- package/dist/showcase/assets/external-link-D0gqSa1q.js +1 -0
- package/dist/showcase/assets/eye-CDMCDLei.js +1 -0
- package/dist/showcase/assets/feature-announcement-BlyNck35.js +34 -0
- package/dist/showcase/assets/file-Y5EbzufX.js +1 -0
- package/dist/showcase/assets/file-text-DH1mBuPi.js +1 -0
- package/dist/showcase/assets/filters-BtHF4GSM.js +78 -0
- package/dist/showcase/assets/flag-CJ08LwLY.js +1 -0
- package/dist/showcase/assets/folder-open-DODo2pjy.js +1 -0
- package/dist/showcase/assets/form-field-CHY7jh1q.js +1 -0
- package/dist/showcase/assets/format-DYJqAuDM.js +1 -0
- package/dist/showcase/assets/forms-DgvQQXHO.js +862 -0
- package/dist/showcase/assets/frame-CdKicP4A.js +167 -0
- package/dist/showcase/assets/getPseudoElementBounds-D9-Hr3mO.js +1 -0
- package/dist/showcase/assets/gift-DD8O7cld.js +1 -0
- package/dist/showcase/assets/giftcard-cards-Dp9eYodY.js +85 -0
- package/dist/showcase/assets/git-branch-DZq1Vo2G.js +1 -0
- package/dist/showcase/assets/global-search-BqDotXql.js +215 -0
- package/dist/showcase/assets/global-search-PH6LXqZw.js +1 -0
- package/dist/showcase/assets/globe-mRTwrUxM.js +1 -0
- package/dist/showcase/assets/gradient-card-CaL88YKv.js +58 -0
- package/dist/showcase/assets/hash-DuqvHQHv.js +1 -0
- package/dist/showcase/assets/header-CiNgDop3.js +1 -0
- package/dist/showcase/assets/header-notifications-B9XMBsK_.js +1 -0
- package/dist/showcase/assets/heart-DsGJfnDx.js +1 -0
- package/dist/showcase/assets/house-B504aFIP.js +1 -0
- package/dist/showcase/assets/icon-badge-DMNu8xb5.js +1 -0
- package/dist/showcase/assets/image-C3DaMxmn.js +1 -0
- package/dist/showcase/assets/inbox-BWKQMLMx.js +1 -0
- package/dist/showcase/assets/index-DaYVSqKu.js +10 -0
- package/dist/showcase/assets/inertValue-DrtTkMGx.js +1 -0
- package/dist/showcase/assets/info-_FrGoCay.js +1 -0
- package/dist/showcase/assets/inline-stat-BYu-tiUU.js +1 -0
- package/dist/showcase/assets/input-C96HMHWR.js +1 -0
- package/dist/showcase/assets/input-fMPi7XxI.js +1 -0
- package/dist/showcase/assets/input-group-BZnSgFCn.js +47 -0
- package/dist/showcase/assets/input-group-CVONNP3T.js +1 -0
- package/dist/showcase/assets/inputs-Blh0LJ8-.js +155 -0
- package/dist/showcase/assets/invoice-header-Bpo4iwX3.js +36 -0
- package/dist/showcase/assets/invoice-items-OVIrbG0k.js +36 -0
- package/dist/showcase/assets/invoice-mini-CaOMTiUO.js +14 -0
- package/dist/showcase/assets/invoice-table-BXd_HhUg.js +30 -0
- package/dist/showcase/assets/isSameDay-NBVO9AKF.js +1 -0
- package/dist/showcase/assets/isToday-Bk5HMXWn.js +1 -0
- package/dist/showcase/assets/italic-BOv5bW4H.js +1 -0
- package/dist/showcase/assets/item-B4rdcVVp.js +134 -0
- package/dist/showcase/assets/item-BVt0zZ12.js +1 -0
- package/dist/showcase/assets/item-C4Xk3DC1.js +1 -0
- package/dist/showcase/assets/kanban-BXbelelR.js +186 -0
- package/dist/showcase/assets/label-Cv6wotdv.js +1 -0
- package/dist/showcase/assets/languages-BofyvcCF.js +1 -0
- package/dist/showcase/assets/layers-DJK0t5px.js +1 -0
- package/dist/showcase/assets/layout-app-shell-D_yMonSl.js +608 -0
- package/dist/showcase/assets/layout-auth-BTvSTwUz.js +754 -0
- package/dist/showcase/assets/layout-containers-PMuo__2O.js +101 -0
- package/dist/showcase/assets/layout-header-DQ3zeCHz.js +170 -0
- package/dist/showcase/assets/layout-page-CbvWdHrK.js +122 -0
- package/dist/showcase/assets/layout-primitives-6nsFFIdE.js +34 -0
- package/dist/showcase/assets/layout-sidebar-CKqeVCSY.js +224 -0
- package/dist/showcase/assets/layout-users-Cypq-42s.js +117 -0
- package/dist/showcase/assets/layout-workspace-DiRR8vDv.js +183 -0
- package/dist/showcase/assets/lock-DXmvLEEx.js +1 -0
- package/dist/showcase/assets/lock-keyhole-Cu6M-jjE.js +1 -0
- package/dist/showcase/assets/mail-CXVFHkzh.js +1 -0
- package/dist/showcase/assets/mail-check-BNEu3j2a.js +1 -0
- package/dist/showcase/assets/map-DnE1pFCQ.js +124 -0
- package/dist/showcase/assets/map-pin-CpOVa8IH.js +1 -0
- package/dist/showcase/assets/media-library-C-KfEvm4.js +695 -0
- package/dist/showcase/assets/mention-inline-suggestions-DlmslsfR.js +1 -0
- package/dist/showcase/assets/mentions-C8ZdNFuC.js +138 -0
- package/dist/showcase/assets/menus-B8yUL75K.js +165 -0
- package/dist/showcase/assets/message-square-DNOTaOFs.js +1 -0
- package/dist/showcase/assets/metadata-list-BQAanxM-.js +1 -0
- package/dist/showcase/assets/metadata-list-DL9qgDAp.js +288 -0
- package/dist/showcase/assets/metric-CYi09Ltx.js +1 -0
- package/dist/showcase/assets/metric-bar-CQH1z8T3.js +1 -0
- package/dist/showcase/assets/metric-grid-H1ixqMCI.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-BBzWzFZ-.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-C7Z2ITl4.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-CZZSWiMn.js +50 -0
- package/dist/showcase/assets/metrics-comparison-BPqz8k30.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-C3NYZAfx.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-RjHfm7um.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-DnBjyDH4.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-CKn405qb.js +42 -0
- package/dist/showcase/assets/metrics-overview-D8YGtdrh.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-Dxh6cAha.js +54 -0
- package/dist/showcase/assets/minus-20OTSSxf.js +1 -0
- package/dist/showcase/assets/money-display-BoiAMxH8.js +1 -0
- package/dist/showcase/assets/month-year-picker-Bl59Ygq9.js +1 -0
- package/dist/showcase/assets/navigation-B8d2CDU6.js +90 -0
- package/dist/showcase/assets/navigation-D16JX3kL.js +230 -0
- package/dist/showcase/assets/navigation-extras-Dm83uT6i.js +43 -0
- package/dist/showcase/assets/onboarding-checklist-DznDpP9M.js +119 -0
- package/dist/showcase/assets/overlays-CzlSqbFz.js +408 -0
- package/dist/showcase/assets/overlays-DUFqbkb9.js +159 -0
- package/dist/showcase/assets/package-BCXIwEPz.js +1 -0
- package/dist/showcase/assets/package-check-Ol-Cw3j-.js +1 -0
- package/dist/showcase/assets/page-action-button-DpzdSYvw.js +1 -0
- package/dist/showcase/assets/page-header-B_b7SqW8.js +1 -0
- package/dist/showcase/assets/pagination-BPDQo9Dl.js +1 -0
- package/dist/showcase/assets/pagination-PvkEX0qs.js +42 -0
- package/dist/showcase/assets/paperclip-CznEsmLN.js +1 -0
- package/dist/showcase/assets/password-input-CWMY5q3b.js +1 -0
- package/dist/showcase/assets/pencil-Cl9qi90g.js +1 -0
- package/dist/showcase/assets/phone-DbvK_QQJ.js +1 -0
- package/dist/showcase/assets/plus-CO8t66Yo.js +1 -0
- package/dist/showcase/assets/popover-3QIVx9lU.js +1 -0
- package/dist/showcase/assets/popover-Cyg9oYIU.js +1 -0
- package/dist/showcase/assets/popover-menu-DJPHeIL1.js +1 -0
- package/dist/showcase/assets/products-WsU-qdMz.js +407 -0
- package/dist/showcase/assets/progress-C61sf-qt.js +1 -0
- package/dist/showcase/assets/progress-PvTl8Fgf.js +18 -0
- package/dist/showcase/assets/props-table-C8la6vcG.js +1 -0
- package/dist/showcase/assets/props.generated-vFrhDrth.json +38618 -0
- package/dist/showcase/assets/quote-N1_lRDnX.js +1 -0
- package/dist/showcase/assets/receipt-C6a_WyLu.js +1 -0
- package/dist/showcase/assets/receipt-text-CDOh8FAv.js +1 -0
- package/dist/showcase/assets/refresh-cw-D4-ECZ1x.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-DqAP3zJd.js +1 -0
- package/dist/showcase/assets/rich-text-editor-CU0IZpwV.js +143 -0
- package/dist/showcase/assets/rich-text-editor-DCU7mMoO.js +124 -0
- package/dist/showcase/assets/rotate-ccw-Dd5zEmr7.js +1 -0
- package/dist/showcase/assets/save-DDmFSQli.js +1 -0
- package/dist/showcase/assets/schema-form-B7naqMvv.js +325 -0
- package/dist/showcase/assets/scroll-area-CdaYm4UK.js +32 -0
- package/dist/showcase/assets/scroll-area-DwWSHYHB.js +1 -0
- package/dist/showcase/assets/select-CNzpb5ug.js +1 -0
- package/dist/showcase/assets/select-DBXZ_Wzf.js +1 -0
- package/dist/showcase/assets/send-eDm7YMmA.js +1 -0
- package/dist/showcase/assets/separator-4IC9ED7s.js +1 -0
- package/dist/showcase/assets/separator-DPGDsZpG.js +28 -0
- package/dist/showcase/assets/settings-IANZGo2i.js +1 -0
- package/dist/showcase/assets/sheet-2oCce5ae.js +1 -0
- package/dist/showcase/assets/shield-CDZhhvFW.js +1 -0
- package/dist/showcase/assets/shield-alert-5hL3sdf3.js +1 -0
- package/dist/showcase/assets/shield-check-CaO2dhVS.js +1 -0
- package/dist/showcase/assets/shopping-bag-Bt3iK-Bv.js +1 -0
- package/dist/showcase/assets/sidebar-Cds60-PS.js +1 -0
- package/dist/showcase/assets/sidebar.context-CdH_DH9M.js +1 -0
- package/dist/showcase/assets/skeleton-2HajJKO4.js +29 -0
- package/dist/showcase/assets/skeleton-CGEJwPdD.js +1 -0
- package/dist/showcase/assets/slider-BjQViBR0.js +1 -0
- package/dist/showcase/assets/sliders-horizontal-C3JH5WQu.js +1 -0
- package/dist/showcase/assets/smart-card-CHouYi8U.js +1 -0
- package/dist/showcase/assets/sonner-Cog559j7.js +22 -0
- package/dist/showcase/assets/sortable.esm-hUEKsxpQ.js +5 -0
- package/dist/showcase/assets/sparkles-B18eTHVN.js +1 -0
- package/dist/showcase/assets/spinner-BSI97i4D.js +1 -0
- package/dist/showcase/assets/spinner-D0WhVyye.js +30 -0
- package/dist/showcase/assets/spinner-DQmJ7k9y.js +49 -0
- package/dist/showcase/assets/square-pen-CLyDWdhj.js +1 -0
- package/dist/showcase/assets/stacked-avatars-ECnU27uV.js +1 -0
- package/dist/showcase/assets/star-C3mhkpSK.js +1 -0
- package/dist/showcase/assets/startOfDay-ECIxhJGC.js +1 -0
- package/dist/showcase/assets/styles-CDD7mDye.js +1 -0
- package/dist/showcase/assets/suggestions-DOW6NBJp.js +126 -0
- package/dist/showcase/assets/switch-D59YKmf6.js +1 -0
- package/dist/showcase/assets/switch-NICmdoPn.js +1 -0
- package/dist/showcase/assets/sync-B8nBZXQ9.js +107 -0
- package/dist/showcase/assets/table-CckompuR.js +382 -0
- package/dist/showcase/assets/table-DtA4-Q0p.js +1 -0
- package/dist/showcase/assets/table-actions-DdoPJTMy.js +1 -0
- package/dist/showcase/assets/tabs-BrC_HxL_.js +1 -0
- package/dist/showcase/assets/tabs-UVxr80vY.js +19 -0
- package/dist/showcase/assets/tags-input-iDfvhzZD.js +1 -0
- package/dist/showcase/assets/text-button-DHFCLCoc.js +1 -0
- package/dist/showcase/assets/text-link-nCLLDcS_.js +1 -0
- package/dist/showcase/assets/textarea-DsSuQHQY.js +1 -0
- package/dist/showcase/assets/textarea-DyGI3Kcn.js +1 -0
- package/dist/showcase/assets/timelines-JmMcH657.js +200 -0
- package/dist/showcase/assets/toggle-group-BZKzMmC8.js +1 -0
- package/dist/showcase/assets/toggles-BSJvy4Tw.js +71 -0
- package/dist/showcase/assets/toggles-group-Bsc6eaWw.js +32 -0
- package/dist/showcase/assets/trash-2-C9AC7Pcv.js +1 -0
- package/dist/showcase/assets/trending-up-CGaDZj0S.js +1 -0
- package/dist/showcase/assets/truck-Dq6heokm.js +1 -0
- package/dist/showcase/assets/typography-ByvwR6Kg.js +223 -0
- package/dist/showcase/assets/ui-badge-BYgJSE_w.js +28 -0
- package/dist/showcase/assets/ui-card-BdueUfow.js +30 -0
- package/dist/showcase/assets/ui-table-CxtCQUsg.js +42 -0
- package/dist/showcase/assets/upload-tray-DKJ8nFZp.js +138 -0
- package/dist/showcase/assets/use-layout-link-CGBQHZon.js +1 -0
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CywAbxVB.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-B2bZzE7D.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-SLdY_s6S.js +1 -0
- package/dist/showcase/assets/useCompositeItem-g6aCBp84.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-DK0Tpege.js +1 -0
- package/dist/showcase/assets/useLabelableId-hdKzFCp2.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-CnhifZ1E.js +1 -0
- package/dist/showcase/assets/useRender-QhawWhpb.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-Cht7Sa7e.js +1 -0
- package/dist/showcase/assets/useValueChanged-DURO1kfZ.js +1 -0
- package/dist/showcase/assets/user-plus-DbOuTfr7.js +1 -0
- package/dist/showcase/assets/user-u65Fo7k7.js +1 -0
- package/dist/showcase/assets/users-BUb7CmVp.js +1 -0
- package/dist/showcase/assets/vendor-profile-wfI3PBuO.js +37 -0
- package/dist/showcase/assets/video-e4hDbTQ2.js +1 -0
- package/dist/showcase/assets/wrench-CBUvtxdr.js +1 -0
- package/dist/showcase/assets/x-oVTJnCJn.js +1 -0
- package/dist/showcase/assets/zap-CzABYL3c.js +1 -0
- package/dist/showcase/index.html +1 -1
- package/package.json +11 -3
- package/scripts/README.md +24 -0
- package/scripts/metadata.json +325 -0
- package/dist/_shared/accordion-BWU7zxlO.cjs +0 -2
- package/dist/_shared/accordion-BWU7zxlO.cjs.map +0 -1
- package/dist/_shared/accordion-DTYKGqWD.js +0 -130
- package/dist/_shared/accordion-DTYKGqWD.js.map +0 -1
- package/dist/_shared/action-menu-BoQnI2UF.cjs +0 -2
- package/dist/_shared/action-menu-BoQnI2UF.cjs.map +0 -1
- package/dist/_shared/action-menu-uyg1Phsn.js +0 -96
- package/dist/_shared/action-menu-uyg1Phsn.js.map +0 -1
- package/dist/_shared/ai-artifact-CY1Jf9gM.cjs +0 -3
- package/dist/_shared/ai-artifact-CY1Jf9gM.cjs.map +0 -1
- package/dist/_shared/ai-artifact-DdlK_l56.js +0 -1099
- package/dist/_shared/ai-artifact-DdlK_l56.js.map +0 -1
- package/dist/_shared/auth-CDjZFJxy.cjs +0 -2
- package/dist/_shared/auth-CDjZFJxy.cjs.map +0 -1
- package/dist/_shared/auth-_udUdWtn.js +0 -643
- package/dist/_shared/auth-_udUdWtn.js.map +0 -1
- package/dist/_shared/badge--o9wFHB_.cjs +0 -2
- package/dist/_shared/badge--o9wFHB_.cjs.map +0 -1
- package/dist/_shared/badge-yGlx9trX.js +0 -108
- package/dist/_shared/badge-yGlx9trX.js.map +0 -1
- package/dist/_shared/button-683R5quQ.js +0 -46
- package/dist/_shared/button-683R5quQ.js.map +0 -1
- package/dist/_shared/button-C1qc97U1.cjs +0 -2
- package/dist/_shared/button-C1qc97U1.cjs.map +0 -1
- package/dist/_shared/button-CjZrRLzR.cjs +0 -2
- package/dist/_shared/button-CjZrRLzR.cjs.map +0 -1
- package/dist/_shared/button-SuocMQFT.js +0 -173
- package/dist/_shared/button-SuocMQFT.js.map +0 -1
- package/dist/_shared/buttons-9YBwevkP.cjs +0 -2
- package/dist/_shared/buttons-9YBwevkP.cjs.map +0 -1
- package/dist/_shared/buttons-BR4BGVYf.js +0 -143
- package/dist/_shared/buttons-BR4BGVYf.js.map +0 -1
- package/dist/_shared/combobox-CpSmiPV8.cjs +0 -2
- package/dist/_shared/combobox-CpSmiPV8.cjs.map +0 -1
- package/dist/_shared/combobox-D01JwyFZ.js +0 -810
- package/dist/_shared/combobox-D01JwyFZ.js.map +0 -1
- package/dist/_shared/comments-D9velZAW.js +0 -952
- package/dist/_shared/comments-D9velZAW.js.map +0 -1
- package/dist/_shared/comments-DyUAKSQu.cjs +0 -2
- package/dist/_shared/comments-DyUAKSQu.cjs.map +0 -1
- package/dist/_shared/date-picker-BnsvBFOZ.cjs +0 -2
- package/dist/_shared/date-picker-BnsvBFOZ.cjs.map +0 -1
- package/dist/_shared/date-picker-TMcjGO26.js +0 -1361
- package/dist/_shared/date-picker-TMcjGO26.js.map +0 -1
- package/dist/_shared/date-pickers-BI4xLjHR.js +0 -330
- package/dist/_shared/date-pickers-BI4xLjHR.js.map +0 -1
- package/dist/_shared/date-pickers-BhaUK5S2.cjs +0 -2
- package/dist/_shared/date-pickers-BhaUK5S2.cjs.map +0 -1
- package/dist/_shared/dialog-A95-614f.js +0 -101
- package/dist/_shared/dialog-A95-614f.js.map +0 -1
- package/dist/_shared/dialog-ivDByBmO.cjs +0 -2
- package/dist/_shared/dialog-ivDByBmO.cjs.map +0 -1
- package/dist/_shared/display-C4n0uuxl.js +0 -1154
- package/dist/_shared/display-C4n0uuxl.js.map +0 -1
- package/dist/_shared/display-oDW0O9yB.cjs +0 -2
- package/dist/_shared/display-oDW0O9yB.cjs.map +0 -1
- package/dist/_shared/forms-CwJci54_.js +0 -3430
- package/dist/_shared/forms-CwJci54_.js.map +0 -1
- package/dist/_shared/forms-E3JkTgcC.cjs +0 -2
- package/dist/_shared/forms-E3JkTgcC.cjs.map +0 -1
- package/dist/_shared/header-CyBTcM-L.js +0 -360
- package/dist/_shared/header-CyBTcM-L.js.map +0 -1
- package/dist/_shared/header-kwvkesfq.cjs +0 -2
- package/dist/_shared/header-kwvkesfq.cjs.map +0 -1
- package/dist/_shared/hooks-MW0UTO3q.cjs +0 -2
- package/dist/_shared/hooks-MW0UTO3q.cjs.map +0 -1
- package/dist/_shared/hooks-ZiPIvs0_.js +0 -118
- package/dist/_shared/hooks-ZiPIvs0_.js.map +0 -1
- package/dist/_shared/mentions-Br-EP9tq.js +0 -506
- package/dist/_shared/mentions-Br-EP9tq.js.map +0 -1
- package/dist/_shared/mentions-DNTsRHJl.cjs +0 -2
- package/dist/_shared/mentions-DNTsRHJl.cjs.map +0 -1
- package/dist/_shared/metadata-CPSQGPJh.cjs +0 -2
- package/dist/_shared/metadata-CPSQGPJh.cjs.map +0 -1
- package/dist/_shared/metadata-qTNAOM7E.js +0 -235
- package/dist/_shared/metadata-qTNAOM7E.js.map +0 -1
- package/dist/_shared/navigation-HnnA6uSV.js +0 -419
- package/dist/_shared/navigation-HnnA6uSV.js.map +0 -1
- package/dist/_shared/navigation-J2g0Tw9D.cjs +0 -2
- package/dist/_shared/navigation-J2g0Tw9D.cjs.map +0 -1
- package/dist/_shared/overlays-CIeniDjj.js +0 -639
- package/dist/_shared/overlays-CIeniDjj.js.map +0 -1
- package/dist/_shared/overlays-Xc_F_Y-E.cjs +0 -2
- package/dist/_shared/overlays-Xc_F_Y-E.cjs.map +0 -1
- package/dist/_shared/page-BFV-KE8H.js +0 -262
- package/dist/_shared/page-BFV-KE8H.js.map +0 -1
- package/dist/_shared/page-UJfWfw2R.cjs +0 -2
- package/dist/_shared/page-UJfWfw2R.cjs.map +0 -1
- package/dist/_shared/rich-text-editor-B6WKHUKC.js +0 -620
- package/dist/_shared/rich-text-editor-B6WKHUKC.js.map +0 -1
- package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs +0 -2
- package/dist/_shared/rich-text-editor-Dm-6r_xe.cjs.map +0 -1
- package/dist/_shared/sheet-BKEfwhCn.js +0 -100
- package/dist/_shared/sheet-BKEfwhCn.js.map +0 -1
- package/dist/_shared/sheet-D4yWgkwC.cjs +0 -2
- package/dist/_shared/sheet-D4yWgkwC.cjs.map +0 -1
- package/dist/_shared/sidebar-B_L_dnAe.cjs +0 -2
- package/dist/_shared/sidebar-B_L_dnAe.cjs.map +0 -1
- package/dist/_shared/sidebar-C5DApiDy.js +0 -389
- package/dist/_shared/sidebar-C5DApiDy.js.map +0 -1
- package/dist/_shared/sidebar-CIlGkVbF.js +0 -538
- package/dist/_shared/sidebar-CIlGkVbF.js.map +0 -1
- package/dist/_shared/sidebar-D3sK9otF.cjs +0 -2
- package/dist/_shared/sidebar-D3sK9otF.cjs.map +0 -1
- package/dist/_shared/smart-card-DYZGY_Su.js +0 -361
- package/dist/_shared/smart-card-DYZGY_Su.js.map +0 -1
- package/dist/_shared/smart-card-Df80VF8x.cjs +0 -2
- package/dist/_shared/smart-card-Df80VF8x.cjs.map +0 -1
- package/dist/_shared/table-CBKDA7ZE.js +0 -1189
- package/dist/_shared/table-CBKDA7ZE.js.map +0 -1
- package/dist/_shared/table-CJoxRCWy.cjs +0 -2
- package/dist/_shared/table-CJoxRCWy.cjs.map +0 -1
- package/dist/_shared/workspace-CTjIGCE0.cjs +0 -2
- package/dist/_shared/workspace-CTjIGCE0.cjs.map +0 -1
- package/dist/_shared/workspace-WgJgiSUA.js +0 -357
- package/dist/_shared/workspace-WgJgiSUA.js.map +0 -1
- package/dist/showcase/assets/AreaChart-BkAbL-UV.js +0 -6
- package/dist/showcase/assets/CompositeItem-Dzu0MfUC.js +0 -1
- package/dist/showcase/assets/CompositeRoot-CQvQ_uj2.js +0 -1
- package/dist/showcase/assets/DialogTrigger-BxVhSw4D.js +0 -1
- package/dist/showcase/assets/LabelableContext-DapqaNeY.js +0 -1
- package/dist/showcase/assets/PreviewLayout-CGEkbS-i.js +0 -1
- package/dist/showcase/assets/RadioGroup-DBA3iBQw.js +0 -1
- package/dist/showcase/assets/Separator-BEMr82IS.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-xN-ruoGR.js +0 -1
- package/dist/showcase/assets/accordion-B-Iy0jKu.js +0 -171
- package/dist/showcase/assets/accordion-variants-B9GD0oBE.js +0 -1
- package/dist/showcase/assets/action-menu-CMUF6gPp.js +0 -1
- package/dist/showcase/assets/activities-C1P9bsJm.js +0 -501
- package/dist/showcase/assets/activities-feed-card-WZUuGHmT.js +0 -1
- package/dist/showcase/assets/activity-BVP5C805.js +0 -1
- package/dist/showcase/assets/admin-DWOK4sj4.js +0 -80
- package/dist/showcase/assets/ai-Dteb3y6G.js +0 -41
- package/dist/showcase/assets/ai-artifact-B0d7GveY.js +0 -2
- package/dist/showcase/assets/ai-chat-IJ0b2FOw.js +0 -568
- package/dist/showcase/assets/ai-elements-Cr8GgtEV.js +0 -387
- package/dist/showcase/assets/ai-new-BJN9wNvX.js +0 -167
- package/dist/showcase/assets/ai-tool-call-BqlQuR1P.js +0 -1
- package/dist/showcase/assets/alert-2_0J7Vv6.js +0 -1
- package/dist/showcase/assets/alert-7wEOpEor.js +0 -93
- package/dist/showcase/assets/alert-C_FOBilU.js +0 -62
- package/dist/showcase/assets/api-key-list-CGV1k52v.js +0 -73
- package/dist/showcase/assets/app-sidebar-S6oUYO4h.js +0 -1
- package/dist/showcase/assets/arrow-down-VNr82bS3.js +0 -1
- package/dist/showcase/assets/arrow-left-BSVeKWNq.js +0 -1
- package/dist/showcase/assets/arrow-right-D6hTB0Bd.js +0 -1
- package/dist/showcase/assets/arrow-up-p9oA4cIz.js +0 -1
- package/dist/showcase/assets/arrow-up-right-BtlQ62bc.js +0 -1
- package/dist/showcase/assets/avatar-BxcQUuh0.js +0 -57
- package/dist/showcase/assets/avatar-LGWm52rv.js +0 -1
- package/dist/showcase/assets/badge-COn5psy3.js +0 -28
- package/dist/showcase/assets/badge-check-D2C2BPUT.js +0 -1
- package/dist/showcase/assets/bell-C80n9VRl.js +0 -1
- package/dist/showcase/assets/bot-C83bUUi9.js +0 -1
- package/dist/showcase/assets/box-rZ0pA-02.js +0 -1
- package/dist/showcase/assets/brain-BJtktdVu.js +0 -1
- package/dist/showcase/assets/brand-CxdIBpyJ.js +0 -36
- package/dist/showcase/assets/breadcrumb-BZsr_A8k.js +0 -1
- package/dist/showcase/assets/breadcrumb-CSU8FvWB.js +0 -52
- package/dist/showcase/assets/breadcrumbs-BUm4gHzL.js +0 -1
- package/dist/showcase/assets/briefcase-0WhUdLn5.js +0 -1
- package/dist/showcase/assets/building-2-1D6zVdCI.js +0 -1
- package/dist/showcase/assets/button-C22Gs6y0.js +0 -44
- package/dist/showcase/assets/button-group-C0Ts4-x3.js +0 -1
- package/dist/showcase/assets/buttons-Dfn6hmwe.js +0 -270
- package/dist/showcase/assets/calendar-7a4yQlzJ.js +0 -1
- package/dist/showcase/assets/calendar-Bo17POsN.js +0 -1
- package/dist/showcase/assets/calendar-D6XNDRVQ.js +0 -16
- package/dist/showcase/assets/calendar-days-C4mG2tOe.js +0 -1
- package/dist/showcase/assets/camera-C16z6v0m.js +0 -1
- package/dist/showcase/assets/card-BjqRQxxz.js +0 -1
- package/dist/showcase/assets/card-IzYmUTpI.js +0 -188
- package/dist/showcase/assets/card-primitives-BDj4DtS8.js +0 -1
- package/dist/showcase/assets/card-radio-group-7GU9AtWs.js +0 -1
- package/dist/showcase/assets/cards-DAqpr8CM.js +0 -328
- package/dist/showcase/assets/carousel-D1n4Kkoo.js +0 -449
- package/dist/showcase/assets/chart-D2EGeI3b.js +0 -358
- package/dist/showcase/assets/chart-column-DKcP77Dx.js +0 -1
- package/dist/showcase/assets/checkbox-BI3gcjED.js +0 -1
- package/dist/showcase/assets/chevron-down-ByPPEdNm.js +0 -1
- package/dist/showcase/assets/chevron-left-BNByuq3g.js +0 -1
- package/dist/showcase/assets/chevron-right-D4pIMCh9.js +0 -1
- package/dist/showcase/assets/chevron-up-Cha879Nz.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-eAgHau5X.js +0 -1
- package/dist/showcase/assets/circle-V5hdlsIn.js +0 -1
- package/dist/showcase/assets/circle-alert-BW-Btwgh.js +0 -1
- package/dist/showcase/assets/circle-check-1MSds3Vu.js +0 -1
- package/dist/showcase/assets/circle-check-big-vBWkmhCZ.js +0 -1
- package/dist/showcase/assets/circle-dot-CsD5uXwH.js +0 -1
- package/dist/showcase/assets/circle-question-mark-xYn9p1nL.js +0 -1
- package/dist/showcase/assets/circle-x-VSqZOeGt.js +0 -1
- package/dist/showcase/assets/clock-3-CP_t59kW.js +0 -1
- package/dist/showcase/assets/clock-9xbB7EnW.js +0 -1
- package/dist/showcase/assets/code-xml-CeGA85eB.js +0 -1
- package/dist/showcase/assets/collapsible-C2W51-wl.js +0 -27
- package/dist/showcase/assets/collapsible-C4eof15p.js +0 -1
- package/dist/showcase/assets/combobox-i8o4u6Q0.js +0 -696
- package/dist/showcase/assets/command-C4F78Ppy.js +0 -1
- package/dist/showcase/assets/command-wjOXUieO.js +0 -1
- package/dist/showcase/assets/comment-composer-DeURrlgL.js +0 -1
- package/dist/showcase/assets/comment-item-D07Qk-Nt.js +0 -1
- package/dist/showcase/assets/comments-Bo-lZU18.js +0 -357
- package/dist/showcase/assets/commerce-extras-Cio3xn_B.js +0 -189
- package/dist/showcase/assets/commerce-jqA58sCZ.js +0 -79
- package/dist/showcase/assets/composite-BQFpnmS9.js +0 -1
- package/dist/showcase/assets/contact-card-4ajPhcd_.js +0 -65
- package/dist/showcase/assets/content-container-B83BnjFb.js +0 -1
- package/dist/showcase/assets/copyable-DKkroGJ3.js +0 -96
- package/dist/showcase/assets/course-card-DShYl03k.js +0 -77
- package/dist/showcase/assets/cpu-BZTsuaUu.js +0 -1
- package/dist/showcase/assets/credit-card-CAI3F3HB.js +0 -1
- package/dist/showcase/assets/currency-PXgbngHk.js +0 -149
- package/dist/showcase/assets/dark-surfaces-pSCicdm4.js +0 -90
- package/dist/showcase/assets/database-oHsxHUj-.js +0 -1
- package/dist/showcase/assets/date-block-CvCdJr8d.js +0 -1
- package/dist/showcase/assets/date-picker-Cd5vsEEd.js +0 -1
- package/dist/showcase/assets/date-pickers-CBK-zvSB.js +0 -73
- package/dist/showcase/assets/dense-info-zOdJpez6.js +0 -106
- package/dist/showcase/assets/dialog-D9-MRCRg.js +0 -1
- package/dist/showcase/assets/dialog-EDw9DvZs.js +0 -1
- package/dist/showcase/assets/display-CE9JWinr.js +0 -403
- package/dist/showcase/assets/dist-CjZ6RM9v.js +0 -45
- package/dist/showcase/assets/dollar-sign-BXD_x2mP.js +0 -1
- package/dist/showcase/assets/download-D0ur_d_N.js +0 -1
- package/dist/showcase/assets/dropdown-menu-Cto8-yDW.js +0 -1
- package/dist/showcase/assets/dropzone-9Gb4mR4x.js +0 -1
- package/dist/showcase/assets/earth-BN1w3w7h.js +0 -1
- package/dist/showcase/assets/ellipsis-DsrebD1Y.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-CAiMV7G2.js +0 -1
- package/dist/showcase/assets/empty-DoJF3uif.js +0 -1
- package/dist/showcase/assets/empty-item-zZ85qI6s.js +0 -49
- package/dist/showcase/assets/empty-state-CGfB7sOE.js +0 -1
- package/dist/showcase/assets/empty-state-Y_4qnNWt.js +0 -188
- package/dist/showcase/assets/enhanced-activities-B41hAxhb.js +0 -361
- package/dist/showcase/assets/enhanced-combobox-BOimEW-1.js +0 -1
- package/dist/showcase/assets/event-calendar-BjcfC6fM.js +0 -138
- package/dist/showcase/assets/event-log-BhoMXcix.js +0 -330
- package/dist/showcase/assets/example-Cz_880po.js +0 -1
- package/dist/showcase/assets/external-link-Cy1-PP8k.js +0 -1
- package/dist/showcase/assets/eye-C85PNNdH.js +0 -1
- package/dist/showcase/assets/feature-announcement-_tpahla3.js +0 -34
- package/dist/showcase/assets/file-C8PCBEtY.js +0 -1
- package/dist/showcase/assets/file-text-DwqbUujq.js +0 -1
- package/dist/showcase/assets/filters-ChqGg_1z.js +0 -78
- package/dist/showcase/assets/flag-csHQcBml.js +0 -1
- package/dist/showcase/assets/folder-open-BThTng3d.js +0 -1
- package/dist/showcase/assets/form-field-B5g_5Zjm.js +0 -1
- package/dist/showcase/assets/format-DrTwpH65.js +0 -1
- package/dist/showcase/assets/forms-BukyUSKs.js +0 -862
- package/dist/showcase/assets/frame-BNKhZVlb.js +0 -167
- package/dist/showcase/assets/getPseudoElementBounds-DwyQgIj-.js +0 -1
- package/dist/showcase/assets/gift-CtM--bDo.js +0 -1
- package/dist/showcase/assets/giftcard-cards-imm4Br0H.js +0 -85
- package/dist/showcase/assets/git-branch-Dl3AzbqP.js +0 -1
- package/dist/showcase/assets/global-search-Bhl7z_vN.js +0 -1
- package/dist/showcase/assets/global-search-C4yaPFSW.js +0 -215
- package/dist/showcase/assets/globe-BCikLfKc.js +0 -1
- package/dist/showcase/assets/gradient-card-Dh_5ZYv0.js +0 -58
- package/dist/showcase/assets/hash-C8m0EECO.js +0 -1
- package/dist/showcase/assets/header-BXjw7Lm_.js +0 -1
- package/dist/showcase/assets/header-notifications-CShSQ8kR.js +0 -1
- package/dist/showcase/assets/heart-BJVBFZ-j.js +0 -1
- package/dist/showcase/assets/house-C3fXPhlL.js +0 -1
- package/dist/showcase/assets/icon-badge-dwVx3Hxf.js +0 -1
- package/dist/showcase/assets/image-gc4qX_7C.js +0 -1
- package/dist/showcase/assets/inbox-C0GJ1KEC.js +0 -1
- package/dist/showcase/assets/index-BQIv1ffM.js +0 -10
- package/dist/showcase/assets/inertValue-DeVQ2cCe.js +0 -1
- package/dist/showcase/assets/info-BimmreJ-.js +0 -1
- package/dist/showcase/assets/inline-stat-DcNP6bcO.js +0 -1
- package/dist/showcase/assets/input-DJAWOJEx.js +0 -1
- package/dist/showcase/assets/input-NIgvB9CZ.js +0 -1
- package/dist/showcase/assets/input-group-BmqJ20bA.js +0 -1
- package/dist/showcase/assets/input-group-gOUubhee.js +0 -47
- package/dist/showcase/assets/inputs-Dk8YOVkI.js +0 -155
- package/dist/showcase/assets/invoice-header-BnNpWej2.js +0 -36
- package/dist/showcase/assets/invoice-items-BdPmW10L.js +0 -36
- package/dist/showcase/assets/invoice-mini-CbSYyHIb.js +0 -14
- package/dist/showcase/assets/invoice-table-DjnWG3KF.js +0 -30
- package/dist/showcase/assets/isSameDay-B2KDl_YX.js +0 -1
- package/dist/showcase/assets/isToday-CXNS7ELW.js +0 -1
- package/dist/showcase/assets/italic-BRS-PpYL.js +0 -1
- package/dist/showcase/assets/item--6Hx9AXZ.js +0 -1
- package/dist/showcase/assets/item-BszVRzXj.js +0 -134
- package/dist/showcase/assets/item-YF6wMI9W.js +0 -1
- package/dist/showcase/assets/kanban-BWBbWLVe.js +0 -186
- package/dist/showcase/assets/label-BgpcD3V6.js +0 -1
- package/dist/showcase/assets/languages-DDgmIDFe.js +0 -1
- package/dist/showcase/assets/layers-nkkXRmvA.js +0 -1
- package/dist/showcase/assets/layout-app-shell-D3MbPoGC.js +0 -608
- package/dist/showcase/assets/layout-auth-DIeRtG0B.js +0 -754
- package/dist/showcase/assets/layout-containers-Dc3-IAgV.js +0 -101
- package/dist/showcase/assets/layout-header-Cg6GfMST.js +0 -170
- package/dist/showcase/assets/layout-page-DojPq8S6.js +0 -122
- package/dist/showcase/assets/layout-primitives-JBSQS72B.js +0 -34
- package/dist/showcase/assets/layout-sidebar-C6jUJRhx.js +0 -224
- package/dist/showcase/assets/layout-users-uzPscfo7.js +0 -117
- package/dist/showcase/assets/layout-workspace-B3leaOKl.js +0 -183
- package/dist/showcase/assets/lock-DLIcOBUd.js +0 -1
- package/dist/showcase/assets/lock-keyhole-DY6aV7Mq.js +0 -1
- package/dist/showcase/assets/mail-AES_tOd2.js +0 -1
- package/dist/showcase/assets/mail-check-dJTzg2bD.js +0 -1
- package/dist/showcase/assets/map-CZ2l0iGH.js +0 -124
- package/dist/showcase/assets/map-pin-0O7GD5Dz.js +0 -1
- package/dist/showcase/assets/media-library-CRllxSGQ.js +0 -695
- package/dist/showcase/assets/mention-inline-suggestions-Dx2Z1GHF.js +0 -1
- package/dist/showcase/assets/mentions-CDqqGCE4.js +0 -138
- package/dist/showcase/assets/menus-CDgE79I5.js +0 -165
- package/dist/showcase/assets/message-square-CBNI_sf8.js +0 -1
- package/dist/showcase/assets/metadata-list-BoEVt7cX.js +0 -1
- package/dist/showcase/assets/metadata-list-NtWuY9W8.js +0 -288
- package/dist/showcase/assets/metric-Bx_LWobe.js +0 -1
- package/dist/showcase/assets/metric-bar-BldYHNLQ.js +0 -1
- package/dist/showcase/assets/metric-grid-BDw7w7d2.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-lSjDkUEo.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-CCFhTmQZ.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-C1AjZqJU.js +0 -50
- package/dist/showcase/assets/metrics-comparison-vEE6BtuW.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-DKkz8ibX.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-CZmVnReB.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-s2FYIYB1.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-DDlCl9Ep.js +0 -42
- package/dist/showcase/assets/metrics-overview-BgliK2L1.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-Cn5sRZsB.js +0 -54
- package/dist/showcase/assets/minus-DByvcC8K.js +0 -1
- package/dist/showcase/assets/money-display-DG4IaEaA.js +0 -1
- package/dist/showcase/assets/month-year-picker-CVurc9L7.js +0 -1
- package/dist/showcase/assets/navigation-CHYgQTsY.js +0 -90
- package/dist/showcase/assets/navigation-C_6gS4FA.js +0 -230
- package/dist/showcase/assets/navigation-extras-CflOar2P.js +0 -43
- package/dist/showcase/assets/onboarding-checklist-CYiciKwv.js +0 -119
- package/dist/showcase/assets/overlays-HrH2wdTK.js +0 -408
- package/dist/showcase/assets/overlays-cp7VMq3b.js +0 -159
- package/dist/showcase/assets/package-CjcwDJKu.js +0 -1
- package/dist/showcase/assets/package-check-CCH3ax-x.js +0 -1
- package/dist/showcase/assets/page-action-button-Cn5j2_EP.js +0 -1
- package/dist/showcase/assets/page-header-CkvCF1MQ.js +0 -1
- package/dist/showcase/assets/pagination-DM5QGPo2.js +0 -42
- package/dist/showcase/assets/pagination-DUzHnhJ6.js +0 -1
- package/dist/showcase/assets/paperclip-DoqDQQVa.js +0 -1
- package/dist/showcase/assets/password-input-CfS4sfCl.js +0 -1
- package/dist/showcase/assets/pencil-C2OfFQMj.js +0 -1
- package/dist/showcase/assets/phone-CLvml_XI.js +0 -1
- package/dist/showcase/assets/plus-D5swsZCz.js +0 -1
- package/dist/showcase/assets/popover-menu-Bu9q96nE.js +0 -1
- package/dist/showcase/assets/popover-nCGXR4Yd.js +0 -1
- package/dist/showcase/assets/popover-xC8qczvP.js +0 -1
- package/dist/showcase/assets/products-BbSzEFvw.js +0 -407
- package/dist/showcase/assets/progress-DYfoy7pk.js +0 -1
- package/dist/showcase/assets/progress-ENNwjW3X.js +0 -18
- package/dist/showcase/assets/props-table-2pIZzGC-.js +0 -1
- package/dist/showcase/assets/props.generated-DggzG-JL.json +0 -38611
- package/dist/showcase/assets/quote-BO1bufuX.js +0 -1
- package/dist/showcase/assets/receipt-kIVP3kxJ.js +0 -1
- package/dist/showcase/assets/receipt-text-BDQIvI4l.js +0 -1
- package/dist/showcase/assets/refresh-cw-UdL93poQ.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-DfiI3G4i.js +0 -1
- package/dist/showcase/assets/rich-text-editor-CNtfwLC2.js +0 -143
- package/dist/showcase/assets/rich-text-editor-DB4QWptQ.js +0 -124
- package/dist/showcase/assets/rotate-ccw-DQPoMfMY.js +0 -1
- package/dist/showcase/assets/save-Cd0ZM40i.js +0 -1
- package/dist/showcase/assets/schema-form-Cyc6vCVO.js +0 -325
- package/dist/showcase/assets/scroll-area-B5NZsDdi.js +0 -32
- package/dist/showcase/assets/scroll-area-BvTq99pz.js +0 -1
- package/dist/showcase/assets/select-BRbyPtx8.js +0 -1
- package/dist/showcase/assets/select-Dymyvyh6.js +0 -1
- package/dist/showcase/assets/send-BWzI7mwi.js +0 -1
- package/dist/showcase/assets/separator-BsYPzBlF.js +0 -1
- package/dist/showcase/assets/separator-Osp0OJ78.js +0 -28
- package/dist/showcase/assets/settings-DRmWJILI.js +0 -1
- package/dist/showcase/assets/sheet-BKsjMYMo.js +0 -1
- package/dist/showcase/assets/shield-D1EaWJMG.js +0 -1
- package/dist/showcase/assets/shield-alert-DWsbR2jn.js +0 -1
- package/dist/showcase/assets/shield-check-DUTAPADm.js +0 -1
- package/dist/showcase/assets/shopping-bag-XmeqUqk9.js +0 -1
- package/dist/showcase/assets/sidebar-B5uO9sUB.js +0 -1
- package/dist/showcase/assets/sidebar.context-CRjgeYJL.js +0 -1
- package/dist/showcase/assets/skeleton-BtiPkfxB.js +0 -1
- package/dist/showcase/assets/skeleton-DbybIpkV.js +0 -29
- package/dist/showcase/assets/slider-vuwVVBby.js +0 -1
- package/dist/showcase/assets/sliders-horizontal-BE_cwUn0.js +0 -1
- package/dist/showcase/assets/smart-card-Dhu_1A_u.js +0 -1
- package/dist/showcase/assets/sonner-DZB-G4q5.js +0 -22
- package/dist/showcase/assets/sortable.esm-YOwRw8Hr.js +0 -5
- package/dist/showcase/assets/sparkles-N8rqKQez.js +0 -1
- package/dist/showcase/assets/spinner-B5zKCNXu.js +0 -30
- package/dist/showcase/assets/spinner-BOjRziLu.js +0 -1
- package/dist/showcase/assets/spinner-PIr8y8av.js +0 -49
- package/dist/showcase/assets/square-pen-ImRrVwT8.js +0 -1
- package/dist/showcase/assets/stacked-avatars-DnIAc098.js +0 -1
- package/dist/showcase/assets/star-BaV-UTPq.js +0 -1
- package/dist/showcase/assets/startOfDay-CtTeiGV0.js +0 -1
- package/dist/showcase/assets/styles-Bv0pDLVi.js +0 -1
- package/dist/showcase/assets/suggestions-QnLPdgnG.js +0 -126
- package/dist/showcase/assets/switch-DwAS_TXx.js +0 -1
- package/dist/showcase/assets/switch-xzxCDtyg.js +0 -1
- package/dist/showcase/assets/sync-LeYxWAap.js +0 -107
- package/dist/showcase/assets/table-BbEFanNu.js +0 -1
- package/dist/showcase/assets/table-CVVHBty6.js +0 -382
- package/dist/showcase/assets/table-actions-DvI9U67L.js +0 -1
- package/dist/showcase/assets/tabs-CLcyGwLd.js +0 -1
- package/dist/showcase/assets/tabs-ck8y1Bjr.js +0 -19
- package/dist/showcase/assets/tags-input-DmBY2CKI.js +0 -1
- package/dist/showcase/assets/text-button-C54O1rZM.js +0 -1
- package/dist/showcase/assets/text-link-9_mZpq_f.js +0 -1
- package/dist/showcase/assets/textarea-CHvnWHWH.js +0 -1
- package/dist/showcase/assets/textarea-jexcMklP.js +0 -1
- package/dist/showcase/assets/timelines-uvFVjEQv.js +0 -200
- package/dist/showcase/assets/toggle-group-B3fORi8i.js +0 -1
- package/dist/showcase/assets/toggles-Cox6Yk2k.js +0 -71
- package/dist/showcase/assets/toggles-group-CSvSPqCB.js +0 -32
- package/dist/showcase/assets/trash-2-CE9bDw49.js +0 -1
- package/dist/showcase/assets/trending-up-0iJl0XvC.js +0 -1
- package/dist/showcase/assets/truck-DlhOPoCD.js +0 -1
- package/dist/showcase/assets/typography-BotOITw4.js +0 -223
- package/dist/showcase/assets/ui-badge-hfmO1K3-.js +0 -28
- package/dist/showcase/assets/ui-card-Aigzxhn3.js +0 -30
- package/dist/showcase/assets/ui-table-CKif9sNO.js +0 -42
- package/dist/showcase/assets/upload-tray-BnKDNrw9.js +0 -138
- package/dist/showcase/assets/use-layout-link-BQ6Y9z__.js +0 -1
- package/dist/showcase/assets/useAnchoredPopupScrollLock-CP1vkwD7.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-J_Rvjwx3.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-BwUOowW2.js +0 -1
- package/dist/showcase/assets/useCompositeItem-D3XOIML-.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-BWfShNPP.js +0 -1
- package/dist/showcase/assets/useLabelableId-DxorZ3YW.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-DLUX6CcH.js +0 -1
- package/dist/showcase/assets/useRender-B9zzqKA1.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-BSvL8pKg.js +0 -1
- package/dist/showcase/assets/useValueChanged-DSoTBFAJ.js +0 -1
- package/dist/showcase/assets/user-BZog6aIh.js +0 -1
- package/dist/showcase/assets/user-plus-CPxlPoxf.js +0 -1
- package/dist/showcase/assets/users-BgXAp2UO.js +0 -1
- package/dist/showcase/assets/vendor-profile-BLYiDIrO.js +0 -37
- package/dist/showcase/assets/video-YBnCbmIb.js +0 -1
- package/dist/showcase/assets/wrench-BFTavxzg.js +0 -1
- package/dist/showcase/assets/x-D8UN9pOu.js +0 -1
- package/dist/showcase/assets/zap-DIJUAJEb.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-editor-B6WKHUKC.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("./heading-0DYCOrgC.cjs"),i=require("./button-C1qc97U1.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:r,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)(i.t,{type:`button`,variant:n?`primary`:`secondary`,buttonStyle:n?`solid`:`ghost`,size:`icon-xs`,onClick:e.run,disabled:c||!l||r||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)(i.t,{type:`button`,variant:r?`primary`:`secondary`,buttonStyle:r?`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)(i.t,{type:`button`,variant:n?`primary`:`secondary`,buttonStyle:n?`solid`:`ghost`,size:`icon-xs`,onClick:e.onClick,disabled:c||!l||r||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:i}){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)(r.n,{tag:`span`,size:`xs`,type:c?`error`:`secondary`,weight:c?`medium`:`regular`,className:n.cn(`tabular-nums`),children:[a,typeof t==`number`?` / ${t}`:``,` `,i.counts.characters]}),(0,o.jsxs)(r.n,{tag:`span`,size:`xs`,type:`secondary`,className:`tabular-nums`,children:[s,` `,i.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-Dm-6r_xe.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-editor-Dm-6r_xe.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,100 +0,0 @@
|
|
|
1
|
-
import { cn as e } from "../lib/utils.js";
|
|
2
|
-
import { t } from "./button-683R5quQ.js";
|
|
3
|
-
import { t as n } from "./slot-C5EJicOc.js";
|
|
4
|
-
import "react";
|
|
5
|
-
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
6
|
-
import { XIcon as a } from "lucide-react";
|
|
7
|
-
import { Dialog as o } from "@base-ui/react/dialog";
|
|
8
|
-
//#region src/components/ui/sheet.tsx
|
|
9
|
-
function s({ ...e }) {
|
|
10
|
-
return /* @__PURE__ */ r(o.Root, {
|
|
11
|
-
"data-slot": "sheet",
|
|
12
|
-
modal: "trap-focus",
|
|
13
|
-
...e
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
function c({ asChild: e = !1, ...t }) {
|
|
17
|
-
let i = e ? /* @__PURE__ */ r(n, {}) : void 0;
|
|
18
|
-
return /* @__PURE__ */ r(o.Trigger, {
|
|
19
|
-
"data-slot": "sheet-trigger",
|
|
20
|
-
render: i,
|
|
21
|
-
...t
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
function l({ asChild: e = !1, ...t }) {
|
|
25
|
-
let i = e ? /* @__PURE__ */ r(n, {}) : void 0;
|
|
26
|
-
return /* @__PURE__ */ r(o.Close, {
|
|
27
|
-
"data-slot": "sheet-close",
|
|
28
|
-
render: i,
|
|
29
|
-
...t
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
function u({ ...e }) {
|
|
33
|
-
return /* @__PURE__ */ r(o.Portal, {
|
|
34
|
-
"data-slot": "sheet-portal",
|
|
35
|
-
...e
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function d({ className: t, ...n }) {
|
|
39
|
-
return /* @__PURE__ */ r(o.Backdrop, {
|
|
40
|
-
"data-slot": "sheet-overlay",
|
|
41
|
-
className: e("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", t),
|
|
42
|
-
...n
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
function f({ className: n, children: s, side: c = "right", showCloseButton: l = !0, ...f }) {
|
|
46
|
-
return /* @__PURE__ */ i(u, { children: [/* @__PURE__ */ r(d, {}), /* @__PURE__ */ i(o.Popup, {
|
|
47
|
-
"data-slot": "sheet-content",
|
|
48
|
-
"data-side": c,
|
|
49
|
-
className: e("bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm", n),
|
|
50
|
-
...f,
|
|
51
|
-
children: [s, !!l && /* @__PURE__ */ i(o.Close, {
|
|
52
|
-
"data-slot": "sheet-close",
|
|
53
|
-
render: /* @__PURE__ */ r(t, {
|
|
54
|
-
variant: "ghost",
|
|
55
|
-
className: "absolute top-4 right-4",
|
|
56
|
-
size: "icon-sm"
|
|
57
|
-
}),
|
|
58
|
-
children: [/* @__PURE__ */ r(a, {}), /* @__PURE__ */ r("span", {
|
|
59
|
-
className: "sr-only",
|
|
60
|
-
children: "Close"
|
|
61
|
-
})]
|
|
62
|
-
})]
|
|
63
|
-
})] });
|
|
64
|
-
}
|
|
65
|
-
function p({ className: t, ...n }) {
|
|
66
|
-
return /* @__PURE__ */ r("div", {
|
|
67
|
-
"data-slot": "sheet-header",
|
|
68
|
-
className: e("gap-1.5 p-4 flex flex-col", t),
|
|
69
|
-
...n
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
function m({ className: t, ...n }) {
|
|
73
|
-
return /* @__PURE__ */ r("div", {
|
|
74
|
-
"data-slot": "sheet-footer",
|
|
75
|
-
className: e("gap-2 p-4 mt-auto flex flex-col", t),
|
|
76
|
-
...n
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
function h({ className: t, asChild: i = !1, ...a }) {
|
|
80
|
-
let s = i ? /* @__PURE__ */ r(n, {}) : void 0;
|
|
81
|
-
return /* @__PURE__ */ r(o.Title, {
|
|
82
|
-
"data-slot": "sheet-title",
|
|
83
|
-
render: s,
|
|
84
|
-
className: e("text-foreground font-medium", t),
|
|
85
|
-
...a
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
function g({ className: t, asChild: i = !1, ...a }) {
|
|
89
|
-
let s = i ? /* @__PURE__ */ r(n, {}) : void 0;
|
|
90
|
-
return /* @__PURE__ */ r(o.Description, {
|
|
91
|
-
"data-slot": "sheet-description",
|
|
92
|
-
render: s,
|
|
93
|
-
className: e("text-muted-foreground text-sm", t),
|
|
94
|
-
...a
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
//#endregion
|
|
98
|
-
export { m as a, c, g as i, l as n, p as o, f as r, h as s, s as t };
|
|
99
|
-
|
|
100
|
-
//# sourceMappingURL=sheet-BKEfwhCn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-BKEfwhCn.js","names":[],"sources":["../../src/components/ui/sheet.tsx"],"sourcesContent":["\"use client\"\n\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Slot } from \"@/components/ui/slot\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\n return <SheetPrimitive.Root data-slot=\"sheet\" modal=\"trap-focus\" {...props} />\n}\n\nfunction SheetTrigger({\n asChild = false,\n ...props\n}: SheetPrimitive.Trigger.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Trigger\n data-slot=\"sheet-trigger\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction SheetClose({\n asChild = false,\n ...props\n}: SheetPrimitive.Close.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n return (\n <SheetPrimitive.Backdrop\n data-slot=\"sheet-overlay\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: SheetPrimitive.Popup.Props & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Popup\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\"bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\", className)}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute top-4 right-4\"\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"gap-1.5 p-4 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"gap-2 p-4 mt-auto flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n asChild = false,\n ...props\n}: SheetPrimitive.Title.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n render={renderSlot}\n className={cn(\"text-foreground font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n asChild = false,\n ...props\n}: SheetPrimitive.Description.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n render={renderSlot}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":";;;;;;;;AAUA,SAAS,EAAM,EAAE,GAAG,KAAoC;CACtD,OAAO,kBAAC,EAAe,MAAhB;EAAqB,aAAU;EAAQ,OAAM;EAAa,GAAI;CAAQ,CAAA;AAC/E;AAEA,SAAS,EAAa,EACpB,aAAU,IACV,GAAG,KACoD;CACvD,IAAM,IAAa,IAAU,kBAAC,GAAD,CAAO,CAAA,IAAI,KAAA;CAExC,OACE,kBAAC,EAAe,SAAhB;EACE,aAAU;EACV,QAAQ;EACR,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAW,EAClB,aAAU,IACV,GAAG,KACkD;CACrD,IAAM,IAAa,IAAU,kBAAC,GAAD,CAAO,CAAA,IAAI,KAAA;CAExC,OACE,kBAAC,EAAe,OAAhB;EACE,aAAU;EACV,QAAQ;EACR,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,GAAG,KAAsC;CAC9D,OAAO,kBAAC,EAAe,QAAhB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;AAEA,SAAS,EAAa,EAAE,cAAW,GAAG,KAAwC;CAC5E,OACE,kBAAC,EAAe,UAAhB;EACE,aAAU;EACV,WAAW,EAAG,2OAA2O,CAAS;EAClQ,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAa,EACpB,cACA,aACA,UAAO,SACP,qBAAkB,IAClB,GAAG,KAIF;CACD,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,CAAe,CAAA,GACf,kBAAC,EAAe,OAAhB;EACE,aAAU;EACV,aAAW;EACX,WAAW,EAAG,0mCAA0mC,CAAS;EACjoC,GAAI;YAJN,CAMG,GACA,CAAC,CAAC,KACD,kBAAC,EAAe,OAAhB;GACE,aAAU;GACV,QACE,kBAAC,GAAD;IACE,SAAQ;IACR,WAAU;IACV,MAAK;GACN,CAAA;aAPL,CAUE,kBAAC,GAAD,CACC,CAAA,GACD,kBAAC,QAAD;IAAM,WAAU;cAAU;GAAW,CAAA,CACjB;IAEJ;GACX,EAAA,CAAA;AAEjB;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAsC;CACzE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EAAG,6BAA6B,CAAS;EACpD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAsC;CACzE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EAAG,mCAAmC,CAAS;EAC1D,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAW,EAClB,cACA,aAAU,IACV,GAAG,KACkD;CACrD,IAAM,IAAa,IAAU,kBAAC,GAAD,CAAO,CAAA,IAAI,KAAA;CAExC,OACE,kBAAC,EAAe,OAAhB;EACE,aAAU;EACV,QAAQ;EACR,WAAW,EAAG,+BAA+B,CAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EACxB,cACA,aAAU,IACV,GAAG,KACwD;CAC3D,IAAM,IAAa,IAAU,kBAAC,GAAD,CAAO,CAAA,IAAI,KAAA;CAExC,OACE,kBAAC,EAAe,aAAhB;EACE,aAAU;EACV,QAAQ;EACR,WAAW,EAAG,iCAAiC,CAAS;EACxD,GAAI;CACL,CAAA;AAEL"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/utils.cjs"),n=require("./button-CjZrRLzR.cjs"),r=require("./slot-D-Rwlrz2.cjs");let i=require("react");i=e.t(i,1);let a=require("react/jsx-runtime"),o=require("lucide-react"),s=require("@base-ui/react/dialog");function c({...e}){return(0,a.jsx)(s.Dialog.Root,{"data-slot":`sheet`,modal:`trap-focus`,...e})}function l({asChild:e=!1,...t}){let n=e?(0,a.jsx)(r.t,{}):void 0;return(0,a.jsx)(s.Dialog.Trigger,{"data-slot":`sheet-trigger`,render:n,...t})}function u({asChild:e=!1,...t}){let n=e?(0,a.jsx)(r.t,{}):void 0;return(0,a.jsx)(s.Dialog.Close,{"data-slot":`sheet-close`,render:n,...t})}function d({...e}){return(0,a.jsx)(s.Dialog.Portal,{"data-slot":`sheet-portal`,...e})}function f({className:e,...n}){return(0,a.jsx)(s.Dialog.Backdrop,{"data-slot":`sheet-overlay`,className:t.cn(`data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50`,e),...n})}function p({className:e,children:r,side:i=`right`,showCloseButton:c=!0,...l}){return(0,a.jsxs)(d,{children:[(0,a.jsx)(f,{}),(0,a.jsxs)(s.Dialog.Popup,{"data-slot":`sheet-content`,"data-side":i,className:t.cn(`bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm`,e),...l,children:[r,!!c&&(0,a.jsxs)(s.Dialog.Close,{"data-slot":`sheet-close`,render:(0,a.jsx)(n.t,{variant:`ghost`,className:`absolute top-4 right-4`,size:`icon-sm`}),children:[(0,a.jsx)(o.XIcon,{}),(0,a.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function m({className:e,...n}){return(0,a.jsx)(`div`,{"data-slot":`sheet-header`,className:t.cn(`gap-1.5 p-4 flex flex-col`,e),...n})}function h({className:e,...n}){return(0,a.jsx)(`div`,{"data-slot":`sheet-footer`,className:t.cn(`gap-2 p-4 mt-auto flex flex-col`,e),...n})}function g({className:e,asChild:n=!1,...i}){let o=n?(0,a.jsx)(r.t,{}):void 0;return(0,a.jsx)(s.Dialog.Title,{"data-slot":`sheet-title`,render:o,className:t.cn(`text-foreground font-medium`,e),...i})}function _({className:e,asChild:n=!1,...i}){let o=n?(0,a.jsx)(r.t,{}):void 0;return(0,a.jsx)(s.Dialog.Description,{"data-slot":`sheet-description`,render:o,className:t.cn(`text-muted-foreground text-sm`,e),...i})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return c}});
|
|
2
|
-
//# sourceMappingURL=sheet-D4yWgkwC.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sheet-D4yWgkwC.cjs","names":[],"sources":["../../src/components/ui/sheet.tsx"],"sourcesContent":["\"use client\"\n\nimport { Dialog as SheetPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { Slot } from \"@/components/ui/slot\"\nimport { cn } from \"@/lib/utils\"\n\nfunction Sheet({ ...props }: SheetPrimitive.Root.Props) {\n return <SheetPrimitive.Root data-slot=\"sheet\" modal=\"trap-focus\" {...props} />\n}\n\nfunction SheetTrigger({\n asChild = false,\n ...props\n}: SheetPrimitive.Trigger.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Trigger\n data-slot=\"sheet-trigger\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction SheetClose({\n asChild = false,\n ...props\n}: SheetPrimitive.Close.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction SheetPortal({ ...props }: SheetPrimitive.Portal.Props) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({ className, ...props }: SheetPrimitive.Backdrop.Props) {\n return (\n <SheetPrimitive.Backdrop\n data-slot=\"sheet-overlay\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n showCloseButton = true,\n ...props\n}: SheetPrimitive.Popup.Props & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n showCloseButton?: boolean\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Popup\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn(\"bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm\", className)}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute top-4 right-4\"\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"gap-1.5 p-4 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"gap-2 p-4 mt-auto flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n asChild = false,\n ...props\n}: SheetPrimitive.Title.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n render={renderSlot}\n className={cn(\"text-foreground font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n asChild = false,\n ...props\n}: SheetPrimitive.Description.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n render={renderSlot}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("./chunk-CMqjfN_6.cjs"),t=require("../lib/utils.cjs"),n=require("./button-CjZrRLzR.cjs"),r=require("./tooltip-mvxZV_Lu.cjs"),i=require("./separator-q42IlFFA.cjs"),a=require("./input-D43_IMWW.cjs"),o=require("./skeleton-D1c5OHXa.cjs"),s=require("./sheet-D4yWgkwC.cjs");let c=require("react");c=e.t(c,1);let l=require("react/jsx-runtime"),u=require("lucide-react"),d=require("class-variance-authority"),f=require("@base-ui/react/merge-props"),p=require("@base-ui/react/use-render");var m=768;function h(){let[e,t]=(0,c.useState)();return(0,c.useEffect)(()=>{let e=window.matchMedia(`(max-width: ${m-1}px)`),n=()=>{t(window.innerWidth<m)};return e.addEventListener(`change`,n),t(window.innerWidth<m),()=>e.removeEventListener(`change`,n)},[]),!!e}var g=`sidebar_state`,_=3600*24*7,v=`16rem`,y=`18rem`,b=`3rem`,x=`b`,S=c.createContext(null);function C(){let e=c.useContext(S);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function w({defaultOpen:e=!0,open:n,onOpenChange:r,className:i,style:a,children:o,...s}){let u=h(),[d,f]=c.useState(!1),[p,m]=c.useState(e),y=n??p,C=c.useCallback(e=>{let t=typeof e==`function`?e(y):e;r?r(t):m(t),document.cookie=`${g}=${t}; path=/; max-age=${_}`},[r,y]),w=c.useCallback(()=>u?f(e=>!e):C(e=>!e),[u,C,f]);c.useEffect(()=>{let e=e=>{e.key===x&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),w())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[w]);let T=y?`expanded`:`collapsed`,E=c.useMemo(()=>({state:T,open:y,setOpen:C,isMobile:u,openMobile:d,setOpenMobile:f,toggleSidebar:w}),[T,y,C,u,d,f,w]);return(0,l.jsx)(S.Provider,{value:E,children:(0,l.jsx)(`div`,{"data-slot":`sidebar-wrapper`,style:{"--sidebar-width":v,"--sidebar-width-icon":b,...a},className:t.cn(`group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full`,i),...s,children:o})})}function T({side:e=`left`,variant:n=`sidebar`,collapsible:r=`offcanvas`,className:i,children:a,dir:o,...c}){let{isMobile:u,state:d,openMobile:f,setOpenMobile:p}=C();return r===`none`?(0,l.jsx)(`div`,{"data-slot":`sidebar`,className:t.cn(`bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col`,i),...c,children:a}):u?(0,l.jsx)(s.t,{open:f,onOpenChange:p,...c,children:(0,l.jsxs)(s.r,{dir:o,"data-sidebar":`sidebar`,"data-slot":`sidebar`,"data-mobile":`true`,className:`bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden`,style:{"--sidebar-width":y},side:e,children:[(0,l.jsxs)(s.o,{className:`sr-only`,children:[(0,l.jsx)(s.s,{children:`Sidebar`}),(0,l.jsx)(s.i,{children:`Displays the mobile sidebar.`})]}),(0,l.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:a})]})}):(0,l.jsxs)(`div`,{className:`group peer text-sidebar-foreground hidden md:block`,"data-state":d,"data-collapsible":d===`collapsed`?r:``,"data-variant":n,"data-side":e,"data-slot":`sidebar`,children:[(0,l.jsx)(`div`,{"data-slot":`sidebar-gap`,className:t.cn(`transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent`,`group-data-[collapsible=offcanvas]:w-0`,`group-data-[side=right]:rotate-180`,n===`floating`||n===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`)}),(0,l.jsx)(`div`,{"data-slot":`sidebar-container`,"data-side":e,className:t.cn(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex`,n===`floating`||n===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,i),...c,children:(0,l.jsx)(`div`,{"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,className:`bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col`,children:a})})]})}function E({className:e,onClick:r,...i}){let{toggleSidebar:a}=C();return(0,l.jsxs)(n.t,{"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,variant:`ghost`,size:`icon-sm`,className:t.cn(e),onClick:e=>{r?.(e),a()},...i,children:[(0,l.jsx)(u.PanelLeftIcon,{}),(0,l.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`})]})}function D({className:e,...n}){let{toggleSidebar:r}=C();return(0,l.jsx)(`button`,{"data-sidebar":`rail`,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,tabIndex:-1,onClick:r,title:`Toggle Sidebar`,className:t.cn(`hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full`,`[[data-side=left][data-collapsible=offcanvas]_&]:-right-2`,`[[data-side=right][data-collapsible=offcanvas]_&]:-left-2`,e),...n})}function O({className:e,...n}){return(0,l.jsx)(`main`,{"data-slot":`sidebar-inset`,className:t.cn(`bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 relative flex w-full flex-1 flex-col`,e),...n})}function k({className:e,...n}){return(0,l.jsx)(a.t,{"data-slot":`sidebar-input`,"data-sidebar":`input`,className:t.cn(`bg-background h-8 w-full shadow-none`,e),...n})}function A({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-header`,"data-sidebar":`header`,className:t.cn(`gap-2 px-2 flex flex-col`,e),...n})}function j({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-footer`,"data-sidebar":`footer`,className:t.cn(`gap-2 p-2 flex flex-col`,e),...n})}function M({className:e,...n}){return(0,l.jsx)(i.t,{"data-slot":`sidebar-separator`,"data-sidebar":`separator`,className:t.cn(`bg-sidebar-border mx-2 w-auto`,e),...n})}function N({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-content`,"data-sidebar":`content`,className:t.cn(`no-scrollbar gap-2 flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden`,e),...n})}function P({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-group`,"data-sidebar":`group`,className:t.cn(`p-2 relative flex w-full min-w-0 flex-col`,e),...n})}function F({className:e,render:n,...r}){return(0,p.useRender)({defaultTagName:`div`,props:(0,f.mergeProps)({className:t.cn(`text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0`,e)},r),render:n,state:{slot:`sidebar-group-label`,sidebar:`group-label`}})}function I({className:e,render:n,...r}){return(0,p.useRender)({defaultTagName:`button`,props:(0,f.mergeProps)({className:t.cn(`text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform [&>svg]:shrink-0 after:absolute after:-inset-2 md:after:hidden group-data-[collapsible=icon]:hidden`,e)},r),render:n,state:{slot:`sidebar-group-action`,sidebar:`group-action`}})}function L({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-group-content`,"data-sidebar":`group-content`,className:t.cn(`text-sm w-full`,e),...n})}function R({className:e,...n}){return(0,l.jsx)(`ul`,{"data-slot":`sidebar-menu`,"data-sidebar":`menu`,className:t.cn(`gap-1 flex w-full min-w-0 flex-col`,e),...n})}function z({className:e,...n}){return(0,l.jsx)(`li`,{"data-slot":`sidebar-menu-item`,"data-sidebar":`menu-item`,className:t.cn(`group/menu-item relative`,e),...n})}var B=(0,d.cva)(`ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden group/menu-button disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-sm`,sm:`h-7 text-xs`,lg:`h-12 text-sm group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function V({render:e,isActive:n=!1,variant:i=`default`,size:a=`default`,tooltip:o,className:s,...c}){let{isMobile:u,state:d}=C(),m=o?e?(0,l.jsx)(r.i,{render:e}):r.i:void 0,h=(0,p.useRender)({defaultTagName:`button`,props:(0,f.mergeProps)({className:t.cn(B({variant:i,size:a}),s)},c),render:o?m:e,state:{slot:`sidebar-menu-button`,sidebar:`menu-button`,size:a,active:n}});return o?(typeof o==`string`&&(o={children:o}),(0,l.jsxs)(r.t,{children:[h,(0,l.jsx)(r.n,{side:`right`,align:`center`,hidden:d!==`collapsed`||u,...o})]})):h}function H({className:e,render:n,showOnHover:r=!1,...i}){return(0,p.useRender)({defaultTagName:`button`,props:(0,f.mergeProps)({className:t.cn(`text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0`,r&&`peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0`,e)},i),render:n,state:{slot:`sidebar-menu-action`,sidebar:`menu-action`}})}function U({className:e,...n}){return(0,l.jsx)(`div`,{"data-slot":`sidebar-menu-badge`,"data-sidebar":`menu-badge`,className:t.cn(`text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden`,e),...n})}function W({className:e,showIcon:n=!1,...r}){let[i]=c.useState(()=>`${Math.floor(Math.random()*40)+50}%`);return(0,l.jsxs)(`div`,{"data-slot":`sidebar-menu-skeleton`,"data-sidebar":`menu-skeleton`,className:t.cn(`h-8 gap-2 rounded-md px-2 flex items-center`,e),...r,children:[!!n&&(0,l.jsx)(o.t,{className:`size-4 rounded-md`,"data-sidebar":`menu-skeleton-icon`}),(0,l.jsx)(o.t,{className:`h-4 max-w-(--skeleton-width) flex-1`,"data-sidebar":`menu-skeleton-text`,style:{"--skeleton-width":i}})]})}function G({className:e,...n}){return(0,l.jsx)(`ul`,{"data-slot":`sidebar-menu-sub`,"data-sidebar":`menu-sub`,className:t.cn(`border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden flex min-w-0 flex-col`,e),...n})}function K({className:e,...n}){return(0,l.jsx)(`li`,{"data-slot":`sidebar-menu-sub-item`,"data-sidebar":`menu-sub-item`,className:t.cn(`group/menu-sub-item relative`,e),...n})}function q({render:e,size:n=`md`,isActive:r=!1,className:i,...a}){return(0,p.useRender)({defaultTagName:`a`,props:(0,f.mergeProps)({className:t.cn(`text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0`,i)},a),render:e,state:{slot:`sidebar-menu-sub-button`,sidebar:`menu-sub-button`,size:n,active:r}})}var J=`text-sidebar-foreground/85 transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-sidebar-accent data-active:font-semibold data-active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:font-semibold data-[active=true]:text-sidebar-accent-foreground`,Y=`text-sidebar-foreground/75 transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-sidebar-accent data-active:font-semibold data-active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:font-semibold data-[active=true]:text-sidebar-accent-foreground`;function X({className:e,render:n,tooltip:r,...i}){let a=r&&!n?(0,l.jsx)(`button`,{type:`button`}):n;return(0,l.jsx)(V,{className:t.cn(`sidebar-menu-button--component`,J,e),render:a,tooltip:r,...i})}function Z({className:e,...n}){return(0,l.jsx)(q,{className:t.cn(`sidebar-menu-sub-button--component`,Y,e),...n})}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return K}});
|
|
2
|
-
//# sourceMappingURL=sidebar-B_L_dnAe.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-B_L_dnAe.cjs","names":[],"sources":["../../src/hooks/use-mobile.tsx","../../src/components/ui/sidebar.tsx","../../src/components/base/sidebar/sidebar.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean>();\n\n useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { PanelLeftIcon } from \"lucide-react\"\nimport * as React from \"react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { Separator } from \"@/components/ui/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/lib/utils\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n dir,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n dir={dir}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n data-side={side}\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 relative flex w-full flex-1 flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"gap-2 px-2 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"gap-2 p-2 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"no-scrollbar gap-2 flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n \"p-2 relative flex w-full min-w-0 flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-label\",\n sidebar: \"group-label\",\n },\n })\n}\n\nfunction SidebarGroupAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform [&>svg]:shrink-0 after:absolute after:-inset-2 md:after:hidden group-data-[collapsible=icon]:hidden\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-action\",\n sidebar: \"group-action\",\n },\n })\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"text-sm w-full\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"gap-1 flex w-full min-w-0 flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden group/menu-button disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline: \"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n render,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar()\n // When tooltip is enabled AND a custom render element is provided (e.g. <Link>),\n // compose them: render as TooltipTrigger but forward the custom render element\n // so the trigger renders as the Link instead of a plain <button>.\n const tooltipRender = tooltip\n ? render\n ? <TooltipTrigger render={render} />\n : TooltipTrigger\n : undefined\n\n const comp = useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n props\n ),\n render: tooltip ? tooltipRender : render,\n state: {\n slot: \"sidebar-menu-button\",\n sidebar: \"menu-button\",\n size,\n active: isActive,\n },\n })\n\n if (!tooltip) {\n return comp\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n {comp}\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n render,\n showOnHover = false,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n showOnHover?: boolean\n }) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0\",\n showOnHover &&\n \"peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-action\",\n sidebar: \"menu-action\",\n },\n })\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n })\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"h-8 gap-2 rounded-md px-2 flex items-center\", className)}\n {...props}\n >\n {!!showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\"border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden flex min-w-0 flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n render,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: useRender.ComponentProps<\"a\"> &\n React.ComponentProps<\"a\"> & {\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-sub-button\",\n sidebar: \"menu-sub-button\",\n size,\n active: isActive,\n },\n })\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","/**\n * base/sidebar — thin wrapper around the shadcn `Sidebar` compound component.\n *\n * Why it exists: rule 1/2 forbid importing `@/components/ui/*` outside the\n * matching base wrapper. Most parts are re-exported untouched; parts that need\n * library-level defaults are wrapped here so consumers still compose through\n * the same public surface.\n */\nimport * as React from 'react';\n\nimport {\n\tSidebarMenuButton as SidebarMenuButtonPrimitive,\n\tSidebarMenuSubButton as SidebarMenuSubButtonPrimitive,\n} from '@/components/ui/sidebar';\nimport { cn } from '@/lib/utils';\n\nexport {\n\tSidebar,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarGroupAction,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarInset,\n\tSidebarMenu,\n\tSidebarMenuAction,\n\tSidebarMenuBadge,\n\tSidebarMenuItem,\n\tSidebarMenuSkeleton,\n\tSidebarMenuSub,\n\tSidebarMenuSubItem,\n\tSidebarProvider,\n\tSidebarRail,\n\tSidebarSeparator,\n\tSidebarTrigger,\n\tuseSidebar,\n} from '@/components/ui/sidebar';\n\ntype SidebarMenuButtonProps = React.ComponentProps<typeof SidebarMenuButtonPrimitive>;\ntype SidebarMenuSubButtonProps = React.ComponentProps<typeof SidebarMenuSubButtonPrimitive>;\n\nconst sidebarMenuButtonStateClasses =\n\t'text-sidebar-foreground/85 transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-sidebar-accent data-active:font-semibold data-active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:font-semibold data-[active=true]:text-sidebar-accent-foreground';\n\nconst sidebarMenuSubButtonStateClasses =\n\t'text-sidebar-foreground/75 transition-[background-color,color] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 focus-visible:ring-sidebar-ring data-active:bg-sidebar-accent data-active:font-semibold data-active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:font-semibold data-[active=true]:text-sidebar-accent-foreground';\n\nfunction SidebarMenuButton({\n\tclassName,\n\trender,\n\ttooltip,\n\t...props\n}: SidebarMenuButtonProps) {\n\tconst normalizedRender = tooltip && !render\n\t\t? <button type=\"button\" />\n\t\t: render;\n\n\treturn (\n\t\t<SidebarMenuButtonPrimitive\n\t\t\tclassName={cn('sidebar-menu-button--component', sidebarMenuButtonStateClasses, className)}\n\t\t\trender={normalizedRender}\n\t\t\ttooltip={tooltip}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction SidebarMenuSubButton({\n\tclassName,\n\t...props\n}: SidebarMenuSubButtonProps) {\n\treturn (\n\t\t<SidebarMenuSubButtonPrimitive\n\t\t\tclassName={cn('sidebar-menu-sub-button--component', sidebarMenuSubButtonStateClasses, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { SidebarMenuButton, SidebarMenuSubButton };\n"],"mappings":"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"}
|