themelia-react-ui 0.0.0-stage → 1.0.0
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/CHANGELOG.md +64 -0
- package/LICENSE +21 -0
- package/README.md +249 -2
- package/THIRD_PARTY_NOTICES.md +65 -0
- package/dist/accordion-BRWh3BM1.js +205 -0
- package/dist/accordion-BRWh3BM1.js.map +1 -0
- package/dist/action-menu-Cx3SdfbN.js +265 -0
- package/dist/action-menu-Cx3SdfbN.js.map +1 -0
- package/dist/action-presentation.js +11 -0
- package/dist/action-presentation.js.map +1 -0
- package/dist/affordance-geometry.generated-DXl-Zb3Z.js +23 -0
- package/dist/affordance-geometry.generated-DXl-Zb3Z.js.map +1 -0
- package/dist/ai-artifact-DkOArd3-.js +1121 -0
- package/dist/ai-artifact-DkOArd3-.js.map +1 -0
- package/dist/anchored-positioning-DPnKTvNs.js +6 -0
- package/dist/anchored-positioning-DPnKTvNs.js.map +1 -0
- package/dist/app-shell-BH_bGcE2.js +235 -0
- package/dist/app-shell-BH_bGcE2.js.map +1 -0
- package/dist/attachment-DsLgNHXt.js +244 -0
- package/dist/attachment-DsLgNHXt.js.map +1 -0
- package/dist/auth-BDB1V_2q.js +704 -0
- package/dist/auth-BDB1V_2q.js.map +1 -0
- package/dist/avatar-CsnWaYmt.js +173 -0
- package/dist/avatar-CsnWaYmt.js.map +1 -0
- package/dist/badge-BZXZT9wd.js +92 -0
- package/dist/badge-BZXZT9wd.js.map +1 -0
- package/dist/base/accordion.js +3 -0
- package/dist/base/action-menu.js +3 -0
- package/dist/base/attachment.js +3 -0
- package/dist/base/avatar.js +3 -0
- package/dist/base/badge.js +3 -0
- package/dist/base/buttons.js +3 -0
- package/dist/base/cards.js +4 -0
- package/dist/base/carousel.js +251 -0
- package/dist/base/carousel.js.map +1 -0
- package/dist/base/cascader.js +361 -0
- package/dist/base/cascader.js.map +1 -0
- package/dist/base/chart.js +3 -0
- package/dist/base/choice-inputs.js +3 -0
- package/dist/base/code-block.js +3 -0
- package/dist/base/combobox.js +3 -0
- package/dist/base/command.js +3 -0
- package/dist/base/copyable.js +3 -0
- package/dist/base/date-pickers.js +4 -0
- package/dist/base/display.js +8 -0
- package/dist/base/feedback.js +4 -0
- package/dist/base/forms-numeric.js +3 -0
- package/dist/base/forms.js +4 -0
- package/dist/base/item.js +3 -0
- package/dist/base/media-gallery.js +3 -0
- package/dist/base/navigation.js +8 -0
- package/dist/base/popover-menu.js +3 -0
- package/dist/base/popover.js +3 -0
- package/dist/base/qr-code.js +63 -0
- package/dist/base/qr-code.js.map +1 -0
- package/dist/base/repeaters.js +620 -0
- package/dist/base/repeaters.js.map +1 -0
- package/dist/base/sheet.js +3 -0
- package/dist/base/sidebar.js +3 -0
- package/dist/base/signature-pad.js +364 -0
- package/dist/base/signature-pad.js.map +1 -0
- package/dist/base/skeleton.js +3 -0
- package/dist/base/spinner.js +3 -0
- package/dist/base/structure.js +3 -0
- package/dist/base/table.js +3 -0
- package/dist/base/text-inputs.js +4 -0
- package/dist/base/toaster.js +102 -0
- package/dist/base/toaster.js.map +1 -0
- package/dist/base/tree.js +3 -0
- package/dist/base/upload-queue.js +3 -0
- package/dist/base/upload.js +5 -0
- package/dist/base/value-inputs.js +3 -0
- package/dist/blocks/admin.js +478 -0
- package/dist/blocks/admin.js.map +1 -0
- package/dist/blocks/ai.js +1021 -0
- package/dist/blocks/ai.js.map +1 -0
- package/dist/blocks/analytics.js +1499 -0
- package/dist/blocks/analytics.js.map +1 -0
- package/dist/blocks/collaboration.js +3 -0
- package/dist/blocks/commerce/receipt.js +3 -0
- package/dist/blocks/commerce.js +3393 -0
- package/dist/blocks/commerce.js.map +1 -0
- package/dist/blocks/data-display.js +3 -0
- package/dist/blocks/onboarding.js +128 -0
- package/dist/blocks/onboarding.js.map +1 -0
- package/dist/blocks/timelines.js +3 -0
- package/dist/breadcrumbs-DdQ_I5ra.js +127 -0
- package/dist/breadcrumbs-DdQ_I5ra.js.map +1 -0
- package/dist/button-BS6l5JUw.js +47 -0
- package/dist/button-BS6l5JUw.js.map +1 -0
- package/dist/buttons-Co6GavvM.js +674 -0
- package/dist/buttons-Co6GavvM.js.map +1 -0
- package/dist/cards-BMB0laLG.js +66 -0
- package/dist/cards-BMB0laLG.js.map +1 -0
- package/dist/chart-DVfcwQu6.js +149 -0
- package/dist/chart-DVfcwQu6.js.map +1 -0
- package/dist/choice-inputs-CavA-SGV.js +644 -0
- package/dist/choice-inputs-CavA-SGV.js.map +1 -0
- package/dist/code-block-DIlqzoiD.js +183 -0
- package/dist/code-block-DIlqzoiD.js.map +1 -0
- package/dist/collapsible-DsnktFNv.js +81 -0
- package/dist/collapsible-DsnktFNv.js.map +1 -0
- package/dist/collection-content-C4fthJV_.js +53 -0
- package/dist/collection-content-C4fthJV_.js.map +1 -0
- package/dist/combobox-CHD750do.js +850 -0
- package/dist/combobox-CHD750do.js.map +1 -0
- package/dist/combobox-HDftpzxt.js +273 -0
- package/dist/combobox-HDftpzxt.js.map +1 -0
- package/dist/command-D0kWBZfd.js +421 -0
- package/dist/command-D0kWBZfd.js.map +1 -0
- package/dist/comments-CvYeglMS.js +1132 -0
- package/dist/comments-CvYeglMS.js.map +1 -0
- package/dist/component-vocabulary.js +26 -0
- package/dist/component-vocabulary.js.map +1 -0
- package/dist/components/base/accordion/accordion-variants.d.ts +36 -0
- package/dist/components/base/accordion/accordion.d.ts +20 -0
- package/dist/components/base/accordion/accordion.strings.d.ts +15 -0
- package/dist/components/base/accordion/accordion.types.d.ts +74 -0
- package/dist/components/base/accordion/index.d.ts +4 -0
- package/dist/components/base/accordion/smart-accordion.d.ts +7 -0
- package/dist/components/base/action-menu/action-menu.d.ts +147 -0
- package/dist/components/base/action-menu/action-menu.strings.d.ts +4 -0
- package/dist/components/base/action-menu/index.d.ts +11 -0
- package/dist/components/base/attachment/attachment.d.ts +17 -0
- package/dist/components/base/attachment/attachment.types.d.ts +49 -0
- package/dist/components/base/attachment/index.d.ts +2 -0
- package/dist/components/base/avatar/avatar.d.ts +24 -0
- package/dist/components/base/avatar/index.d.ts +14 -0
- package/dist/components/base/avatar/stacked-avatars.d.ts +39 -0
- package/dist/components/base/badge/badge.d.ts +22 -0
- package/dist/components/base/badge/badge.recipes.d.ts +20 -0
- package/dist/components/base/badge/index.d.ts +2 -0
- package/dist/components/base/buttons/base-button.d.ts +24 -0
- package/dist/components/base/buttons/button-group.d.ts +28 -0
- package/dist/components/base/buttons/button-group.recipes.d.ts +6 -0
- package/dist/components/base/buttons/button.d.ts +47 -0
- package/dist/components/base/buttons/button.recipes.d.ts +23 -0
- package/dist/components/base/buttons/button.variants.d.ts +8 -0
- package/dist/components/base/buttons/index.d.ts +7 -0
- package/dist/components/base/buttons/loader-button.d.ts +40 -0
- package/dist/components/base/buttons/text-button.d.ts +19 -0
- package/dist/components/base/buttons/tooltip-button.d.ts +7 -0
- package/dist/components/base/cards/card-actions.d.ts +41 -0
- package/dist/components/base/cards/card.recipes.d.ts +28 -0
- package/dist/components/base/cards/index.d.ts +5 -0
- package/dist/components/base/cards/partials/card-primitives.d.ts +21 -0
- package/dist/components/base/cards/partials/has-renderable-content.d.ts +8 -0
- package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts +8 -0
- package/dist/components/base/cards/partials/smart-card-alert.d.ts +20 -0
- package/dist/components/base/cards/partials/smart-card-header-row.d.ts +33 -0
- package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +16 -0
- package/dist/components/base/cards/smart-card.d.ts +9 -0
- package/dist/components/base/cards/smart-card.strings.d.ts +18 -0
- package/dist/components/base/cards/smart-card.tokens.d.ts +44 -0
- package/dist/components/base/cards/smart-card.types.d.ts +144 -0
- package/dist/components/base/carousel/carousel.d.ts +105 -0
- package/dist/components/base/carousel/carousel.strings.d.ts +6 -0
- package/dist/components/base/carousel/index.d.ts +2 -0
- package/dist/components/base/cascader/cascader.d.ts +2 -0
- package/dist/components/base/cascader/cascader.types.d.ts +57 -0
- package/dist/components/base/cascader/index.d.ts +2 -0
- package/dist/components/base/chart/chart.d.ts +99 -0
- package/dist/components/base/chart/index.d.ts +9 -0
- package/dist/components/base/choice-inputs/card-checkbox-group.d.ts +27 -0
- package/dist/components/base/choice-inputs/card-radio-group.d.ts +19 -0
- package/dist/components/base/choice-inputs/checkbox.d.ts +17 -0
- package/dist/components/base/choice-inputs/choice-types.d.ts +57 -0
- package/dist/components/base/choice-inputs/index.d.ts +28 -0
- package/dist/components/base/choice-inputs/list-radio-group.d.ts +13 -0
- package/dist/components/base/choice-inputs/pill-radio-group.d.ts +27 -0
- package/dist/components/base/choice-inputs/select-popup.d.ts +26 -0
- package/dist/components/base/choice-inputs/select.d.ts +94 -0
- package/dist/components/base/choice-inputs/switch-card.d.ts +36 -0
- package/dist/components/base/choice-inputs/switch.d.ts +38 -0
- package/dist/components/base/choice-inputs/toggle-field.d.ts +41 -0
- package/dist/components/base/code-block/code-block.d.ts +3 -0
- package/dist/components/base/code-block/code-block.types.d.ts +46 -0
- package/dist/components/base/code-block/index.d.ts +2 -0
- package/dist/components/base/code-block/use-code-copy.d.ts +6 -0
- package/dist/components/base/combobox/index.d.ts +27 -0
- package/dist/components/base/command/command.d.ts +73 -0
- package/dist/components/base/command/index.d.ts +1 -0
- package/dist/components/base/copyable/copyable.d.ts +36 -0
- package/dist/components/base/copyable/index.d.ts +1 -0
- package/dist/components/base/date-pickers/date-picker-footer.d.ts +14 -0
- package/dist/components/base/date-pickers/date-picker-header.d.ts +10 -0
- package/dist/components/base/date-pickers/date-picker-helpers.d.ts +87 -0
- package/dist/components/base/date-pickers/date-picker-internals.d.ts +10 -0
- package/dist/components/base/date-pickers/date-picker-multiple.d.ts +20 -0
- package/dist/components/base/date-pickers/date-picker-range.d.ts +15 -0
- package/dist/components/base/date-pickers/date-picker-single.d.ts +15 -0
- package/dist/components/base/date-pickers/date-picker.d.ts +3 -0
- package/dist/components/base/date-pickers/date-picker.recipes.d.ts +18 -0
- package/dist/components/base/date-pickers/date-pickers.strings.d.ts +14 -0
- package/dist/components/base/date-pickers/datepicker.types.d.ts +285 -0
- package/dist/components/base/date-pickers/index.d.ts +7 -0
- package/dist/components/base/date-pickers/month-year-picker.d.ts +4 -0
- package/dist/components/base/date-pickers/time-picker.d.ts +70 -0
- package/dist/components/base/display/alert-dialog.d.ts +25 -0
- package/dist/components/base/display/boolean-indicator.d.ts +25 -0
- package/dist/components/base/display/collapsible.d.ts +21 -0
- package/dist/components/base/display/content-block.d.ts +73 -0
- package/dist/components/base/display/content-block.strings.d.ts +5 -0
- package/dist/components/base/display/date-block.d.ts +70 -0
- package/dist/components/base/display/dialog.d.ts +35 -0
- package/dist/components/base/display/icon-badge/icon-badge.d.ts +45 -0
- package/dist/components/base/display/icon-badge/index.d.ts +1 -0
- package/dist/components/base/display/icon-size.d.ts +5 -0
- package/dist/components/base/display/index.d.ts +31 -0
- package/dist/components/base/display/placeholder-pattern.d.ts +7 -0
- package/dist/components/base/display/scroll-area.d.ts +12 -0
- package/dist/components/base/display/separator.d.ts +10 -0
- package/dist/components/base/display/surface-title.d.ts +10 -0
- package/dist/components/base/display/tooltip.d.ts +28 -0
- package/dist/components/base/display/visually-hidden.d.ts +14 -0
- package/dist/components/base/feedback/alert.d.ts +49 -0
- package/dist/components/base/feedback/empty.d.ts +48 -0
- package/dist/components/base/feedback/index.d.ts +27 -0
- package/dist/components/base/feedback/progress.d.ts +81 -0
- package/dist/components/base/feedback/progress.strings.d.ts +5 -0
- package/dist/components/base/feedback/state-display.d.ts +39 -0
- package/dist/components/base/forms/controlled-form-field.d.ts +32 -0
- package/dist/components/base/forms/controlled-form-field.strings.d.ts +7 -0
- package/dist/components/base/forms/form-field.d.ts +38 -0
- package/dist/components/base/forms/form-sizing.d.ts +86 -0
- package/dist/components/base/forms/index.d.ts +4 -0
- package/dist/components/base/forms/operation-password-form.d.ts +16 -0
- package/dist/components/base/forms/workflow.d.ts +68 -0
- package/dist/components/base/forms-numeric/coordinates-input.d.ts +47 -0
- package/dist/components/base/forms-numeric/currency-input.d.ts +44 -0
- package/dist/components/base/forms-numeric/decimal-input.d.ts +53 -0
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +79 -0
- package/dist/components/base/forms-numeric/index.d.ts +21 -0
- package/dist/components/base/forms-numeric/money-input.d.ts +67 -0
- package/dist/components/base/forms-numeric/money-input.strings.d.ts +6 -0
- package/dist/components/base/forms-numeric/percentage-input.d.ts +8 -0
- package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +12 -0
- package/dist/components/base/forms-numeric/weight-input.d.ts +54 -0
- package/dist/components/base/item/index.d.ts +2 -0
- package/dist/components/base/item/item.d.ts +12 -0
- package/dist/components/base/item/item.types.d.ts +100 -0
- package/dist/components/base/media-gallery/index.d.ts +2 -0
- package/dist/components/base/media-gallery/media-gallery.d.ts +45 -0
- package/dist/components/base/navigation/breadcrumbs.d.ts +37 -0
- package/dist/components/base/navigation/dropdown-menu.d.ts +45 -0
- package/dist/components/base/navigation/index.d.ts +21 -0
- package/dist/components/base/navigation/language-switcher.d.ts +12 -0
- package/dist/components/base/navigation/navigation-tabs.d.ts +40 -0
- package/dist/components/base/navigation/overflow-tab-bar.d.ts +43 -0
- package/dist/components/base/navigation/page-header/index.d.ts +1 -0
- package/dist/components/base/navigation/page-header/page-header.d.ts +88 -0
- package/dist/components/base/navigation/pagination.d.ts +61 -0
- package/dist/components/base/navigation/tab-scroll-viewport.d.ts +12 -0
- package/dist/components/base/navigation/tabs.d.ts +23 -0
- package/dist/components/base/popover/collection-content.d.ts +22 -0
- package/dist/components/base/popover/index.d.ts +1 -0
- package/dist/components/base/popover/popover.d.ts +54 -0
- package/dist/components/base/popover/popover.recipes.d.ts +29 -0
- package/dist/components/base/popover-menu/index.d.ts +3 -0
- package/dist/components/base/popover-menu/popover-menu.d.ts +82 -0
- package/dist/components/base/popover-menu/popover-menu.types.d.ts +30 -0
- package/dist/components/base/qr-code/index.d.ts +8 -0
- package/dist/components/base/qr-code/qr-code.d.ts +13 -0
- package/dist/components/base/repeaters/index.d.ts +21 -0
- package/dist/components/base/repeaters/key-value-editor.d.ts +27 -0
- package/dist/components/base/repeaters/localized-object-field.d.ts +35 -0
- package/dist/components/base/repeaters/localized-string-field.d.ts +25 -0
- package/dist/components/base/repeaters/localized-string-repeater.d.ts +44 -0
- package/dist/components/base/repeaters/object-repeater.d.ts +66 -0
- package/dist/components/base/repeaters/repeater.d.ts +87 -0
- package/dist/components/base/repeaters/repeaters.strings.d.ts +16 -0
- package/dist/components/base/repeaters/string-repeater.d.ts +65 -0
- package/dist/components/base/repeaters/string-repeater.utils.d.ts +2 -0
- package/dist/components/base/sheet/index.d.ts +1 -0
- package/dist/components/base/sheet/sheet.d.ts +35 -0
- package/dist/components/base/sidebar/index.d.ts +6 -0
- package/dist/components/base/sidebar/sidebar.d.ts +135 -0
- package/dist/components/base/signature-pad/index.d.ts +4 -0
- package/dist/components/base/signature-pad/signature-pad.d.ts +4 -0
- package/dist/components/base/signature-pad/signature-pad.types.d.ts +66 -0
- package/dist/components/base/signature-pad/signature-pad.utils.d.ts +8 -0
- package/dist/components/base/skeleton/index.d.ts +14 -0
- package/dist/components/base/skeleton/skeleton.d.ts +54 -0
- package/dist/components/base/spinner/index.d.ts +1 -0
- package/dist/components/base/spinner/spinner.d.ts +32 -0
- package/dist/components/base/structure/adaptive-grid.d.ts +3 -0
- package/dist/components/base/structure/grid-cell.d.ts +3 -0
- package/dist/components/base/structure/grid.d.ts +3 -0
- package/dist/components/base/structure/index.d.ts +5 -0
- package/dist/components/base/structure/stack.d.ts +3 -0
- package/dist/components/base/structure/structure.context.d.ts +6 -0
- package/dist/components/base/structure/structure.recipes.d.ts +27 -0
- package/dist/components/base/structure/structure.responsive.d.ts +5 -0
- package/dist/components/base/structure/structure.types.d.ts +51 -0
- package/dist/components/base/table/index.d.ts +18 -0
- package/dist/components/base/text-inputs/hooks/index.d.ts +1 -0
- package/dist/components/base/text-inputs/hooks/use-form-field-state.d.ts +48 -0
- package/dist/components/base/text-inputs/index.d.ts +21 -0
- package/dist/components/base/text-inputs/input-group.d.ts +46 -0
- package/dist/components/base/text-inputs/input.d.ts +45 -0
- package/dist/components/base/text-inputs/password-input.d.ts +28 -0
- package/dist/components/base/text-inputs/slug-field.d.ts +21 -0
- package/dist/components/base/text-inputs/textarea.d.ts +37 -0
- package/dist/components/base/toaster/index.d.ts +1 -0
- package/dist/components/base/toaster/toaster.d.ts +6 -0
- package/dist/components/base/tree/hierarchy.d.ts +11 -0
- package/dist/components/base/tree/index.d.ts +2 -0
- package/dist/components/base/tree/tree.d.ts +3 -0
- package/dist/components/base/tree/tree.types.d.ts +47 -0
- package/dist/components/base/upload/avatar-upload.d.ts +39 -0
- package/dist/components/base/upload/dropzone.d.ts +40 -0
- package/dist/components/base/upload/file-picker-input.d.ts +15 -0
- package/dist/components/base/upload/file-upload.d.ts +9 -0
- package/dist/components/base/upload/file-upload.strings.d.ts +18 -0
- package/dist/components/base/upload/file-upload.types.d.ts +68 -0
- package/dist/components/base/upload/file-upload.validation.d.ts +21 -0
- package/dist/components/base/upload/image-upload.d.ts +57 -0
- package/dist/components/base/upload/index.d.ts +26 -0
- package/dist/components/base/upload/use-file-drop-target.d.ts +22 -0
- package/dist/components/base/upload-queue/index.d.ts +3 -0
- package/dist/components/base/upload-queue/upload-progress-list.d.ts +55 -0
- package/dist/components/base/upload-queue/upload-tray.d.ts +46 -0
- package/dist/components/base/value-inputs/color-input.d.ts +26 -0
- package/dist/components/base/value-inputs/date-time-input.d.ts +19 -0
- package/dist/components/base/value-inputs/index.d.ts +25 -0
- package/dist/components/base/value-inputs/phone-input.d.ts +48 -0
- package/dist/components/base/value-inputs/slider.d.ts +59 -0
- package/dist/components/base/value-inputs/tags-input.d.ts +67 -0
- package/dist/components/blocks/admin/action-surfaces/index.d.ts +127 -0
- package/dist/components/blocks/admin/admin.strings.d.ts +11 -0
- package/dist/components/blocks/admin/api-key-list/api-key-list.d.ts +2 -0
- package/dist/components/blocks/admin/api-key-list/api-key-list.strings.d.ts +16 -0
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +58 -0
- package/dist/components/blocks/admin/api-key-list/index.d.ts +3 -0
- package/dist/components/blocks/admin/index.d.ts +4 -0
- package/dist/components/blocks/admin/role-permission/index.d.ts +2 -0
- package/dist/components/blocks/admin/role-permission/role-permission.d.ts +5 -0
- package/dist/components/blocks/admin/role-permission/types.d.ts +26 -0
- package/dist/components/blocks/ai/ai-agent/ai-agent.d.ts +5 -0
- package/dist/components/blocks/ai/ai-agent/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-agent/types.d.ts +30 -0
- package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +5 -0
- package/dist/components/blocks/ai/ai-artifact/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-artifact/types.d.ts +50 -0
- package/dist/components/blocks/ai/ai-attachment/ai-attachment.d.ts +5 -0
- package/dist/components/blocks/ai/ai-attachment/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-attachment/types.d.ts +35 -0
- package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +5 -0
- package/dist/components/blocks/ai/ai-chain-of-thought/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +36 -0
- package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +5 -0
- package/dist/components/blocks/ai/ai-citation/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-citation/types.d.ts +38 -0
- package/dist/components/blocks/ai/ai-classification/ai-classification.d.ts +2 -0
- package/dist/components/blocks/ai/ai-classification/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-classification/types.d.ts +27 -0
- package/dist/components/blocks/ai/ai-code-block/ai-code-block.d.ts +6 -0
- package/dist/components/blocks/ai/ai-code-block/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-code-block/types.d.ts +38 -0
- package/dist/components/blocks/ai/ai-confidence/ai-confidence.d.ts +5 -0
- package/dist/components/blocks/ai/ai-confidence/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-confidence/types.d.ts +25 -0
- package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +5 -0
- package/dist/components/blocks/ai/ai-confirmation/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-confirmation/types.d.ts +40 -0
- package/dist/components/blocks/ai/ai-feedback/ai-feedback.d.ts +5 -0
- package/dist/components/blocks/ai/ai-feedback/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-feedback/types.d.ts +24 -0
- package/dist/components/blocks/ai/ai-file-tree/ai-file-tree.d.ts +5 -0
- package/dist/components/blocks/ai/ai-file-tree/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-file-tree/types.d.ts +59 -0
- package/dist/components/blocks/ai/ai-inline-citation/ai-inline-citation.d.ts +5 -0
- package/dist/components/blocks/ai/ai-inline-citation/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +22 -0
- package/dist/components/blocks/ai/ai-message-bubble/ai-message-bubble.d.ts +6 -0
- package/dist/components/blocks/ai/ai-message-bubble/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-message-bubble/types.d.ts +35 -0
- package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +5 -0
- package/dist/components/blocks/ai/ai-package-info/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-package-info/types.d.ts +39 -0
- package/dist/components/blocks/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts +5 -0
- package/dist/components/blocks/ai/ai-prompt-suggestions/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-prompt-suggestions/types.d.ts +26 -0
- package/dist/components/blocks/ai/ai-reasoning/ai-reasoning.d.ts +5 -0
- package/dist/components/blocks/ai/ai-reasoning/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-reasoning/types.d.ts +32 -0
- package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +5 -0
- package/dist/components/blocks/ai/ai-shimmer/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-shimmer/types.d.ts +11 -0
- package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +5 -0
- package/dist/components/blocks/ai/ai-sources/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-sources/types.d.ts +44 -0
- package/dist/components/blocks/ai/ai-summary/ai-summary.d.ts +2 -0
- package/dist/components/blocks/ai/ai-summary/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-summary/types.d.ts +32 -0
- package/dist/components/blocks/ai/ai-task/ai-task.d.ts +5 -0
- package/dist/components/blocks/ai/ai-task/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-task/types.d.ts +38 -0
- package/dist/components/blocks/ai/ai-token-usage/ai-token-usage.d.ts +5 -0
- package/dist/components/blocks/ai/ai-token-usage/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-token-usage/types.d.ts +22 -0
- package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +5 -0
- package/dist/components/blocks/ai/ai-tool-call/index.d.ts +2 -0
- package/dist/components/blocks/ai/ai-tool-call/types.d.ts +38 -0
- package/dist/components/blocks/ai/ai.strings.d.ts +36 -0
- package/dist/components/blocks/ai/index.d.ts +24 -0
- package/dist/components/blocks/ai/use-copy-feedback.d.ts +6 -0
- package/dist/components/blocks/analytics/activity-heatmap/activity-heatmap.d.ts +5 -0
- package/dist/components/blocks/analytics/activity-heatmap/index.d.ts +2 -0
- package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +20 -0
- package/dist/components/blocks/analytics/analytics.strings.d.ts +35 -0
- package/dist/components/blocks/analytics/atoms/metric-skeleton.d.ts +13 -0
- package/dist/components/blocks/analytics/atoms/metric-sparkline.d.ts +15 -0
- package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +15 -0
- package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +42 -0
- package/dist/components/blocks/analytics/chart-card/index.d.ts +1 -0
- package/dist/components/blocks/analytics/format-metric-value.d.ts +8 -0
- package/dist/components/blocks/analytics/index.d.ts +34 -0
- package/dist/components/blocks/analytics/metric/index.d.ts +1 -0
- package/dist/components/blocks/analytics/metric/metric.d.ts +28 -0
- package/dist/components/blocks/analytics/metric-bar/index.d.ts +1 -0
- package/dist/components/blocks/analytics/metric-bar/metric-bar.d.ts +22 -0
- package/dist/components/blocks/analytics/metric-comparison/index.d.ts +1 -0
- package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +26 -0
- package/dist/components/blocks/analytics/metric-gradient/index.d.ts +1 -0
- package/dist/components/blocks/analytics/metric-gradient/metric-gradient.d.ts +19 -0
- package/dist/components/blocks/analytics/metric-grid/index.d.ts +1 -0
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +33 -0
- package/dist/components/blocks/analytics/metric-micro-grid/index.d.ts +1 -0
- package/dist/components/blocks/analytics/metric-micro-grid/metric-micro-grid.d.ts +23 -0
- package/dist/components/blocks/analytics/time-ruler/index.d.ts +2 -0
- package/dist/components/blocks/analytics/time-ruler/time-ruler.d.ts +5 -0
- package/dist/components/blocks/analytics/time-ruler/types.d.ts +32 -0
- package/dist/components/blocks/analytics/types.d.ts +83 -0
- package/dist/components/blocks/collaboration/index.d.ts +1 -0
- package/dist/components/blocks/collaboration/message/index.d.ts +2 -0
- package/dist/components/blocks/collaboration/message/message.d.ts +8 -0
- package/dist/components/blocks/collaboration/message/message.types.d.ts +30 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +5 -0
- package/dist/components/blocks/commerce/address-card/index.d.ts +2 -0
- package/dist/components/blocks/commerce/address-card/types.d.ts +43 -0
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +12 -0
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +36 -0
- package/dist/components/blocks/commerce/booking-calendar-event-card/index.d.ts +2 -0
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +5 -0
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -0
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +53 -0
- package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +5 -0
- package/dist/components/blocks/commerce/coupon-input/index.d.ts +2 -0
- package/dist/components/blocks/commerce/coupon-input/types.d.ts +35 -0
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +5 -0
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -0
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +27 -0
- package/dist/components/blocks/commerce/format-signed-amount.d.ts +22 -0
- package/dist/components/blocks/commerce/giftcard-card/giftcard-card.d.ts +62 -0
- package/dist/components/blocks/commerce/giftcard-card/index.d.ts +2 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +10 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +9 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +7 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +11 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +10 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +10 -0
- package/dist/components/blocks/commerce/giftcard-card/types.d.ts +83 -0
- package/dist/components/blocks/commerce/index.d.ts +34 -0
- package/dist/components/blocks/commerce/inventory-level/index.d.ts +3 -0
- package/dist/components/blocks/commerce/inventory-level/inventory-level.d.ts +5 -0
- package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +10 -0
- package/dist/components/blocks/commerce/inventory-level/types.d.ts +20 -0
- package/dist/components/blocks/commerce/inventory-section/index.d.ts +2 -0
- package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +5 -0
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +105 -0
- package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -0
- package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +5 -0
- package/dist/components/blocks/commerce/invoice-header/types.d.ts +51 -0
- package/dist/components/blocks/commerce/invoice-line-items/index.d.ts +2 -0
- package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +5 -0
- package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +64 -0
- package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -0
- package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +5 -0
- package/dist/components/blocks/commerce/invoice-mini/types.d.ts +28 -0
- package/dist/components/blocks/commerce/loyalty-points/index.d.ts +2 -0
- package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +5 -0
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +32 -0
- package/dist/components/blocks/commerce/order-status/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-status/order-status.d.ts +5 -0
- package/dist/components/blocks/commerce/order-status/types.d.ts +35 -0
- package/dist/components/blocks/commerce/order-timeline/index.d.ts +2 -0
- package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +5 -0
- package/dist/components/blocks/commerce/order-timeline/types.d.ts +22 -0
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -0
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +5 -0
- package/dist/components/blocks/commerce/payment-method/types.d.ts +33 -0
- package/dist/components/blocks/commerce/payment-timeline/index.d.ts +2 -0
- package/dist/components/blocks/commerce/payment-timeline/payment-timeline.d.ts +5 -0
- package/dist/components/blocks/commerce/payment-timeline/types.d.ts +15 -0
- package/dist/components/blocks/commerce/receipt/index.d.ts +3 -0
- package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +2 -0
- package/dist/components/blocks/commerce/receipt/receipt.d.ts +3 -0
- package/dist/components/blocks/commerce/receipt/types.d.ts +42 -0
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -0
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +5 -0
- package/dist/components/blocks/commerce/refund-status/types.d.ts +37 -0
- package/dist/components/blocks/commerce/seo-listing/index.d.ts +3 -0
- package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +5 -0
- package/dist/components/blocks/commerce/seo-listing/seo-listing-score.d.ts +5 -0
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +92 -0
- package/dist/components/blocks/commerce/shipment-tracking/index.d.ts +2 -0
- package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +5 -0
- package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +44 -0
- package/dist/components/blocks/commerce/subscription-summary/index.d.ts +2 -0
- package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +5 -0
- package/dist/components/blocks/commerce/subscription-summary/types.d.ts +39 -0
- package/dist/components/blocks/commerce/tax-breakdown/index.d.ts +2 -0
- package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +5 -0
- package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +34 -0
- package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -0
- package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +29 -0
- package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +5 -0
- package/dist/components/blocks/commerce/vendor-profile/index.d.ts +3 -0
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +86 -0
- package/dist/components/blocks/commerce/vendor-profile/vendor-profile.d.ts +2 -0
- package/dist/components/blocks/commerce/voucher-entry/index.d.ts +2 -0
- package/dist/components/blocks/commerce/voucher-entry/types.d.ts +33 -0
- package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +5 -0
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +6 -0
- package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +19 -0
- package/dist/components/blocks/data-display/dense-info-card/index.d.ts +7 -0
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +5 -0
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +5 -0
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +5 -0
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +5 -0
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +5 -0
- package/dist/components/blocks/data-display/dense-info-card/types.d.ts +183 -0
- package/dist/components/blocks/data-display/empty-state/empty-state.d.ts +2 -0
- package/dist/components/blocks/data-display/empty-state/empty-state.strings.d.ts +19 -0
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +86 -0
- package/dist/components/blocks/data-display/empty-state/index.d.ts +5 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +9 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +9 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +25 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/search-glass.d.ts +9 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +11 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/types.d.ts +4 -0
- package/dist/components/blocks/data-display/empty-state/partials/illustrations/users-circle.d.ts +9 -0
- package/dist/components/blocks/data-display/index.d.ts +6 -0
- package/dist/components/blocks/data-display/inline-stat/index.d.ts +1 -0
- package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +35 -0
- package/dist/components/blocks/data-display/metadata/index.d.ts +4 -0
- package/dist/components/blocks/data-display/metadata/metadata-list.d.ts +78 -0
- package/dist/components/blocks/data-display/metadata/metadata-list.strings.d.ts +18 -0
- package/dist/components/blocks/data-display/metadata/metadata-value.d.ts +142 -0
- package/dist/components/blocks/data-display/relationship-card-frame.d.ts +40 -0
- package/dist/components/blocks/onboarding/checklist/checklist.d.ts +2 -0
- package/dist/components/blocks/onboarding/checklist/checklist.strings.d.ts +15 -0
- package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +64 -0
- package/dist/components/blocks/onboarding/checklist/index.d.ts +4 -0
- package/dist/components/blocks/onboarding/checklist/partials/step-status-indicator.d.ts +12 -0
- package/dist/components/blocks/onboarding/index.d.ts +7 -0
- package/dist/components/blocks/timelines/changelog/changelog-timeline.d.ts +5 -0
- package/dist/components/blocks/timelines/changelog/index.d.ts +2 -0
- package/dist/components/blocks/timelines/changelog/types.d.ts +33 -0
- package/dist/components/blocks/timelines/index.d.ts +5 -0
- package/dist/components/blocks/timelines/milestones/index.d.ts +2 -0
- package/dist/components/blocks/timelines/milestones/milestones-timeline.d.ts +5 -0
- package/dist/components/blocks/timelines/milestones/types.d.ts +32 -0
- package/dist/components/blocks/timelines/shared/index.d.ts +1 -0
- package/dist/components/blocks/timelines/shared/timeline.d.ts +40 -0
- package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -0
- package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +9 -0
- package/dist/components/blocks/timelines/steps-card/types.d.ts +38 -0
- package/dist/components/features/activities/activities-feed.d.ts +5 -0
- package/dist/components/features/activities/activities.config.d.ts +6 -0
- package/dist/components/features/activities/activities.strings.d.ts +38 -0
- package/dist/components/features/activities/activities.types.d.ts +431 -0
- package/dist/components/features/activities/activity-event-adapter.d.ts +38 -0
- package/dist/components/features/activities/activity-log.d.ts +6 -0
- package/dist/components/features/activities/hooks/index.d.ts +2 -0
- package/dist/components/features/activities/hooks/use-activity-feed.d.ts +44 -0
- package/dist/components/features/activities/hooks/use-activity-resources.d.ts +22 -0
- package/dist/components/features/activities/index.d.ts +8 -0
- package/dist/components/features/activities/partials/activity-actions-menu.d.ts +11 -0
- package/dist/components/features/activities/partials/activity-changes.d.ts +8 -0
- package/dist/components/features/activities/partials/activity-date-label.d.ts +9 -0
- package/dist/components/features/activities/partials/activity-empty-state.d.ts +9 -0
- package/dist/components/features/activities/partials/activity-headline.d.ts +20 -0
- package/dist/components/features/activities/partials/activity-marker.d.ts +25 -0
- package/dist/components/features/activities/partials/activity-resource-tag.d.ts +11 -0
- package/dist/components/features/activities/partials/activity-row.d.ts +68 -0
- package/dist/components/features/activities/partials/index.d.ts +8 -0
- package/dist/components/features/activities/partials/tone-tokens.d.ts +25 -0
- package/dist/components/features/ai-chat/ai-chat.d.ts +81 -0
- package/dist/components/features/ai-chat/ai-chat.strings.d.ts +56 -0
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +170 -0
- package/dist/components/features/ai-chat/hooks/index.d.ts +1 -0
- package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +15 -0
- package/dist/components/features/ai-chat/index.d.ts +5 -0
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +15 -0
- package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +28 -0
- package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts +22 -0
- package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +21 -0
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +59 -0
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +19 -0
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +18 -0
- package/dist/components/features/ai-chat/partials/index.d.ts +7 -0
- package/dist/components/features/async-preview/async-preview.d.ts +84 -0
- package/dist/components/features/async-preview/async-preview.strings.d.ts +14 -0
- package/dist/components/features/async-preview/async-preview.types.d.ts +133 -0
- package/dist/components/features/async-preview/hooks/index.d.ts +1 -0
- package/dist/components/features/async-preview/hooks/use-async-preview.d.ts +8 -0
- package/dist/components/features/async-preview/index.d.ts +6 -0
- package/dist/components/features/async-preview/partials/index.d.ts +1 -0
- package/dist/components/features/async-preview/preview-trigger-cell.d.ts +45 -0
- package/dist/components/features/combobox/async-resource-combobox.d.ts +94 -0
- package/dist/components/features/combobox/combobox.d.ts +20 -0
- package/dist/components/features/combobox/combobox.strings.d.ts +14 -0
- package/dist/components/features/combobox/components/combobox-dropdown.d.ts +57 -0
- package/dist/components/features/combobox/components/error-message.d.ts +15 -0
- package/dist/components/features/combobox/components/highlighted-text.d.ts +14 -0
- package/dist/components/features/combobox/components/index.d.ts +13 -0
- package/dist/components/features/combobox/components/loading-more.d.ts +15 -0
- package/dist/components/features/combobox/components/status-content.d.ts +21 -0
- package/dist/components/features/combobox/constants.d.ts +19 -0
- package/dist/components/features/combobox/hooks/index.d.ts +2 -0
- package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +30 -0
- package/dist/components/features/combobox/hooks/use-debounced-search.d.ts +10 -0
- package/dist/components/features/combobox/hooks/use-grouped-items.d.ts +9 -0
- package/dist/components/features/combobox/hooks/use-load-more.d.ts +12 -0
- package/dist/components/features/combobox/index.d.ts +13 -0
- package/dist/components/features/combobox/types.d.ts +184 -0
- package/dist/components/features/comments/comments-provider.d.ts +15 -0
- package/dist/components/features/comments/comments.d.ts +2 -0
- package/dist/components/features/comments/comments.strings.d.ts +91 -0
- package/dist/components/features/comments/comments.types.d.ts +369 -0
- package/dist/components/features/comments/hooks/index.d.ts +4 -0
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +28 -0
- package/dist/components/features/comments/hooks/use-comments.d.ts +34 -0
- package/dist/components/features/comments/index.d.ts +8 -0
- package/dist/components/features/comments/partials/comment-attachment-chip.d.ts +23 -0
- package/dist/components/features/comments/partials/comment-composer.d.ts +12 -0
- package/dist/components/features/comments/partials/comment-content.d.ts +13 -0
- package/dist/components/features/comments/partials/comment-empty.d.ts +12 -0
- package/dist/components/features/comments/partials/comment-item.d.ts +3 -0
- package/dist/components/features/comments/partials/comment-timeline.d.ts +3 -0
- package/dist/components/features/comments/partials/index.d.ts +9 -0
- package/dist/components/features/data-view/data-view-filtering.d.ts +3 -0
- package/dist/components/features/data-view/data-view.d.ts +7 -0
- package/dist/components/features/data-view/data-view.strings.d.ts +9 -0
- package/dist/components/features/data-view/data-view.types.d.ts +191 -0
- package/dist/components/features/data-view/hooks/index.d.ts +1 -0
- package/dist/components/features/data-view/hooks/use-data-view.d.ts +2 -0
- package/dist/components/features/data-view/index.d.ts +4 -0
- package/dist/components/features/email-composer/document.d.ts +8 -0
- package/dist/components/features/email-composer/email-composer.d.ts +2 -0
- package/dist/components/features/email-composer/email-html.d.ts +5 -0
- package/dist/components/features/email-composer/engine.d.ts +18 -0
- package/dist/components/features/email-composer/http.d.ts +6 -0
- package/dist/components/features/email-composer/index.d.ts +6 -0
- package/dist/components/features/email-composer/partials/body-editor.d.ts +11 -0
- package/dist/components/features/email-composer/partials/data-status.d.ts +8 -0
- package/dist/components/features/email-composer/partials/html-preview.d.ts +6 -0
- package/dist/components/features/email-composer/partials/recipients.d.ts +14 -0
- package/dist/components/features/email-composer/partials/variables.d.ts +11 -0
- package/dist/components/features/email-composer/strings.d.ts +79 -0
- package/dist/components/features/email-composer/types.d.ts +195 -0
- package/dist/components/features/email-composer/use-composer.d.ts +119 -0
- package/dist/components/features/event-calendar/colors.d.ts +29 -0
- package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +5 -0
- package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +5 -0
- package/dist/components/features/event-calendar/event-calendar-event-card.d.ts +16 -0
- package/dist/components/features/event-calendar/event-calendar-header.d.ts +8 -0
- package/dist/components/features/event-calendar/event-calendar-legend.d.ts +5 -0
- package/dist/components/features/event-calendar/event-calendar.d.ts +5 -0
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +350 -0
- package/dist/components/features/event-calendar/index.d.ts +11 -0
- package/dist/components/features/event-calendar/use-event-calendar-data.d.ts +15 -0
- package/dist/components/features/event-calendar/use-event-calendar.d.ts +24 -0
- package/dist/components/features/filters/facets/async-select-facet.d.ts +28 -0
- package/dist/components/features/filters/facets/date-facet.d.ts +18 -0
- package/dist/components/features/filters/facets/range-facet.d.ts +30 -0
- package/dist/components/features/filters/facets/search-facet.d.ts +27 -0
- package/dist/components/features/filters/facets/select-facet.d.ts +19 -0
- package/dist/components/features/filters/facets/tags-facet.d.ts +27 -0
- package/dist/components/features/filters/filter-context.d.ts +61 -0
- package/dist/components/features/filters/filter-layout.d.ts +16 -0
- package/dist/components/features/filters/filter-query.d.ts +21 -0
- package/dist/components/features/filters/filters.strings.d.ts +103 -0
- package/dist/components/features/filters/filters.types.d.ts +222 -0
- package/dist/components/features/filters/hooks/index.d.ts +3 -0
- package/dist/components/features/filters/hooks/use-async-options.d.ts +16 -0
- package/dist/components/features/filters/hooks/use-filter-groups.d.ts +16 -0
- package/dist/components/features/filters/index.d.ts +42 -0
- package/dist/components/features/filters/operator-options.d.ts +9 -0
- package/dist/components/features/filters/partials/active-filter-item.d.ts +37 -0
- package/dist/components/features/filters/partials/async-filter-content.d.ts +21 -0
- package/dist/components/features/filters/partials/date-filter-content.d.ts +14 -0
- package/dist/components/features/filters/partials/filter-error-boundary.d.ts +9 -0
- package/dist/components/features/filters/partials/filter-list-content.d.ts +24 -0
- package/dist/components/features/filters/partials/filter-list-item.d.ts +19 -0
- package/dist/components/features/filters/partials/filter-operator-select.d.ts +22 -0
- package/dist/components/features/filters/partials/filter-pill.d.ts +26 -0
- package/dist/components/features/filters/partials/filter-popover-content.d.ts +36 -0
- package/dist/components/features/filters/partials/filter-tabs.d.ts +14 -0
- package/dist/components/features/filters/partials/filter-value-display.d.ts +21 -0
- package/dist/components/features/filters/partials/filters-button.d.ts +32 -0
- package/dist/components/features/filters/partials/index.d.ts +14 -0
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +28 -0
- package/dist/components/features/filters/partials/search-filters-list.d.ts +25 -0
- package/dist/components/features/filters/partials/tags-filter-content.d.ts +28 -0
- package/dist/components/features/filters/utils/filter-utils.d.ts +37 -0
- package/dist/components/features/filters/validators.d.ts +63 -0
- package/dist/components/features/global-search/global-search-dialog.d.ts +13 -0
- package/dist/components/features/global-search/global-search.d.ts +52 -0
- package/dist/components/features/global-search/global-search.strings.d.ts +36 -0
- package/dist/components/features/global-search/global-search.types.d.ts +105 -0
- package/dist/components/features/global-search/hooks/index.d.ts +2 -0
- package/dist/components/features/global-search/hooks/use-global-search.d.ts +33 -0
- package/dist/components/features/global-search/index.d.ts +9 -0
- package/dist/components/features/global-search/partials/global-search-empty-state.d.ts +7 -0
- package/dist/components/features/global-search/partials/global-search-footer.d.ts +13 -0
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +12 -0
- package/dist/components/features/global-search/partials/global-search-input.d.ts +17 -0
- package/dist/components/features/global-search/partials/global-search-result-row.d.ts +16 -0
- package/dist/components/features/global-search/partials/global-search-tabs.d.ts +13 -0
- package/dist/components/features/global-search/partials/index.d.ts +12 -0
- package/dist/components/features/global-search/partials/tone-palettes.d.ts +8 -0
- package/dist/components/features/kanban/hooks/index.d.ts +1 -0
- package/dist/components/features/kanban/hooks/use-kanban.d.ts +32 -0
- package/dist/components/features/kanban/index.d.ts +5 -0
- package/dist/components/features/kanban/kanban-context.d.ts +25 -0
- package/dist/components/features/kanban/kanban-keyboard.d.ts +10 -0
- package/dist/components/features/kanban/kanban.d.ts +38 -0
- package/dist/components/features/kanban/kanban.strings.d.ts +24 -0
- package/dist/components/features/kanban/kanban.types.d.ts +168 -0
- package/dist/components/features/map/index.d.ts +13 -0
- package/dist/components/features/map/map.d.ts +166 -0
- package/dist/components/features/map/place-autocomplete.d.ts +97 -0
- package/dist/components/features/map/public-leaflet.types.d.ts +71 -0
- package/dist/components/features/map/use-map-color-scheme.d.ts +2 -0
- package/dist/components/features/media-library/hooks/index.d.ts +1 -0
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +5 -0
- package/dist/components/features/media-library/index.d.ts +6 -0
- package/dist/components/features/media-library/media-library.d.ts +3 -0
- package/dist/components/features/media-library/media-library.strings.d.ts +124 -0
- package/dist/components/features/media-library/media-library.types.d.ts +568 -0
- package/dist/components/features/media-library/media-resource-gallery.d.ts +2 -0
- package/dist/components/features/media-library/partials/index.d.ts +1 -0
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +10 -0
- package/dist/components/features/mentions/hooks/index.d.ts +2 -0
- package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +41 -0
- package/dist/components/features/mentions/hooks/use-mentions.d.ts +35 -0
- package/dist/components/features/mentions/index.d.ts +5 -0
- package/dist/components/features/mentions/mentions.strings.d.ts +26 -0
- package/dist/components/features/mentions/mentions.types.d.ts +100 -0
- package/dist/components/features/mentions/partials/index.d.ts +4 -0
- package/dist/components/features/mentions/partials/mention-chip.d.ts +29 -0
- package/dist/components/features/mentions/partials/mention-content.d.ts +22 -0
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +36 -0
- package/dist/components/features/mentions/partials/mention-picker.d.ts +31 -0
- package/dist/components/features/mentions/utils/build-mention-html.d.ts +24 -0
- package/dist/components/features/mentions/utils/index.d.ts +3 -0
- package/dist/components/features/mentions/utils/parse-mentions-from-html.d.ts +13 -0
- package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +16 -0
- package/dist/components/features/overlays/alert-dialog.d.ts +4 -0
- package/dist/components/features/overlays/dialog.d.ts +4 -0
- package/dist/components/features/overlays/drawer.d.ts +4 -0
- package/dist/components/features/overlays/hooks/index.d.ts +2 -0
- package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +24 -0
- package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +36 -0
- package/dist/components/features/overlays/index.d.ts +6 -0
- package/dist/components/features/overlays/overlays.strings.d.ts +19 -0
- package/dist/components/features/overlays/overlays.types.d.ts +169 -0
- package/dist/components/features/products/components/index.d.ts +17 -0
- package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
- package/dist/components/features/products/components/product-details-card.d.ts +5 -0
- package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
- package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
- package/dist/components/features/products/components/product-options-matrix.d.ts +5 -0
- package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
- package/dist/components/features/products/components/product-overview.d.ts +5 -0
- package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
- package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
- package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +5 -0
- package/dist/components/features/products/components/product-variant-details.d.ts +5 -0
- package/dist/components/features/products/components/product-variant-editor.d.ts +5 -0
- package/dist/components/features/products/components/product-variants-bulk-table.d.ts +5 -0
- package/dist/components/features/products/components/product-variants-manager.d.ts +5 -0
- package/dist/components/features/products/components/product-variants-table.d.ts +5 -0
- package/dist/components/features/products/index.d.ts +3 -0
- package/dist/components/features/products/partials/index.d.ts +7 -0
- package/dist/components/features/products/partials/product-actions.d.ts +10 -0
- package/dist/components/features/products/partials/product-empty-state.d.ts +10 -0
- package/dist/components/features/products/partials/product-metric-tile.d.ts +4 -0
- package/dist/components/features/products/partials/product-rows.d.ts +35 -0
- package/dist/components/features/products/partials/product-tone.d.ts +8 -0
- package/dist/components/features/products/partials/product-values.d.ts +1 -0
- package/dist/components/features/products/partials/product-variant-table-parts.d.ts +28 -0
- package/dist/components/features/products/products.strings.d.ts +308 -0
- package/dist/components/features/products/products.types.d.ts +906 -0
- package/dist/components/features/questionnaire/index.d.ts +3 -0
- package/dist/components/features/questionnaire/questionnaire-control.d.ts +3 -0
- package/dist/components/features/questionnaire/questionnaire.d.ts +2 -0
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +98 -0
- package/dist/components/features/questionnaire/questionnaire.utils.d.ts +5 -0
- package/dist/components/features/resource/index.d.ts +3 -0
- package/dist/components/features/resource/resource.d.ts +8 -0
- package/dist/components/features/resource/resource.strings.d.ts +12 -0
- package/dist/components/features/resource/resource.types.d.ts +161 -0
- package/dist/components/features/resource-assignment/hooks/index.d.ts +2 -0
- package/dist/components/features/resource-assignment/hooks/use-shared-resource-card.d.ts +32 -0
- package/dist/components/features/resource-assignment/index.d.ts +6 -0
- package/dist/components/features/resource-assignment/partials/default-shared-resource-partials.d.ts +31 -0
- package/dist/components/features/resource-assignment/partials/index.d.ts +1 -0
- package/dist/components/features/resource-assignment/resource-assignment.d.ts +12 -0
- package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +17 -0
- package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +193 -0
- package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +6 -0
- package/dist/components/features/rich-text-editor/index.d.ts +5 -0
- package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +28 -0
- package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts +32 -0
- package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +7 -0
- package/dist/components/features/rich-text-editor/partials/index.d.ts +7 -0
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +8 -0
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +3 -0
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +33 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.d.ts +3 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +32 -0
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +111 -0
- package/dist/components/features/schema-form/hooks/index.d.ts +1 -0
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +23 -0
- package/dist/components/features/schema-form/index.d.ts +5 -0
- package/dist/components/features/schema-form/partials/index.d.ts +3 -0
- package/dist/components/features/schema-form/partials/schema-form-actions.d.ts +23 -0
- package/dist/components/features/schema-form/partials/schema-form-empty.d.ts +12 -0
- package/dist/components/features/schema-form/partials/schema-form-field.d.ts +12 -0
- package/dist/components/features/schema-form/schema-form.d.ts +5 -0
- package/dist/components/features/schema-form/schema-form.strings.d.ts +11 -0
- package/dist/components/features/schema-form/schema-form.types.d.ts +271 -0
- package/dist/components/features/schema-form/schema-form.utils.d.ts +18 -0
- package/dist/components/features/suggestions/hooks/index.d.ts +1 -0
- package/dist/components/features/suggestions/hooks/use-suggestions.d.ts +9 -0
- package/dist/components/features/suggestions/index.d.ts +4 -0
- package/dist/components/features/suggestions/suggestions.d.ts +5 -0
- package/dist/components/features/suggestions/suggestions.strings.d.ts +16 -0
- package/dist/components/features/suggestions/suggestions.types.d.ts +79 -0
- package/dist/components/features/sync/index.d.ts +3 -0
- package/dist/components/features/sync/sync-range-dialog-form.d.ts +5 -0
- package/dist/components/features/sync/sync.strings.d.ts +18 -0
- package/dist/components/features/sync/sync.types.d.ts +44 -0
- package/dist/components/features/table/column-visibility-toggle.d.ts +5 -0
- package/dist/components/features/table/data-table.d.ts +6 -0
- package/dist/components/features/table/filter-bar.d.ts +5 -0
- package/dist/components/features/table/hooks.d.ts +47 -0
- package/dist/components/features/table/index.d.ts +16 -0
- package/dist/components/features/table/pagination.d.ts +5 -0
- package/dist/components/features/table/partials/cell-renderers.d.ts +141 -0
- package/dist/components/features/table/partials/cell-value.d.ts +121 -0
- package/dist/components/features/table/partials/fullscreen-toggle.d.ts +16 -0
- package/dist/components/features/table/partials/resource-cell.d.ts +63 -0
- package/dist/components/features/table/partials/table-link.d.ts +3 -0
- package/dist/components/features/table/table-actions.d.ts +5 -0
- package/dist/components/features/table/table-body.d.ts +5 -0
- package/dist/components/features/table/table-header.d.ts +6 -0
- package/dist/components/features/table/table-helpers.d.ts +39 -0
- package/dist/components/features/table/table-toolbar.d.ts +5 -0
- package/dist/components/features/table/table.strings.d.ts +3 -0
- package/dist/components/features/table/table.types.d.ts +489 -0
- package/dist/components/features/theme-tweaker/admin-ui-theme-provider.d.ts +6 -0
- package/dist/components/features/theme-tweaker/index.d.ts +10 -0
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +49 -0
- package/dist/components/features/theme-tweaker/theme-scope.d.ts +7 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.d.ts +2 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.fields.d.ts +7 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.recipes.d.ts +25 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +75 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +161 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +23 -0
- package/dist/components/features/theme-tweaker/use-applied-theme.d.ts +11 -0
- package/dist/components/layout/app-shell/app-layout.d.ts +12 -0
- package/dist/components/layout/app-shell/app-shell.types.d.ts +151 -0
- package/dist/components/layout/app-shell/index.d.ts +6 -0
- package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +2 -0
- package/dist/components/layout/app-shell/stacked-layout.d.ts +2 -0
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +2 -0
- package/dist/components/layout/auth/auth-card.d.ts +2 -0
- package/dist/components/layout/auth/auth-footer-links.d.ts +2 -0
- package/dist/components/layout/auth/auth-form.d.ts +11 -0
- package/dist/components/layout/auth/auth-hooks.d.ts +4 -0
- package/dist/components/layout/auth/auth-method-switch.d.ts +4 -0
- package/dist/components/layout/auth/auth-shell.d.ts +2 -0
- package/dist/components/layout/auth/auth-social-providers.d.ts +3 -0
- package/dist/components/layout/auth/auth-split-panel.d.ts +2 -0
- package/dist/components/layout/auth/auth.strings.d.ts +21 -0
- package/dist/components/layout/auth/auth.types.d.ts +282 -0
- package/dist/components/layout/auth/index.d.ts +10 -0
- package/dist/components/layout/containers/container.recipes.d.ts +5 -0
- package/dist/components/layout/containers/containers.types.d.ts +17 -0
- package/dist/components/layout/containers/content-container.d.ts +3 -0
- package/dist/components/layout/containers/index.d.ts +5 -0
- package/dist/components/layout/containers/page-viewport.d.ts +3 -0
- package/dist/components/layout/containers/section.d.ts +3 -0
- package/dist/components/layout/containers/two-column-layout.d.ts +27 -0
- package/dist/components/layout/header/header.d.ts +2 -0
- package/dist/components/layout/header/header.types.d.ts +198 -0
- package/dist/components/layout/header/index.d.ts +9 -0
- package/dist/components/layout/header/partials/header-breadcrumbs.d.ts +4 -0
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +2 -0
- package/dist/components/layout/header/partials/header-notifications.d.ts +2 -0
- package/dist/components/layout/header/partials/header-search.d.ts +2 -0
- package/dist/components/layout/header/partials/header-tool-button.d.ts +4 -0
- package/dist/components/layout/header/partials/header-tool-popover.d.ts +2 -0
- package/dist/components/layout/header/partials/header-user-menu.d.ts +2 -0
- package/dist/components/layout/hooks/index.d.ts +3 -0
- package/dist/components/layout/hooks/use-active-path.d.ts +1 -0
- package/dist/components/layout/hooks/use-command-shortcut.d.ts +7 -0
- package/dist/components/layout/hooks/use-layout-link.d.ts +2 -0
- package/dist/components/layout/index.d.ts +24 -0
- package/dist/components/layout/layout.types.d.ts +91 -0
- package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +5 -0
- package/dist/components/layout/navigation/breadcrumb-progress/index.d.ts +2 -0
- package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +24 -0
- package/dist/components/layout/navigation/category-nav/category-nav.d.ts +5 -0
- package/dist/components/layout/navigation/category-nav/index.d.ts +2 -0
- package/dist/components/layout/navigation/category-nav/types.d.ts +22 -0
- package/dist/components/layout/navigation/index.d.ts +17 -0
- package/dist/components/layout/navigation/section-nav/index.d.ts +1 -0
- package/dist/components/layout/navigation/section-nav/section-nav.d.ts +29 -0
- package/dist/components/layout/navigation/side-nav.d.ts +58 -0
- package/dist/components/layout/page/index.d.ts +4 -0
- package/dist/components/layout/page/page.d.ts +3 -0
- package/dist/components/layout/page/page.types.d.ts +138 -0
- package/dist/components/layout/page/partials/page-actions.d.ts +2 -0
- package/dist/components/layout/page/partials/page-header.d.ts +2 -0
- package/dist/components/layout/settings/index.d.ts +1 -0
- package/dist/components/layout/settings/settings.d.ts +65 -0
- package/dist/components/layout/sidebar/app-sidebar.d.ts +7 -0
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +4 -0
- package/dist/components/layout/sidebar/components/sidebar-logo.d.ts +10 -0
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +2 -0
- package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +23 -0
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +4 -0
- package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts +2 -0
- package/dist/components/layout/sidebar/index.d.ts +11 -0
- package/dist/components/layout/sidebar/sidebar.context.d.ts +17 -0
- package/dist/components/layout/sidebar/sidebar.d.ts +9 -0
- package/dist/components/layout/sidebar/sidebar.types.d.ts +218 -0
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +29 -0
- package/dist/components/layout/workspace/index.d.ts +3 -0
- package/dist/components/layout/workspace/workspace.d.ts +6 -0
- package/dist/components/layout/workspace/workspace.strings.d.ts +18 -0
- package/dist/components/layout/workspace/workspace.types.d.ts +141 -0
- package/dist/components/primitives/date.d.ts +63 -0
- package/dist/components/primitives/dimensions.d.ts +30 -0
- package/dist/components/primitives/duration.d.ts +23 -0
- package/dist/components/primitives/file-size.d.ts +23 -0
- package/dist/components/primitives/index.d.ts +11 -0
- package/dist/components/primitives/initials-format.d.ts +21 -0
- package/dist/components/primitives/initials.d.ts +16 -0
- package/dist/components/primitives/link.d.ts +28 -0
- package/dist/components/primitives/money.d.ts +79 -0
- package/dist/components/primitives/name.d.ts +16 -0
- package/dist/components/primitives/number.d.ts +23 -0
- package/dist/components/primitives/value.d.ts +23 -0
- package/dist/components/typography/content-typography.d.ts +4 -0
- package/dist/components/typography/display-label.d.ts +5 -0
- package/dist/components/typography/heading.d.ts +16 -0
- package/dist/components/typography/index.d.ts +10 -0
- package/dist/components/typography/label.d.ts +8 -0
- package/dist/components/typography/rich-text/index.d.ts +2 -0
- package/dist/components/typography/rich-text/rich-text.d.ts +6 -0
- package/dist/components/typography/text-link.d.ts +7 -0
- package/dist/components/typography/text.d.ts +17 -0
- package/dist/components/typography/text.styles.d.ts +50 -0
- package/dist/components/ui/accordion.d.ts +6 -0
- package/dist/components/ui/alert-dialog.d.ts +21 -0
- package/dist/components/ui/avatar.d.ts +11 -0
- package/dist/components/ui/badge.d.ts +5 -0
- package/dist/components/ui/breadcrumb.d.ts +11 -0
- package/dist/components/ui/button-group.d.ts +12 -0
- package/dist/components/ui/button.d.ts +12 -0
- package/dist/components/ui/calendar.d.ts +10 -0
- package/dist/components/ui/card.d.ts +11 -0
- package/dist/components/ui/checkbox.d.ts +6 -0
- package/dist/components/ui/collapsible.d.ts +9 -0
- package/dist/components/ui/combobox.d.ts +40 -0
- package/dist/components/ui/command.d.ts +50 -0
- package/dist/components/ui/dialog.d.ts +26 -0
- package/dist/components/ui/disclosure-panel.d.ts +14 -0
- package/dist/components/ui/empty.d.ts +11 -0
- package/dist/components/ui/input-group.d.ts +18 -0
- package/dist/components/ui/input.d.ts +3 -0
- package/dist/components/ui/item.d.ts +22 -0
- package/dist/components/ui/overlay.recipes.d.ts +2 -0
- package/dist/components/ui/pagination.d.ts +17 -0
- package/dist/components/ui/popover.d.ts +22 -0
- package/dist/components/ui/select.d.ts +18 -0
- package/dist/components/ui/separator.d.ts +3 -0
- package/dist/components/ui/sheet.d.ts +25 -0
- package/dist/components/ui/sidebar.d.ts +64 -0
- package/dist/components/ui/skeleton.d.ts +2 -0
- package/dist/components/ui/slot.d.ts +6 -0
- package/dist/components/ui/sonner.d.ts +3 -0
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/table.d.ts +13 -0
- package/dist/components/ui/tabs.d.ts +10 -0
- package/dist/components/ui/textarea.d.ts +3 -0
- package/dist/components/ui/toggle-group.d.ts +12 -0
- package/dist/components/ui/toggle.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts +13 -0
- package/dist/containers-CPNyNo1_.js +124 -0
- package/dist/containers-CPNyNo1_.js.map +1 -0
- package/dist/content-typography-CnwgMJ37.js +6 -0
- package/dist/content-typography-CnwgMJ37.js.map +1 -0
- package/dist/copyable-B7SBXJMr.js +65 -0
- package/dist/copyable-B7SBXJMr.js.map +1 -0
- package/dist/data-display-b3d1TfL4.js +1129 -0
- package/dist/data-display-b3d1TfL4.js.map +1 -0
- package/dist/date-BFNMnrS5.js +140 -0
- package/dist/date-BFNMnrS5.js.map +1 -0
- package/dist/date-picker-DI6kPNof.js +1521 -0
- package/dist/date-picker-DI6kPNof.js.map +1 -0
- package/dist/date-pickers-ByP6Cv2z.js +224 -0
- package/dist/date-pickers-ByP6Cv2z.js.map +1 -0
- package/dist/disclosure-panel-B0HFNZ9x.js +35 -0
- package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -0
- package/dist/display-ByI5tkqy.js +343 -0
- package/dist/display-ByI5tkqy.js.map +1 -0
- package/dist/dropdown-menu-BlnyHr-9.js +186 -0
- package/dist/dropdown-menu-BlnyHr-9.js.map +1 -0
- package/dist/editable-text-recipe-Bkm6wKHp.js +10 -0
- package/dist/editable-text-recipe-Bkm6wKHp.js.map +1 -0
- package/dist/favicon.svg +1 -0
- package/dist/features/activities.js +1360 -0
- package/dist/features/activities.js.map +1 -0
- package/dist/features/ai-chat.js +567 -0
- package/dist/features/ai-chat.js.map +1 -0
- package/dist/features/async-preview.js +478 -0
- package/dist/features/async-preview.js.map +1 -0
- package/dist/features/combobox.js +3 -0
- package/dist/features/comments.js +3 -0
- package/dist/features/data-view.js +519 -0
- package/dist/features/data-view.js.map +1 -0
- package/dist/features/email-composer/engine.js +2 -0
- package/dist/features/email-composer.js +1099 -0
- package/dist/features/email-composer.js.map +1 -0
- package/dist/features/event-calendar.js +711 -0
- package/dist/features/event-calendar.js.map +1 -0
- package/dist/features/filters.js +3 -0
- package/dist/features/global-search.js +593 -0
- package/dist/features/global-search.js.map +1 -0
- package/dist/features/kanban.js +425 -0
- package/dist/features/kanban.js.map +1 -0
- package/dist/features/map/images/layers-2x.png +0 -0
- package/dist/features/map/images/layers.png +0 -0
- package/dist/features/map/images/marker-icon-2x.png +0 -0
- package/dist/features/map/images/marker-icon.png +0 -0
- package/dist/features/map/images/marker-shadow.png +0 -0
- package/dist/features/map/images/spritesheet-2x.png +0 -0
- package/dist/features/map/images/spritesheet.png +0 -0
- package/dist/features/map/images/spritesheet.svg +156 -0
- package/dist/features/map/style.css +809 -0
- package/dist/features/map.js +1052 -0
- package/dist/features/map.js.map +1 -0
- package/dist/features/media-library.js +2007 -0
- package/dist/features/media-library.js.map +1 -0
- package/dist/features/mentions.js +3 -0
- package/dist/features/overlays.js +3 -0
- package/dist/features/products.js +3076 -0
- package/dist/features/products.js.map +1 -0
- package/dist/features/questionnaire.js +365 -0
- package/dist/features/questionnaire.js.map +1 -0
- package/dist/features/resource-assignment.js +317 -0
- package/dist/features/resource-assignment.js.map +1 -0
- package/dist/features/resource.js +254 -0
- package/dist/features/resource.js.map +1 -0
- package/dist/features/rich-text-editor.js +23 -0
- package/dist/features/rich-text-editor.js.map +1 -0
- package/dist/features/schema-form.js +744 -0
- package/dist/features/schema-form.js.map +1 -0
- package/dist/features/suggestions.js +149 -0
- package/dist/features/suggestions.js.map +1 -0
- package/dist/features/sync.js +136 -0
- package/dist/features/sync.js.map +1 -0
- package/dist/features/table.js +3 -0
- package/dist/features/theme-tweaker.js +2083 -0
- package/dist/features/theme-tweaker.js.map +1 -0
- package/dist/feedback-a9j9J-9A.js +391 -0
- package/dist/feedback-a9j9J-9A.js.map +1 -0
- package/dist/field-affordance-recipes-CHdUtn2Z.js +17 -0
- package/dist/field-affordance-recipes-CHdUtn2Z.js.map +1 -0
- package/dist/field-state-recipes-CBTRt9Bt.js +11 -0
- package/dist/field-state-recipes-CBTRt9Bt.js.map +1 -0
- package/dist/filters-qtrcv1hf.js +2203 -0
- package/dist/filters-qtrcv1hf.js.map +1 -0
- package/dist/form-field-C6W-y2hR.js +48 -0
- package/dist/form-field-C6W-y2hR.js.map +1 -0
- package/dist/form-sizing-39NohSqn.js +99 -0
- package/dist/form-sizing-39NohSqn.js.map +1 -0
- package/dist/format-iamDSqs2.js +110 -0
- package/dist/format-iamDSqs2.js.map +1 -0
- package/dist/forms-BF-HSbff.js +194 -0
- package/dist/forms-BF-HSbff.js.map +1 -0
- package/dist/forms-numeric-Y15Bg5Nr.js +867 -0
- package/dist/forms-numeric-Y15Bg5Nr.js.map +1 -0
- package/dist/header-B8ex54cY.js +452 -0
- package/dist/header-B8ex54cY.js.map +1 -0
- package/dist/hooks/use-debounce.d.ts +1 -0
- package/dist/hooks/use-debounced-callback.d.ts +40 -0
- package/dist/hooks/use-files.d.ts +48 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/useFormErrors.d.ts +7 -0
- package/dist/hooks-D6UBVzf2.js +88 -0
- package/dist/hooks-D6UBVzf2.js.map +1 -0
- package/dist/http-CLTVJc5I.js +331 -0
- package/dist/http-CLTVJc5I.js.map +1 -0
- package/dist/icon-badge-Dv0RYQwj.js +53 -0
- package/dist/icon-badge-Dv0RYQwj.js.map +1 -0
- package/dist/icon-size-B6PVwjbC.js +18 -0
- package/dist/icon-size-B6PVwjbC.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +7 -0
- package/dist/initials-format-CDoQEOd_.js +35 -0
- package/dist/initials-format-CDoQEOd_.js.map +1 -0
- package/dist/input-DMorJiTI.js +202 -0
- package/dist/input-DMorJiTI.js.map +1 -0
- package/dist/input-ci9fIgFH.js +20 -0
- package/dist/input-ci9fIgFH.js.map +1 -0
- package/dist/item-pJ0GsOiJ.js +257 -0
- package/dist/item-pJ0GsOiJ.js.map +1 -0
- package/dist/layout/app-shell.js +3 -0
- package/dist/layout/auth.js +3 -0
- package/dist/layout/containers.js +3 -0
- package/dist/layout/header.js +3 -0
- package/dist/layout/hooks.js +3 -0
- package/dist/layout/navigation.js +3 -0
- package/dist/layout/page.js +3 -0
- package/dist/layout/settings.js +3 -0
- package/dist/layout/sidebar.js +4 -0
- package/dist/layout/workspace.js +3 -0
- package/dist/layout.js +13 -0
- package/dist/layout.types-Cn7aUzJp.js +20 -0
- package/dist/layout.types-Cn7aUzJp.js.map +1 -0
- package/dist/lib/action-presentation.d.ts +15 -0
- package/dist/lib/affordance-geometry.generated.d.ts +18 -0
- package/dist/lib/anchored-positioning.d.ts +5 -0
- package/dist/lib/command-filter.d.ts +1 -0
- package/dist/lib/component-vocabulary.d.ts +12 -0
- package/dist/lib/editable-text-recipe.d.ts +6 -0
- package/dist/lib/email-composer.d.ts +6 -0
- package/dist/lib/field-affordance-recipes.d.ts +20 -0
- package/dist/lib/field-state-recipes.d.ts +10 -0
- package/dist/lib/format.d.ts +53 -0
- package/dist/lib/motion-recipes.d.ts +8 -0
- package/dist/lib/navigation-row-recipes.d.ts +26 -0
- package/dist/lib/overlay-anatomy-recipes.d.ts +8 -0
- package/dist/lib/row-recipes.d.ts +3 -0
- package/dist/lib/sanitize-html.d.ts +8 -0
- package/dist/lib/strings.d.ts +16 -0
- package/dist/lib/strings.js +32 -0
- package/dist/lib/strings.js.map +1 -0
- package/dist/lib/surface-recipes.d.ts +27 -0
- package/dist/lib/theme-scope.d.ts +31 -0
- package/dist/lib/token-merge.generated.d.ts +2 -0
- package/dist/lib/track-recipes.d.ts +4 -0
- package/dist/lib/ui-provider/defaults.d.ts +12 -0
- package/dist/lib/ui-provider/hooks.d.ts +13 -0
- package/dist/lib/ui-provider/index.d.ts +28 -0
- package/dist/lib/ui-provider/provider.d.ts +15 -0
- package/dist/lib/ui-provider/scale.d.ts +5 -0
- package/dist/lib/ui-provider/store.d.ts +11 -0
- package/dist/lib/ui-provider/types.d.ts +157 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.js +2 -0
- package/dist/map-demo-tile.svg +1 -0
- package/dist/media-gallery-Ca4YmvBi.js +200 -0
- package/dist/media-gallery-Ca4YmvBi.js.map +1 -0
- package/dist/mentions-CRio8mTm.js +563 -0
- package/dist/mentions-CRio8mTm.js.map +1 -0
- package/dist/message-B5-6LeYl.js +108 -0
- package/dist/message-B5-6LeYl.js.map +1 -0
- package/dist/motion-recipes-B6jKXEcN.js +27 -0
- package/dist/motion-recipes-B6jKXEcN.js.map +1 -0
- package/dist/navigation-BTrEb5u4.js +267 -0
- package/dist/navigation-BTrEb5u4.js.map +1 -0
- package/dist/navigation-DqEITuD2.js +265 -0
- package/dist/navigation-DqEITuD2.js.map +1 -0
- package/dist/navigation-row-recipes-BFpvGPGE.js +29 -0
- package/dist/navigation-row-recipes-BFpvGPGE.js.map +1 -0
- package/dist/number-BNT_BIzJ.js +269 -0
- package/dist/number-BNT_BIzJ.js.map +1 -0
- package/dist/overlay.recipes-BxW5FIfK.js +6 -0
- package/dist/overlay.recipes-BxW5FIfK.js.map +1 -0
- package/dist/overlays-DBqV0J_V.js +982 -0
- package/dist/overlays-DBqV0J_V.js.map +1 -0
- package/dist/page-BMBGjJY8.js +202 -0
- package/dist/page-BMBGjJY8.js.map +1 -0
- package/dist/page-header-BH41wCyY.js +112 -0
- package/dist/page-header-BH41wCyY.js.map +1 -0
- package/dist/pagination-C29vvt3I.js +149 -0
- package/dist/pagination-C29vvt3I.js.map +1 -0
- package/dist/popover-TInGXsjg.js +194 -0
- package/dist/popover-TInGXsjg.js.map +1 -0
- package/dist/popover-menu-BzqXqE72.js +99 -0
- package/dist/popover-menu-BzqXqE72.js.map +1 -0
- package/dist/popover.recipes-zgBhMlUu.js +34 -0
- package/dist/popover.recipes-zgBhMlUu.js.map +1 -0
- package/dist/primitives-DKPOGVpj.js +330 -0
- package/dist/primitives-DKPOGVpj.js.map +1 -0
- package/dist/primitives.js +7 -0
- package/dist/receipt-DYWTQGEc.js +113 -0
- package/dist/receipt-DYWTQGEc.js.map +1 -0
- package/dist/rich-text-B7sBAdDG.js +32 -0
- package/dist/rich-text-B7sBAdDG.js.map +1 -0
- package/dist/rich-text-editor-BZSJchAF.js +575 -0
- package/dist/rich-text-editor-BZSJchAF.js.map +1 -0
- package/dist/rich-text-editor.recipes-DxvOE0Lp.js +72 -0
- package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +1 -0
- package/dist/rich-text-editor.strings-BpnIQgMl.js +25 -0
- package/dist/rich-text-editor.strings-BpnIQgMl.js.map +1 -0
- package/dist/row-recipes-DL8n7t_b.js +10 -0
- package/dist/row-recipes-DL8n7t_b.js.map +1 -0
- package/dist/sanitize-html-BG9FGe-j.js +64 -0
- package/dist/sanitize-html-BG9FGe-j.js.map +1 -0
- package/dist/scroll-area-BheMQ270.js +47 -0
- package/dist/scroll-area-BheMQ270.js.map +1 -0
- package/dist/select-B2mb-qN2.js +108 -0
- package/dist/select-B2mb-qN2.js.map +1 -0
- package/dist/separator-DO0EbCEm.js +17 -0
- package/dist/separator-DO0EbCEm.js.map +1 -0
- package/dist/separator-Gk_WXH-l.js +21 -0
- package/dist/separator-Gk_WXH-l.js.map +1 -0
- package/dist/services/actions/action-adapters.d.ts +77 -0
- package/dist/services/actions/action-overlay-outlet.d.ts +3 -0
- package/dist/services/actions/action-provider.d.ts +7 -0
- package/dist/services/actions/action-scope.d.ts +3 -0
- package/dist/services/actions/action-store.d.ts +55 -0
- package/dist/services/actions/actions.strings.d.ts +2 -0
- package/dist/services/actions/actions.types.d.ts +322 -0
- package/dist/services/actions/hooks.d.ts +8 -0
- package/dist/services/actions/index.d.ts +8 -0
- package/dist/services/actions.js +811 -0
- package/dist/services/actions.js.map +1 -0
- package/dist/settings-D9f_wdIC.js +160 -0
- package/dist/settings-D9f_wdIC.js.map +1 -0
- package/dist/sheet-vOUloJ4O.js +205 -0
- package/dist/sheet-vOUloJ4O.js.map +1 -0
- package/dist/sidebar-C3UKkbC5.js +501 -0
- package/dist/sidebar-C3UKkbC5.js.map +1 -0
- package/dist/sidebar-CNBKFDRW.js +598 -0
- package/dist/sidebar-CNBKFDRW.js.map +1 -0
- package/dist/skeleton-BvRhK8y-.js +264 -0
- package/dist/skeleton-BvRhK8y-.js.map +1 -0
- package/dist/slot-CLF9kLrS.js +16 -0
- package/dist/slot-CLF9kLrS.js.map +1 -0
- package/dist/smart-card-B5FcKODh.js +577 -0
- package/dist/smart-card-B5FcKODh.js.map +1 -0
- package/dist/spinner-JtlFJ7Nc.js +78 -0
- package/dist/spinner-JtlFJ7Nc.js.map +1 -0
- package/dist/structure-BvW4vG4H.js +95 -0
- package/dist/structure-BvW4vG4H.js.map +1 -0
- package/dist/structure.recipes-DjqnBpwz.js +548 -0
- package/dist/structure.recipes-DjqnBpwz.js.map +1 -0
- package/dist/style.css +3 -0
- package/dist/surface-recipes-CQfRr-VL.js +27 -0
- package/dist/surface-recipes-CQfRr-VL.js.map +1 -0
- package/dist/table-DnlAJ-xR.js +146 -0
- package/dist/table-DnlAJ-xR.js.map +1 -0
- package/dist/table-ghtAQ-JJ.js +1424 -0
- package/dist/table-ghtAQ-JJ.js.map +1 -0
- package/dist/tabs-DY09eoZg.js +187 -0
- package/dist/tabs-DY09eoZg.js.map +1 -0
- package/dist/text-inputs-BhOcedTo.js +331 -0
- package/dist/text-inputs-BhOcedTo.js.map +1 -0
- package/dist/text.styles-BwB7vAF2.js +64 -0
- package/dist/text.styles-BwB7vAF2.js.map +1 -0
- package/dist/theme-scope-kStaAer0.js +39 -0
- package/dist/theme-scope-kStaAer0.js.map +1 -0
- package/dist/theme.css +872 -0
- package/dist/timelines-CnZ2S_Gr.js +446 -0
- package/dist/timelines-CnZ2S_Gr.js.map +1 -0
- package/dist/track-recipes-LLPNVwFg.js +10 -0
- package/dist/track-recipes-LLPNVwFg.js.map +1 -0
- package/dist/tree-COD9BGdU.js +185 -0
- package/dist/tree-COD9BGdU.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/locale.types.d.ts +7 -0
- package/dist/types/pagination.types.d.ts +24 -0
- package/dist/typography/rich-text.js +3 -0
- package/dist/typography-Cv8MT-82.js +96 -0
- package/dist/typography-Cv8MT-82.js.map +1 -0
- package/dist/typography.js +3 -0
- package/dist/ui-provider-CftIB6TY.js +128 -0
- package/dist/ui-provider-CftIB6TY.js.map +1 -0
- package/dist/ui-provider.js +4 -0
- package/dist/upload-DIzw1dx1.js +849 -0
- package/dist/upload-DIzw1dx1.js.map +1 -0
- package/dist/upload-queue-xRJ3qDmd.js +410 -0
- package/dist/upload-queue-xRJ3qDmd.js.map +1 -0
- package/dist/use-debounce-DZ_1ZBPa.js +18 -0
- package/dist/use-debounce-DZ_1ZBPa.js.map +1 -0
- package/dist/use-debounced-callback-Cx1h-hdv.js +30 -0
- package/dist/use-debounced-callback-Cx1h-hdv.js.map +1 -0
- package/dist/use-file-drop-target-BX7GnhoQ.js +39 -0
- package/dist/use-file-drop-target-BX7GnhoQ.js.map +1 -0
- package/dist/use-mobile-vaLKwgyf.js +15 -0
- package/dist/use-mobile-vaLKwgyf.js.map +1 -0
- package/dist/utils-C2EKeIw3.js +72 -0
- package/dist/utils-C2EKeIw3.js.map +1 -0
- package/dist/value-inputs-Co1fu-xv.js +824 -0
- package/dist/value-inputs-Co1fu-xv.js.map +1 -0
- package/dist/workspace-Cbqz4FzN.js +402 -0
- package/dist/workspace-Cbqz4FzN.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +32 -0
- package/docs/consumer-skill/examples/app-layout.tsx +31 -0
- package/docs/consumer-skill/examples/composition.tsx +37 -0
- package/docs/consumer-skill/examples/content-workflow.tsx +13 -0
- package/docs/consumer-skill/examples/destructive-confirm.tsx +42 -0
- package/docs/consumer-skill/examples/detail.tsx +28 -0
- package/docs/consumer-skill/examples/edit.tsx +61 -0
- package/docs/consumer-skill/examples/email-composer.tsx +25 -0
- package/docs/consumer-skill/examples/hierarchy-capture.tsx +25 -0
- package/docs/consumer-skill/examples/index-table.tsx +36 -0
- package/docs/consumer-skill/examples/manifest.json +94 -0
- package/docs/consumer-skill/examples/receipt.tsx +19 -0
- package/docs/consumer-skill/references/composition.md +170 -0
- package/docs/consumer-skill/references/design-contract.md +145 -0
- package/docs/consumer-skill/references/discovery.md +33 -0
- package/docs/consumer-skill/references/installation.md +66 -0
- package/docs/consumer-skill/references/integration.md +57 -0
- package/docs/consumer-skill/references/public-api.json +17527 -0
- package/docs/consumer-skill/references/theming.md +56 -0
- package/docs/consumer-skill/references/tokens.json +422 -0
- package/docs/consumer-skill/references/workflows.md +39 -0
- package/docs/consumer-skill/scripts/discovery.mjs +79 -0
- package/docs/consumer-skill/scripts/find-components.mjs +11 -0
- package/package.json +621 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mentions-CRio8mTm.js","names":["_Fragment","_Fragment","Text","DisplayLabel","TextLink","Stack","sanitizeHtml","contentTypographyClassName","Badge","CommandItem","CommandInput","CommandEmpty","CommandList","CommandGroup","Command","PopoverHeader","PopoverContent","useDebouncedCallback","Fragment$1","isAbortError","error","useMentionsSearch","options","kindsKey","resources","kinds","useMemo","activeKind","setActiveKindState","useState","manualKindOverride","setManualKindOverride","query","setQueryState","suggestionsByKind","setSuggestionsByKind","isLoading","setIsLoading","setError","errorsByKind","setErrorsByKind","retryTick","setRetryTick","mentions","setMentionsState","initialMentions","requestIdRef","useRef","abortControllerRef","resourcesRef","onResourceSearchRef","onResourceSearch","onErrorRef","onError","useEffect","activeResource","searchOneKind","useCallback","config","kind","q","s","stat","runSearch","entries","searchKinds","nextQuery","signal","searchError","requestId","next","nextErrors","firstError","entry","debounceMs","controller","detach","retry","current","first","k","setActiveKind","setQuery","addMention","prev","m","mention","removeMention","id","setMentions","reset","selectSuggestion","suggestion","cfg","href","buildMentionHtml","safeLabel","tone","trigger","useMentions","search","pickerOpen","setPickerOpenState","triggerActive","setTriggerActive","triggerStateRef","lastTriggerCharRef","setPickerOpen","open","editorRef","handleCaretChange","triggerMap","trig","ctx","triggers","c","re","match","triggerChar","needle","consumedLength","pickSuggestion","html","TONE_TO_VARIANT","MentionChip","resource","variant","Icon","inner","cn","className","trailing","asLink","onClick","MENTION_RE","splitHtmlByMentions","segments","lastIndex","full","refId","before","tail","DEFAULT_PROSE_CLASS","MentionContent","resourcesProp","props","sanitized","sanitizer","mentionsById","renderRef","renderMention","body","segment","Fragment","index","prose","defaultMentionPickerStrings","defaultMentionInlineSuggestionsStrings","MentionPicker","stringsProp","strings","useStrings","active","Button","loading","Loader2","suggestions","onSelect","MentionInlineSuggestions","count","onManualKindChange","REF_RE","KIND_ATTR_RE","parseMentionsFromHtml","out","seen","tagText","label"],"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 { DEFAULT_DEBOUNCE_MS, useDebouncedCallback } from '../../../../hooks/use-debounced-callback';\n\nimport type {\n\tMention,\n\tMentionResource,\n\tMentionSuggestion,\n\tMentionsResourceSearch,\n\tMentionsSearchErrorHandler,\n} from '../mentions.types';\n\nfunction isAbortError(error: unknown): boolean {\n\treturn Boolean(error && (error as { name?: string }).name === 'AbortError');\n}\n\nexport interface UseMentionsSearchOptions<TResource extends string = string> {\n\tresources?: Partial<Record<TResource, MentionResource<TResource>>>;\n\tonResourceSearch?: MentionsResourceSearch<TResource>;\n\tinitialMentions?: ReadonlyArray<Mention<TResource>>;\n\t/** Debounce window for async search. Defaults to `DEFAULT_DEBOUNCE_MS`. */\n\tdebounceMs?: number;\n\t/** Receives non-abort failures for each resource kind that could not be searched. */\n\tonError?: MentionsSearchErrorHandler<TResource>;\n}\n\nexport interface UseMentionsSearchReturn<TResource extends string = string> {\n\tkinds: ReadonlyArray<TResource>;\n\tactiveKind: TResource | null;\n\tsetActiveKind: (kind: TResource | null) => void;\n\tactiveResource: MentionResource<TResource> | null;\n\n\tquery: string;\n\tsetQuery: (q: string) => void;\n\n\t/** Suggestions for the active kind (`suggestionsByKind[activeKind]`). */\n\tsuggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n\t/** Per-kind suggestion buckets — useful for cross-kind UIs. */\n\tsuggestionsByKind: Readonly<Record<string, ReadonlyArray<MentionSuggestion<TResource>>>>;\n\t/** Replaces the content with the loading state. */\n\tisLoading: boolean;\n\terror: unknown | null;\n\tisError: boolean;\n\terrorsByKind: Readonly<Partial<Record<TResource, unknown>>>;\n\tretry: () => void;\n\n\tmentions: ReadonlyArray<Mention<TResource>>;\n\taddMention: (mention: Mention<TResource>) => void;\n\tremoveMention: (id: string) => void;\n\tsetMentions: (next: ReadonlyArray<Mention<TResource>>) => void;\n\treset: () => void;\n\n\tselectSuggestion: (\n\t\tsuggestion: MentionSuggestion<TResource>,\n\t) => Mention<TResource>;\n\n\t/** True if the consumer manually picked a tab. The trigger detector\n\t * checks this and refuses to override the active kind on next caret\n\t * change while it's true. Reset on `setManualKindOverride(false)` or\n\t * `reset()`. */\n\tmanualKindOverride: boolean;\n\tsetManualKindOverride: (override: boolean) => void;\n}\n\nexport function useMentionsSearch<TResource extends string = string>(\n\toptions: UseMentionsSearchOptions<TResource> = {},\n): UseMentionsSearchReturn<TResource> {\n\tconst {\n\t\tresources,\n\t\tonResourceSearch,\n\t\tinitialMentions,\n\t\tdebounceMs = DEFAULT_DEBOUNCE_MS,\n\t\tonError,\n\t} = options;\n\n\tconst kindsKey = JSON.stringify(Object.keys(resources ?? {}));\n\tconst kinds = useMemo<ReadonlyArray<TResource>>(\n\t\t() => JSON.parse(kindsKey) as TResource[],\n\t\t[kindsKey],\n\t);\n\n\tconst [activeKind, setActiveKindState] = useState<TResource | null>(\n\t\t() => kinds[0] ?? null,\n\t);\n\tconst [manualKindOverride, setManualKindOverride] = useState(false);\n\tconst [query, setQueryState] = useState('');\n\tconst [suggestionsByKind, setSuggestionsByKind] = useState<\n\t\tRecord<string, ReadonlyArray<MentionSuggestion<TResource>>>\n\t>({});\n\tconst [isLoading, setIsLoading] = useState(false);\n\tconst [error, setError] = useState<unknown | null>(null);\n\tconst [errorsByKind, setErrorsByKind] = useState<\n\t\tPartial<Record<TResource, unknown>>\n\t>({});\n\tconst [retryTick, setRetryTick] = useState(0);\n\tconst [mentions, setMentionsState] = useState<Mention<TResource>[]>(() =>\n\t\tinitialMentions ? [...initialMentions] : [],\n\t);\n\n\tconst requestIdRef = useRef(0);\n\tconst abortControllerRef = useRef<AbortController | null>(null);\n\tconst resourcesRef = useRef(resources);\n\tconst onResourceSearchRef = useRef(onResourceSearch);\n\tconst onErrorRef = useRef(onError);\n\tresourcesRef.current = resources;\n\tonResourceSearchRef.current = onResourceSearch;\n\tonErrorRef.current = onError;\n\n\tuseEffect(() => {\n\t\tif (kinds.length === 0) {\n\t\t\tsetActiveKindState(null);\n\t\t\treturn;\n\t\t}\n\t\tif (!activeKind || !kinds.includes(activeKind)) {\n\t\t\tsetActiveKindState(kinds[0]);\n\t\t}\n\t}, [activeKind, kinds]);\n\n\tconst activeResource = useMemo(\n\t\t() => (activeKind && resources ? resources[activeKind] ?? null : null),\n\t\t[activeKind, resources],\n\t);\n\n\t/**\n\t * Search a single kind. Per-kind `search` wins, then static\n\t * `suggestions`, then the global `onResourceSearch` fallback.\n\t */\n\tconst searchOneKind = useCallback(\n\t\tasync (\n\t\t\tkind: TResource,\n\t\t\tq: string,\n\t\t\tsignal: AbortSignal,\n\t\t): Promise<ReadonlyArray<MentionSuggestion<TResource>>> => {\n\t\t\tconst config = resourcesRef.current?.[kind];\n\t\t\tif (config?.search) {\n\t\t\t\tconst result = await config.search(q, { kind, signal });\n\t\t\t\treturn result.map((s) => ({ ...s, kind }));\n\t\t\t}\n\t\t\tif (config?.suggestions) {\n\t\t\t\tconst stat = config.suggestions;\n\t\t\t\tconst filtered =\n\t\t\t\t\tq.trim().length === 0\n\t\t\t\t\t\t? stat\n\t\t\t\t\t\t: stat.filter((s) =>\n\t\t\t\t\t\t\t\ts.label.toLowerCase().includes(q.toLowerCase()),\n\t\t\t\t\t\t\t);\n\t\t\t\treturn filtered.map((s) => ({ ...s, kind }));\n\t\t\t}\n\t\t\tif (onResourceSearchRef.current) {\n\t\t\t\tconst result = await onResourceSearchRef.current(\n\t\t\t\t\tq,\n\t\t\t\t\tkind,\n\t\t\t\t\t{ kind, signal },\n\t\t\t\t);\n\t\t\t\treturn result.map((s) => ({ ...s, kind }));\n\t\t\t}\n\t\t\treturn [];\n\t\t},\n\t\t[],\n\t);\n\n\t// Debounced cross-kind search runner. Populates `suggestionsByKind`\n\t// for every registered kind in parallel.\n\tconst runSearch = useDebouncedCallback(\n\t\t(\n\t\t\tsearchKinds: ReadonlyArray<TResource>,\n\t\t\tnextQuery: string,\n\t\t\trequestId: number,\n\t\t\tsignal: AbortSignal,\n\t\t) => {\n\t\t\tvoid (async () => {\n\t\t\t\tsetIsLoading(true);\n\t\t\t\ttry {\n\t\t\t\t\tconst entries = await Promise.all(\n\t\t\t\t\t\tsearchKinds.map(async (kind) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst list = await searchOneKind(kind, nextQuery, signal);\n\t\t\t\t\t\t\t\treturn { kind, list, error: null };\n\t\t\t\t\t\t\t} catch (searchError) {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tkind,\n\t\t\t\t\t\t\t\t\tlist: [] as ReadonlyArray<MentionSuggestion<TResource>>,\n\t\t\t\t\t\t\t\t\terror: searchError,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t\tif (requestId !== requestIdRef.current || signal.aborted) return;\n\t\t\t\t\tconst next: Record<string, ReadonlyArray<MentionSuggestion<TResource>>> = {};\n\t\t\t\t\tconst nextErrors: Partial<Record<TResource, unknown>> = {};\n\t\t\t\t\tlet firstError: unknown | null = null;\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tnext[entry.kind] = entry.list;\n\t\t\t\t\t\tif (entry.error !== null && !isAbortError(entry.error)) {\n\t\t\t\t\t\t\tnextErrors[entry.kind] = entry.error;\n\t\t\t\t\t\t\tfirstError ??= entry.error;\n\t\t\t\t\t\t\tonErrorRef.current?.(entry.error, {\n\t\t\t\t\t\t\t\tquery: nextQuery,\n\t\t\t\t\t\t\t\tkind: entry.kind,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetSuggestionsByKind(next);\n\t\t\t\t\tsetErrorsByKind(nextErrors);\n\t\t\t\t\tsetError(firstError);\n\t\t\t\t} finally {\n\t\t\t\t\tif (requestId === requestIdRef.current && !signal.aborted) {\n\t\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})();\n\t\t},\n\t\tdebounceMs,\n\t);\n\n\tuseEffect(() => {\n\t\tconst controller = new AbortController();\n\t\tabortControllerRef.current = controller;\n\n\t\tconst detach = () => {\n\t\t\tcontroller.abort();\n\t\t\tif (abortControllerRef.current === controller) {\n\t\t\t\tabortControllerRef.current = null;\n\t\t\t}\n\t\t};\n\n\t\tif (kinds.length === 0) {\n\t\t\tsetSuggestionsByKind({});\n\t\t\tsetIsLoading(false);\n\t\t\tsetError(null);\n\t\t\tsetErrorsByKind({});\n\t\t\treturn detach;\n\t\t}\n\n\t\tconst requestId = ++requestIdRef.current;\n\t\tsetError(null);\n\t\tsetErrorsByKind({});\n\t\trunSearch(kinds, query, requestId, controller.signal);\n\n\t\treturn () => {\n\t\t\trunSearch.cancel();\n\t\t\tdetach();\n\t\t};\n\t}, [kinds, query, retryTick, runSearch]);\n\n\tconst retry = useCallback(() => {\n\t\tsetRetryTick((current) => current + 1);\n\t}, []);\n\n\t/**\n\t * Auto-switch behaviour: when the active kind has zero results but\n\t * another kind has matches, jump to the first kind with results.\n\t * Skipped while `manualKindOverride` is true so the consumer's tab\n\t * choice sticks.\n\t */\n\tuseEffect(() => {\n\t\tif (manualKindOverride) return;\n\t\tif (!activeKind) return;\n\t\tconst activeList = suggestionsByKind[activeKind] ?? [];\n\t\tif (activeList.length > 0) return;\n\t\tconst first = kinds.find((k) => (suggestionsByKind[k]?.length ?? 0) > 0);\n\t\tif (first && first !== activeKind) {\n\t\t\tsetActiveKindState(first);\n\t\t}\n\t}, [activeKind, kinds, manualKindOverride, suggestionsByKind]);\n\n\t/**\n\t * Set the active kind. **Does not** toggle `manualKindOverride` —\n\t * the picker UI is responsible for calling\n\t * `setManualKindOverride(true)` when the user explicitly clicks a\n\t * tab so the auto-switch / auto-detect logic respects their choice.\n\t */\n\tconst setActiveKind = useCallback((kind: TResource | null) => {\n\t\tsetActiveKindState(kind);\n\t}, []);\n\n\tconst setQuery = useCallback((q: string) => {\n\t\tsetQueryState(q);\n\t}, []);\n\n\tconst addMention = useCallback((mention: Mention<TResource>) => {\n\t\tsetMentionsState((prev) => {\n\t\t\tif (prev.some((m) => m.id === mention.id)) return prev;\n\t\t\treturn [...prev, mention];\n\t\t});\n\t}, []);\n\n\tconst removeMention = useCallback((id: string) => {\n\t\tsetMentionsState((prev) => prev.filter((m) => m.id !== id));\n\t}, []);\n\n\tconst setMentions = useCallback(\n\t\t(next: ReadonlyArray<Mention<TResource>>) => {\n\t\t\tsetMentionsState([...next]);\n\t\t},\n\t\t[],\n\t);\n\n\tconst reset = useCallback(() => {\n\t\tabortControllerRef.current?.abort();\n\t\tsetMentionsState([]);\n\t\tsetQueryState('');\n\t\tsetManualKindOverride(false);\n\t\tsetSuggestionsByKind({});\n\t\tsetIsLoading(false);\n\t\tsetError(null);\n\t\tsetErrorsByKind({});\n\t\trequestIdRef.current++;\n\t}, []);\n\n\tconst selectSuggestion = useCallback(\n\t\t(suggestion: MentionSuggestion<TResource>) => {\n\t\t\tconst kind = (suggestion.kind ?? activeKind) as TResource;\n\t\t\tconst id = `${kind}:${suggestion.id}`;\n\t\t\tconst cfg = resources?.[kind];\n\t\t\tconst href = suggestion.href ?? cfg?.buildHref?.(suggestion);\n\t\t\tconst mention: Mention<TResource> = {\n\t\t\t\tid,\n\t\t\t\tkind,\n\t\t\t\tlabel: suggestion.label,\n\t\t\t\thref,\n\t\t\t\tdata: suggestion.data,\n\t\t\t};\n\t\t\taddMention(mention);\n\t\t\treturn mention;\n\t\t},\n\t\t[activeKind, addMention, resources],\n\t);\n\n\tconst suggestions = useMemo<ReadonlyArray<MentionSuggestion<TResource>>>(\n\t\t() => (activeKind ? suggestionsByKind[activeKind] ?? [] : []),\n\t\t[activeKind, suggestionsByKind],\n\t);\n\n\treturn {\n\t\tkinds,\n\t\tactiveKind,\n\t\tsetActiveKind,\n\t\tactiveResource,\n\t\tquery,\n\t\tsetQuery,\n\t\tsuggestions,\n\t\tsuggestionsByKind,\n\t\tisLoading,\n\t\terror,\n\t\tisError: error !== null,\n\t\terrorsByKind,\n\t\tretry,\n\t\tmentions,\n\t\taddMention,\n\t\tremoveMention,\n\t\tsetMentions,\n\t\treset,\n\t\tselectSuggestion,\n\t\tmanualKindOverride,\n\t\tsetManualKindOverride,\n\t};\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\tmention: Mention<TKind>,\n\toptions?: { triggerChar?: string; tone?: MentionTone },\n): string {\n\tconst safeLabel = String(mention.label ?? '')\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>');\n\tconst id = String(mention.id).replace(/\"/g, '"');\n\tconst kind = String(mention.kind).replace(/\"/g, '"');\n\tconst tone = options?.tone ? String(options.tone).replace(/\"/g, '"') : '';\n\tconst trigger =\n\t\toptions?.triggerChar ?? (mention.kind === 'user' ? '@' : '');\n\tconst toneAttr = tone ? ` data-ref-tone=\"${tone}\"` : '';\n\treturn (\n\t\t`<span class=\"rsc-mention\" data-ref-id=\"${id}\" data-ref-kind=\"${kind}\"${toneAttr} contenteditable=\"false\">` +\n\t\t`${trigger}${safeLabel}` +\n\t\t`</span> `\n\t);\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\tMention,\n\tMentionResource,\n\tMentionSuggestion,\n\tMentionsResourceSearch,\n} from '../mentions.types';\nimport { buildMentionHtml } from '../utils/build-mention-html';\nimport {\n\tuseMentionsSearch,\n\ttype UseMentionsSearchOptions,\n\ttype 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\tgetCaretContext(): { textBefore: string } | null;\n\tinsertHTML(html: string): void;\n\treplaceBeforeCaret(length: number, html: string): void;\n\tfocus(): void;\n}\n\nexport interface UseMentionsOptions<TResource extends string = string>\n\textends UseMentionsSearchOptions<TResource> {\n\t/** Ref to the editor surface the trigger detector reads from. */\n\teditorRef?: RefObject<MentionEditorHandle | null>;\n}\n\nexport interface UseMentionsReturn<TResource extends string = string>\n\textends UseMentionsSearchReturn<TResource> {\n\tpickerOpen: boolean;\n\tsetPickerOpen: (open: boolean) => void;\n\t/** True while the picker is open from an inline `@`/`#` trigger. */\n\ttriggerActive: boolean;\n\t/** Wire to the editor's `onCaretChange` to enable inline triggers. */\n\thandleCaretChange: () => void;\n\t/**\n\t * Convert a suggestion into a Mention, register it, insert the chip\n\t * into the editor (replacing the trigger range when one is active),\n\t * and close the picker. Returns the Mention.\n\t */\n\tpickSuggestion: (\n\t\tsuggestion: MentionSuggestion<TResource>,\n\t) => Mention<TResource>;\n}\n\ninterface TriggerState {\n\tkind: string;\n\ttriggerChar: string;\n\tconsumedLength: number;\n}\n\nexport function useMentions<TResource extends string = string>(\n\toptions: UseMentionsOptions<TResource> = {},\n): UseMentionsReturn<TResource> {\n\tconst resources = options.resources;\n\tconst onResourceSearch: MentionsResourceSearch<TResource> | undefined =\n\t\toptions.onResourceSearch;\n\n\tconst search = useMentionsSearch<TResource>({\n\t\t...options,\n\t\tresources,\n\t\tonResourceSearch,\n\t});\n\n\tconst [pickerOpen, setPickerOpenState] = useState(false);\n\tconst [triggerActive, setTriggerActive] = useState(false);\n\tconst triggerStateRef = useRef<TriggerState | null>(null);\n\t/** Tracks the trigger char from the most recent detection — lets us\n\t * set the initial active kind on a fresh trigger without overriding\n\t * the user's manual tab switch on every subsequent keystroke. */\n\tconst lastTriggerCharRef = useRef<string | null>(null);\n\n\tconst setPickerOpen = useCallback((open: boolean) => {\n\t\tsetPickerOpenState(open);\n\t\tif (!open) {\n\t\t\ttriggerStateRef.current = null;\n\t\t\tlastTriggerCharRef.current = null;\n\t\t\tsetTriggerActive(false);\n\t\t\tsearch.setManualKindOverride(false);\n\t\t}\n\t}, [search]);\n\n\tconst editorRef = options.editorRef;\n\n\tconst handleCaretChange = useCallback(() => {\n\t\tif (!resources) return;\n\t\tconst triggerMap: Record<string, string> = {};\n\t\tfor (const [kind, cfg] of Object.entries(resources)) {\n\t\t\tconst trig = (cfg as MentionResource | undefined)?.trigger;\n\t\t\tif (typeof trig === 'string' && trig.length > 0) {\n\t\t\t\ttriggerMap[trig] = kind;\n\t\t\t}\n\t\t}\n\t\tif (Object.keys(triggerMap).length === 0) return;\n\n\t\tconst ctx = editorRef?.current?.getCaretContext();\n\t\tif (!ctx) {\n\t\t\tif (triggerStateRef.current) {\n\t\t\t\ttriggerStateRef.current = null;\n\t\t\t\tsetPickerOpen(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst triggers = Object.keys(triggerMap)\n\t\t\t.map((c) => c.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n\t\t\t.join('');\n\t\tconst re = new RegExp(`(?:^|\\\\s)([${triggers}])([\\\\p{L}\\\\p{N}_-]*)$`, 'u');\n\t\tconst match = ctx.textBefore.match(re);\n\t\tif (!match) {\n\t\t\tif (triggerStateRef.current) {\n\t\t\t\ttriggerStateRef.current = null;\n\t\t\t\tsetPickerOpen(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst triggerChar = match[1];\n\t\tconst needle = match[2] ?? '';\n\t\tconst kind = triggerMap[triggerChar];\n\t\tconst consumedLength = triggerChar.length + needle.length;\n\n\t\ttriggerStateRef.current = { kind, triggerChar, consumedLength };\n\t\tsetTriggerActive(true);\n\n\t\t// Only seed the initial active kind on a *fresh* trigger session.\n\t\t// If the user has already picked a tab in the panel,\n\t\t// `manualKindOverride` is true and we skip — their choice sticks\n\t\t// even as they keep typing or deleting characters.\n\t\tconst isNewTriggerSession = lastTriggerCharRef.current !== triggerChar;\n\t\tif (isNewTriggerSession) {\n\t\t\tif (search.activeKind !== kind) {\n\t\t\t\tsearch.setActiveKind(kind as TResource);\n\t\t\t}\n\t\t\tsearch.setManualKindOverride(false);\n\t\t\tlastTriggerCharRef.current = triggerChar;\n\t\t}\n\n\t\tif (search.query !== needle) {\n\t\t\tsearch.setQuery(needle);\n\t\t}\n\t\tsetPickerOpenState(true);\n\t}, [editorRef, resources, search, setPickerOpen]);\n\n\tconst pickSuggestion = useCallback(\n\t\t(suggestion: MentionSuggestion<TResource>) => {\n\t\t\tconst mention = search.selectSuggestion(suggestion);\n\t\t\tconst trigger = triggerStateRef.current;\n\t\t\tconst tone = (resources?.[mention.kind] as MentionResource | undefined)?.tone;\n\t\t\tconst html = buildMentionHtml(mention, {\n\t\t\t\ttriggerChar: trigger?.triggerChar,\n\t\t\t\ttone,\n\t\t\t});\n\n\t\t\tif (trigger && trigger.consumedLength > 0 && editorRef?.current) {\n\t\t\t\teditorRef.current.replaceBeforeCaret(trigger.consumedLength, html);\n\t\t\t\ttriggerStateRef.current = null;\n\t\t\t} else if (editorRef?.current) {\n\t\t\t\teditorRef.current.insertHTML(html);\n\t\t\t}\n\t\t\tsetPickerOpen(false);\n\t\t\treturn mention;\n\t\t},\n\t\t[editorRef, resources, search, setPickerOpen],\n\t);\n\n\treturn {\n\t\t...search,\n\t\tpickerOpen,\n\t\tsetPickerOpen,\n\t\ttriggerActive,\n\t\thandleCaretChange,\n\t\tpickSuggestion,\n\t};\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 BadgeTone } from '../../../base/badge';\nimport { Text, TextLink } from '../../../typography';\nimport { cn } from '../../../../lib/utils';\n\nimport type {\n\t\tMention,\n\t\tMentionResource,\n\t\tMentionTone,\n} from '../mentions.types';\n\nexport interface MentionChipProps {\n\t\t/** The mention this chip represents. */\n\t\tmention: Mention;\n\t\t/** The referenced resource. */\n\t\tresource?: MentionResource<string>;\n\t\t/** Force-disable the chip's link (useful inside the composer draft list). */\n\t\tasLink?: boolean;\n\t\tonClick?: () => void;\n\t\t/** Trailing slot — typically a remove button when shown in the composer. */\n\t\ttrailing?: ReactNode;\n\t\t/** Merged onto the outermost node. */\n\t\tclassName?: 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, BadgeTone> = {\n\t\tprimary: 'secondary', // calm primary — saturated `primary` overwhelms body copy\n\t\tsuccess: 'success',\n\t\twarning: 'warning',\n\t\tdestructive: 'destructive',\n\t\tinfo: 'info',\n\t\tsecondary: 'secondary',\n};\n\nexport const MentionChip: FC<MentionChipProps> = ({\n\t\tmention,\n\t\tresource,\n\t\tasLink = true,\n\t\tonClick,\n\t\ttrailing,\n\t\tclassName,\n}) => {\n\t\tif (resource?.renderChip) {\n\t\t\t\treturn <>{resource.renderChip(mention)}</>;\n\t\t}\n\n\t\tconst tone = resource?.tone ?? 'secondary';\n\t\tconst variant = TONE_TO_VARIANT[tone] ?? TONE_TO_VARIANT.secondary;\n\t\tconst Icon = resource?.icon;\n\n\t\tconst inner = (\n\t\t\t\t<Badge\n\t\t\t\t\t\ttone={variant}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tinline\n\t\t\t\t\t\tdata-ref-id={mention.id}\n\t\t\t\t\t\tdata-ref-kind={mention.kind}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'mention-chip--component',\n\t\t\t\t\t\t\t\t/* Inline-flow tweaks: align to the surrounding text baseline\n\t\t\t\t\t\t\t\t\t instead of the line's mid-point, which causes wobble next\n\t\t\t\t\t\t\t\t\t to text. Keep the badge as `inline-flex` (from `inline`),\n\t\t\t\t\t\t\t\t\t add a subtle vertical offset via translate so the icon\n\t\t\t\t\t\t\t\t\t sits on the cap-height. */\n\t\t\t\t\t\t\t\t'align-[-0.15em] cursor-default whitespace-nowrap',\n\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t\t{Icon ? <Icon className=\"size-icon-sm shrink-0\" aria-hidden /> : null}\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\tlineHeight=\"none\"\n\t\t\t\t\t\t\t\tclassName=\"max-w-[14rem] truncate text-inherit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{mention.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{trailing}\n\t\t\t\t</Badge>\n\t\t);\n\n\t\tif (asLink && mention.href) {\n\t\treturn (\n\t\t\t<TextLink\n\t\t\t\thref={mention.href}\n\t\t\t\tsize=\"inherit\"\n\t\t\t\tunderline={false}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\t\t\t\tonClick={onClick}\n\t\t\t\t\t\t\t\tclassName=\"inline align-baseline no-underline hover:opacity-90\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{inner}\n\t\t\t</TextLink>\n\t\t);\n\t\t}\n\n\t\tif (onClick) {\n\t\t\t\treturn (\n\t\t\t\t\t\t<span onClick={onClick} className=\"inline align-baseline\">\n\t\t\t\t\t\t\t\t{inner}\n\t\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t}\n\n\t\treturn 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\t| { kind: 'html'; value: string }\n\t| { kind: 'mention'; refId: string; fallback: string };\n\nconst MENTION_RE =\n\t/<(span|a)\\b([^>]*?)data-ref-id\\s*=\\s*\"([^\"]+)\"([^>]*)>([\\s\\S]*?)<\\/\\1>/gi;\n\nexport function splitHtmlByMentions(html: string): MentionHtmlSegment[] {\n\tif (!html) return [];\n\n\tconst segments: MentionHtmlSegment[] = [];\n\tlet lastIndex = 0;\n\tlet match: RegExpExecArray | null;\n\tMENTION_RE.lastIndex = 0;\n\n\twhile ((match = MENTION_RE.exec(html)) !== null) {\n\t\tconst [full, , , refId] = match;\n\t\tconst before = html.slice(lastIndex, match.index);\n\t\tif (before.length > 0) {\n\t\t\tsegments.push({ kind: 'html', value: before });\n\t\t}\n\t\tsegments.push({\n\t\t\tkind: 'mention',\n\t\t\trefId,\n\t\t\tfallback: full,\n\t\t});\n\t\tlastIndex = match.index + full.length;\n\t}\n\n\tconst tail = html.slice(lastIndex);\n\tif (tail.length > 0) {\n\t\tsegments.push({ kind: 'html', value: tail });\n\t}\n\n\treturn 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/activities` — activity 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 { ReactNode } from 'react';\n\nimport { contentTypographyClassName } from '../../../typography/content-typography';\n\nimport { Text } from '../../../typography';\nimport { sanitizeHtml } from '../../../../lib/sanitize-html';\nimport { cn } from '../../../../lib/utils';\n\nimport type {\n\tMention,\n\tMentionResource,\n\tMentionsConfig,\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\t/** HTML body to render. */\n\thtml: string;\n\t/** Mentions resolved on the data — keyed by `data-ref-id`. */\n\tmentions?: ReadonlyArray<Mention<TResource>>;\n\t/** Resource registry — pass at the call site. */\n\tresources?: MentionsConfig<TResource>['resources'];\n\t/** Custom per-mention renderer — overrides resource.renderChip. */\n\trenderMention?: (mention: Mention<TResource>) => ReactNode;\n\t/** Optional sanitizer override. The package safe allowlist is the default. */\n\tsanitizer?: (html: string) => string;\n\t/** Outer wrapper class. Defaults to a tight prose surface. */\n\tclassName?: string;\n\t/**\n\t * Set to `false` to skip the default prose wrapper — useful when\n\t * embedding inside an existing typed surface (e.g. timeline rows).\n\t */\n\tprose?: boolean;\n}\n\nconst DEFAULT_PROSE_CLASS = contentTypographyClassName;\n\nexport function MentionContent<TResource extends string = string>(\n\tprops: MentionContentProps<TResource>,\n): ReactNode {\n\tconst {\n\t\thtml,\n\t\tmentions,\n\t\tresources: resourcesProp,\n\t\trenderMention,\n\t\tsanitizer,\n\t\tclassName,\n\t\tprose = true,\n\t} = props;\n\n\tconst resources = resourcesProp;\n\n\tconst sanitized = sanitizer\n\t\t? sanitizer(html ?? '')\n\t\t: sanitizeHtml(html ?? '');\n\n\tconst mentionsById = new Map<string, Mention<TResource>>();\n\tfor (const m of mentions ?? []) mentionsById.set(m.id, m);\n\n\tconst hasMentions = mentionsById.size > 0;\n\tconst segments = hasMentions\n\t\t? splitHtmlByMentions(sanitized)\n\t\t: [{ kind: 'html' as const, value: sanitized }];\n\n\tconst renderRef = (mention: Mention<TResource>): ReactNode => {\n\t\tif (renderMention) return renderMention(mention);\n\t\tconst resource = resources?.[mention.kind] as\n\t\t\t| MentionResource<string>\n\t\t\t| undefined;\n\t\treturn <MentionChip mention={mention} resource={resource} />;\n\t};\n\n\tconst body = segments.map((segment, index) => {\n\t\tif (segment.kind === 'mention') {\n\t\t\tconst mention = mentionsById.get(segment.refId);\n\t\t\tif (!mention) {\n\t\t\t\treturn (\n\t\t\t\t\t<span\n\t\t\t\t\t\tkey={`fallback-${index}`}\n\t\t\t\t\t\tdangerouslySetInnerHTML={{ __html: segment.fallback }}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<Fragment key={`ref-${index}-${segment.refId}`}>\n\t\t\t\t\t{renderRef(mention)}\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t}\n\t\t// Segments have already passed through the package allowlist (or the\n\t\t// consumer's explicit sanitizer override) before mention extraction.\n\t\treturn (\n\t\t\t<span\n\t\t\t\tkey={`html-${index}`}\n\t\t\t\tdangerouslySetInnerHTML={{ __html: segment.value }}\n\t\t\t/>\n\t\t);\n\t});\n\n\tif (!prose) {\n\t\treturn <>{body}</>;\n\t}\n\n\treturn (\n\t\t<Text tag=\"div\" className={cn('mention-content--component', DEFAULT_PROSE_CLASS, className)}>{body}</Text>\n\t);\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\t/** Surface title. */\n\ttitle: string;\n\tsearchPlaceholder: string;\n\t/** Shown in place of the collection when it has no entries. */\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\t/** Surface title. */\n\ttitle: string;\n\t/** Shown in place of the collection when it has no entries. */\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\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from '../../../base/command';\nimport { Button } from '../../../base/buttons';\nimport { PopoverHeader, PopoverContent } from '../../../base/popover';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultMentionPickerStrings,\n\ttype MentionPickerStrings,\n} from '../mentions.strings';\nimport type {\n\tMentionResource,\n\tMentionSuggestion,\n} from '../mentions.types';\n\nexport type { MentionPickerStrings };\n\nexport interface MentionPickerProps<TResource extends string = string> {\n\t/** Whether the picker is showing. */\n\topen: boolean;\n\t/** Resource kind currently being browsed. */\n\tactiveKind: TResource | null;\n\t/** Switches which resource kind is browsed. */\n\tsetActiveKind: (kind: TResource | null) => void;\n\t/** Resource kinds offered as tabs. */\n\tkinds: ReadonlyArray<TResource>;\n\t/** Resource definitions supplying each kind's label and icon. */\n\tresources?: Partial<Record<TResource, MentionResource<TResource>>>;\n\t/** Current search text. */\n\tquery: string;\n\t/** Updates the search text. */\n\tsetQuery: (query: string) => void;\n\t/** Matches for the current query. */\n\tsuggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n\t/** Replaces the content with the loading state. */\n\tloading: boolean;\n\t/** Fired when an entry is activated. */\n\tonSelect: (suggestion: MentionSuggestion<TResource>) => void;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<MentionPickerStrings>;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nexport function MentionPicker<TResource extends string = string>({\n\topen,\n\tactiveKind,\n\tsetActiveKind,\n\tkinds,\n\tresources,\n\tquery,\n\tsetQuery,\n\tsuggestions,\n\tloading,\n\tonSelect,\n\tstrings: stringsProp,\n\tclassName,\n}: MentionPickerProps<TResource>) {\n\tconst strings = useStrings(defaultMentionPickerStrings, stringsProp);\n\tif (!open) return null;\n\n\treturn (\n\t\t<PopoverContent\n\t\t\talign=\"start\"\n\t\t\tinset=\"flush\"\n type=\"menu\"\n\t\t\tclassName={cn('mention-picker--component', 'w-72 gap-0 overflow-hidden', className)}\n\t\t>\n\t\t\t<PopoverHeader>\n\t\t\t\t<DisplayLabel>\n\t\t\t\t\t{strings.title}\n\t\t\t\t</DisplayLabel>\n\t\t\t\t{kinds.length > 1 && (\n\t\t\t\t\t<div className=\"mt-space-md flex flex-wrap gap-space-xs\">\n\t\t\t\t\t\t{kinds.map((kind) => {\n\t\t\t\t\t\t\tconst cfg = resources?.[kind];\n\t\t\t\t\t\t\tconst Icon = cfg?.icon;\n\t\t\t\t\t\t\tconst active = kind === activeKind;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tkey={kind}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\taria-pressed={active}\n\t\t\t\t\t\t\t\t\ttone={active ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\t\t\tbuttonStyle={active ? 'solid' : 'ghost'}\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\tonClick={() => setActiveKind(kind)}\n\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{Icon ? <Icon className=\"size-icon\" /> : null}\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-inherit\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{cfg?.label ?? String(kind)}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</PopoverHeader>\n\n\t\t\t<Command shouldFilter={false} inset=\"flush\" className=\"rounded-none\">\n\t\t\t\t<CommandInput\n\t\t\t\t\tplaceholder={strings.searchPlaceholder}\n\t\t\t\t\tvalue={query}\n\t\t\t\t\tonValueChange={setQuery}\n\t\t\t\t/>\n\t\t\t\t<CommandList>\n\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" gap=\"md\" className=\"text-muted-foreground py-space-lg\">\n\t\t\t\t\t\t\t<Loader2 className=\"size-icon-md animate-spin\" aria-hidden />\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t{strings.loading}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<CommandEmpty>{strings.empty}</CommandEmpty>\n\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t{suggestions.map((suggestion) => {\n\t\t\t\t\t\t\tconst kind = suggestion.kind ?? activeKind ?? '';\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={`${kind}:${suggestion.id}`}\n\t\t\t\t\t\t\t\t\tvalue={`${kind}:${suggestion.id}`}\n\t\t\t\t\t\t\t\t\tonSelect={() => onSelect(suggestion)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col leading-tight\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t\t\t\t\t\t\t{suggestion.label}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t{suggestion.description ? (\n\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"mt-0.5 truncate\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{suggestion.description}\n\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</CommandGroup>\n\t\t\t\t</CommandList>\n\t\t\t</Command>\n\t\t</PopoverContent>\n\t);\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 '../../../base/buttons';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\t\tdefaultMentionInlineSuggestionsStrings,\n\t\ttype MentionInlineSuggestionsStrings,\n} from '../mentions.strings';\nimport type {\n\t\tMentionResource,\n\t\tMentionSuggestion,\n} from '../mentions.types';\n\nexport type { MentionInlineSuggestionsStrings };\n\nexport interface MentionInlineSuggestionsProps<TResource extends string = string> {\n\t\t/** Whether the inline list is showing. */\n\t\topen: boolean;\n\t\t/** Resource kind currently being matched. */\n\t\tactiveKind: TResource | null;\n\t\t/** Switches which resource kind is matched. */\n\t\tsetActiveKind: (kind: TResource | null) => void;\n\t\t/** Resource kinds available to match. */\n\t\tkinds: ReadonlyArray<TResource>;\n\t\t/** Resource definitions supplying each kind's label and icon. */\n\t\tresources?: Partial<Record<TResource, MentionResource<TResource>>>;\n\t\t/** Per-kind suggestion buckets — used to render result counts on tabs. */\n\t\tsuggestionsByKind?: Readonly<Record<string, ReadonlyArray<MentionSuggestion<TResource>>>>;\n\t\t/** Matches for the text typed after the trigger character. */\n\t\tsuggestions: ReadonlyArray<MentionSuggestion<TResource>>;\n\t\t/** Replaces the content with the loading state. */\n\t\tloading: boolean;\n\t\t/** Live query the panel echoes in the header; the consumer owns the editor input. */\n\t\tquery?: string;\n\t\t/**\n\t\t * Notifies the consumer that the user manually picked a tab, so it\n\t\t * can flip the `manualKindOverride` flag on `useMentionsSearch`.\n\t\t */\n\t\tonManualKindChange?: () => void;\n\t\t/** Fired when an entry is activated. */\n\t\tonSelect: (suggestion: MentionSuggestion<TResource>) => void;\n\t\t/** Overrides this surface's own copy. */\n\t\tstrings?: StringsProp<MentionInlineSuggestionsStrings>;\n\t\t/** Merged onto the outermost node. */\n\t\tclassName?: string;\n}\n\nexport function MentionInlineSuggestions<TResource extends string = string>({\n\t\topen,\n\t\tactiveKind,\n\t\tsetActiveKind,\n\t\tkinds,\n\t\tresources,\n\t\tsuggestionsByKind,\n\t\tsuggestions,\n\t\tloading,\n\t\tquery,\n\t\tonManualKindChange,\n\t\tonSelect,\n\t\tstrings: stringsProp,\n\t\tclassName,\n}: MentionInlineSuggestionsProps<TResource>) {\n\t\tconst strings = useStrings(defaultMentionInlineSuggestionsStrings, stringsProp);\n\t\tif (!open) return null;\n\n\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\t\t// `mousedown.preventDefault` keeps focus in the editor when\n\t\t\t\t\t\t// the user clicks inside the panel — clicks still bubble to\n\t\t\t\t\t\t// the underlying button so selection works normally.\n\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'mention-inline-suggestions--component',\n\t\t\t\t\t\t\t\t'bg-popover text-popover-foreground absolute left-0 top-full z-40 mt-1 w-80 max-w-[min(theme(spacing.96),100%)]',\n\t\t\t\t\t\t\t\t'border-border/60 rounded-radius-md border shadow-md ring-1 ring-foreground/[0.04]',\n\t\t\t\t\t\t\t\t'overflow-hidden',\n\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t\t<div className=\"border-b border-border/60 p-surface\">\n\t\t\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"baseline\" justify=\"between\" gap=\"md\" className=\"\">\n\t\t\t\t\t\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{strings.title}\n\t\t\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t\t\t\t{query ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"truncate font-mono\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t“{query}”\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t{kinds.length > 1 && (\n\t\t\t\t\t\t\t\t\t\t<div className=\"mt-space-md flex flex-wrap gap-space-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t{kinds.map((kind) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst cfg = resources?.[kind];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst Icon = cfg?.icon;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst active = kind === activeKind;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst count = suggestionsByKind?.[kind as string]?.length ?? 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={kind}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-pressed={active}\n\t\t\t\t\t\t\t\t\ttone={active ? 'primary' : 'secondary'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle={active ? 'solid' : 'ghost'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetActiveKind(kind);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonManualKindChange?.();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'h-auto gap-space-xs rounded px-1.5 py-0.5 ring-1 ring-inset transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-primary text-primary-foreground ring-primary'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: count > 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-muted text-foreground ring-border/60 hover:bg-muted/80'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'bg-muted/40 text-muted-foreground ring-border/40 hover:bg-muted/60',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{Icon ? <Icon className=\"size-icon-sm\" /> : null}\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"text-inherit\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{cfg?.label ?? String(kind)}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{count > 0 && (\n\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\tnumeric\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'text-inherit',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tactive ? 'opacity-90' : 'opacity-70',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{count}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"mention-inline-suggestions--list max-h-72 overflow-y-auto p-surface-xs\"\n\t\t\t\t\t\t\t\t{...(suggestions.length > 0\n\t\t\t\t\t\t\t\t\t\t? { role: 'listbox', 'aria-label': strings.title }\n\t\t\t\t\t\t\t\t\t\t: {})}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" gap=\"md\" className=\"text-muted-foreground py-space-lg\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Loader2 className=\"size-icon-md animate-spin\" aria-hidden />\n\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.loading}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t\t{!loading && suggestions.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t<div className=\"py-space-lg\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.empty}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t\t{suggestions.map((suggestion) => {\n\t\t\t\t\t\t\t\t\t\tconst kind = suggestion.kind ?? activeKind ?? '';\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`${kind}:${suggestion.id}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata-ref-id={`${kind}:${suggestion.id}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => onSelect(suggestion)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'h-auto w-full min-w-0 justify-start gap-space-md px-control-sm py-row-y text-left',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'hover:bg-muted/60 focus-visible:bg-muted/60 transition-colors',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-1 flex-col leading-tight\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{suggestion.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{suggestion.description ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"mt-0.5 truncate\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{suggestion.description}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t);\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\t/<(?: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\thtml: string,\n): Array<Mention<TKind>> {\n\tconst out: Mention<TKind>[] = [];\n\tif (!html) return out;\n\n\tconst seen = new Set<string>();\n\tlet match: RegExpExecArray | null;\n\tREF_RE.lastIndex = 0;\n\n\twhile ((match = REF_RE.exec(html)) !== null) {\n\t\tconst [tagText, id, inner] = match;\n\t\tif (seen.has(id)) continue;\n\t\tseen.add(id);\n\n\t\tconst kindMatch = tagText.match(KIND_ATTR_RE);\n\t\tconst kind = (kindMatch?.[1] ?? id.split(':')[0] ?? '') as TKind;\n\t\tconst label = (inner ?? '')\n\t\t\t.replace(/<[^>]*>/g, '')\n\t\t\t.replace(/ /g, ' ')\n\t\t\t.replace(/^[@#$&%!~]\\s*/, '')\n\t\t\t.trim();\n\n\t\tout.push({ id, kind, label });\n\t}\n\n\treturn out;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
+
import { t } from "./utils-C2EKeIw3.js";
|
|
4
|
+
import { a as n } from "./typography-Cv8MT-82.js";
|
|
5
|
+
import { t as r } from "./structure-BvW4vG4H.js";
|
|
6
|
+
import { n as i } from "./surface-recipes-CQfRr-VL.js";
|
|
7
|
+
import { forwardRef as a } from "react";
|
|
8
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/blocks/collaboration/message/message.types.ts
|
|
10
|
+
var c = {
|
|
11
|
+
typing: "Typing…",
|
|
12
|
+
loading: "Loading message…"
|
|
13
|
+
}, l = a(function({ className: e, ...n }, i) {
|
|
14
|
+
return /* @__PURE__ */ o(r, {
|
|
15
|
+
...n,
|
|
16
|
+
ref: i,
|
|
17
|
+
gap: "dense",
|
|
18
|
+
className: t("message--content min-w-0 max-w-full flex-1", e)
|
|
19
|
+
});
|
|
20
|
+
}), u = a(function({ className: e, ...n }, i) {
|
|
21
|
+
return /* @__PURE__ */ o(r, {
|
|
22
|
+
...n,
|
|
23
|
+
ref: i,
|
|
24
|
+
direction: "horizontal",
|
|
25
|
+
align: "baseline",
|
|
26
|
+
gap: "sm",
|
|
27
|
+
wrap: !0,
|
|
28
|
+
className: t("message--header", e)
|
|
29
|
+
});
|
|
30
|
+
}), d = a(function({ className: e, ...n }, i) {
|
|
31
|
+
return /* @__PURE__ */ o(r, {
|
|
32
|
+
...n,
|
|
33
|
+
ref: i,
|
|
34
|
+
direction: "horizontal",
|
|
35
|
+
align: "center",
|
|
36
|
+
gap: "xs",
|
|
37
|
+
wrap: !0,
|
|
38
|
+
className: t("message--actions", e)
|
|
39
|
+
});
|
|
40
|
+
}), f = a(function({ tone: e = "muted", className: r, children: a, ...s }, c) {
|
|
41
|
+
let l = typeof a == "string" || typeof a == "number" || typeof a == "bigint";
|
|
42
|
+
return /* @__PURE__ */ o("div", {
|
|
43
|
+
...s,
|
|
44
|
+
ref: c,
|
|
45
|
+
"data-tone": e,
|
|
46
|
+
className: t("message--bubble min-w-0 max-w-full rounded-radius px-row-x py-row-y break-words", e === "primary" ? "bg-primary text-primary-foreground" : e === "muted" ? "bg-muted text-muted-foreground" : e === "surface" ? t("bg-card text-card-foreground", i.frame.shell) : "text-foreground", r),
|
|
47
|
+
children: l ? /* @__PURE__ */ o(n, {
|
|
48
|
+
className: "text-inherit whitespace-pre-wrap",
|
|
49
|
+
lineHeight: "relaxed",
|
|
50
|
+
children: a
|
|
51
|
+
}) : a
|
|
52
|
+
});
|
|
53
|
+
}), p = a(function({ children: e, className: r, ...i }, a) {
|
|
54
|
+
return /* @__PURE__ */ o("span", {
|
|
55
|
+
...i,
|
|
56
|
+
ref: a,
|
|
57
|
+
role: "status",
|
|
58
|
+
className: t("message--status", r),
|
|
59
|
+
children: /* @__PURE__ */ o(n, {
|
|
60
|
+
tag: "span",
|
|
61
|
+
size: "xs",
|
|
62
|
+
type: "secondary",
|
|
63
|
+
children: e
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
}), m = a(function({ align: i = "start", tone: a = "muted", avatar: m, author: h, timestamp: g, dateTime: _, actions: v, status: y, loading: b = !1, typing: x = !1, strings: S, children: C, className: w, ...T }, E) {
|
|
67
|
+
let D = e(c, S);
|
|
68
|
+
return /* @__PURE__ */ s(r, {
|
|
69
|
+
...T,
|
|
70
|
+
ref: E,
|
|
71
|
+
direction: "horizontal",
|
|
72
|
+
align: "start",
|
|
73
|
+
gap: "md",
|
|
74
|
+
"data-align": i,
|
|
75
|
+
"aria-busy": b || x || void 0,
|
|
76
|
+
className: t("message--component w-full min-w-0", i === "end" && "flex-row-reverse", w),
|
|
77
|
+
children: [m, /* @__PURE__ */ s(l, {
|
|
78
|
+
className: i === "end" ? "items-end" : void 0,
|
|
79
|
+
children: [
|
|
80
|
+
(h !== void 0 || g !== void 0) && /* @__PURE__ */ s(u, { children: [h !== void 0 && /* @__PURE__ */ o(n, {
|
|
81
|
+
tag: "span",
|
|
82
|
+
weight: "medium",
|
|
83
|
+
children: h
|
|
84
|
+
}), g !== void 0 && /* @__PURE__ */ o("time", {
|
|
85
|
+
dateTime: _,
|
|
86
|
+
children: /* @__PURE__ */ o(n, {
|
|
87
|
+
tag: "span",
|
|
88
|
+
size: "xs",
|
|
89
|
+
type: "secondary",
|
|
90
|
+
className: "tabular-nums",
|
|
91
|
+
children: g
|
|
92
|
+
})
|
|
93
|
+
})] }),
|
|
94
|
+
/* @__PURE__ */ o(f, {
|
|
95
|
+
tone: a,
|
|
96
|
+
children: C
|
|
97
|
+
}),
|
|
98
|
+
(x || b || y !== void 0) && /* @__PURE__ */ o(p, { children: x ? D.typing : b ? D.loading : y }),
|
|
99
|
+
v !== void 0 && /* @__PURE__ */ o(d, { children: v })
|
|
100
|
+
]
|
|
101
|
+
})]
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
m.displayName = "Message";
|
|
105
|
+
//#endregion
|
|
106
|
+
export { u as a, l as i, d as n, p as o, f as r, c as s, m as t };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=message-B5-6LeYl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-B5-6LeYl.js","names":["Text","Stack","surfaceDividerRecipes","defaultMessageStrings","MessageContent","forwardRef","props","cn","className","MessageHeader","MessageActions","MessageBubble","scalar","children","tone","MessageStatus","Message","stringsProp","strings","useStrings","align","loading","typing","avatar","author","timestamp","status","actions"],"sources":["../src/components/blocks/collaboration/message/message.types.ts","../src/components/blocks/collaboration/message/message.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport type { StringsProp } from '../../../../lib/strings';\nexport interface MessageStrings { typing: string; loading: string }\nexport const defaultMessageStrings: MessageStrings = { typing: 'Typing…', loading: 'Loading message…' };\nexport interface MessageProps extends ComponentPropsWithoutRef<'div'> {\n /** Message direction, independent of author or service role. */\n align?: 'start' | 'end';\n /** Bubble treatment. @default muted */\n tone?: 'muted' | 'primary' | 'plain' | 'surface';\n avatar?: ReactNode;\n author?: ReactNode;\n /** Caller-formatted time; datetime supplies machine-readable time when available. */\n timestamp?: ReactNode;\n dateTime?: string;\n actions?: ReactNode;\n status?: ReactNode;\n loading?: boolean;\n typing?: boolean;\n strings?: StringsProp<MessageStrings>;\n}\nexport interface MessagePartProps extends ComponentPropsWithoutRef<'div'> {}\nexport interface MessageBubbleProps extends MessagePartProps { tone?: 'muted' | 'primary' | 'plain' | 'surface' }\nexport interface MessageStatusProps extends ComponentPropsWithoutRef<'span'> {}\n","import { forwardRef } from 'react';\nimport { Stack } from '../../../base/structure';\nimport { Text } from '../../../typography';\nimport { surfaceDividerRecipes } from '../../../../lib/surface-recipes';\nimport { cn } from '../../../../lib/utils';\nimport { useStrings } from '../../../../lib/strings';\nimport { defaultMessageStrings, type MessageProps, type MessagePartProps, type MessageBubbleProps, type MessageStatusProps } from './message.types';\nexport const MessageContent = forwardRef<HTMLDivElement, MessagePartProps>(function MessageContent({ className, ...props }, ref) { return <Stack {...props} ref={ref} gap=\"dense\" className={cn('message--content min-w-0 max-w-full flex-1', className)} />; });\nexport const MessageHeader = forwardRef<HTMLDivElement, MessagePartProps>(function MessageHeader({ className, ...props }, ref) { return <Stack {...props} ref={ref} direction=\"horizontal\" align=\"baseline\" gap=\"sm\" wrap className={cn('message--header', className)} />; });\nexport const MessageActions = forwardRef<HTMLDivElement, MessagePartProps>(function MessageActions({ className, ...props }, ref) { return <Stack {...props} ref={ref} direction=\"horizontal\" align=\"center\" gap=\"xs\" wrap className={cn('message--actions', className)} />; });\nexport const MessageBubble = forwardRef<HTMLDivElement, MessageBubbleProps>(function MessageBubble({ tone = 'muted', className, children, ...props }, ref) {\n const scalar = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n return <div {...props} ref={ref} data-tone={tone} className={cn('message--bubble min-w-0 max-w-full rounded-radius px-row-x py-row-y break-words', tone === 'primary' ? 'bg-primary text-primary-foreground' : tone === 'muted' ? 'bg-muted text-muted-foreground' : tone === 'surface' ? cn('bg-card text-card-foreground', surfaceDividerRecipes.frame.shell) : 'text-foreground', className)}>{scalar ? <Text className=\"text-inherit whitespace-pre-wrap\" lineHeight=\"relaxed\">{children}</Text> : children}</div>;\n});\nexport const MessageStatus = forwardRef<HTMLSpanElement, MessageStatusProps>(function MessageStatus({ children, className, ...props }, ref) { return <span {...props} ref={ref} role=\"status\" className={cn('message--status', className)}><Text tag=\"span\" size=\"xs\" type=\"secondary\">{children}</Text></span>; });\n/** Callback-free transcript presentation. Consumers own rich text, requests and delivery state. */\nexport const Message = forwardRef<HTMLDivElement, MessageProps>(function Message({ align = 'start', tone = 'muted', avatar, author, timestamp, dateTime, actions, status, loading = false, typing = false, strings: stringsProp, children, className, ...props }, ref) {\n const strings = useStrings(defaultMessageStrings, stringsProp);\n return <Stack {...props} ref={ref} direction=\"horizontal\" align=\"start\" gap=\"md\" data-align={align} aria-busy={loading || typing || undefined} className={cn('message--component w-full min-w-0', align === 'end' && 'flex-row-reverse', className)}>\n {avatar}\n <MessageContent className={align === 'end' ? 'items-end' : undefined}>\n {(author !== undefined || timestamp !== undefined) && <MessageHeader>\n {author !== undefined && <Text tag=\"span\" weight=\"medium\">{author}</Text>}\n {timestamp !== undefined && <time dateTime={dateTime}><Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"tabular-nums\">{timestamp}</Text></time>}\n </MessageHeader>}\n <MessageBubble tone={tone}>{children}</MessageBubble>\n {(typing || loading || status !== undefined) && <MessageStatus>{typing ? strings.typing : loading ? strings.loading : status}</MessageStatus>}\n {actions !== undefined && <MessageActions>{actions}</MessageActions>}\n </MessageContent>\n </Stack>;\n});\nMessage.displayName = 'Message';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/lib/motion-recipes.ts
|
|
2
|
+
var e = "motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0", t = "data-starting-style:opacity-0 data-ending-style:opacity-0", n = "data-starting-style:scale-95 data-ending-style:scale-95", r = [
|
|
3
|
+
"[&:not([data-align-trigger=true])]:data-[side=bottom]:data-starting-style:-translate-y-1 [&:not([data-align-trigger=true])]:data-[side=bottom]:data-ending-style:-translate-y-1",
|
|
4
|
+
"[&:not([data-align-trigger=true])]:data-[side=top]:data-starting-style:translate-y-1 [&:not([data-align-trigger=true])]:data-[side=top]:data-ending-style:translate-y-1",
|
|
5
|
+
"[&:not([data-align-trigger=true])]:data-[side=left]:data-starting-style:translate-x-1 [&:not([data-align-trigger=true])]:data-[side=left]:data-ending-style:translate-x-1",
|
|
6
|
+
"[&:not([data-align-trigger=true])]:data-[side=right]:data-starting-style:-translate-x-1 [&:not([data-align-trigger=true])]:data-[side=right]:data-ending-style:-translate-x-1",
|
|
7
|
+
"[&:not([data-align-trigger=true])]:data-[side=inline-start]:data-starting-style:translate-x-1 [&:not([data-align-trigger=true])]:data-[side=inline-start]:data-ending-style:translate-x-1",
|
|
8
|
+
"[&:not([data-align-trigger=true])]:data-[side=inline-end]:data-starting-style:-translate-x-1 [&:not([data-align-trigger=true])]:data-[side=inline-end]:data-ending-style:-translate-x-1"
|
|
9
|
+
].join(" "), i = {
|
|
10
|
+
backdrop: `transition-opacity duration-200 ease-out data-ending-style:duration-100 ${t} ${e}`,
|
|
11
|
+
dialog: `transition-[opacity,scale] duration-200 ease-out data-ending-style:duration-150 ${t} ${n} ${e}`,
|
|
12
|
+
drawer: [
|
|
13
|
+
"transition-[translate] duration-250 ease-out data-ending-style:duration-200",
|
|
14
|
+
"data-[side=right]:data-starting-style:translate-x-full data-[side=right]:data-ending-style:translate-x-full",
|
|
15
|
+
"data-[side=left]:data-starting-style:-translate-x-full data-[side=left]:data-ending-style:-translate-x-full",
|
|
16
|
+
"data-[side=bottom]:data-starting-style:translate-y-full data-[side=bottom]:data-ending-style:translate-y-full",
|
|
17
|
+
"data-[side=top]:data-starting-style:-translate-y-full data-[side=top]:data-ending-style:-translate-y-full",
|
|
18
|
+
e
|
|
19
|
+
].join(" "),
|
|
20
|
+
popup: `transition-[opacity,scale,translate] duration-150 ease-out data-ending-style:duration-100 ${t} ${n} ${r} ${e}`,
|
|
21
|
+
disclosure: `overflow-hidden transition-[height,padding-block] duration-200 ease-out data-starting-style:h-0 data-ending-style:h-0 data-starting-style:py-0! data-ending-style:py-0! ${e}`,
|
|
22
|
+
chevron: `transition-transform duration-200 ease-out ${e}`
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { i as t };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=motion-recipes-B6jKXEcN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-recipes-B6jKXEcN.js","names":["reducedMotion","fadeStates","scaleStates","popupOffset","motionRecipes"],"sources":["../src/lib/motion-recipes.ts"],"sourcesContent":["/** Private CSS motion recipes. Base UI owns measurement, presence and focus. */\nconst reducedMotion = 'motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0';\nconst fadeStates = 'data-starting-style:opacity-0 data-ending-style:opacity-0';\nconst scaleStates = 'data-starting-style:scale-95 data-ending-style:scale-95';\nconst popupOffset = [\n '[&:not([data-align-trigger=true])]:data-[side=bottom]:data-starting-style:-translate-y-1 [&:not([data-align-trigger=true])]:data-[side=bottom]:data-ending-style:-translate-y-1',\n '[&:not([data-align-trigger=true])]:data-[side=top]:data-starting-style:translate-y-1 [&:not([data-align-trigger=true])]:data-[side=top]:data-ending-style:translate-y-1',\n '[&:not([data-align-trigger=true])]:data-[side=left]:data-starting-style:translate-x-1 [&:not([data-align-trigger=true])]:data-[side=left]:data-ending-style:translate-x-1',\n '[&:not([data-align-trigger=true])]:data-[side=right]:data-starting-style:-translate-x-1 [&:not([data-align-trigger=true])]:data-[side=right]:data-ending-style:-translate-x-1',\n '[&:not([data-align-trigger=true])]:data-[side=inline-start]:data-starting-style:translate-x-1 [&:not([data-align-trigger=true])]:data-[side=inline-start]:data-ending-style:translate-x-1',\n '[&:not([data-align-trigger=true])]:data-[side=inline-end]:data-starting-style:-translate-x-1 [&:not([data-align-trigger=true])]:data-[side=inline-end]:data-ending-style:-translate-x-1',\n].join(' ');\n\nexport const motionRecipes = {\n backdrop: `transition-opacity duration-200 ease-out data-ending-style:duration-100 ${fadeStates} ${reducedMotion}`,\n dialog: `transition-[opacity,scale] duration-200 ease-out data-ending-style:duration-150 ${fadeStates} ${scaleStates} ${reducedMotion}`,\n drawer: [\n 'transition-[translate] duration-250 ease-out data-ending-style:duration-200',\n 'data-[side=right]:data-starting-style:translate-x-full data-[side=right]:data-ending-style:translate-x-full',\n 'data-[side=left]:data-starting-style:-translate-x-full data-[side=left]:data-ending-style:-translate-x-full',\n 'data-[side=bottom]:data-starting-style:translate-y-full data-[side=bottom]:data-ending-style:translate-y-full',\n 'data-[side=top]:data-starting-style:-translate-y-full data-[side=top]:data-ending-style:-translate-y-full',\n reducedMotion,\n ].join(' '),\n popup: `transition-[opacity,scale,translate] duration-150 ease-out data-ending-style:duration-100 ${fadeStates} ${scaleStates} ${popupOffset} ${reducedMotion}`,\n disclosure: `overflow-hidden transition-[height,padding-block] duration-200 ease-out data-starting-style:h-0 data-ending-style:h-0 data-starting-style:py-0! data-ending-style:py-0! ${reducedMotion}`,\n chevron: `transition-transform duration-200 ease-out ${reducedMotion}`,\n} as const;\n"],"mappings":";AACA,IAAMA,IAAgB,qGAChBC,IAAa,6DACbC,IAAc,2DACdC,IAAc;CACnB;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,CAAC,KAAK,GAAG,GAEGC,IAAgB;CAC5B,UAAU,2EAA2EH,EAAW,GAAGD;CACnG,QAAQ,mFAAmFC,EAAW,GAAGC,EAAY,GAAGF;CACxH,QAAQ;EACP;EACA;EACA;EACA;EACA;EACAA;CACD,CAAC,CAAC,KAAK,GAAG;CACV,OAAO,6FAA6FC,EAAW,GAAGC,EAAY,GAAGC,EAAY,GAAGH;CAChJ,YAAY,2KAA2KA;CACvL,SAAS,8CAA8CA;AACxD"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useStrings as e } from "./lib/strings.js";
|
|
3
|
+
import { t } from "./utils-C2EKeIw3.js";
|
|
4
|
+
import { n } from "./buttons-Co6GavvM.js";
|
|
5
|
+
import { a as r } from "./typography-Cv8MT-82.js";
|
|
6
|
+
import { t as i } from "./structure-BvW4vG4H.js";
|
|
7
|
+
import { n as a } from "./action-menu-Cx3SdfbN.js";
|
|
8
|
+
import { t as o } from "./badge-BZXZT9wd.js";
|
|
9
|
+
import { a as s } from "./tabs-DY09eoZg.js";
|
|
10
|
+
import { Fragment as c, forwardRef as l, useCallback as u, useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
|
|
11
|
+
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
12
|
+
import { Globe as v, MoreHorizontal as y } from "lucide-react";
|
|
13
|
+
//#region src/components/base/navigation/language-switcher.tsx
|
|
14
|
+
function b({ locales: e, onRenderLabel: a, variant: o = "buttons", onSelect: s }) {
|
|
15
|
+
let l = u((e, t) => {
|
|
16
|
+
t || s?.(e);
|
|
17
|
+
}, [s]);
|
|
18
|
+
return e.length === 0 ? null : o === "inline" ? /* @__PURE__ */ _("div", {
|
|
19
|
+
className: t("language-switcher--component", "flex items-center justify-center gap-2.5"),
|
|
20
|
+
children: [/* @__PURE__ */ g(v, {
|
|
21
|
+
className: "size-icon text-muted-foreground/70",
|
|
22
|
+
"aria-hidden": "true"
|
|
23
|
+
}), /* @__PURE__ */ g("div", {
|
|
24
|
+
className: "flex items-center justify-center gap-2.5",
|
|
25
|
+
children: e.map((n, i) => {
|
|
26
|
+
let o = a ? a(n) : n.nativeLabel;
|
|
27
|
+
return /* @__PURE__ */ _(c, { children: [/* @__PURE__ */ g("button", {
|
|
28
|
+
type: "button",
|
|
29
|
+
onClick: () => l(n.value, n.active),
|
|
30
|
+
className: t("text-pxs transition-colors", n.active ? "text-primary-accent font-medium" : "text-muted-foreground hover:text-foreground"),
|
|
31
|
+
children: /* @__PURE__ */ g(r, {
|
|
32
|
+
tag: "span",
|
|
33
|
+
size: "pxs",
|
|
34
|
+
weight: n.active ? "medium" : "regular",
|
|
35
|
+
className: "text-inherit",
|
|
36
|
+
children: o
|
|
37
|
+
})
|
|
38
|
+
}), i < e.length - 1 && /* @__PURE__ */ g("span", {
|
|
39
|
+
"aria-hidden": "true",
|
|
40
|
+
className: "size-1 rounded-full bg-border"
|
|
41
|
+
})] }, n.value);
|
|
42
|
+
})
|
|
43
|
+
})]
|
|
44
|
+
}) : /* @__PURE__ */ g(i, {
|
|
45
|
+
direction: "horizontal",
|
|
46
|
+
align: "center",
|
|
47
|
+
justify: "center",
|
|
48
|
+
wrap: !0,
|
|
49
|
+
gap: "md",
|
|
50
|
+
children: e.map((e) => {
|
|
51
|
+
let r = a ? a(e) : e.nativeLabel;
|
|
52
|
+
return /* @__PURE__ */ g(n, {
|
|
53
|
+
type: "button",
|
|
54
|
+
tone: "secondary",
|
|
55
|
+
buttonStyle: e.active ? "solid" : "ghost",
|
|
56
|
+
onClick: () => l(e.value, e.active),
|
|
57
|
+
className: t("min-w-18 justify-center transition-colors", e.active ? "font-semibold text-primary-accent" : "text-muted-foreground"),
|
|
58
|
+
children: r
|
|
59
|
+
}, e.value);
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
b.displayName = "LanguageSwitcher";
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region src/components/base/navigation/navigation-tabs.tsx
|
|
66
|
+
var x = { tabsAria: "Tab navigation" };
|
|
67
|
+
function S(e) {
|
|
68
|
+
let t = e.indexOf("#/");
|
|
69
|
+
if (t >= 0) return e.slice(t).split("?")[0]?.replace(/\/+$/, "") || "#/";
|
|
70
|
+
try {
|
|
71
|
+
let t = typeof window < "u" ? window.location.origin : "http://localhost";
|
|
72
|
+
return new URL(e, t).pathname.replace(/\/+$/, "") || "/";
|
|
73
|
+
} catch {
|
|
74
|
+
return e.split("?")[0]?.replace(/\/+$/, "") || "/";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
var C = l(function({ items: a, currentPath: c, variant: l = "default", scrollable: u = !0, scrollStrings: d, strings: f, className: p }, m) {
|
|
78
|
+
let h = e(x, f), v = S(c ?? (typeof window < "u" ? window.location.pathname : "/")), y = l === "prominent", b = /* @__PURE__ */ g(i, {
|
|
79
|
+
render: /* @__PURE__ */ g("nav", { "aria-label": h.tabsAria }),
|
|
80
|
+
direction: "horizontal",
|
|
81
|
+
gap: "2xs",
|
|
82
|
+
wrap: !1,
|
|
83
|
+
className: t("navigation-tabs--list w-max rounded-radius bg-muted p-space-2xs", y && "rounded-radius bg-muted/60"),
|
|
84
|
+
children: a.map((e) => {
|
|
85
|
+
let i = e.active ?? v === S(e.href), a = typeof e.icon == "string" ? void 0 : e.icon;
|
|
86
|
+
return /* @__PURE__ */ _(n, {
|
|
87
|
+
href: e.href,
|
|
88
|
+
disabled: e.disabled,
|
|
89
|
+
size: "sm",
|
|
90
|
+
tone: i && y ? "primary" : "secondary",
|
|
91
|
+
buttonStyle: i ? "solid" : "ghost",
|
|
92
|
+
icon: a,
|
|
93
|
+
"aria-current": i ? "page" : void 0,
|
|
94
|
+
className: t("navigation-tabs--item shrink-0", "rounded-radius", !y && i && "bg-background text-foreground shadow-sm hover:bg-background/90", !y && !i && "text-muted-foreground hover:bg-background/50 hover:text-foreground"),
|
|
95
|
+
children: [
|
|
96
|
+
typeof e.icon == "string" && /* @__PURE__ */ g("span", {
|
|
97
|
+
className: "navigation-tabs--icon text-inherit",
|
|
98
|
+
"aria-hidden": "true",
|
|
99
|
+
children: e.icon
|
|
100
|
+
}),
|
|
101
|
+
/* @__PURE__ */ g(r, {
|
|
102
|
+
tag: "span",
|
|
103
|
+
size: "inherit",
|
|
104
|
+
weight: "medium",
|
|
105
|
+
lineHeight: "none",
|
|
106
|
+
className: "navigation-tabs--title text-inherit",
|
|
107
|
+
children: e.title
|
|
108
|
+
}),
|
|
109
|
+
e.badge !== void 0 && e.badge !== null && /* @__PURE__ */ g(o, {
|
|
110
|
+
size: "sm",
|
|
111
|
+
tone: "secondary",
|
|
112
|
+
className: "navigation-tabs--badge",
|
|
113
|
+
children: e.badge
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
}, e.href);
|
|
117
|
+
})
|
|
118
|
+
});
|
|
119
|
+
return /* @__PURE__ */ g("div", {
|
|
120
|
+
ref: m,
|
|
121
|
+
className: t("navigation-tabs--component", "w-full min-w-0", !u && "overflow-x-auto", p),
|
|
122
|
+
children: u ? /* @__PURE__ */ g(s, {
|
|
123
|
+
strings: d,
|
|
124
|
+
children: b
|
|
125
|
+
}) : b
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
C.displayName = "NavigationTabs";
|
|
129
|
+
//#endregion
|
|
130
|
+
//#region src/components/base/navigation/overflow-tab-bar.tsx
|
|
131
|
+
var w = {
|
|
132
|
+
more: "More",
|
|
133
|
+
navigationLabel: "Tab navigation"
|
|
134
|
+
}, T = "inline-flex h-action shrink-0 items-center gap-space-sm rounded-radius-md px-control text-pxs font-medium whitespace-nowrap transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40";
|
|
135
|
+
function E(e) {
|
|
136
|
+
return typeof e == "string" || typeof e == "number" || typeof e == "bigint";
|
|
137
|
+
}
|
|
138
|
+
var D = l(function({ items: n, value: i, onValueChange: s, className: c, tabClassName: l, activeTabClassName: u, strings: v, ...b }, x) {
|
|
139
|
+
let S = e(w, v), C = p(null), D = p(null), [O, k] = m(n.length);
|
|
140
|
+
d(() => {
|
|
141
|
+
if (!C.current || !D.current) return;
|
|
142
|
+
let e = C.current, t = D.current, r = () => {
|
|
143
|
+
let r = e.clientWidth;
|
|
144
|
+
if (r === 0) {
|
|
145
|
+
k(n.length);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
let i = Array.from(t.querySelectorAll("[data-tab-id]")), a = 0, o = 0;
|
|
149
|
+
for (let e of i) {
|
|
150
|
+
let t = e.offsetWidth + 4;
|
|
151
|
+
if (a + t + 72 <= r) a += t, o += 1;
|
|
152
|
+
else break;
|
|
153
|
+
}
|
|
154
|
+
k(o === i.length ? o : Math.max(1, o));
|
|
155
|
+
};
|
|
156
|
+
if (r(), typeof ResizeObserver > "u") return;
|
|
157
|
+
let i = new ResizeObserver(r);
|
|
158
|
+
return i.observe(e), () => i.disconnect();
|
|
159
|
+
}, [n]);
|
|
160
|
+
let A = f(() => {
|
|
161
|
+
if (!i) return n;
|
|
162
|
+
let e = n.findIndex((e) => e.id === i);
|
|
163
|
+
if (e < 0 || e < O) return n;
|
|
164
|
+
let t = [...n], r = Math.max(0, O - 1);
|
|
165
|
+
return [t[e], t[r]] = [t[r], t[e]], t;
|
|
166
|
+
}, [
|
|
167
|
+
n,
|
|
168
|
+
i,
|
|
169
|
+
O
|
|
170
|
+
]), j = A.slice(0, O), M = A.slice(O), N = (e) => {
|
|
171
|
+
s?.(e.id), e.onClick?.();
|
|
172
|
+
}, P = (e, n, a) => {
|
|
173
|
+
let s = e.icon, c = t(T, n ? t("bg-card text-foreground shadow-sm", u) : "text-muted-foreground hover:bg-muted/60", l), d = /* @__PURE__ */ _(h, { children: [
|
|
174
|
+
!!s && /* @__PURE__ */ g(s, { className: "size-icon-sm" }),
|
|
175
|
+
E(e.label) ? /* @__PURE__ */ g(r, {
|
|
176
|
+
tag: "span",
|
|
177
|
+
size: "inherit",
|
|
178
|
+
weight: "medium",
|
|
179
|
+
lineHeight: "tight",
|
|
180
|
+
className: "text-inherit",
|
|
181
|
+
children: e.label
|
|
182
|
+
}) : e.label,
|
|
183
|
+
!!e.badge && /* @__PURE__ */ g(o, {
|
|
184
|
+
size: "sm",
|
|
185
|
+
tone: "secondary",
|
|
186
|
+
className: t("ml-space-sm", n ? "bg-primary/10 text-primary-accent" : "bg-muted-foreground/10 text-muted-foreground"),
|
|
187
|
+
children: e.badge
|
|
188
|
+
})
|
|
189
|
+
] });
|
|
190
|
+
return a?.measure ? /* @__PURE__ */ g("span", {
|
|
191
|
+
"data-tab-id": e.id,
|
|
192
|
+
className: t("overflow-tab-bar--measure", c),
|
|
193
|
+
children: d
|
|
194
|
+
}, e.id) : e.href ? /* @__PURE__ */ g("a", {
|
|
195
|
+
href: e.href,
|
|
196
|
+
"data-tab-id": e.id,
|
|
197
|
+
role: "tab",
|
|
198
|
+
"aria-selected": n,
|
|
199
|
+
tabIndex: n || !i ? 0 : -1,
|
|
200
|
+
onClick: () => N(e),
|
|
201
|
+
className: t("overflow-tab-bar--tab", c),
|
|
202
|
+
children: d
|
|
203
|
+
}, e.id) : /* @__PURE__ */ g("button", {
|
|
204
|
+
type: "button",
|
|
205
|
+
"data-tab-id": e.id,
|
|
206
|
+
role: "tab",
|
|
207
|
+
"aria-selected": n,
|
|
208
|
+
tabIndex: n || !i ? 0 : -1,
|
|
209
|
+
onClick: () => N(e),
|
|
210
|
+
className: t("overflow-tab-bar--tab", c),
|
|
211
|
+
children: d
|
|
212
|
+
}, e.id);
|
|
213
|
+
};
|
|
214
|
+
return /* @__PURE__ */ _("div", {
|
|
215
|
+
ref: x,
|
|
216
|
+
className: t("overflow-tab-bar--component relative w-full min-w-0 max-w-full", c),
|
|
217
|
+
...b,
|
|
218
|
+
children: [/* @__PURE__ */ g("div", {
|
|
219
|
+
ref: D,
|
|
220
|
+
"aria-hidden": "true",
|
|
221
|
+
className: "pointer-events-none fixed left-0 top-0 z-[-1] flex h-0 w-0 items-center gap-space-xs overflow-hidden opacity-0",
|
|
222
|
+
children: n.map((e) => P(e, !1, { measure: !0 }))
|
|
223
|
+
}), /* @__PURE__ */ _("div", {
|
|
224
|
+
ref: C,
|
|
225
|
+
className: "overflow-tab-bar--viewport relative flex w-full min-w-0 max-w-full items-center gap-space-xs overflow-hidden rounded-radius bg-muted/40 p-space-xs",
|
|
226
|
+
children: [/* @__PURE__ */ g("div", {
|
|
227
|
+
role: "tablist",
|
|
228
|
+
"aria-label": S.navigationLabel,
|
|
229
|
+
"aria-orientation": "horizontal",
|
|
230
|
+
className: "overflow-tab-bar--tablist flex min-w-0 flex-1 items-center gap-space-xs overflow-hidden",
|
|
231
|
+
children: j.map((e) => P(e, e.id === i))
|
|
232
|
+
}), M.length > 0 && /* @__PURE__ */ g(a, {
|
|
233
|
+
actions: M.map((e) => ({
|
|
234
|
+
id: e.id,
|
|
235
|
+
label: e.label,
|
|
236
|
+
icon: e.icon,
|
|
237
|
+
onClick: () => N(e),
|
|
238
|
+
className: t(e.id === i && "bg-primary/5 text-primary-accent")
|
|
239
|
+
})),
|
|
240
|
+
align: "end",
|
|
241
|
+
density: "table",
|
|
242
|
+
contentClassName: "min-w-40",
|
|
243
|
+
width: "w-auto",
|
|
244
|
+
closeOnSelect: !0,
|
|
245
|
+
preserveOrder: !0,
|
|
246
|
+
renderTrigger: /* @__PURE__ */ _("button", {
|
|
247
|
+
type: "button",
|
|
248
|
+
"aria-label": S.more,
|
|
249
|
+
className: t(T, "text-muted-foreground hover:bg-muted/60"),
|
|
250
|
+
children: [/* @__PURE__ */ g(y, { className: "size-icon-sm" }), /* @__PURE__ */ g(r, {
|
|
251
|
+
tag: "span",
|
|
252
|
+
size: "inherit",
|
|
253
|
+
weight: "medium",
|
|
254
|
+
lineHeight: "tight",
|
|
255
|
+
className: "text-inherit",
|
|
256
|
+
children: S.more
|
|
257
|
+
})]
|
|
258
|
+
})
|
|
259
|
+
})]
|
|
260
|
+
})]
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
D.displayName = "OverflowTabBar";
|
|
264
|
+
//#endregion
|
|
265
|
+
export { b as a, x as i, w as n, C as r, D as t };
|
|
266
|
+
|
|
267
|
+
//# sourceMappingURL=navigation-BTrEb5u4.js.map
|