admin-ui-starter-kit 0.6.8 → 0.6.9
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/component-library-rules/references/components/base__display-utilities.md +15 -8
- package/dist/_shared/ai-artifact-Cv8VBibf.cjs +3 -0
- package/dist/_shared/ai-artifact-Cv8VBibf.cjs.map +1 -0
- package/dist/_shared/ai-artifact-DwfXQuh4.js +1099 -0
- package/dist/_shared/ai-artifact-DwfXQuh4.js.map +1 -0
- package/dist/_shared/auth-Cz5ci18c.cjs +2 -0
- package/dist/_shared/auth-Cz5ci18c.cjs.map +1 -0
- package/dist/_shared/auth-DDWsgFUL.js +643 -0
- package/dist/_shared/auth-DDWsgFUL.js.map +1 -0
- package/dist/_shared/badge-C65rt1M9.cjs +2 -0
- package/dist/_shared/badge-C65rt1M9.cjs.map +1 -0
- package/dist/_shared/badge-r8ae66Vd.js +110 -0
- package/dist/_shared/badge-r8ae66Vd.js.map +1 -0
- package/dist/_shared/comments-DAzpeuQq.cjs +2 -0
- package/dist/_shared/comments-DAzpeuQq.cjs.map +1 -0
- package/dist/_shared/comments-DzZaKP9x.js +952 -0
- package/dist/_shared/comments-DzZaKP9x.js.map +1 -0
- package/dist/_shared/data-display-DQUUEzCx.cjs +2 -0
- package/dist/_shared/data-display-DQUUEzCx.cjs.map +1 -0
- package/dist/_shared/data-display-LlvMEFTK.js +1878 -0
- package/dist/_shared/data-display-LlvMEFTK.js.map +1 -0
- package/dist/_shared/date-picker-CrC-lHyF.cjs +2 -0
- package/dist/_shared/date-picker-CrC-lHyF.cjs.map +1 -0
- package/dist/_shared/date-picker-DbYBek-b.js +1361 -0
- package/dist/_shared/date-picker-DbYBek-b.js.map +1 -0
- package/dist/_shared/date-pickers-9AU8YQK2.js +329 -0
- package/dist/_shared/date-pickers-9AU8YQK2.js.map +1 -0
- package/dist/_shared/date-pickers-DUEwCWig.cjs +2 -0
- package/dist/_shared/date-pickers-DUEwCWig.cjs.map +1 -0
- package/dist/_shared/display-BqoPOdof.cjs +2 -0
- package/dist/_shared/display-BqoPOdof.cjs.map +1 -0
- package/dist/_shared/display-CQoSwU74.js +986 -0
- package/dist/_shared/display-CQoSwU74.js.map +1 -0
- package/dist/_shared/forms-CNh-S9FK.cjs +2 -0
- package/dist/_shared/forms-CNh-S9FK.cjs.map +1 -0
- package/dist/_shared/forms-DIz3SCA9.js +3534 -0
- package/dist/_shared/forms-DIz3SCA9.js.map +1 -0
- package/dist/_shared/header-Bs61tQla.js +447 -0
- package/dist/_shared/header-Bs61tQla.js.map +1 -0
- package/dist/_shared/header-D01oOxna.cjs +2 -0
- package/dist/_shared/header-D01oOxna.cjs.map +1 -0
- package/dist/_shared/hooks-ACnpaIli.js +95 -0
- package/dist/_shared/hooks-ACnpaIli.js.map +1 -0
- package/dist/_shared/hooks-B7khuHkk.cjs +2 -0
- package/dist/_shared/hooks-B7khuHkk.cjs.map +1 -0
- package/dist/_shared/layout-CGi5w1mo.js +268 -0
- package/dist/_shared/layout-CGi5w1mo.js.map +1 -0
- package/dist/_shared/layout-ccVwjUG8.cjs +2 -0
- package/dist/_shared/layout-ccVwjUG8.cjs.map +1 -0
- package/dist/_shared/mentions-Cg_4vFxd.cjs +2 -0
- package/dist/_shared/mentions-Cg_4vFxd.cjs.map +1 -0
- package/dist/_shared/mentions-Ci9RFTfw.js +506 -0
- package/dist/_shared/mentions-Ci9RFTfw.js.map +1 -0
- package/dist/_shared/navigation-C1QN2-Vq.cjs +2 -0
- package/dist/_shared/navigation-C1QN2-Vq.cjs.map +1 -0
- package/dist/_shared/navigation-CMrLO8v5.js +436 -0
- package/dist/_shared/navigation-CMrLO8v5.js.map +1 -0
- package/dist/_shared/separator-BXn_fnly.cjs +2 -0
- package/dist/_shared/separator-BXn_fnly.cjs.map +1 -0
- package/dist/_shared/separator-DiH-j--f.js +20 -0
- package/dist/_shared/separator-DiH-j--f.js.map +1 -0
- package/dist/_shared/settings-CgtcSI8L.js +143 -0
- package/dist/_shared/settings-CgtcSI8L.js.map +1 -0
- package/dist/_shared/settings-csNmeT7b.cjs +2 -0
- package/dist/_shared/settings-csNmeT7b.cjs.map +1 -0
- package/dist/_shared/sidebar-DyGIcJd9.cjs +2 -0
- package/dist/_shared/sidebar-DyGIcJd9.cjs.map +1 -0
- package/dist/_shared/sidebar-OT-xIguQ.js +548 -0
- package/dist/_shared/sidebar-OT-xIguQ.js.map +1 -0
- package/dist/_shared/table-BVWemr79.cjs +2 -0
- package/dist/_shared/table-BVWemr79.cjs.map +1 -0
- package/dist/_shared/table-WYSjfQRr.js +1377 -0
- package/dist/_shared/table-WYSjfQRr.js.map +1 -0
- package/dist/_shared/workspace-BkwsqTrc.cjs +2 -0
- package/dist/_shared/workspace-BkwsqTrc.cjs.map +1 -0
- package/dist/_shared/workspace-DpU1YG1t.js +357 -0
- package/dist/_shared/workspace-DpU1YG1t.js.map +1 -0
- package/dist/components/base/badge/index.cjs +1 -1
- package/dist/components/base/badge/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/index.cjs +1 -1
- package/dist/components/base/display/index.js +2 -2
- package/dist/components/base/display/separator.d.ts +10 -1
- package/dist/components/base/display/separator.d.ts.map +1 -1
- package/dist/components/base/event-calendar/index.cjs +1 -1
- package/dist/components/base/event-calendar/index.js +1 -1
- package/dist/components/base/forms/index.cjs +1 -1
- package/dist/components/base/forms/index.js +2 -2
- package/dist/components/base/navigation/index.cjs +1 -1
- package/dist/components/base/navigation/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 +3 -3
- package/dist/components/composed/ai/index.cjs +1 -1
- package/dist/components/composed/ai/index.js +4 -4
- package/dist/components/composed/cards/index.cjs +1 -1
- package/dist/components/composed/cards/index.js +3 -3
- package/dist/components/composed/commerce/index.cjs +1 -1
- package/dist/components/composed/commerce/index.js +4 -4
- package/dist/components/composed/dark-surfaces/index.cjs +1 -1
- package/dist/components/composed/dark-surfaces/index.js +2 -2
- package/dist/components/composed/data-display/index.cjs +1 -1
- package/dist/components/composed/data-display/index.js +1 -1
- package/dist/components/composed/navigation/index.cjs +1 -1
- package/dist/components/composed/navigation/index.js +1 -1
- package/dist/components/composed/timelines/index.cjs +1 -1
- package/dist/components/composed/timelines/index.js +1 -1
- package/dist/components/features/activities/index.cjs +1 -1
- package/dist/components/features/activities/index.js +1 -1
- package/dist/components/features/ai-chat/index.cjs +1 -1
- package/dist/components/features/ai-chat/index.js +2 -2
- 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 +2 -2
- package/dist/components/features/filters/index.cjs +1 -1
- package/dist/components/features/filters/index.js +2 -2
- package/dist/components/features/global-search/index.cjs +1 -1
- package/dist/components/features/global-search/index.js +1 -1
- package/dist/components/features/media-library/index.cjs +1 -1
- package/dist/components/features/media-library/index.js +3 -3
- package/dist/components/features/mentions/index.cjs +1 -1
- package/dist/components/features/mentions/index.js +1 -1
- package/dist/components/features/products/index.cjs +1 -1
- package/dist/components/features/products/index.js +5 -5
- package/dist/components/features/resource/index.cjs +1 -1
- package/dist/components/features/resource/index.js +2 -2
- package/dist/components/features/schema-form/index.cjs +1 -1
- package/dist/components/features/schema-form/index.js +2 -2
- 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 +7 -7
- package/dist/components/layout/page/index.cjs +1 -1
- package/dist/components/layout/page/index.js +1 -1
- package/dist/components/layout/settings/index.cjs +1 -1
- package/dist/components/layout/settings/index.js +1 -1
- package/dist/components/layout/sidebar/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/showcase/assets/AreaChart-DxDBymDt.js +6 -0
- package/dist/showcase/assets/CompositeItem-owAA4Ah3.js +1 -0
- package/dist/showcase/assets/CompositeRoot-DzHTtLBs.js +1 -0
- package/dist/showcase/assets/DialogTrigger-OUBMI353.js +1 -0
- package/dist/showcase/assets/LabelableContext-Cd9Gf7TR.js +1 -0
- package/dist/showcase/assets/PreviewLayout-X_NxjYOV.js +1 -0
- package/dist/showcase/assets/RadioGroup-BzveyiIV.js +1 -0
- package/dist/showcase/assets/ScrollAreaCorner-IZFF348L.js +1 -0
- package/dist/showcase/assets/Separator-CSYYEo-X.js +1 -0
- package/dist/showcase/assets/ToolbarRootContext-BYSKM0e8.js +1 -0
- package/dist/showcase/assets/accordion-B9VkLXiy.js +171 -0
- package/dist/showcase/assets/accordion-variants-g7lk5hEX.js +1 -0
- package/dist/showcase/assets/action-menu-CWIvuiLO.js +1 -0
- package/dist/showcase/assets/actions-BuwzXYEF.js +310 -0
- package/dist/showcase/assets/activities-BTBlr1G4.js +500 -0
- package/dist/showcase/assets/activities-feed-card-C5lcwUFk.js +1 -0
- package/dist/showcase/assets/admin-kbK6nUjx.js +140 -0
- package/dist/showcase/assets/ai-CKu9EGmA.js +207 -0
- package/dist/showcase/assets/ai-artifact-Bg1MFGeF.js +2 -0
- package/dist/showcase/assets/ai-chat-DEntRhJD.js +568 -0
- package/dist/showcase/assets/ai-elements-DyKRCWiS.js +387 -0
- package/dist/showcase/assets/ai-tool-call-DFrTelEX.js +1 -0
- package/dist/showcase/assets/alert-C0wSpBYn.js +93 -0
- package/dist/showcase/assets/alert-CZ4rgwPr.js +62 -0
- package/dist/showcase/assets/alert-WTKIdE4s.js +1 -0
- package/dist/showcase/assets/api-key-list-BnrUT9Uf.js +1 -0
- package/dist/showcase/assets/api-key-list-bQ6QzFhA.js +73 -0
- package/dist/showcase/assets/app-sidebar-B3veRbac.js +1 -0
- package/dist/showcase/assets/arrow-down-CEXJx115.js +1 -0
- package/dist/showcase/assets/arrow-left-Ca6ri5q0.js +1 -0
- package/dist/showcase/assets/arrow-right-a3STqWgx.js +1 -0
- package/dist/showcase/assets/arrow-up-CCU1MaGq.js +1 -0
- package/dist/showcase/assets/arrow-up-right-BDImqvM2.js +1 -0
- package/dist/showcase/assets/avatar-Bwgai0SK.js +67 -0
- package/dist/showcase/assets/avatar-DSmL52Us.js +57 -0
- package/dist/showcase/assets/avatar-kK9n1a25.js +1 -0
- package/dist/showcase/assets/avatar-nb7MgV_x.js +1 -0
- package/dist/showcase/assets/badge-CTGPRSXm.js +31 -0
- package/dist/showcase/assets/badge-check-zqoYYrVj.js +1 -0
- package/dist/showcase/assets/bell-D7HWGStL.js +1 -0
- package/dist/showcase/assets/boolean-indicator-CqwlV0cf.js +1 -0
- package/dist/showcase/assets/bot-Owx4SMiU.js +1 -0
- package/dist/showcase/assets/box-BeeoLlMd.js +1 -0
- package/dist/showcase/assets/braces-fzrExVIx.js +1 -0
- package/dist/showcase/assets/brain-Da2fsBjd.js +1 -0
- package/dist/showcase/assets/brand-Bo6uwdGf.js +36 -0
- package/dist/showcase/assets/breadcrumb-B-K-6dtd.js +1 -0
- package/dist/showcase/assets/breadcrumb-B6lR9Cq2.js +52 -0
- package/dist/showcase/assets/breadcrumbs-Bamog6P5.js +1 -0
- package/dist/showcase/assets/briefcase-DQjbh28E.js +1 -0
- package/dist/showcase/assets/building-2-DaQW5yJa.js +1 -0
- package/dist/showcase/assets/button-D3skvyQS.js +44 -0
- package/dist/showcase/assets/button-group-BYtbrhme.js +1 -0
- package/dist/showcase/assets/buttons-B3IkMmNQ.js +272 -0
- package/dist/showcase/assets/calendar-C4fCDK3O.js +1 -0
- package/dist/showcase/assets/calendar-CcwkVxCK.js +16 -0
- package/dist/showcase/assets/calendar-DBkwxV9H.js +1 -0
- package/dist/showcase/assets/calendar-days-BWed1W3Z.js +1 -0
- package/dist/showcase/assets/camera-BUoAyoZT.js +1 -0
- package/dist/showcase/assets/card-7DBPqWuv.js +1 -0
- package/dist/showcase/assets/card-ClwyNDHJ.js +188 -0
- package/dist/showcase/assets/card-primitives-BE1YpEQW.js +1 -0
- package/dist/showcase/assets/card-radio-group-1NMbocuG.js +1 -0
- package/dist/showcase/assets/cards-Bu8uaGSU.js +354 -0
- package/dist/showcase/assets/carousel-dTTRRSQg.js +449 -0
- package/dist/showcase/assets/cell-renderers-CcyBuUsC.js +1 -0
- package/dist/showcase/assets/chart-BSboeIO6.js +358 -0
- package/dist/showcase/assets/chart-column-CCzA6B9l.js +1 -0
- package/dist/showcase/assets/checkbox-CSdEPNT5.js +1 -0
- package/dist/showcase/assets/checkbox-CqNLi9Q3.js +1 -0
- package/dist/showcase/assets/chevron-down-C91gNQdT.js +1 -0
- package/dist/showcase/assets/chevron-left-SiAoYFSo.js +1 -0
- package/dist/showcase/assets/chevron-up-Beb1_ET_.js +1 -0
- package/dist/showcase/assets/chevrons-up-down-DaST4VKL.js +1 -0
- package/dist/showcase/assets/circle-D9KiRp8C.js +1 -0
- package/dist/showcase/assets/circle-alert-BQkAwFkl.js +1 -0
- package/dist/showcase/assets/circle-check-big-CN5YOJqq.js +1 -0
- package/dist/showcase/assets/circle-check-dqmKTiDe.js +1 -0
- package/dist/showcase/assets/circle-dot-B7LPN_0V.js +1 -0
- package/dist/showcase/assets/circle-question-mark-yTRkQO3d.js +1 -0
- package/dist/showcase/assets/circle-x-CW2dFcX-.js +1 -0
- package/dist/showcase/assets/clock-3-CXJ_JotW.js +1 -0
- package/dist/showcase/assets/clock-DUqvfazQ.js +1 -0
- package/dist/showcase/assets/code-xml-BmdQDeID.js +1 -0
- package/dist/showcase/assets/collapsible-C-WYhJxn.js +1 -0
- package/dist/showcase/assets/collapsible-CL37AlCX.js +27 -0
- package/dist/showcase/assets/collapsible-uGO5Rj8q.js +1 -0
- package/dist/showcase/assets/combobox-CFh5kUzj.js +685 -0
- package/dist/showcase/assets/command-CtpLaHjh.js +1 -0
- package/dist/showcase/assets/command-DSlK-QAE.js +1 -0
- package/dist/showcase/assets/comment-composer-Rr_a5tZQ.js +1 -0
- package/dist/showcase/assets/comment-item-Dme2o2KI.js +1 -0
- package/dist/showcase/assets/comments-CW2nz465.js +357 -0
- package/dist/showcase/assets/commerce-bwcq6oPn.js +267 -0
- package/dist/showcase/assets/composite-DMIR0vmP.js +1 -0
- package/dist/showcase/assets/conditional-rendering-Bk6AC76c.js +1 -0
- package/dist/showcase/assets/contact-card-BCXS9tWq.js +65 -0
- package/dist/showcase/assets/content-container-b1dC2caJ.js +1 -0
- package/dist/showcase/assets/copyable-BIABx-Vv.js +96 -0
- package/dist/showcase/assets/copyable-Ic9wzVaj.js +1 -0
- package/dist/showcase/assets/course-card-Bo5P3TYv.js +77 -0
- package/dist/showcase/assets/cpu-_VqU6yRO.js +1 -0
- package/dist/showcase/assets/credit-card-BbxO8xLo.js +1 -0
- package/dist/showcase/assets/css-variables-zqpBgnS1.js +1205 -0
- package/dist/showcase/assets/currency-Cjvt4F0b.js +149 -0
- package/dist/showcase/assets/dark-surfaces-CLwERt1f.js +90 -0
- package/dist/showcase/assets/data-view-AtyUp7b-.js +124 -0
- package/dist/showcase/assets/data-view-cnEmgP1C.js +4 -0
- package/dist/showcase/assets/database-TbVXEw7v.js +1 -0
- package/dist/showcase/assets/date-block-CDHemKnP.js +1 -0
- package/dist/showcase/assets/date-block-COb89Y_-.js +1 -0
- package/dist/showcase/assets/date-picker-CK8llBIN.js +1 -0
- package/dist/showcase/assets/date-pickers-DFfDnW9w.js +73 -0
- package/dist/showcase/assets/dense-info-CaFVDE90.js +106 -0
- package/dist/showcase/assets/design-system-consistency-CeSMuTuu.js +264 -0
- package/dist/showcase/assets/dialog-CRQNEK2K.js +1 -0
- package/dist/showcase/assets/dialog-CsCLDb0G.js +1 -0
- package/dist/showcase/assets/dialog-Qh3EHEKq.js +1 -0
- package/dist/showcase/assets/display-utilities-rP3hb4FK.js +4 -0
- package/dist/showcase/assets/display-utilities.examples-BwbvHOcx.js +309 -0
- package/dist/showcase/assets/dist-CbqRct9s.js +1 -0
- package/dist/showcase/assets/dist-iivamCjp.js +45 -0
- package/dist/showcase/assets/dollar-sign-COaRmdJE.js +1 -0
- package/dist/showcase/assets/download-yCcb4rfH.js +1 -0
- package/dist/showcase/assets/dropdown-menu-KoFNw-fX.js +1 -0
- package/dist/showcase/assets/dropzone-DLguWnmu.js +1 -0
- package/dist/showcase/assets/earth-TDRqTA4S.js +1 -0
- package/dist/showcase/assets/ellipsis-Q_fBbRE9.js +1 -0
- package/dist/showcase/assets/ellipsis-vertical-Bh8t3Z1g.js +1 -0
- package/dist/showcase/assets/empty-DvmDTSAj.js +1 -0
- package/dist/showcase/assets/empty-item-C3HP5nuw.js +49 -0
- package/dist/showcase/assets/empty-state-Dcin4cOt.js +190 -0
- package/dist/showcase/assets/empty-state-IV_GTNEI.js +1 -0
- package/dist/showcase/assets/enhanced-activities-BLf2gpes.js +357 -0
- package/dist/showcase/assets/enhanced-combobox-ClZcVnhv.js +1 -0
- package/dist/showcase/assets/esm-Cf6QQstQ.js +2 -0
- package/dist/showcase/assets/event-calendar-zrfI_3AM.js +138 -0
- package/dist/showcase/assets/event-log-D-_CViAw.js +330 -0
- package/dist/showcase/assets/example-6bZGEb3-.js +1 -0
- package/dist/showcase/assets/external-link-7ldgjHZM.js +1 -0
- package/dist/showcase/assets/eye-pXVkim6z.js +1 -0
- package/dist/showcase/assets/feature-announcement-CFcGj3ge.js +34 -0
- package/dist/showcase/assets/file-Bn9sAGaT.js +1 -0
- package/dist/showcase/assets/file-text-Cvxg6pjh.js +1 -0
- package/dist/showcase/assets/filter-layout-DqNRRzDU.js +1 -0
- package/dist/showcase/assets/filters-CQMI_T63.js +139 -0
- package/dist/showcase/assets/flag-vI_WJ-BU.js +1 -0
- package/dist/showcase/assets/folder-open-0AyKSRQS.js +1 -0
- package/dist/showcase/assets/form-field-BaBeXn7a.js +1 -0
- package/dist/showcase/assets/format-DLLMyN-3.js +1 -0
- package/dist/showcase/assets/forms-gPD-Caru.js +915 -0
- package/dist/showcase/assets/funnel-Ca9nWMHm.js +1 -0
- package/dist/showcase/assets/generic-AAssz0h7.js +1 -0
- package/dist/showcase/assets/getPseudoElementBounds-fbxSMOsb.js +1 -0
- package/dist/showcase/assets/gift-BC42Oxfz.js +1 -0
- package/dist/showcase/assets/giftcard-cards-CFKnYe0c.js +85 -0
- package/dist/showcase/assets/git-branch-B-nF8w-J.js +1 -0
- package/dist/showcase/assets/global-search-D6Gxw0G3.js +1 -0
- package/dist/showcase/assets/global-search-jsb_4idg.js +215 -0
- package/dist/showcase/assets/globe-C92uBSrO.js +1 -0
- package/dist/showcase/assets/gradient-card-D4ly60sD.js +58 -0
- package/dist/showcase/assets/hash-BShTbxlR.js +1 -0
- package/dist/showcase/assets/header-CSiNqg9Q.js +1 -0
- package/dist/showcase/assets/header-notifications-CpHeFPQF.js +1 -0
- package/dist/showcase/assets/heart-B3hXs7fr.js +1 -0
- package/dist/showcase/assets/hooks-CamAqFFh.js +220 -0
- package/dist/showcase/assets/house-4_CouE-Y.js +1 -0
- package/dist/showcase/assets/icon-badge-CePIZqWR.js +1 -0
- package/dist/showcase/assets/icon-badge-DSbvvnxh.js +37 -0
- package/dist/showcase/assets/image-BxbFIbVJ.js +1 -0
- package/dist/showcase/assets/inbox-BXab1SM6.js +1 -0
- package/dist/showcase/assets/index-BPUtPJjB.css +2 -0
- package/dist/showcase/assets/index-BjjNfnhP.js +10 -0
- package/dist/showcase/assets/inertValue-CZOzgsmF.js +1 -0
- package/dist/showcase/assets/info-DzqwCq93.js +1 -0
- package/dist/showcase/assets/inline-stat-D5ybpUh-.js +15 -0
- package/dist/showcase/assets/inline-stat-Dq34wv-6.js +1 -0
- package/dist/showcase/assets/input-C8OfUHCK.js +1 -0
- package/dist/showcase/assets/input-D34Ge3rh.js +1 -0
- package/dist/showcase/assets/input-group-BCPZ6Pwq.js +1 -0
- package/dist/showcase/assets/input-group-CySTANka.js +47 -0
- package/dist/showcase/assets/inputs-CnmHo_lj.js +155 -0
- package/dist/showcase/assets/installation-BPvseS46.js +134 -0
- package/dist/showcase/assets/invoice-header-C9JjJWQX.js +36 -0
- package/dist/showcase/assets/invoice-items-DB8tbCv9.js +36 -0
- package/dist/showcase/assets/invoice-mini-Q_PnimKL.js +14 -0
- package/dist/showcase/assets/invoice-table-CLDvpLib.js +30 -0
- package/dist/showcase/assets/isSameDay-D8bDebyL.js +1 -0
- package/dist/showcase/assets/isToday-XVjRuMtp.js +1 -0
- package/dist/showcase/assets/italic-Cm13b8qb.js +1 -0
- package/dist/showcase/assets/item-C07859JQ.js +1 -0
- package/dist/showcase/assets/item-LinnMxvu.js +1 -0
- package/dist/showcase/assets/item-i7ZUMs5t.js +140 -0
- package/dist/showcase/assets/kanban-CIMTpuN5.js +188 -0
- package/dist/showcase/assets/key-round-Bh7EzOyR.js +1 -0
- package/dist/showcase/assets/label-C3A4CjeG.js +1 -0
- package/dist/showcase/assets/languages-C37jhetw.js +1 -0
- package/dist/showcase/assets/layers-Lyr6p-Nt.js +1 -0
- package/dist/showcase/assets/layout-app-shell-BWAkl9gq.js +608 -0
- package/dist/showcase/assets/layout-auth-y1alnhc8.js +790 -0
- package/dist/showcase/assets/layout-containers-B6c-uvil.js +101 -0
- package/dist/showcase/assets/layout-header-DNhJHWNw.js +203 -0
- package/dist/showcase/assets/layout-page-CXU7CnQK.js +315 -0
- package/dist/showcase/assets/layout-primitives-StuFwfwh.js +34 -0
- package/dist/showcase/assets/layout-sidebar-D-QjnZPh.js +224 -0
- package/dist/showcase/assets/layout-users-D7KMzs3-.js +117 -0
- package/dist/showcase/assets/layout-workspace-Butr7CL5.js +191 -0
- package/dist/showcase/assets/lib-D5nOMXIt.js +1 -0
- package/dist/showcase/assets/list-checks-Cg9HZf4W.js +1 -0
- package/dist/showcase/assets/lock-Da21HhQx.js +1 -0
- package/dist/showcase/assets/lock-keyhole-DNTfa9e3.js +1 -0
- package/dist/showcase/assets/mail-Bamky-ti.js +1 -0
- package/dist/showcase/assets/mail-check-BfVYPC42.js +1 -0
- package/dist/showcase/assets/map-BTlWnRAQ.js +124 -0
- package/dist/showcase/assets/map-pin-BU2RBuvC.js +1 -0
- package/dist/showcase/assets/media-library-DJxgoGAF.js +699 -0
- package/dist/showcase/assets/mention-inline-suggestions-CbXVAvbK.js +1 -0
- package/dist/showcase/assets/mentions-kMT-Z3qU.js +138 -0
- package/dist/showcase/assets/menus-bhp_n9PT.js +171 -0
- package/dist/showcase/assets/message-square-DC5Bb9Zs.js +1 -0
- package/dist/showcase/assets/metadata-list-DGr729EW.js +286 -0
- package/dist/showcase/assets/metadata-list-DyjhZi6d.js +1 -0
- package/dist/showcase/assets/metric-DRDok6Ci.js +1 -0
- package/dist/showcase/assets/metric-bar-DZsH4Q3U.js +1 -0
- package/dist/showcase/assets/metric-grid-BlFXTrid.js +1 -0
- package/dist/showcase/assets/metric-trend-chip-oEihbEK8.js +1 -0
- package/dist/showcase/assets/metrics-analytics-bar-BovaXHQX.js +44 -0
- package/dist/showcase/assets/metrics-analytics-cards-CeX9Skmd.js +50 -0
- package/dist/showcase/assets/metrics-comparison-DFPSmREl.js +76 -0
- package/dist/showcase/assets/metrics-heatmap-CXzfZwe_.js +27 -0
- package/dist/showcase/assets/metrics-inline-badge-DQJaNpYH.js +17 -0
- package/dist/showcase/assets/metrics-kpi-row-BIpv8CPU.js +31 -0
- package/dist/showcase/assets/metrics-micro-grid-EOCkRI5Z.js +42 -0
- package/dist/showcase/assets/metrics-overview-BD4s9H2T.js +192 -0
- package/dist/showcase/assets/metrics-stat-cards-t7asN5nA.js +54 -0
- package/dist/showcase/assets/minus-Dr1iTc_q.js +1 -0
- package/dist/showcase/assets/money-display-B5_VqQC0.js +1 -0
- package/dist/showcase/assets/money-display-bU2_cVGX.js +1 -0
- package/dist/showcase/assets/month-year-picker-DVRuYbLm.js +1 -0
- package/dist/showcase/assets/navigation-DBKvJoe-.js +231 -0
- package/dist/showcase/assets/navigation-DOhfmtgy.js +90 -0
- package/dist/showcase/assets/navigation-extras-BkO2TZP7.js +43 -0
- package/dist/showcase/assets/notification-banner-CE1Ei_ZT.js +1 -0
- package/dist/showcase/assets/onboarding-checklist-Bf0aoBoa.js +119 -0
- package/dist/showcase/assets/overflow-tab-bar-B2RXtyMP.js +1 -0
- package/dist/showcase/assets/overlays-4E_sUgkz.js +408 -0
- package/dist/showcase/assets/overlays-ulNl-Vhr.js +159 -0
- package/dist/showcase/assets/overview-CgymfIBq.js +184 -0
- package/dist/showcase/assets/package-CADuUP1u.js +1 -0
- package/dist/showcase/assets/package-check-O7MD6XE_.js +1 -0
- package/dist/showcase/assets/page-GB6OIgID.js +1 -0
- package/dist/showcase/assets/page-action-button-Dpprot7y.js +1 -0
- package/dist/showcase/assets/page-header-2VEUPx67.js +1 -0
- package/dist/showcase/assets/pagination-BBuRtAX9.js +1 -0
- package/dist/showcase/assets/pagination-C4mt4Q4l.js +42 -0
- package/dist/showcase/assets/paperclip-Cmyh3Bhf.js +1 -0
- package/dist/showcase/assets/password-input-CgZj1niQ.js +1 -0
- package/dist/showcase/assets/pencil-CtdXjogr.js +1 -0
- package/dist/showcase/assets/phone-CAFMH1vV.js +1 -0
- package/dist/showcase/assets/placeholder-pattern-DHKm-uYV.js +1 -0
- package/dist/showcase/assets/plus-CN2dzUxL.js +1 -0
- package/dist/showcase/assets/popover-DILNXLWy.js +1 -0
- package/dist/showcase/assets/popover-menu-Bp08xxOf.js +1 -0
- package/dist/showcase/assets/popover-o1EO2yVS.js +1 -0
- package/dist/showcase/assets/products-CCLAbHBN.js +423 -0
- package/dist/showcase/assets/progress-BGna-ZmU.js +18 -0
- package/dist/showcase/assets/progress-BSYlNLIJ.js +1 -0
- package/dist/showcase/assets/progress-CZVy3LGB.js +1 -0
- package/dist/showcase/assets/props-table-X9St7Q4m.js +1 -0
- package/dist/showcase/assets/props.generated-f_jHBhPb.json +41753 -0
- package/dist/showcase/assets/qr-code-CEmKf9xU.js +1 -0
- package/dist/showcase/assets/quote-IH6r-rlY.js +1 -0
- package/dist/showcase/assets/receipt-m9rOe5lY.js +1 -0
- package/dist/showcase/assets/receipt-text-C0TobatH.js +1 -0
- package/dist/showcase/assets/refinement-guide-t9T7iAS2.js +189 -0
- package/dist/showcase/assets/refresh-cw-Dy_Nc4jA.js +1 -0
- package/dist/showcase/assets/resolveValueLabel-DR7LgQP5.js +1 -0
- package/dist/showcase/assets/resource-BcJ8O6uj.js +1 -0
- package/dist/showcase/assets/resource-_zDXez77.js +139 -0
- package/dist/showcase/assets/resource-selector-card-CCAEF-AT.js +43 -0
- package/dist/showcase/assets/rich-text-editor-BJG_ECJp.js +143 -0
- package/dist/showcase/assets/rich-text-editor-fbgVfyEH.js +124 -0
- package/dist/showcase/assets/rotate-ccw-CGuTkHQ3.js +1 -0
- package/dist/showcase/assets/route-C7EZ2Njy.js +1 -0
- package/dist/showcase/assets/save-fKrt-yFG.js +1 -0
- package/dist/showcase/assets/schema-form-k7TXeirD.js +327 -0
- package/dist/showcase/assets/scroll-area-CqNwdlI6.js +32 -0
- package/dist/showcase/assets/scroll-area-UVtlGOgx.js +1 -0
- package/dist/showcase/assets/section-DuBNJP4P.js +1 -0
- package/dist/showcase/assets/select-CINVEIWn.js +1 -0
- package/dist/showcase/assets/select-ZLaamXrm.js +1 -0
- package/dist/showcase/assets/send-DBvt_4jT.js +1 -0
- package/dist/showcase/assets/separator-BdBXRpc3.js +28 -0
- package/dist/showcase/assets/separator-CkJjJQWW.js +1 -0
- package/dist/showcase/assets/separator-CxOeStjL.js +1 -0
- package/dist/showcase/assets/separator-O-VQMSf_.js +1 -0
- package/dist/showcase/assets/settings-2-BWjMVlyS.js +1 -0
- package/dist/showcase/assets/settings-D9Z79UcG.js +1 -0
- package/dist/showcase/assets/sheet-CK9C6r7_.js +1 -0
- package/dist/showcase/assets/shield-BboB3Zlo.js +1 -0
- package/dist/showcase/assets/shield-alert-CAAobStl.js +1 -0
- package/dist/showcase/assets/shield-check-Rfyzz9bK.js +1 -0
- package/dist/showcase/assets/shopping-bag-5hLD82YW.js +1 -0
- package/dist/showcase/assets/showcase-DhOQXB5E.js +132 -0
- package/dist/showcase/assets/sidebar-ZTUACc0t.js +1 -0
- package/dist/showcase/assets/sidebar.context-BiNOpG5W.js +1 -0
- package/dist/showcase/assets/skeleton-BZUSoHbk.js +1 -0
- package/dist/showcase/assets/skeleton-BZkYzAdq.js +1 -0
- package/dist/showcase/assets/skeleton-CrOp8tx3.js +29 -0
- package/dist/showcase/assets/skeleton-P5GXAj4U.js +1 -0
- package/dist/showcase/assets/slider-zlE7nLrp.js +1 -0
- package/dist/showcase/assets/smart-card-OExZHSsj.js +1 -0
- package/dist/showcase/assets/sonner-eMphKM9E.js +22 -0
- package/dist/showcase/assets/sortable.esm-CM9VD5N4.js +5 -0
- package/dist/showcase/assets/sparkles-CIB5irID.js +1 -0
- package/dist/showcase/assets/spinner-11-kP-Ob.js +1 -0
- package/dist/showcase/assets/spinner-D4G5TFSm.js +49 -0
- package/dist/showcase/assets/spinner-DKGukuFV.js +30 -0
- package/dist/showcase/assets/square-pen-zflKy9oX.js +1 -0
- package/dist/showcase/assets/stacked-avatars-Cve1Y6GY.js +1 -0
- package/dist/showcase/assets/star-DleXDkCp.js +1 -0
- package/dist/showcase/assets/startOfDay-TDP2erzM.js +1 -0
- package/dist/showcase/assets/styles-BKlX_Ipc.js +1 -0
- package/dist/showcase/assets/suggestions-Dt2hm1NY.js +126 -0
- package/dist/showcase/assets/switch-DAPAgJbv.js +1 -0
- package/dist/showcase/assets/switch-fQpP2tJl.js +1 -0
- package/dist/showcase/assets/sync-BRcK160D.js +124 -0
- package/dist/showcase/assets/table-Dhmbe1yN.js +686 -0
- package/dist/showcase/assets/table-actions-GGrPOQcv.js +1 -0
- package/dist/showcase/assets/table-v0Eu5yZn.js +1 -0
- package/dist/showcase/assets/tabs-DmaXB1aF.js +19 -0
- package/dist/showcase/assets/tabs-vbNIJ-eo.js +1 -0
- package/dist/showcase/assets/tags-input-Bms_Q5CE.js +1 -0
- package/dist/showcase/assets/text-button-gvJCzaXS.js +1 -0
- package/dist/showcase/assets/text-link-DkByVX4d.js +1 -0
- package/dist/showcase/assets/textarea-B6Ho29y3.js +1 -0
- package/dist/showcase/assets/textarea-JCb0yhZ1.js +1 -0
- package/dist/showcase/assets/throttle-alert-CPU-u6Rs.js +1 -0
- package/dist/showcase/assets/timelines-Bw7mvAdx.js +200 -0
- package/dist/showcase/assets/toggle-group-jlIGX1zh.js +1 -0
- package/dist/showcase/assets/toggles-DV6V9vj-.js +71 -0
- package/dist/showcase/assets/toggles-group-C-Y3dG8q.js +32 -0
- package/dist/showcase/assets/tooltip-CDtPyNOv.js +31 -0
- package/dist/showcase/assets/trash-2-CXRm3lMl.js +1 -0
- package/dist/showcase/assets/trending-up-Bcyp9cw8.js +1 -0
- package/dist/showcase/assets/truck-DVgzuKLP.js +1 -0
- package/dist/showcase/assets/typography-BKPf4j85.js +223 -0
- package/dist/showcase/assets/ui-badge-D-Ud2MES.js +28 -0
- package/dist/showcase/assets/ui-card-gGqI2cfr.js +30 -0
- package/dist/showcase/assets/ui-table-Bqcab_kq.js +42 -0
- package/dist/showcase/assets/upload-tray-BFh6twLE.js +138 -0
- package/dist/showcase/assets/use-layout-link-e9jr981L.js +1 -0
- package/dist/showcase/assets/useAriaLabelledBy-ByBTPUi3.js +1 -0
- package/dist/showcase/assets/useCollapsiblePanel-Bx_-SRtw.js +1 -0
- package/dist/showcase/assets/useCompositeItem-Dmih9c3W.js +1 -0
- package/dist/showcase/assets/useCompositeListItem-C0QJgAKb.js +1 -0
- package/dist/showcase/assets/useLabelableId-COfjI9qt.js +1 -0
- package/dist/showcase/assets/useOpenInteractionType-CRefmlni.js +1 -0
- package/dist/showcase/assets/useRender-Bgu76j1u.js +1 -0
- package/dist/showcase/assets/useTriggerFocusGuards-B2fPZeWf.js +1 -0
- package/dist/showcase/assets/useValueChanged-CNjJ-spo.js +1 -0
- package/dist/showcase/assets/user-CmkLnMh9.js +1 -0
- package/dist/showcase/assets/user-plus-3CGFNUf0.js +1 -0
- package/dist/showcase/assets/users-CuO8W7wn.js +1 -0
- package/dist/showcase/assets/vendor-profile-HLMsE22G.js +37 -0
- package/dist/showcase/assets/video-CoHnn0fp.js +1 -0
- package/dist/showcase/assets/visually-hidden-D5bPAL7Q.js +1 -0
- package/dist/showcase/assets/wrench-C93IxaGt.js +1 -0
- package/dist/showcase/assets/x-BJDvVLAz.js +1 -0
- package/dist/showcase/assets/zap-DYD_Ljkv.js +1 -0
- package/dist/showcase/index.html +2 -2
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/css/themes/shadcn.default.css +2 -2
- package/dist/_shared/ai-artifact-BylloxGO.js +0 -1099
- package/dist/_shared/ai-artifact-BylloxGO.js.map +0 -1
- package/dist/_shared/ai-artifact-DfT97Mpi.cjs +0 -3
- package/dist/_shared/ai-artifact-DfT97Mpi.cjs.map +0 -1
- package/dist/_shared/auth-1Ht9Kevx.js +0 -643
- package/dist/_shared/auth-1Ht9Kevx.js.map +0 -1
- package/dist/_shared/auth-DTN6sFXM.cjs +0 -2
- package/dist/_shared/auth-DTN6sFXM.cjs.map +0 -1
- package/dist/_shared/badge-LSAgdmGt.cjs +0 -2
- package/dist/_shared/badge-LSAgdmGt.cjs.map +0 -1
- package/dist/_shared/badge-nZ2zbAV4.js +0 -110
- package/dist/_shared/badge-nZ2zbAV4.js.map +0 -1
- package/dist/_shared/comments-B_WKQUol.js +0 -952
- package/dist/_shared/comments-B_WKQUol.js.map +0 -1
- package/dist/_shared/comments-DMHMNObS.cjs +0 -2
- package/dist/_shared/comments-DMHMNObS.cjs.map +0 -1
- package/dist/_shared/data-display-4E_irfF2.js +0 -1878
- package/dist/_shared/data-display-4E_irfF2.js.map +0 -1
- package/dist/_shared/data-display-BPn-7qFO.cjs +0 -2
- package/dist/_shared/data-display-BPn-7qFO.cjs.map +0 -1
- package/dist/_shared/date-picker-CvqLnlxm.js +0 -1361
- package/dist/_shared/date-picker-CvqLnlxm.js.map +0 -1
- package/dist/_shared/date-picker-D83fCi2g.cjs +0 -2
- package/dist/_shared/date-picker-D83fCi2g.cjs.map +0 -1
- package/dist/_shared/date-pickers-C6ku2BPp.cjs +0 -2
- package/dist/_shared/date-pickers-C6ku2BPp.cjs.map +0 -1
- package/dist/_shared/date-pickers-RdbwIhdY.js +0 -329
- package/dist/_shared/date-pickers-RdbwIhdY.js.map +0 -1
- package/dist/_shared/display-DFVeSuWL.js +0 -986
- package/dist/_shared/display-DFVeSuWL.js.map +0 -1
- package/dist/_shared/display-Lr3xTd4a.cjs +0 -2
- package/dist/_shared/display-Lr3xTd4a.cjs.map +0 -1
- package/dist/_shared/forms-BA8Aa_fi.js +0 -3534
- package/dist/_shared/forms-BA8Aa_fi.js.map +0 -1
- package/dist/_shared/forms-CNjjdFcf.cjs +0 -2
- package/dist/_shared/forms-CNjjdFcf.cjs.map +0 -1
- package/dist/_shared/header-BEsz1_so.cjs +0 -2
- package/dist/_shared/header-BEsz1_so.cjs.map +0 -1
- package/dist/_shared/header-bJx8z6zT.js +0 -447
- package/dist/_shared/header-bJx8z6zT.js.map +0 -1
- package/dist/_shared/hooks-gRgVhyY2.js +0 -95
- package/dist/_shared/hooks-gRgVhyY2.js.map +0 -1
- package/dist/_shared/hooks-nFiRfUxX.cjs +0 -2
- package/dist/_shared/hooks-nFiRfUxX.cjs.map +0 -1
- package/dist/_shared/layout-C_dYiKtE.cjs +0 -2
- package/dist/_shared/layout-C_dYiKtE.cjs.map +0 -1
- package/dist/_shared/layout-nigj488k.js +0 -268
- package/dist/_shared/layout-nigj488k.js.map +0 -1
- package/dist/_shared/mentions-BE51BNeq.cjs +0 -2
- package/dist/_shared/mentions-BE51BNeq.cjs.map +0 -1
- package/dist/_shared/mentions-CBhP29St.js +0 -506
- package/dist/_shared/mentions-CBhP29St.js.map +0 -1
- package/dist/_shared/navigation-CWK_YQ5Y.js +0 -436
- package/dist/_shared/navigation-CWK_YQ5Y.js.map +0 -1
- package/dist/_shared/navigation-DTBMb7-M.cjs +0 -2
- package/dist/_shared/navigation-DTBMb7-M.cjs.map +0 -1
- package/dist/_shared/settings-D-HAOE3R.js +0 -143
- package/dist/_shared/settings-D-HAOE3R.js.map +0 -1
- package/dist/_shared/settings-DkL3bOk0.cjs +0 -2
- package/dist/_shared/settings-DkL3bOk0.cjs.map +0 -1
- package/dist/_shared/sidebar-BTyx7ipN.cjs +0 -2
- package/dist/_shared/sidebar-BTyx7ipN.cjs.map +0 -1
- package/dist/_shared/sidebar-DkBNualh.js +0 -548
- package/dist/_shared/sidebar-DkBNualh.js.map +0 -1
- package/dist/_shared/table-Cq0jkSm5.js +0 -1377
- package/dist/_shared/table-Cq0jkSm5.js.map +0 -1
- package/dist/_shared/table-GqTKCC8F.cjs +0 -2
- package/dist/_shared/table-GqTKCC8F.cjs.map +0 -1
- package/dist/_shared/workspace-5UId04M9.js +0 -357
- package/dist/_shared/workspace-5UId04M9.js.map +0 -1
- package/dist/_shared/workspace-BMws_rFf.cjs +0 -2
- package/dist/_shared/workspace-BMws_rFf.cjs.map +0 -1
- package/dist/showcase/assets/AreaChart-oKO7Ng_P.js +0 -6
- package/dist/showcase/assets/CompositeItem-CK7jBYU8.js +0 -1
- package/dist/showcase/assets/CompositeRoot-_AuToqhT.js +0 -1
- package/dist/showcase/assets/DialogTrigger-C44ZZXQ9.js +0 -1
- package/dist/showcase/assets/LabelableContext-DLVZlnur.js +0 -1
- package/dist/showcase/assets/PreviewLayout-Oik7TDHN.js +0 -1
- package/dist/showcase/assets/RadioGroup-DeYb8CGE.js +0 -1
- package/dist/showcase/assets/ScrollAreaCorner-BZlE_Bil.js +0 -1
- package/dist/showcase/assets/Separator-uiIktHzk.js +0 -1
- package/dist/showcase/assets/ToolbarRootContext-CEzj5dKk.js +0 -1
- package/dist/showcase/assets/accordion-B_wg_YOp.js +0 -171
- package/dist/showcase/assets/accordion-variants-O6U7E38x.js +0 -1
- package/dist/showcase/assets/action-menu-D_wGvb_o.js +0 -1
- package/dist/showcase/assets/actions-u4Fl4zm1.js +0 -310
- package/dist/showcase/assets/activities-C6iITHzB.js +0 -500
- package/dist/showcase/assets/activities-feed-card-OpYs16UV.js +0 -1
- package/dist/showcase/assets/admin-Bq15E5Wd.js +0 -140
- package/dist/showcase/assets/ai-DcUzGTlb.js +0 -207
- package/dist/showcase/assets/ai-artifact-BUAu1_jV.js +0 -2
- package/dist/showcase/assets/ai-chat-C6OWWBqh.js +0 -568
- package/dist/showcase/assets/ai-elements-CCe4Aqj_.js +0 -387
- package/dist/showcase/assets/ai-tool-call-B_NF1ePn.js +0 -1
- package/dist/showcase/assets/alert-B4VWkFPE.js +0 -1
- package/dist/showcase/assets/alert-BDIqciKo.js +0 -62
- package/dist/showcase/assets/alert-jvCEGWe6.js +0 -93
- package/dist/showcase/assets/api-key-list-BH8mde9A.js +0 -1
- package/dist/showcase/assets/api-key-list-CA6O3hsc.js +0 -73
- package/dist/showcase/assets/app-sidebar-DsMTwSAB.js +0 -1
- package/dist/showcase/assets/arrow-down-BzPC0rON.js +0 -1
- package/dist/showcase/assets/arrow-left-DNehZvF-.js +0 -1
- package/dist/showcase/assets/arrow-right-CKIgWncF.js +0 -1
- package/dist/showcase/assets/arrow-up-YjujZi8v.js +0 -1
- package/dist/showcase/assets/arrow-up-right-KnVxFmw9.js +0 -1
- package/dist/showcase/assets/avatar-BBLri7tX.js +0 -57
- package/dist/showcase/assets/avatar-BeFx8JQd.js +0 -1
- package/dist/showcase/assets/avatar-CFWUZzaF.js +0 -67
- package/dist/showcase/assets/avatar-D6exHRSK.js +0 -1
- package/dist/showcase/assets/badge-check-BfY3RIjR.js +0 -1
- package/dist/showcase/assets/badge-jGj2HQsg.js +0 -31
- package/dist/showcase/assets/bell-CTDSIOv8.js +0 -1
- package/dist/showcase/assets/boolean-indicator-C1u7OFcR.js +0 -1
- package/dist/showcase/assets/bot-D-iqtYiQ.js +0 -1
- package/dist/showcase/assets/box-DxjjLEh2.js +0 -1
- package/dist/showcase/assets/braces-B6XLlZwJ.js +0 -1
- package/dist/showcase/assets/brain-BdNpswBH.js +0 -1
- package/dist/showcase/assets/brand-C6srYuIa.js +0 -36
- package/dist/showcase/assets/breadcrumb-BaeV7C4t.js +0 -52
- package/dist/showcase/assets/breadcrumb-jKu4EUFo.js +0 -1
- package/dist/showcase/assets/breadcrumbs-D7vYX_5y.js +0 -1
- package/dist/showcase/assets/briefcase-cs9wyoxL.js +0 -1
- package/dist/showcase/assets/building-2-rcMEYcbf.js +0 -1
- package/dist/showcase/assets/button-group-D1oXfasP.js +0 -1
- package/dist/showcase/assets/button-oBRwhAhs.js +0 -44
- package/dist/showcase/assets/buttons-D_SDu9w3.js +0 -272
- package/dist/showcase/assets/calendar-CGTiVckW.js +0 -1
- package/dist/showcase/assets/calendar-ChLkVME0.js +0 -16
- package/dist/showcase/assets/calendar-CjMPvWfI.js +0 -1
- package/dist/showcase/assets/calendar-days-CNom8Y38.js +0 -1
- package/dist/showcase/assets/camera-D0rjOOcs.js +0 -1
- package/dist/showcase/assets/card-CYz4UxYz.js +0 -1
- package/dist/showcase/assets/card-D9updr3B.js +0 -188
- package/dist/showcase/assets/card-primitives-BQ0hSEWX.js +0 -1
- package/dist/showcase/assets/card-radio-group-CrNG04Bl.js +0 -1
- package/dist/showcase/assets/cards-D4Lw-AI6.js +0 -354
- package/dist/showcase/assets/carousel-C6Mmapzw.js +0 -449
- package/dist/showcase/assets/cell-renderers-BF80Z3jW.js +0 -1
- package/dist/showcase/assets/chart-BHgMfUB5.js +0 -358
- package/dist/showcase/assets/chart-column-CE_VhlUz.js +0 -1
- package/dist/showcase/assets/checkbox-CDLT09vU.js +0 -1
- package/dist/showcase/assets/checkbox-Dj24Tegr.js +0 -1
- package/dist/showcase/assets/chevron-down-1GeJ4hOO.js +0 -1
- package/dist/showcase/assets/chevron-left-wqlWv2Qy.js +0 -1
- package/dist/showcase/assets/chevron-up-CZAm-2rZ.js +0 -1
- package/dist/showcase/assets/chevrons-up-down-DgysGYWR.js +0 -1
- package/dist/showcase/assets/circle-C9Ooo8Lv.js +0 -1
- package/dist/showcase/assets/circle-alert-C6XBfkf2.js +0 -1
- package/dist/showcase/assets/circle-check-DvCYlVmL.js +0 -1
- package/dist/showcase/assets/circle-check-big-C8o9clAE.js +0 -1
- package/dist/showcase/assets/circle-dot-BoYf3vOR.js +0 -1
- package/dist/showcase/assets/circle-question-mark-DYPX0qe9.js +0 -1
- package/dist/showcase/assets/circle-x-GosnT0l7.js +0 -1
- package/dist/showcase/assets/clock-3-DklFhayq.js +0 -1
- package/dist/showcase/assets/clock-BvwTkk1w.js +0 -1
- package/dist/showcase/assets/code-xml-AGOwtN8Z.js +0 -1
- package/dist/showcase/assets/collapsible-CBkbr3ho.js +0 -1
- package/dist/showcase/assets/collapsible-CmY1SA28.js +0 -27
- package/dist/showcase/assets/collapsible-DfDnQ_t_.js +0 -1
- package/dist/showcase/assets/combobox-BsZQo7hF.js +0 -685
- package/dist/showcase/assets/command-B0Q84gg6.js +0 -1
- package/dist/showcase/assets/command-BtADdA65.js +0 -1
- package/dist/showcase/assets/comment-composer-BmBnkba9.js +0 -1
- package/dist/showcase/assets/comment-item-y5mTfSmU.js +0 -1
- package/dist/showcase/assets/comments-BuYiGPxI.js +0 -357
- package/dist/showcase/assets/commerce-21Ef_rsW.js +0 -267
- package/dist/showcase/assets/composite-fKT6fZFs.js +0 -1
- package/dist/showcase/assets/conditional-rendering-DsTG0sOE.js +0 -1
- package/dist/showcase/assets/contact-card-S8koA9Sr.js +0 -65
- package/dist/showcase/assets/content-container-B4gW5fmA.js +0 -1
- package/dist/showcase/assets/copyable-D2xL2rMm.js +0 -96
- package/dist/showcase/assets/copyable-gLrmPayI.js +0 -1
- package/dist/showcase/assets/course-card-B8eEvF7a.js +0 -77
- package/dist/showcase/assets/cpu-Cp1On3tr.js +0 -1
- package/dist/showcase/assets/credit-card-QbZMZB90.js +0 -1
- package/dist/showcase/assets/css-variables-BXICo9fV.js +0 -1205
- package/dist/showcase/assets/currency-D2MSLjLt.js +0 -149
- package/dist/showcase/assets/dark-surfaces-CJsxuvQU.js +0 -90
- package/dist/showcase/assets/data-view-syhKhdz9.js +0 -124
- package/dist/showcase/assets/data-view-znnAeb6b.js +0 -4
- package/dist/showcase/assets/database-isLkCvDd.js +0 -1
- package/dist/showcase/assets/date-block-BDn9lGVM.js +0 -1
- package/dist/showcase/assets/date-block-CqRL1xfo.js +0 -1
- package/dist/showcase/assets/date-picker-DNcmSgQk.js +0 -1
- package/dist/showcase/assets/date-pickers-3lQUDDS7.js +0 -73
- package/dist/showcase/assets/dense-info-CfvqiIpM.js +0 -106
- package/dist/showcase/assets/design-system-consistency-C3yRhKwF.js +0 -264
- package/dist/showcase/assets/dialog-DiAkrPHO.js +0 -1
- package/dist/showcase/assets/dialog-feUFM03m.js +0 -1
- package/dist/showcase/assets/dialog-ruVOqJnB.js +0 -1
- package/dist/showcase/assets/display-utilities-SPJxlrkp.js +0 -4
- package/dist/showcase/assets/display-utilities.examples-ByRydMl0.js +0 -302
- package/dist/showcase/assets/dist-C9DVZddl.js +0 -45
- package/dist/showcase/assets/dist-DNARKM_B.js +0 -1
- package/dist/showcase/assets/dollar-sign-CUDuWyun.js +0 -1
- package/dist/showcase/assets/download-CIbh9VUU.js +0 -1
- package/dist/showcase/assets/dropdown-menu-MoIAG0ES.js +0 -1
- package/dist/showcase/assets/dropzone-D0kHIUuh.js +0 -1
- package/dist/showcase/assets/earth-BpNTeF25.js +0 -1
- package/dist/showcase/assets/ellipsis-B9w0cuoH.js +0 -1
- package/dist/showcase/assets/ellipsis-vertical-DHbOsjTF.js +0 -1
- package/dist/showcase/assets/empty-DvYVgcNF.js +0 -1
- package/dist/showcase/assets/empty-item-oFM5kPCp.js +0 -49
- package/dist/showcase/assets/empty-state-DTq86muv.js +0 -1
- package/dist/showcase/assets/empty-state-De7XCht-.js +0 -190
- package/dist/showcase/assets/enhanced-activities--XHjx99M.js +0 -357
- package/dist/showcase/assets/enhanced-combobox-CX_mTkei.js +0 -1
- package/dist/showcase/assets/esm-XXqBjGGF.js +0 -2
- package/dist/showcase/assets/event-calendar-zTiCWOF5.js +0 -138
- package/dist/showcase/assets/event-log-C_zSlY6y.js +0 -330
- package/dist/showcase/assets/example-Cv05rz75.js +0 -1
- package/dist/showcase/assets/external-link-DaR-AMyf.js +0 -1
- package/dist/showcase/assets/eye-CDSbB0kZ.js +0 -1
- package/dist/showcase/assets/feature-announcement-DJ26ZDVB.js +0 -34
- package/dist/showcase/assets/file-DPSK5cGC.js +0 -1
- package/dist/showcase/assets/file-text-BBWpAppG.js +0 -1
- package/dist/showcase/assets/filter-layout-CZRGcd6Z.js +0 -1
- package/dist/showcase/assets/filters-Bn7hYUeq.js +0 -139
- package/dist/showcase/assets/flag-BRs-GTCx.js +0 -1
- package/dist/showcase/assets/folder-open-DnFjlB3X.js +0 -1
- package/dist/showcase/assets/form-field-SW-Yp7H7.js +0 -1
- package/dist/showcase/assets/format-Bki5m7M3.js +0 -1
- package/dist/showcase/assets/forms-CAUL2gGq.js +0 -915
- package/dist/showcase/assets/funnel-D6g2Suhd.js +0 -1
- package/dist/showcase/assets/generic-CU6JNqKO.js +0 -1
- package/dist/showcase/assets/getPseudoElementBounds-yqDwWA_y.js +0 -1
- package/dist/showcase/assets/gift-B2Qp9Vqt.js +0 -1
- package/dist/showcase/assets/giftcard-cards-Dk0DYoN2.js +0 -85
- package/dist/showcase/assets/git-branch-CPtvCNGc.js +0 -1
- package/dist/showcase/assets/global-search-D1ow01VA.js +0 -1
- package/dist/showcase/assets/global-search-DQR2AgDO.js +0 -215
- package/dist/showcase/assets/globe-BiZgUZFZ.js +0 -1
- package/dist/showcase/assets/gradient-card-D5isLy3_.js +0 -58
- package/dist/showcase/assets/hash-NJ5ohGOa.js +0 -1
- package/dist/showcase/assets/header-Df9uYSSH.js +0 -1
- package/dist/showcase/assets/header-notifications-sPR5NuON.js +0 -1
- package/dist/showcase/assets/heart-C4t7PVKW.js +0 -1
- package/dist/showcase/assets/hooks-0TKg0ZAK.js +0 -220
- package/dist/showcase/assets/house-CuLXFtjd.js +0 -1
- package/dist/showcase/assets/icon-badge-Cr6DD-_7.js +0 -1
- package/dist/showcase/assets/icon-badge-DMdMSSRL.js +0 -37
- package/dist/showcase/assets/image-DYjJaO0i.js +0 -1
- package/dist/showcase/assets/inbox-DGF8FgvV.js +0 -1
- package/dist/showcase/assets/index-ATou_nFA.js +0 -10
- package/dist/showcase/assets/index-C8U-r6l7.css +0 -2
- package/dist/showcase/assets/inertValue-CBi0sj8C.js +0 -1
- package/dist/showcase/assets/info-DLaTRPUT.js +0 -1
- package/dist/showcase/assets/inline-stat-DGpunTNF.js +0 -1
- package/dist/showcase/assets/inline-stat-rUaaOSmR.js +0 -15
- package/dist/showcase/assets/input-Cmrgo51H.js +0 -1
- package/dist/showcase/assets/input-CnmnWnGb.js +0 -1
- package/dist/showcase/assets/input-group-BwujFvXM.js +0 -1
- package/dist/showcase/assets/input-group-DvXgZtra.js +0 -47
- package/dist/showcase/assets/inputs-CjzW_R8z.js +0 -155
- package/dist/showcase/assets/installation-2dW-rmF2.js +0 -134
- package/dist/showcase/assets/invoice-header-DeWxMKCe.js +0 -36
- package/dist/showcase/assets/invoice-items-Dxb95w0e.js +0 -36
- package/dist/showcase/assets/invoice-mini-EMzCkmR7.js +0 -14
- package/dist/showcase/assets/invoice-table-ClWJaclJ.js +0 -30
- package/dist/showcase/assets/isSameDay-BNPzVySj.js +0 -1
- package/dist/showcase/assets/isToday-D6n7oLej.js +0 -1
- package/dist/showcase/assets/italic-B8w3dpYw.js +0 -1
- package/dist/showcase/assets/item-B8_dwOlT.js +0 -1
- package/dist/showcase/assets/item-Baq-Mmy2.js +0 -1
- package/dist/showcase/assets/item-BtMuqGwy.js +0 -140
- package/dist/showcase/assets/kanban-B-QxvKMg.js +0 -188
- package/dist/showcase/assets/key-round-CrBIyzIa.js +0 -1
- package/dist/showcase/assets/label-VWe_nbHh.js +0 -1
- package/dist/showcase/assets/languages-N0uGt5nC.js +0 -1
- package/dist/showcase/assets/layers-DEZvT5cX.js +0 -1
- package/dist/showcase/assets/layout-app-shell-T9UqKX2o.js +0 -608
- package/dist/showcase/assets/layout-auth-IVC4DuU3.js +0 -790
- package/dist/showcase/assets/layout-containers-naBpuH05.js +0 -101
- package/dist/showcase/assets/layout-header-9i_7ygKU.js +0 -203
- package/dist/showcase/assets/layout-page-CrEUiJpW.js +0 -315
- package/dist/showcase/assets/layout-primitives-DPrVHpu3.js +0 -34
- package/dist/showcase/assets/layout-sidebar-D7z6-kPu.js +0 -224
- package/dist/showcase/assets/layout-users-Cov9D84d.js +0 -117
- package/dist/showcase/assets/layout-workspace-Czlmi8gY.js +0 -191
- package/dist/showcase/assets/lib-DNMH46Rn.js +0 -1
- package/dist/showcase/assets/list-checks-DygDRIGi.js +0 -1
- package/dist/showcase/assets/lock-DqEahakB.js +0 -1
- package/dist/showcase/assets/lock-keyhole-CETEK3R0.js +0 -1
- package/dist/showcase/assets/mail-LKhBlrEc.js +0 -1
- package/dist/showcase/assets/mail-check-BOTjWQJf.js +0 -1
- package/dist/showcase/assets/map-0vJT2r8C.js +0 -124
- package/dist/showcase/assets/map-pin-D0qrpDJI.js +0 -1
- package/dist/showcase/assets/media-library-Bp99WaS9.js +0 -699
- package/dist/showcase/assets/mention-inline-suggestions-mlV7LRvD.js +0 -1
- package/dist/showcase/assets/mentions-Cmd1zxOR.js +0 -138
- package/dist/showcase/assets/menus-CtjFPoDr.js +0 -171
- package/dist/showcase/assets/message-square-BXyvikcZ.js +0 -1
- package/dist/showcase/assets/metadata-list-DLUBcy7E.js +0 -286
- package/dist/showcase/assets/metadata-list-F3bWXtZB.js +0 -1
- package/dist/showcase/assets/metric-CXPRptlh.js +0 -1
- package/dist/showcase/assets/metric-bar-BY25WVZ0.js +0 -1
- package/dist/showcase/assets/metric-grid-DQtf9y6E.js +0 -1
- package/dist/showcase/assets/metric-trend-chip-CXHpkj3U.js +0 -1
- package/dist/showcase/assets/metrics-analytics-bar-BIuwiVrn.js +0 -44
- package/dist/showcase/assets/metrics-analytics-cards-yx5lMGQf.js +0 -50
- package/dist/showcase/assets/metrics-comparison-BC_7jLXf.js +0 -76
- package/dist/showcase/assets/metrics-heatmap-C_nhCljz.js +0 -27
- package/dist/showcase/assets/metrics-inline-badge-3oySQnoR.js +0 -17
- package/dist/showcase/assets/metrics-kpi-row-zS4-oiTO.js +0 -31
- package/dist/showcase/assets/metrics-micro-grid-UJkA2LNR.js +0 -42
- package/dist/showcase/assets/metrics-overview-DQFr22ol.js +0 -192
- package/dist/showcase/assets/metrics-stat-cards-DnBirxKV.js +0 -54
- package/dist/showcase/assets/minus-BOVQEx6C.js +0 -1
- package/dist/showcase/assets/money-display-DV7xlrNV.js +0 -1
- package/dist/showcase/assets/money-display-DxnM5--7.js +0 -1
- package/dist/showcase/assets/month-year-picker-BzRXCrQ7.js +0 -1
- package/dist/showcase/assets/navigation-ChJKLv4Y.js +0 -90
- package/dist/showcase/assets/navigation-D7VJsKrP.js +0 -231
- package/dist/showcase/assets/navigation-extras-BVc1xQuB.js +0 -43
- package/dist/showcase/assets/notification-banner-1ivcmPLe.js +0 -1
- package/dist/showcase/assets/onboarding-checklist-CbARgwpX.js +0 -119
- package/dist/showcase/assets/overflow-tab-bar-DlqMmyTx.js +0 -1
- package/dist/showcase/assets/overlays-DkWO50b8.js +0 -159
- package/dist/showcase/assets/overlays-KKZpxWjt.js +0 -408
- package/dist/showcase/assets/overview-BjQe-YZE.js +0 -184
- package/dist/showcase/assets/package-DhQRoFDo.js +0 -1
- package/dist/showcase/assets/package-check-CBgGiccG.js +0 -1
- package/dist/showcase/assets/page-BWTmyV5J.js +0 -1
- package/dist/showcase/assets/page-action-button-DV-YYRA4.js +0 -1
- package/dist/showcase/assets/page-header-Bmg4NU_P.js +0 -1
- package/dist/showcase/assets/pagination-ByQ_OXRU.js +0 -1
- package/dist/showcase/assets/pagination-Db5CuoBb.js +0 -42
- package/dist/showcase/assets/paperclip-BQNPUzG_.js +0 -1
- package/dist/showcase/assets/password-input-CPvjzM1f.js +0 -1
- package/dist/showcase/assets/pencil-DuBakHme.js +0 -1
- package/dist/showcase/assets/phone-t94LTB1m.js +0 -1
- package/dist/showcase/assets/placeholder-pattern-BNou2ep-.js +0 -1
- package/dist/showcase/assets/plus-BRcp6JhT.js +0 -1
- package/dist/showcase/assets/popover-CVuJP03o.js +0 -1
- package/dist/showcase/assets/popover-D_P2gTn8.js +0 -1
- package/dist/showcase/assets/popover-menu-DGY5jEk4.js +0 -1
- package/dist/showcase/assets/products-8sUfDMPU.js +0 -423
- package/dist/showcase/assets/progress-BrMvIZIz.js +0 -1
- package/dist/showcase/assets/progress-CSXZAavT.js +0 -18
- package/dist/showcase/assets/progress-Dvqpf_O0.js +0 -1
- package/dist/showcase/assets/props-table-BAfz1Zc6.js +0 -1
- package/dist/showcase/assets/props.generated-CuVoOKYT.json +0 -41746
- package/dist/showcase/assets/qr-code-C-CaHJQ2.js +0 -1
- package/dist/showcase/assets/quote-Ci80eS0u.js +0 -1
- package/dist/showcase/assets/receipt-jvwbPuE3.js +0 -1
- package/dist/showcase/assets/receipt-text-CT0GiMQm.js +0 -1
- package/dist/showcase/assets/refinement-guide-BnCQ9-6f.js +0 -189
- package/dist/showcase/assets/refresh-cw-CXDARnCe.js +0 -1
- package/dist/showcase/assets/resolveValueLabel-DJanfUim.js +0 -1
- package/dist/showcase/assets/resource-Bir-z7ie.js +0 -139
- package/dist/showcase/assets/resource-D19qhfYP.js +0 -1
- package/dist/showcase/assets/resource-selector-card-BUbuu-QH.js +0 -43
- package/dist/showcase/assets/rich-text-editor-BCtz589M.js +0 -124
- package/dist/showcase/assets/rich-text-editor-uu9FmB8B.js +0 -143
- package/dist/showcase/assets/rotate-ccw-DEIVfiHA.js +0 -1
- package/dist/showcase/assets/route-B5vtDLsE.js +0 -1
- package/dist/showcase/assets/save-DQ4Up8ZB.js +0 -1
- package/dist/showcase/assets/schema-form-D7wbdl5u.js +0 -327
- package/dist/showcase/assets/scroll-area-B0QD6o1Y.js +0 -32
- package/dist/showcase/assets/scroll-area-BoZ1SrfI.js +0 -1
- package/dist/showcase/assets/section-BXsVHOsI.js +0 -1
- package/dist/showcase/assets/select-CW8SYsOY.js +0 -1
- package/dist/showcase/assets/select-DmRqLSoG.js +0 -1
- package/dist/showcase/assets/send-Dxs1-xSj.js +0 -1
- package/dist/showcase/assets/separator-BLOG_8oO.js +0 -1
- package/dist/showcase/assets/separator-DZC_uQU-.js +0 -1
- package/dist/showcase/assets/separator-OlLHRN7k.js +0 -28
- package/dist/showcase/assets/settings-2-BSpgytsy.js +0 -1
- package/dist/showcase/assets/settings-CCNP7XOu.js +0 -1
- package/dist/showcase/assets/sheet-DIfJjbgA.js +0 -1
- package/dist/showcase/assets/shield-D2gTWkwA.js +0 -1
- package/dist/showcase/assets/shield-alert-C-3oWpoe.js +0 -1
- package/dist/showcase/assets/shield-check-D11r1eJ8.js +0 -1
- package/dist/showcase/assets/shopping-bag-DAeaVQ5O.js +0 -1
- package/dist/showcase/assets/showcase-GdZcH6OR.js +0 -132
- package/dist/showcase/assets/sidebar-RBzHNuB7.js +0 -1
- package/dist/showcase/assets/sidebar.context-Dyw470Qp.js +0 -1
- package/dist/showcase/assets/skeleton-B7crngMw.js +0 -1
- package/dist/showcase/assets/skeleton-BwEVNdGJ.js +0 -1
- package/dist/showcase/assets/skeleton-DM73_ueB.js +0 -1
- package/dist/showcase/assets/skeleton-cHsWJOtO.js +0 -29
- package/dist/showcase/assets/slider-DRPnIs0S.js +0 -1
- package/dist/showcase/assets/smart-card-DER7dpD9.js +0 -1
- package/dist/showcase/assets/sonner-Go1YsPBH.js +0 -22
- package/dist/showcase/assets/sortable.esm-q6LdsxSr.js +0 -5
- package/dist/showcase/assets/sparkles-DqH40POl.js +0 -1
- package/dist/showcase/assets/spinner-C0YWWxyj.js +0 -1
- package/dist/showcase/assets/spinner-CpHNR13f.js +0 -30
- package/dist/showcase/assets/spinner-Dwvf24e9.js +0 -49
- package/dist/showcase/assets/square-pen-D-xHmIA0.js +0 -1
- package/dist/showcase/assets/stacked-avatars-C92NYKIa.js +0 -1
- package/dist/showcase/assets/star-dD4CAJ83.js +0 -1
- package/dist/showcase/assets/startOfDay-BXZshd4g.js +0 -1
- package/dist/showcase/assets/styles-BPJdkO_3.js +0 -1
- package/dist/showcase/assets/suggestions-CyhKme4Q.js +0 -126
- package/dist/showcase/assets/switch-C7DVTgQd.js +0 -1
- package/dist/showcase/assets/switch-LU6nljdS.js +0 -1
- package/dist/showcase/assets/sync-bERw1shm.js +0 -124
- package/dist/showcase/assets/table-BuIv4nqB.js +0 -686
- package/dist/showcase/assets/table-CDMDtBgJ.js +0 -1
- package/dist/showcase/assets/table-actions-DsK7d8Yb.js +0 -1
- package/dist/showcase/assets/tabs-BDryywGb.js +0 -19
- package/dist/showcase/assets/tabs-BNaZmM48.js +0 -1
- package/dist/showcase/assets/tags-input-CzE_5BJl.js +0 -1
- package/dist/showcase/assets/text-button-B1m5cpX_.js +0 -1
- package/dist/showcase/assets/text-link-CqjW10Ce.js +0 -1
- package/dist/showcase/assets/textarea-xJ3EE8R9.js +0 -1
- package/dist/showcase/assets/textarea-xOekToAG.js +0 -1
- package/dist/showcase/assets/throttle-alert-BH1HMiaI.js +0 -1
- package/dist/showcase/assets/timelines-DjWkuOz3.js +0 -200
- package/dist/showcase/assets/toggle-group-Css6pfUI.js +0 -1
- package/dist/showcase/assets/toggles-DhDrn3YH.js +0 -71
- package/dist/showcase/assets/toggles-group-e4xtKzkl.js +0 -32
- package/dist/showcase/assets/tooltip-DMvMUrGe.js +0 -31
- package/dist/showcase/assets/trash-2-zILxQmtX.js +0 -1
- package/dist/showcase/assets/trending-up-CRH278ig.js +0 -1
- package/dist/showcase/assets/truck-At9CEKg7.js +0 -1
- package/dist/showcase/assets/typography-B0ehvSV4.js +0 -223
- package/dist/showcase/assets/ui-badge-CyLWYf3f.js +0 -28
- package/dist/showcase/assets/ui-card-BPnLZmkJ.js +0 -30
- package/dist/showcase/assets/ui-table-C-zXhcOm.js +0 -42
- package/dist/showcase/assets/upload-tray-IyQJEM9n.js +0 -138
- package/dist/showcase/assets/use-layout-link-Cux4giQO.js +0 -1
- package/dist/showcase/assets/useAriaLabelledBy-Bo0rTGvc.js +0 -1
- package/dist/showcase/assets/useCollapsiblePanel-CzU-1LY3.js +0 -1
- package/dist/showcase/assets/useCompositeItem-CJFNnVql.js +0 -1
- package/dist/showcase/assets/useCompositeListItem-BAuO9hue.js +0 -1
- package/dist/showcase/assets/useLabelableId-HuACs9ba.js +0 -1
- package/dist/showcase/assets/useOpenInteractionType-MEUfJuxN.js +0 -1
- package/dist/showcase/assets/useRender-B-6DpRfj.js +0 -1
- package/dist/showcase/assets/useTriggerFocusGuards-B-mRyUJJ.js +0 -1
- package/dist/showcase/assets/useValueChanged-CVn_Rfso.js +0 -1
- package/dist/showcase/assets/user-eelwPGBI.js +0 -1
- package/dist/showcase/assets/user-plus-DhswMZvb.js +0 -1
- package/dist/showcase/assets/users-BVMmaveS.js +0 -1
- package/dist/showcase/assets/vendor-profile-FHaiInTe.js +0 -37
- package/dist/showcase/assets/video-C42fxAyj.js +0 -1
- package/dist/showcase/assets/visually-hidden-BwzlEinj.js +0 -1
- package/dist/showcase/assets/wrench-EKI7PaKp.js +0 -1
- package/dist/showcase/assets/x--LIqlhum.js +0 -1
- package/dist/showcase/assets/zap-C1fX30vt.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layout-nigj488k.js","names":[],"sources":["../../src/components/layout/page/page.tsx","../../src/components/layout/page/page-content.tsx","../../src/components/layout/page/partials/page-header.tsx","../../src/components/layout/page/page.types.ts","../../src/components/layout/page/partials/page-actions.tsx"],"sourcesContent":["/**\n * Page — convenience wrapper that pairs `<PageHeader>` with `<Container>`.\n * For full control, compose `<PageHeader />`, `<PageContent />`, and\n * `<Container />` directly.\n */\nimport { Container } from '@/components/layout';\nimport { PageHeader } from '@/components/layout';\nimport type { PageProps } from './page.types';\nimport { cn } from '@/lib/utils';\n\nexport function Page({\n\theader,\n\twidth = 'narrow',\n\tchildren,\n\tclassName,\n\tbodyClassName,\n\trenderLink,\n\tLinkComponent,\n}: PageProps) {\n\treturn (\n\t\t<Container width={width} className={className}>\n\t\t\t{!!header && (\n\t\t\t\t<PageHeader\n\t\t\t\t\t{...header}\n\t\t\t\t\trenderLink={header.renderLink ?? renderLink}\n\t\t\t\t\tLinkComponent={header.LinkComponent ?? LinkComponent}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{!!children && (\n\t\t\t\t<div className={cn('relative block w-full', bodyClassName)}>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</Container>\n\t);\n}\n","/**\n * PageContent — `<main>` wrapper for the body region of an app shell.\n *\n * Provides consistent padding and an optional width clamp. Lighter-weight\n * than `Page` — use directly inside an `AppShell` flexbox where the surrounding\n * structure (header, sidebar) is already in place.\n */\nimport type { HTMLAttributes, ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageContentMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n\nexport interface PageContentProps extends HTMLAttributes<HTMLElement> {\n\t/** Body content. */\n\tchildren?: ReactNode;\n\t/** When true, removes default `p-4 md:p-6` padding. */\n\tnoPadding?: boolean;\n\t/** Optional max-width clamp (centers when set). */\n\tmaxWidth?: PageContentMaxWidth;\n}\n\nconst MAX_WIDTH_CLASS: Record<PageContentMaxWidth, string> = {\n\tsm: 'max-w-screen-sm',\n\tmd: 'max-w-screen-md',\n\tlg: 'max-w-screen-lg',\n\txl: 'max-w-screen-xl',\n\t'2xl': 'max-w-screen-2xl',\n\tfull: 'max-w-full',\n};\n\nexport function PageContent({\n\tnoPadding = false,\n\tmaxWidth,\n\tclassName,\n\tchildren,\n\t...props\n}: PageContentProps) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t'flex-1',\n\t\t\t\t!noPadding && 'p-4 md:p-6',\n\t\t\t\tmaxWidth && cn('mx-auto w-full', MAX_WIDTH_CLASS[maxWidth]),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</main>\n\t);\n}\n","/**\n * PageHeader — page title, back control, title badges, and actions.\n *\n * Navigation goes through `renderLink`; consumer apps wire framework links at\n * the boundary. Slots let consumers replace any structural region without\n * forking the page wrapper.\n */\nimport { ArrowLeft } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { Separator } from '@/components/base/display/separator';\nimport { Heading, Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport type { PageHeaderProps, PageHeadingTag } from '../page.types';\n\nconst PAGE_TITLE_CLASS: Record<PageHeadingTag, string> = {\n\th1: 'border-0 pb-0 text-base',\n\th2: 'border-0 pb-0 text-base',\n\th3: 'border-0 pb-0 text-base',\n\th4: 'border-0 pb-0 text-base',\n\th5: 'border-0 pb-0 text-base',\n\th6: 'border-0 pb-0 text-base',\n};\n\nexport function PageHeader({\n\ttitle,\n\tdescription,\n\theadingTag = 'h3',\n\ttitleIcon: TitleIcon,\n\tbackHref,\n\tonBack,\n\tbackLabel = 'Back',\n\ttitleBadges = [],\n\tactions,\n\tslots,\n\trenderLink,\n\tLinkComponent,\n\tclassName,\n\tcontentClassName,\n\tactionsClassName,\n\ttitleClassName,\n\ttitleIconClassName,\n\tdescriptionClassName,\n}: PageHeaderProps) {\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\tconst hasBack = !!backHref || !!onBack;\n\n\tconst defaultBack = hasBack ? (\n\t\t<div className=\"flex items-center gap-1.5 pt-1\">\n\t\t\t{backHref && !onBack ? (\n\t\t\t\tresolvedRenderLink({\n\t\t\t\t\thref: backHref,\n\t\t\t\t\t'aria-label': backLabel,\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\tclassName=\"h-8 w-8 rounded p-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t<span className=\"sr-only\">{backLabel}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\tclassName=\"h-8 w-8 rounded p-1\"\n\t\t\t\t\tonClick={onBack}\n\t\t\t\t\taria-label={backLabel}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t<Separator orientation=\"vertical\" className=\"h-8\" />\n\t\t</div>\n\t) : null;\n\n\treturn (\n\t\t<header\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full flex-col gap-4 md:flex-row md:items-start md:justify-between',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"flex min-w-0 flex-1 items-start gap-3\">\n\t\t\t\t{slots?.back ?? defaultBack}\n\n\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n\t\t\t\t\t{slots?.beforeTitle}\n\t\t\t\t\t<div className={cn('flex max-w-3xl flex-col gap-0.5', contentClassName)}>\n\t\t\t\t\t\t<div className=\"flex flex-wrap items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"flex min-w-0 items-center gap-2\">\n\t\t\t\t\t\t\t\t{!!TitleIcon && (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn('flex size-icon shrink-0 items-center justify-center text-muted-foreground', titleIconClassName)}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<TitleIcon className=\"size-icon\" />\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\ttag={headingTag}\n\t\t\t\t\t\t\t\t\tcontainerClassName=\"space-y-0\"\n\t\t\t\t\t\t\t\t\tclassName={cn(PAGE_TITLE_CLASS[headingTag], titleClassName)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{titleBadges.length > 0 && (\n\t\t\t\t\t\t\t\t<div className=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t\t\t{titleBadges.map((badge, index) => (\n\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\tkey={badge.key ?? index}\n\t\t\t\t\t\t\t\t\t\t\tvariant={badge.variant ?? 'secondary'}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{badge.label}\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className={descriptionClassName}>\n\t\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{slots?.afterDescription}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{slots?.actions ?? (\n\t\t\t\t!!actions && <div className={cn('shrink-0', actionsClassName)}>{actions}</div>\n\t\t\t)}\n\t\t</header>\n\t);\n}\n","/**\n * Page-level types for `Page`, `PageHeader`, `PageActions`, and exported\n * partials. All navigation is framework-neutral via `renderLink`.\n */\nimport type { ComponentType, JSX, Key, ReactNode } from 'react';\n\nimport type {\n\tLayoutLinkRenderer,\n\tLayoutNavigationAdapter,\n\tLinkComponent,\n} from '../layout.types';\nimport type { ContainerWidth } from '../containers/containers.types';\nimport type { StringsProp } from '@/lib/strings';\n\nexport type PageHeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\nexport interface PageTitleBadge {\n\tlabel: ReactNode;\n\tvariant?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'error';\n\tkey?: Key;\n}\n\nexport interface PageHeaderSlots {\n\t/** Replaces the leading back control entirely. */\n\tback?: ReactNode;\n\t/** Additional content before the title line. */\n\tbeforeTitle?: ReactNode;\n\t/** Additional content after the description. */\n\tafterDescription?: ReactNode;\n\t/** Replaces the trailing actions region. */\n\tactions?: ReactNode;\n}\n\nexport interface PageHeaderProps extends LayoutNavigationAdapter {\n\ttitle: ReactNode;\n\tdescription?: ReactNode;\n\t/** Semantic heading level for the title. Defaults to `h3` for nested app pages. */\n\theadingTag?: PageHeadingTag;\n\t/** Optional decorative icon rendered before the title. Pass a Lucide icon component. */\n\ttitleIcon?: ComponentType<{ className?: string }>;\n\tbackHref?: string;\n\tonBack?: () => void;\n\tbackLabel?: string;\n\ttitleBadges?: PageTitleBadge[];\n\tactions?: ReactNode;\n\tslots?: PageHeaderSlots;\n\tclassName?: string;\n\tcontentClassName?: string;\n\tactionsClassName?: string;\n\ttitleClassName?: string;\n\ttitleIconClassName?: string;\n\tdescriptionClassName?: string;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport type PageActionVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'destructive'\n\t| 'success'\n\t| 'warning';\n\nexport interface PageActionContext {\n\tindex: number;\n\tisInline: boolean;\n\trenderLink: LayoutLinkRenderer;\n}\n\nexport interface PageAction {\n\tid?: string;\n\tlabel: ReactNode;\n\tonClick?: () => void;\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\texternal?: boolean;\n\tdisabled?: boolean;\n\tloading?: boolean;\n\ticon?: ComponentType<{ className?: string }>;\n\tvariant?: PageActionVariant;\n\tvisible?: boolean;\n\tgroup?: string;\n\tplacement?: 'auto' | 'inline' | 'menu';\n\t/** Escape hatch for one action only. Prefer `renderAction` for consistent customization. */\n\telement?: ReactNode | JSX.Element;\n}\n\nexport type PageActionsDisplay = 'flat' | 'dropdown' | 'auto';\n\nexport interface PageActionsStrings {\n\tmenuLabel: string;\n}\n\nexport const defaultPageActionsStrings: PageActionsStrings = {\n\tmenuLabel: 'Page actions',\n};\n\nexport interface PageActionsProps extends LayoutNavigationAdapter {\n\tactions?: PageAction[];\n\tdisplay?: PageActionsDisplay;\n\tbreakpoint?: number;\n\t/**\n\t * Maximum non-menu actions rendered inline before overflow moves them into\n\t * the dropdown menu. Defaults to 4 for admin header density.\n\t */\n\tmaxInlineActions?: number;\n\tstrings?: StringsProp<PageActionsStrings>;\n\tclassName?: string;\n\tinlineClassName?: string;\n\tmenuClassName?: string;\n\trenderAction?: (action: PageAction, context: PageActionContext) => ReactNode;\n\t/** @deprecated Prefer `renderLink`. */\n\tLinkComponent?: LinkComponent;\n}\n\nexport interface PageProps extends LayoutNavigationAdapter {\n\theader?: PageHeaderProps;\n\twidth?: ContainerWidth;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tbodyClassName?: string;\n}\n","/**\n * PageActions — composable action ribbon for page headers.\n *\n * Links go through `renderLink`, never router imports or DOM click hacks.\n * Use `renderAction` for app-specific rendering while keeping grouping,\n * filtering, breakpoint, and menu placement logic centralized.\n */\nimport { Fragment, useEffect, useMemo, useState, type ReactNode } from 'react';\nimport { MoreHorizontal } from 'lucide-react';\n\nimport { PageActionButton } from '@/components/base/buttons/page-action-button';\nimport { Separator } from '@/components/base/display/separator';\nimport { ActionMenu } from '@/components/base/navigation/action-menu';\nimport {\n\tDropdownMenuItem,\n\tDropdownMenuLinkItem,\n} from '@/components/base/navigation/dropdown-menu';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport {\n\tdefaultPageActionsStrings,\n\ttype PageAction,\n\ttype PageActionContext,\n\ttype PageActionVariant,\n\ttype PageActionsProps,\n} from '../page.types';\n\nconst resolveBaseVariant = (\n\tvariant: PageActionVariant | undefined,\n): 'primary' | 'secondary' | 'error' => {\n\tif (variant === 'destructive') return 'error';\n\tif (variant === 'primary' || variant === 'success' || variant === 'warning') return 'primary';\n\treturn 'secondary';\n};\n\nconst PAGE_ACTIONS_MENU_CLASS = 'max-h-[80vh] overflow-y-auto overscroll-contain';\nconst DEFAULT_MAX_INLINE_ACTIONS = 4;\n\ntype PageActionEntry = {\n\taction: PageAction;\n\tindex: number;\n};\n\nfunction renderInlineAction(\n\taction: PageAction,\n\tcontext: PageActionContext,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode {\n\tif (action.visible === false) return null;\n\tif (action.element) return <div key={action.id ?? context.index}>{action.element}</div>;\n\tif (renderAction) return renderAction(action, context);\n\n\tconst key = action.id ?? context.index;\n\tconst disabled = !!action.disabled || !!action.loading;\n\tconst Icon = action.icon;\n\tconst button = (\n\t\t<PageActionButton\n\t\t\tkey={key}\n\t\t\tvariant={resolveBaseVariant(action.variant)}\n\t\t\tonClick={action.onClick}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t{action.label}\n\t\t</PageActionButton>\n\t);\n\n\tif (action.href && !action.onClick) {\n\t\treturn context.renderLink({\n\t\t\thref: action.href,\n\t\t\tchildren: button,\n\t\t\tclassName: 'inline-flex',\n\t\t\ttarget: action.target,\n\t\t\trel: action.rel,\n\t\t\texternal: action.external,\n\t\t\tdisabled,\n\t\t});\n\t}\n\n\treturn button;\n}\n\nfunction renderMenuItems(\n\tentries: PageActionEntry[],\n\tcontextBase: Omit<PageActionContext, 'index' | 'isInline'>,\n\trenderAction?: PageActionsProps['renderAction'],\n): ReactNode[] {\n\tconst items: ReactNode[] = [];\n\tlet currentGroup: string | null = null;\n\n\tentries.forEach(({ action, index }) => {\n\t\tconst context: PageActionContext = { ...contextBase, index, isInline: false };\n\t\tconst nextGroup = action.group ?? null;\n\t\tconst groupChanged = nextGroup !== currentGroup;\n\n\t\tif (items.length > 0 && groupChanged) {\n\t\t\titems.push(\n\t\t\t\t<Separator\n\t\t\t\t\tkey={`sep-${currentGroup ?? 'root'}-${nextGroup ?? 'root'}-${action.id ?? index}`}\n\t\t\t\t\tclassName=\"my-1\"\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tif (groupChanged) {\n\t\t\tcurrentGroup = nextGroup;\n\t\t\tif (nextGroup) {\n\t\t\t\titems.push(\n\t\t\t\t\t<div key={`group-${nextGroup}-${action.id ?? index}`} className=\"px-2 pb-0.5 pt-1\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\tclassName=\"text-muted-foreground/70\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{nextGroup}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (action.element) {\n\t\t\titems.push(<div key={action.id ?? index}>{action.element}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tif (renderAction) {\n\t\t\titems.push(<div key={action.id ?? index}>{renderAction(action, context)}</div>);\n\t\t\treturn;\n\t\t}\n\n\t\tconst Icon = action.icon;\n\t\tconst disabled = !!action.disabled || !!action.loading;\n\t\tconst children = (\n\t\t\t<>\n\t\t\t\t{!!Icon && <Icon className=\"size-3.5\" aria-hidden=\"true\" />}\n\t\t\t\t{typeof action.label === 'string' ? (\n\t\t\t\t\t<Text tag=\"span\" className=\"text-inherit\">\n\t\t\t\t\t\t{action.label}\n\t\t\t\t\t</Text>\n\t\t\t\t) : action.label}\n\t\t\t</>\n\t\t);\n\n\t\tconst itemClassName = cn(\n\t\t\t'gap-1.5 px-2 py-1.5 text-sm',\n\t\t\taction.variant === 'destructive' && 'text-destructive focus-visible:text-destructive',\n\t\t);\n\n\t\tif (action.href && !action.onClick && !disabled) {\n\t\t\titems.push(\n\t\t\t\t<DropdownMenuLinkItem\n\t\t\t\t\tkey={action.id ?? index}\n\t\t\t\t\thref={action.href}\n\t\t\t\t\tclassName={itemClassName}\n\t\t\t\t\trender={(props) =>\n\t\t\t\t\t\tcontext.renderLink({\n\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\thref: action.href,\n\t\t\t\t\t\t\tchildren: props.children,\n\t\t\t\t\t\t\ttarget: action.target,\n\t\t\t\t\t\t\trel: action.rel,\n\t\t\t\t\t\t\texternal: action.external,\n\t\t\t\t\t\t}) as React.ReactElement\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</DropdownMenuLinkItem>,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\titems.push(\n\t\t\t<DropdownMenuItem\n\t\t\t\tkey={action.id ?? index}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={action.onClick}\n\t\t\t\tclassName={itemClassName}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</DropdownMenuItem>,\n\t\t);\n\t});\n\n\treturn items;\n}\n\nexport function PageActions({\n\tactions,\n\tdisplay = 'dropdown',\n\tbreakpoint = 1040,\n\tmaxInlineActions = DEFAULT_MAX_INLINE_ACTIONS,\n\trenderLink,\n\tLinkComponent,\n\tstrings: stringsProp,\n\tclassName,\n\tinlineClassName,\n\tmenuClassName,\n\trenderAction,\n}: PageActionsProps) {\n\tconst strings = useStrings(defaultPageActionsStrings, stringsProp);\n\tconst resolvedRenderLink = useLayoutLinkRenderer({ renderLink, LinkComponent });\n\n\tconst filtered = useMemo<PageActionEntry[]>(\n\t\t() => (actions ?? [])\n\t\t\t.map((action, index) => ({ action, index }))\n\t\t\t.filter(({ action }) => action.visible !== false),\n\t\t[actions],\n\t);\n\n\tconst [isNarrow, setIsNarrow] = useState(false);\n\tuseEffect(() => {\n\t\tif (display !== 'auto' || typeof window === 'undefined') return;\n\n\t\tconst check = () => setIsNarrow(window.innerWidth <= breakpoint);\n\t\tcheck();\n\t\twindow.addEventListener('resize', check);\n\t\treturn () => window.removeEventListener('resize', check);\n\t}, [display, breakpoint]);\n\n\tif (filtered.length === 0) return null;\n\n\tconst inlineContextBase = { renderLink: resolvedRenderLink };\n\tconst inlineClass = cn('flex items-center gap-2', inlineClassName, className);\n\tconst menuContentClass = cn(PAGE_ACTIONS_MENU_CLASS, menuClassName);\n\n\tif (display === 'dropdown' || (display === 'auto' && isNarrow)) {\n\t\treturn (\n\t\t\t<ActionMenu\n\t\t\t\ticon={MoreHorizontal}\n\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\talign=\"end\"\n\t\t\t\tcloseOnSelect\n\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t>\n\t\t\t\t{renderMenuItems(filtered, inlineContextBase, renderAction)}\n\t\t\t</ActionMenu>\n\t\t);\n\t}\n\n\tconst inlineLimit = Math.max(0, maxInlineActions);\n\tconst inlineCandidates = filtered.filter(({ action }) => (action.placement ?? 'auto') !== 'menu');\n\tconst inline = inlineCandidates.slice(0, inlineLimit);\n\tconst overflow = inlineCandidates.slice(inlineLimit);\n\tconst menu = [\n\t\t...overflow,\n\t\t...filtered.filter(({ action }) => (action.placement ?? 'auto') === 'menu'),\n\t];\n\n\treturn (\n\t\t<div className={inlineClass}>\n\t\t\t{inline.map((action) => (\n\t\t\t\t<Fragment key={action.action.id ?? action.index}>\n\t\t\t\t\t{renderInlineAction(\n\t\t\t\t\t\taction.action,\n\t\t\t\t\t\t{ ...inlineContextBase, index: action.index, isInline: true },\n\t\t\t\t\t\trenderAction,\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t))}\n\t\t\t{menu.length > 0 && (\n\t\t\t\t<ActionMenu\n\t\t\t\t\ticon={MoreHorizontal}\n\t\t\t\t\tsrText={strings.menuLabel}\n\t\t\t\t\talign=\"end\"\n\t\t\t\t\tcloseOnSelect\n\t\t\t\t\tcontentClassName={menuContentClass}\n\t\t\t\t>\n\t\t\t\t\t{renderMenuItems(menu, inlineContextBase, renderAction)}\n\t\t\t\t</ActionMenu>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("../lib/strings.cjs"),t=require("../lib/utils.cjs"),n=require("./button-CfQtOuBK.cjs"),r=require("./typography-CWEobAJV.cjs"),i=require("./badge-LSAgdmGt.cjs"),a=require("./popover-dWR7-MzY.cjs"),o=require("./command-DRIySU26.cjs"),s=require("./command-BbJB0pjP.cjs");let c=require("react"),l=require("react/jsx-runtime"),u=require("lucide-react");function d(e={}){let{resources:t,onResourceSearch:n,initialMentions:r,debounceMs:i=200}=e,a=(0,c.useMemo)(()=>t?Object.keys(t):[],[t]),[o,s]=(0,c.useState)(()=>a[0]??null),[l,u]=(0,c.useState)(!1),[d,f]=(0,c.useState)(``),[p,m]=(0,c.useState)({}),[h,g]=(0,c.useState)(!1),[_,v]=(0,c.useState)(()=>r?[...r]:[]),y=(0,c.useRef)(0),b=(0,c.useRef)(null);(0,c.useEffect)(()=>{if(a.length===0){s(null);return}(!o||!a.includes(o))&&s(a[0])},[o,a]);let x=(0,c.useMemo)(()=>o&&t?t[o]??null:null,[o,t]),S=(0,c.useCallback)(async(e,r)=>{let i=t?.[e];if(i?.search)return(await i.search(r)).map(t=>({...t,kind:e}));if(i?.suggestions){let t=i.suggestions;return(r.trim().length===0?t:t.filter(e=>e.label.toLowerCase().includes(r.toLowerCase()))).map(t=>({...t,kind:e}))}return n?(await n(r,e)).map(t=>({...t,kind:e})):[]},[t,n]);(0,c.useEffect)(()=>{if(b.current&&clearTimeout(b.current),a.length===0){m({});return}let e=++y.current,t=async()=>{g(!0);try{let t=await Promise.all(a.map(async e=>{try{return[e,await S(e,d)]}catch{return[e,[]]}}));if(e!==y.current)return;let n={};for(let[e,r]of t)n[e]=r;m(n)}finally{e===y.current&&g(!1)}};return b.current=setTimeout(()=>{t()},i),()=>{b.current&&clearTimeout(b.current)}},[a,d,S,i]),(0,c.useEffect)(()=>{if(l||!o||(p[o]??[]).length>0)return;let e=a.find(e=>(p[e]?.length??0)>0);e&&e!==o&&s(e)},[o,a,l,p]);let C=(0,c.useCallback)(e=>{s(e)},[]),w=(0,c.useCallback)(e=>{f(e)},[]),T=(0,c.useCallback)(e=>{v(t=>t.some(t=>t.id===e.id)?t:[...t,e])},[]),E=(0,c.useCallback)(e=>{v(t=>t.filter(t=>t.id!==e))},[]),D=(0,c.useCallback)(e=>{v([...e])},[]),O=(0,c.useCallback)(()=>{v([]),f(``),u(!1),y.current++},[]),k=(0,c.useCallback)(e=>{let n=e.kind??o,r=`${n}:${e.id}`,i=t?.[n],a=e.href??i?.buildHref?.(e),s={id:r,kind:n,label:e.label,href:a,data:e.data};return T(s),s},[o,T,t]);return{kinds:a,activeKind:o,setActiveKind:C,activeResource:x,query:d,setQuery:w,suggestions:(0,c.useMemo)(()=>o?p[o]??[]:[],[o,p]),suggestionsByKind:p,isLoading:h,mentions:_,addMention:T,removeMention:E,setMentions:D,reset:O,selectSuggestion:k,manualKindOverride:l,setManualKindOverride:u}}function f(e,t){let n=String(e.label??``).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`),r=String(e.id).replace(/"/g,`"`),i=String(e.kind).replace(/"/g,`"`),a=t?.tone?String(t.tone).replace(/"/g,`"`):``,o=t?.triggerChar??(e.kind===`user`?`@`:``);return`<span class="rsc-mention" data-ref-id="${r}" data-ref-kind="${i}"${a?` data-ref-tone="${a}"`:``} contenteditable="false">${o}${n}</span> `}function p(e={}){let t=e.resources,n=e.onResourceSearch,r=d({...e,resources:t,onResourceSearch:n}),[i,a]=(0,c.useState)(!1),[o,s]=(0,c.useState)(!1),l=(0,c.useRef)(null),u=(0,c.useRef)(null),p=(0,c.useCallback)(e=>{a(e),e||(l.current=null,u.current=null,s(!1),r.setManualKindOverride(!1))},[r]),m=e.editorRef,h=(0,c.useCallback)(()=>{if(!t)return;let e={};for(let[n,r]of Object.entries(t)){let t=r?.trigger;typeof t==`string`&&t.length>0&&(e[t]=n)}if(Object.keys(e).length===0)return;let n=m?.current?.getCaretContext();if(!n){l.current&&(l.current=null,p(!1));return}let i=Object.keys(e).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(``),o=RegExp(`(?:^|\\s)([${i}])([\\p{L}\\p{N}_-]*)$`,`u`),c=n.textBefore.match(o);if(!c){l.current&&(l.current=null,p(!1));return}let d=c[1],f=c[2]??``,h=e[d];l.current={kind:h,triggerChar:d,consumedLength:d.length+f.length},s(!0),u.current!==d&&(r.activeKind!==h&&r.setActiveKind(h),r.setManualKindOverride(!1),u.current=d),r.query!==f&&r.setQuery(f),a(!0)},[m,t,r,p]),g=(0,c.useCallback)(e=>{let n=r.selectSuggestion(e),i=l.current,a=t?.[n.kind]?.tone,o=f(n,{triggerChar:i?.triggerChar,tone:a});return i&&i.consumedLength>0&&m?.current?(m.current.replaceBeforeCaret(i.consumedLength,o),l.current=null):m?.current&&m.current.insertHTML(o),p(!1),n},[m,t,r,p]);return{...r,pickerOpen:i,setPickerOpen:p,triggerActive:o,handleCaretChange:h,pickSuggestion:g}}var m={primary:`secondary`,success:`success`,warning:`warning`,destructive:`destructive`,info:`info`,secondary:`secondary`},h=({mention:e,resource:n,asLink:r=!0,onClick:a,trailing:o,className:s})=>{if(n?.renderChip)return(0,l.jsx)(l.Fragment,{children:n.renderChip(e)});let c=m[n?.tone??`secondary`]??m.secondary,u=n?.icon,d=(0,l.jsxs)(i.t,{variant:c,inline:!0,"data-ref-id":e.id,"data-ref-kind":e.kind,className:t.cn(`mention-chip--component`,`align-[-0.15em] cursor-default whitespace-nowrap`,s),children:[u?(0,l.jsx)(u,{className:`size-3 shrink-0`,"aria-hidden":!0}):null,(0,l.jsx)(`span`,{className:`truncate max-w-[14rem]`,children:e.label}),o]});return r&&e.href?(0,l.jsx)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer noopener`,onClick:a,className:`inline align-baseline no-underline hover:opacity-90`,children:d}):a?(0,l.jsx)(`span`,{onClick:a,className:`inline align-baseline`,children:d}):d},g=/<(span|a)\b([^>]*?)data-ref-id\s*=\s*"([^"]+)"([^>]*)>([\s\S]*?)<\/\1>/gi;function _(e){if(!e)return[];let t=[],n=0,r;for(g.lastIndex=0;(r=g.exec(e))!==null;){let[i,,,a]=r,o=e.slice(n,r.index);o.length>0&&t.push({kind:`html`,value:o}),t.push({kind:`mention`,refId:a,fallback:i}),n=r.index+i.length}let i=e.slice(n);return i.length>0&&t.push({kind:`html`,value:i}),t}var v=`prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-a:text-primary prose-a:no-underline hover:prose-a:underline prose-strong:font-semibold prose-ul:my-0.5 prose-ol:my-0.5 prose-li:my-0.5 max-w-none`;function y(e){let{html:n,mentions:r,resources:i,renderMention:a,sanitizer:o,className:s,prose:u=!0}=e,d=i,f=o?o(n??``):n??``,p=new Map;for(let e of r??[])p.set(e.id,e);let m=p.size>0?_(f):[{kind:`html`,value:f}],g=e=>{if(a)return a(e);let t=d?.[e.kind];return(0,l.jsx)(h,{mention:e,resource:t})},y=m.map((e,t)=>{if(e.kind===`mention`){let n=p.get(e.refId);return n?(0,l.jsx)(c.Fragment,{children:g(n)},`ref-${t}-${e.refId}`):(0,l.jsx)(`span`,{dangerouslySetInnerHTML:{__html:e.fallback}},`fallback-${t}`)}return(0,l.jsx)(`span`,{dangerouslySetInnerHTML:{__html:e.value}},`html-${t}`)});return u?(0,l.jsx)(`div`,{className:t.cn(`mention-content--component`,v,s),children:y}):(0,l.jsx)(l.Fragment,{children:y})}var b=e=>(0,l.jsx)(y,{...e}),x={title:`Insert reference`,searchPlaceholder:`Search…`,empty:`No matches.`,loading:`Searching…`},S={title:`Insert reference`,empty:`No matches.`,loading:`Searching…`};function C({open:i,activeKind:c,setActiveKind:d,kinds:f,resources:p,query:m,setQuery:h,suggestions:g,isLoading:_,onSelect:v,strings:y,className:b}){let S=e.useStrings(x,y);return i?(0,l.jsxs)(a.t,{align:`start`,className:t.cn(`mention-picker--component`,`w-72 overflow-hidden p-0`,b),children:[(0,l.jsxs)(`div`,{className:`border-b border-border/60 px-3 py-2`,children:[(0,l.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wide`,children:S.title}),f.length>1&&(0,l.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:f.map(e=>{let r=p?.[e],i=r?.icon,a=e===c;return(0,l.jsxs)(n.t,{type:`button`,variant:a?`primary`:`secondary`,buttonStyle:a?`solid`:`ghost`,size:`small`,onClick:()=>d(e),className:t.cn(`h-auto gap-1 rounded px-1.5 py-0.5 text-xs font-medium ring-1 ring-inset transition-colors`,a?`bg-primary text-primary-foreground ring-primary`:`bg-muted text-muted-foreground ring-border/60 hover:bg-muted/80`),children:[i?(0,l.jsx)(i,{className:`size-3`}):null,(0,l.jsx)(`span`,{children:r?.label??String(e)})]},e)})})]}),(0,l.jsxs)(s.t,{shouldFilter:!1,children:[(0,l.jsx)(o.i,{placeholder:S.searchPlaceholder,value:m,onValueChange:h}),(0,l.jsxs)(s.a,{children:[_?(0,l.jsxs)(`div`,{className:`text-muted-foreground flex items-center justify-center gap-2 py-3`,children:[(0,l.jsx)(u.Loader2,{className:`size-3.5 animate-spin`,"aria-hidden":!0}),(0,l.jsx)(r.s,{tag:`span`,size:`xs`,type:`secondary`,children:S.loading})]}):null,(0,l.jsx)(s.n,{children:S.empty}),(0,l.jsx)(s.r,{children:g.map(e=>{let t=e.kind??c??``;return(0,l.jsx)(s.i,{value:`${t}:${e.id}`,onSelect:()=>v(e),children:(0,l.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col leading-tight`,children:[(0,l.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,className:`truncate`,children:e.label}),e.description?(0,l.jsx)(r.s,{tag:`span`,size:`xs`,type:`secondary`,className:`mt-0.5 truncate`,children:e.description}):null]})},`${t}:${e.id}`)})})]})]})]}):null}function w({open:i,activeKind:a,setActiveKind:o,kinds:s,resources:c,suggestionsByKind:d,suggestions:f,isLoading:p,query:m,onManualKindChange:h,onSelect:g,strings:_,className:v}){let y=e.useStrings(S,_);return i?(0,l.jsxs)(`div`,{onMouseDown:e=>e.preventDefault(),className:t.cn(`mention-inline-suggestions--component`,`bg-popover text-popover-foreground absolute left-0 top-full z-40 mt-1 w-80 max-w-[min(theme(spacing.96),100%)]`,`border-border/60 rounded-md border shadow-md ring-1 ring-foreground/[0.04]`,`overflow-hidden`,v),children:[(0,l.jsxs)(`div`,{className:`border-b border-border/60 px-3 py-2`,children:[(0,l.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,l.jsx)(r.s,{size:`xs`,type:`secondary`,weight:`medium`,className:`uppercase tracking-wide`,children:y.title}),m?(0,l.jsxs)(r.s,{tag:`span`,size:`xs`,type:`secondary`,className:`truncate font-mono`,children:[`“`,m,`”`]}):null]}),s.length>1&&(0,l.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:s.map(e=>{let r=c?.[e],i=r?.icon,s=e===a,u=d?.[e]?.length??0;return(0,l.jsxs)(n.t,{type:`button`,variant:s?`primary`:`secondary`,buttonStyle:s?`solid`:`ghost`,size:`small`,onClick:()=>{o(e),h?.()},className:t.cn(`h-auto gap-1 rounded px-1.5 py-0.5 text-xs font-medium ring-1 ring-inset transition-colors`,s?`bg-primary text-primary-foreground ring-primary`:u>0?`bg-muted text-foreground ring-border/60 hover:bg-muted/80`:`bg-muted/40 text-muted-foreground ring-border/40 hover:bg-muted/60`),children:[i?(0,l.jsx)(i,{className:`size-3`}):null,(0,l.jsx)(`span`,{children:r?.label??String(e)}),u>0&&(0,l.jsx)(`span`,{className:t.cn(`tabular-nums`,s?`opacity-90`:`opacity-70`),children:u})]},e)})})]}),(0,l.jsxs)(`div`,{className:`max-h-72 overflow-y-auto py-1`,...f.length>0?{role:`listbox`,"aria-label":y.title}:{},children:[p?(0,l.jsxs)(`div`,{className:`text-muted-foreground flex items-center justify-center gap-2 py-3`,children:[(0,l.jsx)(u.Loader2,{className:`size-3.5 animate-spin`,"aria-hidden":!0}),(0,l.jsx)(r.s,{tag:`span`,size:`xs`,type:`secondary`,children:y.loading})]}):null,!p&&f.length===0?(0,l.jsx)(`div`,{className:`px-3 py-3`,children:(0,l.jsx)(r.s,{size:`xs`,type:`secondary`,children:y.empty})}):null,f.map(e=>{let i=e.kind??a??``;return(0,l.jsx)(n.t,{type:`button`,variant:`secondary`,buttonStyle:`ghost`,size:`default`,role:`option`,"data-ref-id":`${i}:${e.id}`,onClick:()=>g(e),className:t.cn(`h-auto w-full min-w-0 justify-start gap-2 rounded-none px-3 py-1.5 text-left`,`hover:bg-muted/60 focus-visible:bg-muted/60 transition-colors`),children:(0,l.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col leading-tight`,children:[(0,l.jsx)(r.s,{tag:`span`,size:`xs`,weight:`medium`,className:`truncate`,children:e.label}),e.description?(0,l.jsx)(r.s,{tag:`span`,size:`xs`,type:`secondary`,className:`mt-0.5 truncate`,children:e.description}):null]})},`${i}:${e.id}`)})]})]}):null}var T=/<(?:span|a)\b[^>]*?data-ref-id\s*=\s*"([^"]+)"[^>]*?>([\s\S]*?)<\/(?:span|a)>/gi,E=/data-ref-kind\s*=\s*"([^"]+)"/i;function D(e){let t=[];if(!e)return t;let n=new Set,r;for(T.lastIndex=0;(r=T.exec(e))!==null;){let[e,i,a]=r;if(n.has(i))continue;n.add(i);let o=e.match(E)?.[1]??i.split(`:`)[0]??``,s=(a??``).replace(/<[^>]*>/g,``).replace(/ /g,` `).replace(/^[@#$&%!~]\s*/,``).trim();t.push({id:i,kind:o,label:s})}return t}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return p}});
|
|
2
|
-
//# sourceMappingURL=mentions-BE51BNeq.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mentions-BE51BNeq.cjs","names":[],"sources":["../../src/components/features/mentions/hooks/use-mentions-search.ts","../../src/components/features/mentions/utils/build-mention-html.ts","../../src/components/features/mentions/hooks/use-mentions.ts","../../src/components/features/mentions/partials/mention-chip.tsx","../../src/components/features/mentions/utils/split-html-by-mentions.ts","../../src/components/features/mentions/partials/mention-content.tsx","../../src/components/features/mentions/mentions.strings.ts","../../src/components/features/mentions/partials/mention-picker.tsx","../../src/components/features/mentions/partials/mention-inline-suggestions.tsx","../../src/components/features/mentions/utils/parse-mentions-from-html.ts"],"sourcesContent":["/**\n * useMentionsSearch — pure search state for the mention picker.\n *\n * Runs **all registered kinds in parallel** for the same needle so the\n * caller can render mixed results in tabs and the picker can auto-\n * switch when the active kind has zero matches but another does. The\n * caller still controls which kind is *active* (the one whose\n * suggestions render); manual switches are remembered and not\n * overridden by subsequent caret-driven re-detections.\n *\n * Suggestion lookup order per kind:\n * 1. `resources[kind].search(needle)` — per-kind callback\n * 2. `resources[kind].suggestions` — static catalogue\n * 3. global `onResourceSearch(needle, kind)` — fallback\n */\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n Mention,\n MentionResource,\n MentionSuggestion,\n MentionsResourceSearch,\n} from '../mentions.types';\n\nexport interface UseMentionsSearchOptions<TResource extends string = string> {\n resources?: Partial<Record<TResource, MentionResource<TResource>>>;\n onResourceSearch?: MentionsResourceSearch<TResource>;\n initialMentions?: ReadonlyArray<Mention<TResource>>;\n /** Debounce window for async search. Default: 200ms. */\n debounceMs?: number;\n}\n\nexport interface UseMentionsSearchReturn<TResource extends string = string> {\n kinds: ReadonlyArray<TResource>;\n activeKind: TResource | null;\n setActiveKind: (kind: TResource | null) => void;\n activeResource: MentionResource<TResource> | null;\n\n query: string;\n setQuery: (q: string) => void;\n\n /** Suggestions for the active kind (`suggestionsByKind[activeKind]`). */\n suggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n /** Per-kind suggestion buckets — useful for cross-kind UIs. */\n suggestionsByKind: Readonly<Record<string, ReadonlyArray<MentionSuggestion<TResource>>>>;\n isLoading: boolean;\n\n mentions: ReadonlyArray<Mention<TResource>>;\n addMention: (mention: Mention<TResource>) => void;\n removeMention: (id: string) => void;\n setMentions: (next: ReadonlyArray<Mention<TResource>>) => void;\n reset: () => void;\n\n selectSuggestion: (\n suggestion: MentionSuggestion<TResource>,\n ) => Mention<TResource>;\n\n /** True if the consumer manually picked a tab. The trigger detector\n * checks this and refuses to override the active kind on next caret\n * change while it's true. Reset on `setManualKindOverride(false)` or\n * `reset()`. */\n manualKindOverride: boolean;\n setManualKindOverride: (override: boolean) => void;\n}\n\nexport function useMentionsSearch<TResource extends string = string>(\n options: UseMentionsSearchOptions<TResource> = {},\n): UseMentionsSearchReturn<TResource> {\n const { resources, onResourceSearch, initialMentions, debounceMs = 200 } = options;\n\n const kinds = useMemo<ReadonlyArray<TResource>>(\n () => (resources ? (Object.keys(resources) as TResource[]) : []),\n [resources],\n );\n\n const [activeKind, setActiveKindState] = useState<TResource | null>(\n () => kinds[0] ?? null,\n );\n const [manualKindOverride, setManualKindOverride] = useState(false);\n const [query, setQueryState] = useState('');\n const [suggestionsByKind, setSuggestionsByKind] = useState<\n Record<string, ReadonlyArray<MentionSuggestion<TResource>>>\n >({});\n const [isLoading, setIsLoading] = useState(false);\n const [mentions, setMentionsState] = useState<Mention<TResource>[]>(() =>\n initialMentions ? [...initialMentions] : [],\n );\n\n const requestIdRef = useRef(0);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (kinds.length === 0) {\n setActiveKindState(null);\n return;\n }\n if (!activeKind || !kinds.includes(activeKind)) {\n setActiveKindState(kinds[0]);\n }\n }, [activeKind, kinds]);\n\n const activeResource = useMemo(\n () => (activeKind && resources ? resources[activeKind] ?? null : null),\n [activeKind, resources],\n );\n\n /**\n * Search a single kind. Per-kind `search` wins, then static\n * `suggestions`, then the global `onResourceSearch` fallback.\n */\n const searchOneKind = useCallback(\n async (\n kind: TResource,\n q: string,\n ): Promise<ReadonlyArray<MentionSuggestion<TResource>>> => {\n const config = resources?.[kind];\n if (config?.search) {\n const result = await config.search(q);\n return result.map((s) => ({ ...s, kind }));\n }\n if (config?.suggestions) {\n const stat = config.suggestions;\n const filtered =\n q.trim().length === 0\n ? stat\n : stat.filter((s) =>\n s.label.toLowerCase().includes(q.toLowerCase()),\n );\n return filtered.map((s) => ({ ...s, kind }));\n }\n if (onResourceSearch) {\n const result = await onResourceSearch(q, kind);\n return result.map((s) => ({ ...s, kind }));\n }\n return [];\n },\n [resources, onResourceSearch],\n );\n\n // Debounced cross-kind search runner. Populates `suggestionsByKind`\n // for every registered kind in parallel.\n useEffect(() => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n if (kinds.length === 0) {\n setSuggestionsByKind({});\n return;\n }\n\n const requestId = ++requestIdRef.current;\n const run = async () => {\n setIsLoading(true);\n try {\n const entries = await Promise.all(\n kinds.map(async (kind) => {\n try {\n const list = await searchOneKind(kind, query);\n return [kind, list] as const;\n } catch {\n return [kind, []] as const;\n }\n }),\n );\n if (requestId !== requestIdRef.current) return;\n const next: Record<string, ReadonlyArray<MentionSuggestion<TResource>>> = {};\n for (const [kind, list] of entries) {\n next[kind] = list;\n }\n setSuggestionsByKind(next);\n } finally {\n if (requestId === requestIdRef.current) {\n setIsLoading(false);\n }\n }\n };\n\n debounceRef.current = setTimeout(() => {\n void run();\n }, debounceMs);\n\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, [kinds, query, searchOneKind, debounceMs]);\n\n /**\n * Auto-switch behaviour: when the active kind has zero results but\n * another kind has matches, jump to the first kind with results.\n * Skipped while `manualKindOverride` is true so the consumer's tab\n * choice sticks.\n */\n useEffect(() => {\n if (manualKindOverride) return;\n if (!activeKind) return;\n const activeList = suggestionsByKind[activeKind] ?? [];\n if (activeList.length > 0) return;\n const first = kinds.find((k) => (suggestionsByKind[k]?.length ?? 0) > 0);\n if (first && first !== activeKind) {\n setActiveKindState(first);\n }\n }, [activeKind, kinds, manualKindOverride, suggestionsByKind]);\n\n /**\n * Set the active kind. **Does not** toggle `manualKindOverride` —\n * the picker UI is responsible for calling\n * `setManualKindOverride(true)` when the user explicitly clicks a\n * tab so the auto-switch / auto-detect logic respects their choice.\n */\n const setActiveKind = useCallback((kind: TResource | null) => {\n setActiveKindState(kind);\n }, []);\n\n const setQuery = useCallback((q: string) => {\n setQueryState(q);\n }, []);\n\n const addMention = useCallback((mention: Mention<TResource>) => {\n setMentionsState((prev) => {\n if (prev.some((m) => m.id === mention.id)) return prev;\n return [...prev, mention];\n });\n }, []);\n\n const removeMention = useCallback((id: string) => {\n setMentionsState((prev) => prev.filter((m) => m.id !== id));\n }, []);\n\n const setMentions = useCallback(\n (next: ReadonlyArray<Mention<TResource>>) => {\n setMentionsState([...next]);\n },\n [],\n );\n\n const reset = useCallback(() => {\n setMentionsState([]);\n setQueryState('');\n setManualKindOverride(false);\n requestIdRef.current++;\n }, []);\n\n const selectSuggestion = useCallback(\n (suggestion: MentionSuggestion<TResource>) => {\n const kind = (suggestion.kind ?? activeKind) as TResource;\n const id = `${kind}:${suggestion.id}`;\n const cfg = resources?.[kind];\n const href = suggestion.href ?? cfg?.buildHref?.(suggestion);\n const mention: Mention<TResource> = {\n id,\n kind,\n label: suggestion.label,\n href,\n data: suggestion.data,\n };\n addMention(mention);\n return mention;\n },\n [activeKind, addMention, resources],\n );\n\n const suggestions = useMemo<ReadonlyArray<MentionSuggestion<TResource>>>(\n () => (activeKind ? suggestionsByKind[activeKind] ?? [] : []),\n [activeKind, suggestionsByKind],\n );\n\n return {\n kinds,\n activeKind,\n setActiveKind,\n activeResource,\n query,\n setQuery,\n suggestions,\n suggestionsByKind,\n isLoading,\n mentions,\n addMention,\n removeMention,\n setMentions,\n reset,\n selectSuggestion,\n manualKindOverride,\n setManualKindOverride,\n };\n}\n","import type { Mention, MentionTone } from '../mentions.types';\n\n/**\n * Serialize a `Mention` into the HTML span that gets inserted into a\n * rich-text body. The structure mirrors `<MentionChip>` so the editor\n * can style it via the `.rsc-mention` / `[data-ref-tone]` rules (see\n * mention-chip.css, co-located in this feature) and the read-time\n * renderer (`<MentionContent>`) can find it again.\n *\n * <span class=\"rsc-mention\" data-ref-id=\"kind:id\" data-ref-kind=\"kind\"\n * data-ref-tone=\"info\" contenteditable=\"false\">@Maria Petrova</span> \n *\n * `data-ref-tone` is what drives the badge colour in both the editor\n * (CSS-only, since contenteditable can't host React) and the read-time\n * renderer (which respects it as a hint when the resource registry\n * isn't available).\n *\n * `contenteditable=\"false\"` tells the browser to treat the chip as an\n * atomic glyph — backspace deletes the whole span, the cursor moves\n * past it, and the inner label can't be edited character-by-character.\n */\nexport function buildMentionHtml<TKind extends string = string>(\n mention: Mention<TKind>,\n options?: { triggerChar?: string; tone?: MentionTone },\n): string {\n const safeLabel = String(mention.label ?? '')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n const id = String(mention.id).replace(/\"/g, '"');\n const kind = String(mention.kind).replace(/\"/g, '"');\n const tone = options?.tone ? String(options.tone).replace(/\"/g, '"') : '';\n const trigger =\n options?.triggerChar ?? (mention.kind === 'user' ? '@' : '');\n const toneAttr = tone ? ` data-ref-tone=\"${tone}\"` : '';\n return (\n `<span class=\"rsc-mention\" data-ref-id=\"${id}\" data-ref-kind=\"${kind}\"${toneAttr} contenteditable=\"false\">` +\n `${trigger}${safeLabel}` +\n `</span> `\n );\n}\n","/**\n * useMentions — picker state + caret-trigger detection bound to an editor.\n *\n * Composes `useMentionsSearch` (suggestion state) with caret-watch\n * logic. The editor it binds to must implement the minimal handle\n * surface in `MentionEditorHandle` — `<RichTextEditor>` from\n * `features/rich-text-editor` already does. Other editors (Slate,\n * Lexical, ProseMirror, plain contenteditable, …) can be plugged in by\n * implementing the same four methods on their imperative handle.\n *\n * Behaviour summary:\n * - On every editor `onCaretChange`, the hook reads `getCaretContext()`\n * and looks for a registered trigger char (`@`, `#`, …) preceded by\n * start-of-line / whitespace and followed by `\\p{L}\\p{N}_-` chars.\n * - On match, the picker opens, `activeKind` is seeded from the\n * trigger char (only on a *fresh* trigger session — manual tab\n * switches survive subsequent keystrokes), and `query` syncs from\n * the typed needle.\n * - All registered kinds are searched in parallel; the active kind\n * auto-switches to the first kind with results when the current\n * active is empty (skipped if `manualKindOverride` is true).\n * - `pickSuggestion` deletes the trigger range and inserts the chip\n * atomically via `replaceBeforeCaret` — selection-extension means\n * no manual text mutation, no race between delete + insert.\n * - When opened via the manual button (no trigger detected), the\n * selection runs `insertHTML` instead — caret stays where it was.\n *\n * Returned API:\n * pickerOpen, setPickerOpen, triggerActive,\n * kinds, activeKind, setActiveKind, manualKindOverride, setManualKindOverride,\n * query, setQuery, suggestions, suggestionsByKind, isLoading,\n * mentions, addMention, removeMention, setMentions, reset,\n * handleCaretChange() — wire to the editor's `onCaretChange`\n * pickSuggestion(s) — convert suggestion → Mention + insert chip\n *\n * @example\n * const editorRef = useRef<RichTextEditorHandle>(null);\n * const mentions = useMentions<'user' | 'order'>({ editorRef });\n *\n * <RichTextEditor ref={editorRef} onCaretChange={mentions.handleCaretChange} />\n * <MentionInlineSuggestions\n * open={mentions.triggerActive && mentions.pickerOpen}\n * activeKind={mentions.activeKind}\n * setActiveKind={mentions.setActiveKind}\n * onManualKindChange={() => mentions.setManualKindOverride(true)}\n * {...mentions}\n * onSelect={mentions.pickSuggestion}\n * />\n */\nimport { useCallback, useRef, useState } from 'react';\nimport type { RefObject } from 'react';\n\nimport type {\n Mention,\n MentionResource,\n MentionSuggestion,\n MentionsResourceSearch,\n} from '../mentions.types';\nimport { buildMentionHtml } from '../utils/build-mention-html';\nimport {\n useMentionsSearch,\n type UseMentionsSearchOptions,\n type UseMentionsSearchReturn,\n} from './use-mentions-search';\n\n/**\n * Minimal editor handle the trigger detector needs. Compatible with the\n * library's `<RichTextEditor>` handle — implement these on any custom\n * editor to plug in.\n */\nexport interface MentionEditorHandle {\n getCaretContext(): { textBefore: string } | null;\n insertHTML(html: string): void;\n replaceBeforeCaret(length: number, html: string): void;\n focus(): void;\n}\n\nexport interface UseMentionsOptions<TResource extends string = string>\n extends UseMentionsSearchOptions<TResource> {\n /** Ref to the editor surface the trigger detector reads from. */\n editorRef?: RefObject<MentionEditorHandle | null>;\n}\n\nexport interface UseMentionsReturn<TResource extends string = string>\n extends UseMentionsSearchReturn<TResource> {\n pickerOpen: boolean;\n setPickerOpen: (open: boolean) => void;\n /** True while the picker is open from an inline `@`/`#` trigger. */\n triggerActive: boolean;\n /** Wire to the editor's `onCaretChange` to enable inline triggers. */\n handleCaretChange: () => void;\n /**\n * Convert a suggestion into a Mention, register it, insert the chip\n * into the editor (replacing the trigger range when one is active),\n * and close the picker. Returns the Mention.\n */\n pickSuggestion: (\n suggestion: MentionSuggestion<TResource>,\n ) => Mention<TResource>;\n}\n\ninterface TriggerState {\n kind: string;\n triggerChar: string;\n consumedLength: number;\n}\n\nexport function useMentions<TResource extends string = string>(\n options: UseMentionsOptions<TResource> = {},\n): UseMentionsReturn<TResource> {\n const resources = options.resources;\n const onResourceSearch: MentionsResourceSearch<TResource> | undefined =\n options.onResourceSearch;\n\n const search = useMentionsSearch<TResource>({\n ...options,\n resources,\n onResourceSearch,\n });\n\n const [pickerOpen, setPickerOpenState] = useState(false);\n const [triggerActive, setTriggerActive] = useState(false);\n const triggerStateRef = useRef<TriggerState | null>(null);\n /** Tracks the trigger char from the most recent detection — lets us\n * set the initial active kind on a fresh trigger without overriding\n * the user's manual tab switch on every subsequent keystroke. */\n const lastTriggerCharRef = useRef<string | null>(null);\n\n const setPickerOpen = useCallback((open: boolean) => {\n setPickerOpenState(open);\n if (!open) {\n triggerStateRef.current = null;\n lastTriggerCharRef.current = null;\n setTriggerActive(false);\n search.setManualKindOverride(false);\n }\n }, [search]);\n\n const editorRef = options.editorRef;\n\n const handleCaretChange = useCallback(() => {\n if (!resources) return;\n const triggerMap: Record<string, string> = {};\n for (const [kind, cfg] of Object.entries(resources)) {\n const trig = (cfg as MentionResource | undefined)?.trigger;\n if (typeof trig === 'string' && trig.length > 0) {\n triggerMap[trig] = kind;\n }\n }\n if (Object.keys(triggerMap).length === 0) return;\n\n const ctx = editorRef?.current?.getCaretContext();\n if (!ctx) {\n if (triggerStateRef.current) {\n triggerStateRef.current = null;\n setPickerOpen(false);\n }\n return;\n }\n const triggers = Object.keys(triggerMap)\n .map((c) => c.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n .join('');\n const re = new RegExp(`(?:^|\\\\s)([${triggers}])([\\\\p{L}\\\\p{N}_-]*)$`, 'u');\n const match = ctx.textBefore.match(re);\n if (!match) {\n if (triggerStateRef.current) {\n triggerStateRef.current = null;\n setPickerOpen(false);\n }\n return;\n }\n const triggerChar = match[1];\n const needle = match[2] ?? '';\n const kind = triggerMap[triggerChar];\n const consumedLength = triggerChar.length + needle.length;\n\n triggerStateRef.current = { kind, triggerChar, consumedLength };\n setTriggerActive(true);\n\n // Only seed the initial active kind on a *fresh* trigger session.\n // If the user has already picked a tab in the panel,\n // `manualKindOverride` is true and we skip — their choice sticks\n // even as they keep typing or deleting characters.\n const isNewTriggerSession = lastTriggerCharRef.current !== triggerChar;\n if (isNewTriggerSession) {\n if (search.activeKind !== kind) {\n search.setActiveKind(kind as TResource);\n }\n search.setManualKindOverride(false);\n lastTriggerCharRef.current = triggerChar;\n }\n\n if (search.query !== needle) {\n search.setQuery(needle);\n }\n setPickerOpenState(true);\n }, [editorRef, resources, search, setPickerOpen]);\n\n const pickSuggestion = useCallback(\n (suggestion: MentionSuggestion<TResource>) => {\n const mention = search.selectSuggestion(suggestion);\n const trigger = triggerStateRef.current;\n const tone = (resources?.[mention.kind] as MentionResource | undefined)?.tone;\n const html = buildMentionHtml(mention, {\n triggerChar: trigger?.triggerChar,\n tone,\n });\n\n if (trigger && trigger.consumedLength > 0 && editorRef?.current) {\n editorRef.current.replaceBeforeCaret(trigger.consumedLength, html);\n triggerStateRef.current = null;\n } else if (editorRef?.current) {\n editorRef.current.insertHTML(html);\n }\n setPickerOpen(false);\n return mention;\n },\n [editorRef, resources, search, setPickerOpen],\n );\n\n return {\n ...search,\n pickerOpen,\n setPickerOpen,\n triggerActive,\n handleCaretChange,\n pickSuggestion,\n };\n}\n","/**\n * MentionChip — default rendering for an inline mention/reference.\n *\n * Wraps the lib's `<Badge>` base component with the variant driven by\n * the resource registry's `tone` field. The mapping between the\n * mentions module's `MentionTone` and the badge's variant lives below\n * (`TONE_TO_VARIANT`) so consumers can rebrand by editing one table.\n *\n * Override paths:\n * - `renderMention` on `<MentionContent>` — full takeover\n * - `resources.<kind>.renderChip(mention)` — per-kind takeover\n * - `resources.<kind>.tone` — quickest \"just change the color\" override\n */\nimport type { FC, ReactNode } from 'react';\n\nimport { Badge, type ComposedBadgeVariant } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type {\n Mention,\n MentionResource,\n MentionTone,\n} from '../mentions.types';\n\nexport interface MentionChipProps {\n mention: Mention;\n resource?: MentionResource<string>;\n /** Force-disable the chip's link (useful inside the composer draft list). */\n asLink?: boolean;\n onClick?: () => void;\n /** Trailing slot — typically a remove button when shown in the composer. */\n trailing?: ReactNode;\n className?: string;\n}\n\n/**\n * Single source of truth for `MentionTone → Badge variant`. Edit here\n * to rebrand all chips library-wide; override per-kind via\n * `resources.<kind>.tone`.\n */\nconst TONE_TO_VARIANT: Record<MentionTone, ComposedBadgeVariant> = {\n primary: 'secondary', // calm primary — saturated `primary` overwhelms body copy\n success: 'success',\n warning: 'warning',\n destructive: 'destructive',\n info: 'info',\n secondary: 'secondary',\n};\n\nexport const MentionChip: FC<MentionChipProps> = ({\n mention,\n resource,\n asLink = true,\n onClick,\n trailing,\n className,\n}) => {\n if (resource?.renderChip) {\n return <>{resource.renderChip(mention)}</>;\n }\n\n const tone = resource?.tone ?? 'secondary';\n const variant = TONE_TO_VARIANT[tone] ?? TONE_TO_VARIANT.secondary;\n const Icon = resource?.icon;\n\n const inner = (\n <Badge\n variant={variant}\n inline\n data-ref-id={mention.id}\n data-ref-kind={mention.kind}\n className={cn(\n 'mention-chip--component',\n /* Inline-flow tweaks: align to the surrounding text baseline\n instead of the line's mid-point, which causes wobble next\n to text. Keep the badge as `inline-flex` (from `inline`),\n add a subtle vertical offset via translate so the icon\n sits on the cap-height. */\n 'align-[-0.15em] cursor-default whitespace-nowrap',\n className,\n )}\n >\n {Icon ? <Icon className=\"size-3 shrink-0\" aria-hidden /> : null}\n <span className=\"truncate max-w-[14rem]\">{mention.label}</span>\n {trailing}\n </Badge>\n );\n\n if (asLink && mention.href) {\n return (\n <a\n href={mention.href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n onClick={onClick}\n className=\"inline align-baseline no-underline hover:opacity-90\"\n >\n {inner}\n </a>\n );\n }\n\n if (onClick) {\n return (\n <span onClick={onClick} className=\"inline align-baseline\">\n {inner}\n </span>\n );\n }\n\n return inner;\n};\n","/**\n * Split an HTML string into a list of `html` chunks and `mention`\n * placeholders, keyed by the `data-ref-id` attribute the writer set.\n *\n * Used by `<MentionContent>` to render the body once with React chips\n * for the references and `dangerouslySetInnerHTML` for everything else.\n */\nexport type MentionHtmlSegment =\n | { kind: 'html'; value: string }\n | { kind: 'mention'; refId: string; fallback: string };\n\nconst MENTION_RE =\n /<(span|a)\\b([^>]*?)data-ref-id\\s*=\\s*\"([^\"]+)\"([^>]*)>([\\s\\S]*?)<\\/\\1>/gi;\n\nexport function splitHtmlByMentions(html: string): MentionHtmlSegment[] {\n if (!html) return [];\n\n const segments: MentionHtmlSegment[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n MENTION_RE.lastIndex = 0;\n\n while ((match = MENTION_RE.exec(html)) !== null) {\n const [full, , , refId] = match;\n const before = html.slice(lastIndex, match.index);\n if (before.length > 0) {\n segments.push({ kind: 'html', value: before });\n }\n segments.push({\n kind: 'mention',\n refId,\n fallback: full,\n });\n lastIndex = match.index + full.length;\n }\n\n const tail = html.slice(lastIndex);\n if (tail.length > 0) {\n segments.push({ kind: 'html', value: tail });\n }\n\n return segments;\n}\n","/**\n * MentionContent — render an HTML body that may contain inline mention\n * spans (`<span data-ref-id=\"kind:id\">…</span>`) by swapping each ref\n * for a React `<MentionChip>` while leaving the rest of the HTML\n * untouched.\n *\n * Used by:\n * - `features/comments` — comment bodies\n * - `features/event-log` — event descriptions\n * - any other surface that renders rich-text with embedded refs\n *\n * Consumer can override per-mention rendering via `renderMention`, or\n * per-kind via the resource registry's `renderChip`.\n */\nimport { Fragment } from 'react';\nimport type { FC, ReactNode } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport type {\n Mention,\n MentionResource,\n MentionsConfig,\n} from '../mentions.types';\nimport { splitHtmlByMentions } from '../utils/split-html-by-mentions';\nimport { MentionChip } from './mention-chip';\n\nexport interface MentionContentProps<TResource extends string = string> {\n /** HTML body to render. */\n html: string;\n /** Mentions resolved on the data — keyed by `data-ref-id`. */\n mentions?: ReadonlyArray<Mention<TResource>>;\n /** Resource registry — pass at the call site. */\n resources?: MentionsConfig<TResource>['resources'];\n /** Custom per-mention renderer — overrides resource.renderChip. */\n renderMention?: (mention: Mention<TResource>) => ReactNode;\n /** Optional sanitizer applied to HTML before rendering. */\n sanitizer?: (html: string) => string;\n /** Outer wrapper class. Defaults to a tight prose surface. */\n className?: string;\n /**\n * Set to `false` to skip the default prose wrapper — useful when\n * embedding inside an existing typed surface (e.g. timeline rows).\n */\n prose?: boolean;\n}\n\nconst DEFAULT_PROSE_CLASS =\n 'prose prose-sm prose-p:my-0.5 prose-p:leading-relaxed prose-headings:my-1 prose-a:text-primary prose-a:no-underline hover:prose-a:underline prose-strong:font-semibold prose-ul:my-0.5 prose-ol:my-0.5 prose-li:my-0.5 max-w-none';\n\nexport function MentionContent<TResource extends string = string>(\n props: MentionContentProps<TResource>,\n): ReactNode {\n const {\n html,\n mentions,\n resources: resourcesProp,\n renderMention,\n sanitizer,\n className,\n prose = true,\n } = props;\n\n const resources = resourcesProp;\n\n const sanitized = sanitizer ? sanitizer(html ?? '') : (html ?? '');\n\n const mentionsById = new Map<string, Mention<TResource>>();\n for (const m of mentions ?? []) mentionsById.set(m.id, m);\n\n const hasMentions = mentionsById.size > 0;\n const segments = hasMentions\n ? splitHtmlByMentions(sanitized)\n : [{ kind: 'html' as const, value: sanitized }];\n\n const renderRef = (mention: Mention<TResource>): ReactNode => {\n if (renderMention) return renderMention(mention);\n const resource = resources?.[mention.kind] as\n | MentionResource<string>\n | undefined;\n return <MentionChip mention={mention} resource={resource} />;\n };\n\n const body = segments.map((segment, index) => {\n if (segment.kind === 'mention') {\n const mention = mentionsById.get(segment.refId);\n if (!mention) {\n return (\n <span\n key={`fallback-${index}`}\n dangerouslySetInnerHTML={{ __html: segment.fallback }}\n />\n );\n }\n return (\n <Fragment key={`ref-${index}-${segment.refId}`}>\n {renderRef(mention)}\n </Fragment>\n );\n }\n // Render the HTML segment directly. The lib's `Text asHTML` escapes\n // via a strict sanitiser — bypass it for trusted editor output.\n // Consumers must pass `sanitizer` for untrusted content.\n return (\n <span\n key={`html-${index}`}\n dangerouslySetInnerHTML={{ __html: segment.value }}\n />\n );\n });\n\n if (!prose) {\n return <>{body}</>;\n }\n\n return (\n <div className={cn('mention-content--component', DEFAULT_PROSE_CLASS, className)}>{body}</div>\n );\n}\n\n/** FC alias for callsites that prefer the `<MentionContent>` element form. */\nexport const MentionContentComponent: FC<MentionContentProps> = (props) => (\n <MentionContent {...props} />\n);\n","/**\n * Default user-facing strings for the `features/mentions` partials.\n *\n * Both `<MentionPicker>` and `<MentionInlineSuggestions>` consume their\n * respective slice; `<MentionInlineSuggestions>` is a strict subset.\n * Consumers wire backend i18n at the call site:\n *\n * <MentionPicker strings={{ empty: t('mentions.empty') }} … />\n */\n\nexport interface MentionPickerStrings {\n\ttitle: string;\n\tsearchPlaceholder: string;\n\tempty: string;\n\tloading: string;\n}\n\nexport const defaultMentionPickerStrings: MentionPickerStrings = {\n\ttitle: 'Insert reference',\n\tsearchPlaceholder: 'Search…',\n\tempty: 'No matches.',\n\tloading: 'Searching…',\n};\n\nexport interface MentionInlineSuggestionsStrings {\n\ttitle: string;\n\tempty: string;\n\tloading: string;\n}\n\nexport const defaultMentionInlineSuggestionsStrings: MentionInlineSuggestionsStrings = {\n\ttitle: 'Insert reference',\n\tempty: 'No matches.',\n\tloading: 'Searching…',\n};\n","/**\n * MentionPicker — popover content for the mention/reference picker.\n *\n * Pure UI: takes the state from `useMentions` (or any equivalent hook)\n * and renders kind tabs + a cmdk search list. Wrapped in `<Popover>` by\n * the consumer:\n *\n * <Popover open={mentions.pickerOpen} onOpenChange={mentions.setPickerOpen}>\n * <PopoverTrigger ... />\n * <MentionPicker ... />\n * </Popover>\n */\nimport { Loader2 } from 'lucide-react';\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/base/command';\nimport { Button } from '@/components/base/buttons';\nimport { PopoverContent } from '@/components/base/popover';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultMentionPickerStrings,\n type MentionPickerStrings,\n} from '../mentions.strings';\nimport type {\n MentionResource,\n MentionSuggestion,\n} from '../mentions.types';\n\nexport type { MentionPickerStrings };\n\nexport interface MentionPickerProps<TResource extends string = string> {\n open: boolean;\n activeKind: TResource | null;\n setActiveKind: (kind: TResource | null) => void;\n kinds: ReadonlyArray<TResource>;\n resources?: Partial<Record<TResource, MentionResource<TResource>>>;\n query: string;\n setQuery: (query: string) => void;\n suggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n isLoading: boolean;\n onSelect: (suggestion: MentionSuggestion<TResource>) => void;\n strings?: StringsProp<MentionPickerStrings>;\n className?: string;\n}\n\nexport function MentionPicker<TResource extends string = string>({\n open,\n activeKind,\n setActiveKind,\n kinds,\n resources,\n query,\n setQuery,\n suggestions,\n isLoading,\n onSelect,\n strings: stringsProp,\n className,\n}: MentionPickerProps<TResource>) {\n const strings = useStrings(defaultMentionPickerStrings, stringsProp);\n if (!open) return null;\n\n return (\n <PopoverContent\n align=\"start\"\n className={cn('mention-picker--component', 'w-72 overflow-hidden p-0', className)}\n >\n <div className=\"border-b border-border/60 px-3 py-2\">\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wide\"\n >\n {strings.title}\n </Text>\n {kinds.length > 1 && (\n <div className=\"mt-2 flex flex-wrap gap-1\">\n {kinds.map((kind) => {\n const cfg = resources?.[kind];\n const Icon = cfg?.icon;\n const active = kind === activeKind;\n return (\n <Button\n key={kind}\n type=\"button\"\n variant={active ? 'primary' : 'secondary'}\n buttonStyle={active ? 'solid' : 'ghost'}\n size=\"small\"\n onClick={() => setActiveKind(kind)}\n className={cn(\n 'h-auto gap-1 rounded px-1.5 py-0.5 text-xs font-medium ring-1 ring-inset transition-colors',\n active\n ? 'bg-primary text-primary-foreground ring-primary'\n : 'bg-muted text-muted-foreground ring-border/60 hover:bg-muted/80',\n )}\n >\n {Icon ? <Icon className=\"size-3\" /> : null}\n <span>{cfg?.label ?? String(kind)}</span>\n </Button>\n );\n })}\n </div>\n )}\n </div>\n\n <Command shouldFilter={false}>\n <CommandInput\n placeholder={strings.searchPlaceholder}\n value={query}\n onValueChange={setQuery}\n />\n <CommandList>\n {isLoading ? (\n <div className=\"text-muted-foreground flex items-center justify-center gap-2 py-3\">\n <Loader2 className=\"size-3.5 animate-spin\" aria-hidden />\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ) : null}\n <CommandEmpty>{strings.empty}</CommandEmpty>\n <CommandGroup>\n {suggestions.map((suggestion) => {\n const kind = suggestion.kind ?? activeKind ?? '';\n return (\n <CommandItem\n key={`${kind}:${suggestion.id}`}\n value={`${kind}:${suggestion.id}`}\n onSelect={() => onSelect(suggestion)}\n >\n <div className=\"flex min-w-0 flex-1 flex-col leading-tight\">\n <Text tag=\"span\" size=\"xs\" weight=\"medium\" className=\"truncate\">\n {suggestion.label}\n </Text>\n {suggestion.description ? (\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"mt-0.5 truncate\"\n >\n {suggestion.description}\n </Text>\n ) : null}\n </div>\n </CommandItem>\n );\n })}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n );\n}\n","/**\n * MentionInlineSuggestions — non-focus-stealing suggestion list.\n *\n * Used in the *inline-trigger* flow (user typed `@` / `#` / …): the\n * editor stays focused while this panel renders below the surface and\n * updates live as the user keeps typing. No popover, no focus trap,\n * no CommandInput — the editor IS the input, we read the needle from\n * the caret context and stream results in.\n *\n * Position is \"anchored to a wrapping element\" — the consumer puts this\n * inside a `relative`-positioned wrapper around the editor and we\n * absolute-position ourselves below it.\n */\nimport { Loader2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { Text } from '@/components/typography';\nimport { useStrings, type StringsProp } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n defaultMentionInlineSuggestionsStrings,\n type MentionInlineSuggestionsStrings,\n} from '../mentions.strings';\nimport type {\n MentionResource,\n MentionSuggestion,\n} from '../mentions.types';\n\nexport type { MentionInlineSuggestionsStrings };\n\nexport interface MentionInlineSuggestionsProps<TResource extends string = string> {\n open: boolean;\n activeKind: TResource | null;\n setActiveKind: (kind: TResource | null) => void;\n kinds: ReadonlyArray<TResource>;\n resources?: Partial<Record<TResource, MentionResource<TResource>>>;\n /** Per-kind suggestion buckets — used to render result counts on tabs. */\n suggestionsByKind?: Readonly<Record<string, ReadonlyArray<MentionSuggestion<TResource>>>>;\n suggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n isLoading: boolean;\n /** Live query the panel echoes in the header; the consumer owns the editor input. */\n query?: string;\n /**\n * Notifies the consumer that the user manually picked a tab, so it\n * can flip the `manualKindOverride` flag on `useMentionsSearch`.\n */\n onManualKindChange?: () => void;\n onSelect: (suggestion: MentionSuggestion<TResource>) => void;\n strings?: StringsProp<MentionInlineSuggestionsStrings>;\n className?: string;\n}\n\nexport function MentionInlineSuggestions<TResource extends string = string>({\n open,\n activeKind,\n setActiveKind,\n kinds,\n resources,\n suggestionsByKind,\n suggestions,\n isLoading,\n query,\n onManualKindChange,\n onSelect,\n strings: stringsProp,\n className,\n}: MentionInlineSuggestionsProps<TResource>) {\n const strings = useStrings(defaultMentionInlineSuggestionsStrings, stringsProp);\n if (!open) return null;\n\n return (\n <div\n // `mousedown.preventDefault` keeps focus in the editor when\n // the user clicks inside the panel — clicks still bubble to\n // the underlying button so selection works normally.\n onMouseDown={(e) => e.preventDefault()}\n className={cn(\n 'mention-inline-suggestions--component',\n 'bg-popover text-popover-foreground absolute left-0 top-full z-40 mt-1 w-80 max-w-[min(theme(spacing.96),100%)]',\n 'border-border/60 rounded-md border shadow-md ring-1 ring-foreground/[0.04]',\n 'overflow-hidden',\n className,\n )}\n >\n <div className=\"border-b border-border/60 px-3 py-2\">\n <div className=\"flex items-baseline justify-between gap-2\">\n <Text\n size=\"xs\"\n type=\"secondary\"\n weight=\"medium\"\n className=\"uppercase tracking-wide\"\n >\n {strings.title}\n </Text>\n {query ? (\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"truncate font-mono\"\n >\n “{query}”\n </Text>\n ) : null}\n </div>\n {kinds.length > 1 && (\n <div className=\"mt-2 flex flex-wrap gap-1\">\n {kinds.map((kind) => {\n const cfg = resources?.[kind];\n const Icon = cfg?.icon;\n const active = kind === activeKind;\n const count = suggestionsByKind?.[kind as string]?.length ?? 0;\n return (\n <Button\n key={kind}\n type=\"button\"\n variant={active ? 'primary' : 'secondary'}\n buttonStyle={active ? 'solid' : 'ghost'}\n size=\"small\"\n onClick={() => {\n setActiveKind(kind);\n onManualKindChange?.();\n }}\n className={cn(\n 'h-auto gap-1 rounded px-1.5 py-0.5 text-xs font-medium ring-1 ring-inset transition-colors',\n active\n ? 'bg-primary text-primary-foreground ring-primary'\n : count > 0\n ? 'bg-muted text-foreground ring-border/60 hover:bg-muted/80'\n : 'bg-muted/40 text-muted-foreground ring-border/40 hover:bg-muted/60',\n )}\n >\n {Icon ? <Icon className=\"size-3\" /> : null}\n <span>{cfg?.label ?? String(kind)}</span>\n {count > 0 && (\n <span\n className={cn(\n 'tabular-nums',\n active ? 'opacity-90' : 'opacity-70',\n )}\n >\n {count}\n </span>\n )}\n </Button>\n );\n })}\n </div>\n )}\n </div>\n\n <div\n className=\"max-h-72 overflow-y-auto py-1\"\n {...(suggestions.length > 0\n ? { role: 'listbox', 'aria-label': strings.title }\n : {})}\n >\n {isLoading ? (\n <div className=\"text-muted-foreground flex items-center justify-center gap-2 py-3\">\n <Loader2 className=\"size-3.5 animate-spin\" aria-hidden />\n <Text tag=\"span\" size=\"xs\" type=\"secondary\">\n {strings.loading}\n </Text>\n </div>\n ) : null}\n\n {!isLoading && suggestions.length === 0 ? (\n <div className=\"px-3 py-3\">\n <Text size=\"xs\" type=\"secondary\">\n {strings.empty}\n </Text>\n </div>\n ) : null}\n\n {suggestions.map((suggestion) => {\n const kind = suggestion.kind ?? activeKind ?? '';\n return (\n <Button\n key={`${kind}:${suggestion.id}`}\n type=\"button\"\n variant=\"secondary\"\n buttonStyle=\"ghost\"\n size=\"default\"\n role=\"option\"\n data-ref-id={`${kind}:${suggestion.id}`}\n onClick={() => onSelect(suggestion)}\n className={cn(\n 'h-auto w-full min-w-0 justify-start gap-2 rounded-none px-3 py-1.5 text-left',\n 'hover:bg-muted/60 focus-visible:bg-muted/60 transition-colors',\n )}\n >\n <div className=\"flex min-w-0 flex-1 flex-col leading-tight\">\n <Text\n tag=\"span\"\n size=\"xs\"\n weight=\"medium\"\n className=\"truncate\"\n >\n {suggestion.label}\n </Text>\n {suggestion.description ? (\n <Text\n tag=\"span\"\n size=\"xs\"\n type=\"secondary\"\n className=\"mt-0.5 truncate\"\n >\n {suggestion.description}\n </Text>\n ) : null}\n </div>\n </Button>\n );\n })}\n </div>\n </div>\n );\n}\n","/**\n * Walk an HTML string and extract `data-ref-id=\"kind:id\"` spans /\n * anchors as a list of `Mention` records. Used by the comment composer\n * to keep its `mentions` state in sync with what's actually present in\n * the editor — when the user backspaces a chip out of the body, the\n * draft's mentions list shrinks too.\n *\n * The output preserves first-occurrence order and deduplicates by id.\n * Caller can merge the resulting Mentions with previously known ones to\n * preserve `href` / `data` payloads that aren't expressible in HTML.\n */\nimport type { Mention } from '../mentions.types';\n\nconst REF_RE =\n /<(?:span|a)\\b[^>]*?data-ref-id\\s*=\\s*\"([^\"]+)\"[^>]*?>([\\s\\S]*?)<\\/(?:span|a)>/gi;\nconst KIND_ATTR_RE = /data-ref-kind\\s*=\\s*\"([^\"]+)\"/i;\n\nexport function parseMentionsFromHtml<TKind extends string = string>(\n html: string,\n): Array<Mention<TKind>> {\n const out: Mention<TKind>[] = [];\n if (!html) return out;\n\n const seen = new Set<string>();\n let match: RegExpExecArray | null;\n REF_RE.lastIndex = 0;\n\n while ((match = REF_RE.exec(html)) !== null) {\n const [tagText, id, inner] = match;\n if (seen.has(id)) continue;\n seen.add(id);\n\n const kindMatch = tagText.match(KIND_ATTR_RE);\n const kind = (kindMatch?.[1] ?? id.split(':')[0] ?? '') as TKind;\n const label = (inner ?? '')\n .replace(/<[^>]*>/g, '')\n .replace(/ /g, ' ')\n .replace(/^[@#$&%!~]\\s*/, '')\n .trim();\n\n out.push({ id, kind, label });\n }\n\n return out;\n}\n"],"mappings":"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"}
|