themelia-react-ui 2.0.6 → 3.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 +250 -0
- package/MIGRATION.md +746 -7
- package/README.md +27 -23
- package/dist/{accordion-0tQUZ20r.js → accordion-DNVqwEIC.js} +36 -36
- package/dist/accordion-DNVqwEIC.js.map +1 -0
- package/dist/action-menu-D5343RwT.js +286 -0
- package/dist/action-menu-D5343RwT.js.map +1 -0
- package/dist/ai-artifact-otrz9ZwS.js +1214 -0
- package/dist/ai-artifact-otrz9ZwS.js.map +1 -0
- package/dist/anchored-positioning-1U_eBFNx.js +9 -0
- package/dist/anchored-positioning-1U_eBFNx.js.map +1 -0
- package/dist/app-shell-CPN30Nb1.js +372 -0
- package/dist/app-shell-CPN30Nb1.js.map +1 -0
- package/dist/{attachment-BCpA4e7i.js → attachment-D2-fpfmv.js} +15 -15
- package/dist/{attachment-BCpA4e7i.js.map → attachment-D2-fpfmv.js.map} +1 -1
- package/dist/{auth-B0girIk_.js → auth-g_oUTDDC.js} +234 -241
- package/dist/auth-g_oUTDDC.js.map +1 -0
- package/dist/{avatar-B9Jnp-T-.js → avatar-Ca3Ihrq4.js} +4 -4
- package/dist/{avatar-B9Jnp-T-.js.map → avatar-Ca3Ihrq4.js.map} +1 -1
- package/dist/{badge-wWauMgAt.js → badge-oGiXblW7.js} +8 -9
- package/dist/badge-oGiXblW7.js.map +1 -0
- package/dist/base/accordion.js +1 -1
- package/dist/base/action-menu.js +1 -1
- package/dist/base/attachment.js +1 -1
- package/dist/base/avatar.js +1 -1
- package/dist/base/badge.js +1 -1
- package/dist/base/batch-action-bar.js +1 -1
- package/dist/base/buttons.js +2 -2
- package/dist/base/cards.js +3 -3
- package/dist/base/carousel.js +11 -11
- package/dist/base/carousel.js.map +1 -1
- package/dist/base/cascader.js +1 -1
- package/dist/base/chart.js +1 -1
- package/dist/base/choice-inputs.js +2 -2
- package/dist/base/code-block.js +1 -1
- package/dist/base/combobox.js +1 -1
- package/dist/base/command.js +1 -1
- package/dist/base/copyable.js +1 -1
- package/dist/base/date-pickers.js +2 -2
- package/dist/base/display.js +7 -7
- package/dist/base/feedback.js +4 -4
- package/dist/base/forms-numeric.js +2 -2
- package/dist/base/forms.js +2 -2
- package/dist/base/inline-edit.js +13 -13
- package/dist/base/inline-edit.js.map +1 -1
- package/dist/base/item.js +1 -1
- package/dist/base/media-gallery.js +203 -2
- package/dist/base/media-gallery.js.map +1 -0
- package/dist/base/metadata-list.js +1 -1
- package/dist/base/navigation.js +7 -7
- package/dist/base/popover-menu.js +1 -1
- package/dist/base/popover.js +1 -1
- package/dist/base/qr-code.js +32 -22
- package/dist/base/qr-code.js.map +1 -1
- package/dist/base/repeaters.js +91 -88
- package/dist/base/repeaters.js.map +1 -1
- package/dist/base/sidebar.js +2 -2
- package/dist/base/signature-pad.js +14 -14
- package/dist/base/signature-pad.js.map +1 -1
- package/dist/base/skeleton.js +1 -1
- package/dist/base/spinner.js +6 -12
- package/dist/base/spinner.js.map +1 -1
- package/dist/base/structure.js +1 -1
- package/dist/base/table.js +1 -1
- package/dist/base/text-inputs.js +3 -3
- package/dist/base/toaster.js +2 -2
- package/dist/base/tree.js +2 -2
- package/dist/base/upload-queue.js +303 -2
- package/dist/base/upload-queue.js.map +1 -0
- package/dist/base/upload.js +3 -4
- package/dist/base/value-inputs.js +1 -1
- package/dist/{batch-action-bar-BoqWIIpV.js → batch-action-bar-D6MZQNnC.js} +10 -10
- package/dist/{batch-action-bar-BoqWIIpV.js.map → batch-action-bar-D6MZQNnC.js.map} +1 -1
- package/dist/blocks/admin.js +242 -228
- package/dist/blocks/admin.js.map +1 -1
- package/dist/blocks/ai.js +395 -357
- package/dist/blocks/ai.js.map +1 -1
- package/dist/blocks/analytics/charts.js +1022 -0
- package/dist/blocks/analytics/charts.js.map +1 -0
- package/dist/blocks/analytics/usage-card.js +1 -1
- package/dist/blocks/analytics.js +171 -1365
- package/dist/blocks/analytics.js.map +1 -1
- package/dist/blocks/collaboration.js +1 -1
- package/dist/blocks/commerce/receipt.js +1 -1
- package/dist/blocks/commerce.js +1487 -1358
- package/dist/blocks/commerce.js.map +1 -1
- package/dist/blocks/data-display.js +2 -3
- package/dist/blocks/onboarding.js +91 -82
- package/dist/blocks/onboarding.js.map +1 -1
- package/dist/blocks/planning.js +25 -25
- package/dist/blocks/planning.js.map +1 -1
- package/dist/blocks/timelines.js +2 -2
- package/dist/{breadcrumbs-Bp9Ke7kd.js → breadcrumbs-CQ9JSlez.js} +52 -45
- package/dist/breadcrumbs-CQ9JSlez.js.map +1 -0
- package/dist/{button-ChBovTx0.js → button-rd6FiHfQ.js} +12 -8
- package/dist/button-rd6FiHfQ.js.map +1 -0
- package/dist/{buttons-DeW0bQeK.js → buttons-pZVgPTZn.js} +230 -246
- package/dist/buttons-pZVgPTZn.js.map +1 -0
- package/dist/{cards-CNXnmvV5.js → cards-CgWyqvgZ.js} +25 -22
- package/dist/{cards-CNXnmvV5.js.map → cards-CgWyqvgZ.js.map} +1 -1
- package/dist/cascader-Cf05pwaq.js +444 -0
- package/dist/cascader-Cf05pwaq.js.map +1 -0
- package/dist/{chart-I7ROnsl8.js → chart-CygRCyIZ.js} +5 -5
- package/dist/{chart-I7ROnsl8.js.map → chart-CygRCyIZ.js.map} +1 -1
- package/dist/{checkbox-MoyHIAPs.js → checkbox-Dy5_XBMZ.js} +4 -4
- package/dist/{checkbox-MoyHIAPs.js.map → checkbox-Dy5_XBMZ.js.map} +1 -1
- package/dist/{choice-inputs-DHGtx0QV.js → choice-inputs-oJEsrb5Y.js} +113 -114
- package/dist/choice-inputs-oJEsrb5Y.js.map +1 -0
- package/dist/{code-block-BSJyq9e-.js → code-block-BrLD7mCi.js} +44 -60
- package/dist/code-block-BrLD7mCi.js.map +1 -0
- package/dist/collapsible-CRCCg_bO.js +80 -0
- package/dist/collapsible-CRCCg_bO.js.map +1 -0
- package/dist/{collection-content-CSnwtOTH.js → collection-content-D7SoDlYd.js} +3 -3
- package/dist/{collection-content-CSnwtOTH.js.map → collection-content-D7SoDlYd.js.map} +1 -1
- package/dist/combobox-Dl6f6kHz.js +362 -0
- package/dist/combobox-Dl6f6kHz.js.map +1 -0
- package/dist/combobox-DrDXtSSt.js +929 -0
- package/dist/combobox-DrDXtSSt.js.map +1 -0
- package/dist/command-CjZ2VzKC.js +432 -0
- package/dist/command-CjZ2VzKC.js.map +1 -0
- package/dist/comments-C2MZyRmh.js +1214 -0
- package/dist/comments-C2MZyRmh.js.map +1 -0
- package/dist/components/base/accordion/accordion.d.ts +11 -3
- package/dist/components/base/action-menu/action-menu.d.ts +11 -3
- package/dist/components/base/buttons/button.d.ts +2 -2
- package/dist/components/base/buttons/index.d.ts +1 -1
- package/dist/components/base/buttons/loader-button.d.ts +6 -15
- package/dist/components/base/cards/index.d.ts +1 -1
- package/dist/components/base/cards/partials/card-body-context.d.ts +6 -0
- package/dist/components/base/cards/smart-card.d.ts +0 -2
- package/dist/components/base/cards/smart-card.types.d.ts +12 -10
- package/dist/components/base/cascader/cascader.d.ts +8 -2
- package/dist/components/base/cascader/cascader.types.d.ts +24 -2
- package/dist/components/base/cascader/index.d.ts +1 -1
- package/dist/components/base/choice-inputs/switch.d.ts +1 -1
- package/dist/components/base/code-block/use-code-copy.d.ts +2 -6
- package/dist/components/base/command/command.d.ts +1 -1
- package/dist/components/base/date-pickers/datepicker.types.d.ts +1 -3
- package/dist/components/base/display/dialog.d.ts +3 -9
- package/dist/components/base/display/index.d.ts +2 -3
- package/dist/components/base/display/separator.d.ts +1 -1
- package/dist/components/base/feedback/alert.d.ts +2 -1
- package/dist/components/base/feedback/empty.d.ts +10 -2
- package/dist/components/base/forms/workflow.d.ts +2 -2
- package/dist/components/base/forms-numeric/dimensions-input.d.ts +9 -17
- package/dist/components/base/forms-numeric/index.d.ts +3 -3
- package/dist/components/base/item/item.types.d.ts +6 -2
- package/dist/components/base/metadata-list/index.d.ts +1 -3
- package/dist/components/base/metadata-list/metadata-list.d.ts +4 -1
- package/dist/components/base/navigation/index.d.ts +2 -2
- package/dist/components/base/navigation/language-switcher.d.ts +7 -6
- package/dist/components/base/navigation/navigation-tabs.d.ts +8 -1
- package/dist/components/base/navigation/page-header/index.d.ts +1 -1
- package/dist/components/base/navigation/page-header/page-header.d.ts +13 -17
- package/dist/components/base/navigation/pagination.d.ts +5 -5
- package/dist/components/base/popover/popover.recipes.d.ts +0 -1
- package/dist/components/base/qr-code/qr-code.d.ts +4 -0
- package/dist/components/base/repeaters/index.d.ts +1 -1
- package/dist/components/base/repeaters/key-value-editor.d.ts +4 -0
- package/dist/components/base/sheet/sheet.d.ts +6 -15
- package/dist/components/base/sidebar/index.d.ts +1 -6
- package/dist/components/base/sidebar/sidebar.d.ts +38 -10
- package/dist/components/base/skeleton/skeleton.d.ts +1 -1
- package/dist/components/base/structure/structure.types.d.ts +11 -2
- package/dist/components/base/text-inputs/index.d.ts +1 -1
- package/dist/components/base/tree/index.d.ts +1 -0
- package/dist/components/base/tree/tree.d.ts +2 -2
- package/dist/components/base/tree/tree.types.d.ts +7 -1
- package/dist/components/base/upload/file-upload.validation.d.ts +37 -1
- package/dist/components/base/upload/image-upload.d.ts +2 -0
- package/dist/components/base/upload/index.d.ts +3 -9
- package/dist/components/base/value-inputs/date-time-input.d.ts +4 -0
- package/dist/components/base/value-inputs/slider.d.ts +5 -2
- package/dist/components/blocks/admin/action-surfaces/index.d.ts +17 -4
- package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +9 -3
- package/dist/components/blocks/admin/index.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +1 -1
- package/dist/components/blocks/ai/ai-artifact/types.d.ts +9 -4
- package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
- package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +11 -1
- package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-citation/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
- package/dist/components/blocks/ai/ai-confirmation/types.d.ts +21 -5
- package/dist/components/blocks/ai/ai-feedback/types.d.ts +7 -2
- package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +9 -3
- package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +1 -1
- package/dist/components/blocks/ai/ai-package-info/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +1 -1
- package/dist/components/blocks/ai/ai-sources/types.d.ts +8 -2
- package/dist/components/blocks/ai/ai-task/ai-task.d.ts +1 -1
- package/dist/components/blocks/ai/ai-task/types.d.ts +10 -1
- package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
- package/dist/components/blocks/ai/ai-tool-call/types.d.ts +6 -0
- package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +1 -1
- package/dist/components/blocks/analytics/analytics.strings.d.ts +2 -0
- package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +11 -1
- package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +7 -5
- package/dist/components/blocks/analytics/charts/index.d.ts +27 -0
- package/dist/components/blocks/analytics/index.d.ts +17 -24
- package/dist/components/blocks/analytics/metric/metric.d.ts +5 -5
- package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +2 -2
- package/dist/components/blocks/analytics/types.d.ts +12 -3
- package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
- package/dist/components/blocks/commerce/address-card/types.d.ts +5 -16
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +2 -2
- package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +6 -4
- package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +0 -2
- package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
- package/dist/components/blocks/commerce/cart-summary/types.d.ts +9 -11
- package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +1 -1
- package/dist/components/blocks/commerce/coupon-input/types.d.ts +7 -3
- package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +0 -2
- package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
- package/dist/components/blocks/commerce/discount-stack/types.d.ts +4 -6
- package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
- package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +2 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-balance.d.ts +18 -0
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +0 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
- package/dist/components/blocks/commerce/giftcard-card/types.d.ts +16 -5
- package/dist/components/blocks/commerce/index.d.ts +8 -8
- package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +2 -0
- package/dist/components/blocks/commerce/inventory-level/types.d.ts +1 -1
- package/dist/components/blocks/commerce/inventory-section/types.d.ts +0 -5
- package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +6 -3
- package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +1 -1
- package/dist/components/blocks/commerce/loyalty-points/types.d.ts +11 -5
- package/dist/components/blocks/commerce/order-status/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/order-status/types.d.ts +8 -8
- package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +1 -1
- package/dist/components/blocks/commerce/order-timeline/types.d.ts +3 -1
- package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
- package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +0 -8
- package/dist/components/blocks/commerce/payment-method/types.d.ts +0 -2
- package/dist/components/blocks/commerce/receipt/index.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +1 -1
- package/dist/components/blocks/commerce/receipt/types.d.ts +10 -0
- package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
- package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +0 -2
- package/dist/components/blocks/commerce/refund-status/types.d.ts +0 -2
- package/dist/components/blocks/commerce/seo-listing/types.d.ts +7 -0
- package/dist/components/blocks/commerce/shared/code-entry.d.ts +39 -0
- package/dist/components/blocks/commerce/shared/order-status.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +1 -1
- package/dist/components/blocks/commerce/subscription-summary/types.d.ts +10 -1
- package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -1
- package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +8 -0
- package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +2 -2
- package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -5
- package/dist/components/blocks/commerce/voucher-entry/types.d.ts +6 -3
- package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +1 -1
- package/dist/components/blocks/content-block-hooks.d.ts +22 -0
- package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +5 -1
- package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +3 -1
- package/dist/components/blocks/data-display/dense-info-card/index.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
- package/dist/components/blocks/data-display/dense-info-card/types.d.ts +12 -5
- package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +6 -0
- package/dist/components/blocks/data-display/index.d.ts +0 -1
- package/dist/components/blocks/data-display/relationship-card-frame.d.ts +1 -1
- package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +5 -3
- package/dist/components/blocks/planning/task-card.types.d.ts +7 -3
- package/dist/components/blocks/timelines/changelog/types.d.ts +2 -2
- package/dist/components/blocks/timelines/index.d.ts +2 -2
- package/dist/components/blocks/timelines/milestones/types.d.ts +2 -2
- package/dist/components/blocks/timelines/shared/timeline.d.ts +6 -0
- package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -1
- package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +2 -2
- package/dist/components/blocks/timelines/steps-card/types.d.ts +13 -1
- package/dist/components/features/activities/activities.strings.d.ts +5 -3
- package/dist/components/features/activities/activities.types.d.ts +28 -11
- package/dist/components/features/activities/hooks/use-activity-feed.d.ts +6 -0
- package/dist/components/features/activities/index.d.ts +1 -1
- package/dist/components/features/activities/partials/activity-headline.d.ts +5 -0
- package/dist/components/features/activities/partials/activity-row.d.ts +12 -13
- package/dist/components/features/activities/partials/row-layers.d.ts +7 -0
- package/dist/components/features/activities/relative-time.d.ts +18 -0
- package/dist/components/features/ai-chat/ai-chat.d.ts +6 -2
- package/dist/components/features/ai-chat/ai-chat.strings.d.ts +41 -2
- package/dist/components/features/ai-chat/ai-chat.types.d.ts +6 -0
- package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +5 -1
- package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -2
- package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +3 -1
- package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +6 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
- package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +19 -5
- package/dist/components/features/appointment-calendar/index.d.ts +1 -1
- package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +18 -10
- package/dist/components/features/async-preview/async-preview.d.ts +2 -2
- package/dist/components/features/async-preview/async-preview.types.d.ts +30 -1
- package/dist/components/features/async-preview/preview-trigger-cell.d.ts +7 -2
- package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
- package/dist/components/features/combobox/combobox.d.ts +12 -3
- package/dist/components/features/combobox/components/error-message.d.ts +3 -1
- package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -2
- package/dist/components/features/combobox/index.d.ts +1 -1
- package/dist/components/features/combobox/types.d.ts +47 -45
- package/dist/components/features/comments/comments.strings.d.ts +6 -5
- package/dist/components/features/comments/comments.types.d.ts +40 -26
- package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -1
- package/dist/components/features/comments/hooks/use-comments.d.ts +8 -1
- package/dist/components/features/data-view/data-view.strings.d.ts +9 -2
- package/dist/components/features/data-view/data-view.types.d.ts +15 -2
- package/dist/components/features/email-composer/email-html.d.ts +5 -0
- package/dist/components/features/email-composer/http.d.ts +2 -0
- package/dist/components/features/email-composer/strings.d.ts +17 -2
- package/dist/components/features/email-composer/types.d.ts +17 -2
- package/dist/components/features/email-composer/use-composer.d.ts +2 -78
- package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-header.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar-legend.d.ts +2 -2
- package/dist/components/features/event-calendar/event-calendar.d.ts +1 -1
- package/dist/components/features/event-calendar/event-calendar.types.d.ts +126 -21
- package/dist/components/features/filters/facets/range-facet.d.ts +13 -8
- package/dist/components/features/filters/filter-context.d.ts +9 -0
- package/dist/components/features/filters/filters.strings.d.ts +36 -3
- package/dist/components/features/filters/filters.types.d.ts +72 -5
- package/dist/components/features/filters/hooks/use-filter-draft.d.ts +1 -0
- package/dist/components/features/filters/index.d.ts +2 -2
- package/dist/components/features/filters/operator-options.d.ts +25 -2
- package/dist/components/features/filters/partials/active-filter-item.d.ts +0 -13
- package/dist/components/features/filters/partials/async-options-status.d.ts +32 -0
- package/dist/components/features/filters/partials/filter-draft-footer.d.ts +11 -0
- package/dist/components/features/filters/partials/filter-operator-select.d.ts +4 -2
- package/dist/components/features/filters/partials/filter-pill.d.ts +5 -1
- package/dist/components/features/filters/partials/filter-tabs.d.ts +2 -1
- package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
- package/dist/components/features/filters/utils/filter-utils.d.ts +29 -4
- package/dist/components/features/global-search/global-search-dialog.d.ts +7 -1
- package/dist/components/features/global-search/global-search.d.ts +7 -1
- package/dist/components/features/global-search/global-search.strings.d.ts +19 -3
- package/dist/components/features/global-search/global-search.types.d.ts +30 -6
- package/dist/components/features/global-search/index.d.ts +1 -1
- package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +6 -1
- package/dist/components/features/global-search/partials/global-search-input.d.ts +2 -0
- package/dist/components/features/kanban/index.d.ts +2 -2
- package/dist/components/features/kanban/kanban-context.d.ts +4 -0
- package/dist/components/features/kanban/kanban-keyboard.d.ts +7 -2
- package/dist/components/features/kanban/kanban.d.ts +10 -1
- package/dist/components/features/kanban/kanban.strings.d.ts +11 -2
- package/dist/components/features/kanban/kanban.types.d.ts +26 -0
- package/dist/components/features/map/map.d.ts +4 -0
- package/dist/components/features/map/place-autocomplete.d.ts +10 -1
- package/dist/components/features/media-library/hooks/use-media-library.d.ts +3 -1
- package/dist/components/features/media-library/media-library.d.ts +1 -1
- package/dist/components/features/media-library/media-library.strings.d.ts +33 -3
- package/dist/components/features/media-library/media-library.types.d.ts +47 -2
- package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
- package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +7 -0
- package/dist/components/features/mentions/index.d.ts +1 -1
- package/dist/components/features/mentions/mentions.strings.d.ts +10 -2
- package/dist/components/features/mentions/partials/mention-chip.d.ts +1 -0
- package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +8 -1
- package/dist/components/features/mentions/partials/mention-picker.d.ts +8 -1
- package/dist/components/features/mentions/partials/mention-search-error.d.ts +6 -0
- package/dist/components/features/mentions/utils/index.d.ts +0 -1
- package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
- package/dist/components/features/overlays/dialog.d.ts +1 -1
- package/dist/components/features/overlays/drawer.d.ts +1 -1
- package/dist/components/features/overlays/index.d.ts +2 -2
- package/dist/components/features/overlays/overlays.strings.d.ts +2 -1
- package/dist/components/features/overlays/overlays.types.d.ts +27 -10
- package/dist/components/features/products/components/index.d.ts +0 -10
- package/dist/components/features/products/components/product-contract-overview.d.ts +1 -1
- package/dist/components/features/products/components/product-details-card.d.ts +1 -1
- package/dist/components/features/products/components/product-operations-card.d.ts +1 -1
- package/dist/components/features/products/components/product-option-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-options-summary.d.ts +1 -1
- package/dist/components/features/products/components/product-policies-card.d.ts +1 -1
- package/dist/components/features/products/components/product-quote-preview-card.d.ts +1 -1
- package/dist/components/features/products/components/product-readiness-card.d.ts +1 -1
- package/dist/components/features/products/components/product-structure-card.d.ts +1 -1
- package/dist/components/features/products/components/product-variant-action-menu.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
- package/dist/components/features/products/components/product-variants-table.d.ts +1 -1
- package/dist/components/features/products/partials/product-surface.d.ts +15 -0
- package/dist/components/features/products/products.strings.d.ts +8 -0
- package/dist/components/features/products/products.types.d.ts +25 -7
- package/dist/components/features/questionnaire/questionnaire.types.d.ts +6 -4
- package/dist/components/features/resource/index.d.ts +2 -3
- package/dist/components/features/resource/resource.d.ts +2 -10
- package/dist/components/features/resource/resource.types.d.ts +7 -149
- package/dist/components/features/resource-assignment/partials/assignment-surface.d.ts +15 -0
- package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +6 -1
- package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +6 -0
- package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +5 -7
- package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +6 -2
- package/dist/components/features/rich-text-editor/partials/index.d.ts +2 -3
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +0 -1
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +2 -3
- package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +13 -1
- package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -0
- package/dist/components/features/schema-form/schema-form.d.ts +1 -1
- package/dist/components/features/schema-form/schema-form.types.d.ts +13 -5
- package/dist/components/features/suggestions/suggestions.strings.d.ts +14 -0
- package/dist/components/features/suggestions/suggestions.types.d.ts +12 -4
- package/dist/components/features/table/data-table.d.ts +1 -1
- package/dist/components/features/table/filter-bar.d.ts +1 -1
- package/dist/components/features/table/pagination.d.ts +1 -1
- package/dist/components/features/table/partials/cell-value.d.ts +1 -1
- package/dist/components/features/table/table-body.d.ts +1 -1
- package/dist/components/features/table/table-header.d.ts +1 -1
- package/dist/components/features/table/table-helpers.d.ts +31 -9
- package/dist/components/features/table/table-region.recipes.d.ts +11 -0
- package/dist/components/features/table/table-toolbar.d.ts +1 -1
- package/dist/components/features/table/table.strings.d.ts +1 -0
- package/dist/components/features/table/table.types.d.ts +74 -48
- package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +4 -0
- package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +10 -7
- package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +17 -0
- package/dist/components/layout/app-shell/app-shell.types.d.ts +46 -49
- package/dist/components/layout/app-shell/index.d.ts +2 -2
- package/dist/components/layout/app-shell/shell-regions.d.ts +9 -0
- package/dist/components/layout/app-shell/shell-skip-link.d.ts +9 -0
- package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
- package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
- package/dist/components/layout/auth/auth-shell.d.ts +1 -1
- package/dist/components/layout/auth/auth.types.d.ts +0 -5
- package/dist/components/layout/containers/inline-gutter-context.d.ts +7 -0
- package/dist/components/layout/containers/main-landmark-context.d.ts +6 -0
- package/dist/components/layout/header/header.types.d.ts +16 -6
- package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +1 -1
- package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
- package/dist/components/layout/header/partials/header-search.d.ts +1 -1
- package/dist/components/layout/hooks/use-command-shortcut.d.ts +10 -1
- package/dist/components/layout/layout.types.d.ts +2 -2
- package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
- package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +9 -0
- package/dist/components/layout/navigation/section-nav/section-nav.d.ts +8 -1
- package/dist/components/layout/page/index.d.ts +2 -3
- package/dist/components/layout/page/page.strings.d.ts +12 -0
- package/dist/components/layout/page/page.types.d.ts +7 -110
- package/dist/components/layout/page/partials/page-header.d.ts +1 -1
- package/dist/components/layout/settings/index.d.ts +1 -1
- package/dist/components/layout/settings/settings.d.ts +3 -5
- package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
- package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
- package/dist/components/layout/sidebar/index.d.ts +1 -1
- package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +15 -7
- package/dist/components/layout/sidebar/sidebar.types.d.ts +10 -12
- package/dist/components/layout/sidebar/sidebar.utils.d.ts +4 -0
- package/dist/components/layout/workspace/workspace.strings.d.ts +2 -2
- package/dist/components/layout/workspace/workspace.types.d.ts +13 -7
- package/dist/components/primitives/date.d.ts +22 -3
- package/dist/components/primitives/file-size.d.ts +8 -2
- package/dist/components/primitives/index.d.ts +1 -1
- package/dist/components/primitives/initials.d.ts +3 -1
- package/dist/components/primitives/link.d.ts +8 -1
- package/dist/components/primitives/money.d.ts +1 -1
- package/dist/components/primitives/number.d.ts +2 -1
- package/dist/components/typography/heading.d.ts +9 -3
- package/dist/components/typography/index.d.ts +1 -1
- package/dist/components/typography/text-link.d.ts +10 -3
- package/dist/components/ui/badge.d.ts +2 -4
- package/dist/components/ui/breadcrumb.d.ts +2 -3
- package/dist/components/ui/button.d.ts +8 -2
- package/dist/components/ui/collapsible.d.ts +1 -4
- package/dist/components/ui/command.d.ts +20 -18
- package/dist/components/ui/dialog.d.ts +3 -9
- package/dist/components/ui/empty.d.ts +2 -2
- package/dist/components/ui/input-group.d.ts +3 -3
- package/dist/components/ui/item.d.ts +3 -3
- package/dist/components/ui/popover.d.ts +3 -7
- package/dist/components/ui/sheet.d.ts +4 -12
- package/dist/components/ui/sidebar-state.d.ts +6 -1
- package/dist/components/ui/sidebar.d.ts +7 -4
- package/dist/components/ui/tabs.d.ts +2 -2
- package/dist/components/ui/toggle-group.d.ts +3 -3
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/tooltip.d.ts +1 -3
- package/dist/{containers-CSdc32h9.js → containers-BdfLTP4w.js} +37 -32
- package/dist/containers-BdfLTP4w.js.map +1 -0
- package/dist/content-block-hooks-Z3iKjqd1.js +17 -0
- package/dist/content-block-hooks-Z3iKjqd1.js.map +1 -0
- package/dist/{copyable-3fdHfMR3.js → copyable-Bmr14W0d.js} +6 -6
- package/dist/{copyable-3fdHfMR3.js.map → copyable-Bmr14W0d.js.map} +1 -1
- package/dist/{data-display-Cmj-xZYl.js → data-display-CWe9SOYh.js} +264 -251
- package/dist/data-display-CWe9SOYh.js.map +1 -0
- package/dist/date-3qsCE1ID.js +209 -0
- package/dist/date-3qsCE1ID.js.map +1 -0
- package/dist/{date-picker-CyQlFYsP.js → date-picker-D1keJQIG.js} +129 -129
- package/dist/date-picker-D1keJQIG.js.map +1 -0
- package/dist/date-pickers-D8aJoeHc.js +185 -0
- package/dist/date-pickers-D8aJoeHc.js.map +1 -0
- package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -1
- package/dist/{display-CT_N2a3w.js → display-VlmP1I0i.js} +23 -46
- package/dist/display-VlmP1I0i.js.map +1 -0
- package/dist/{dropdown-menu-C08iIugv.js → dropdown-menu-B8hjvbkS.js} +9 -9
- package/dist/{dropdown-menu-C08iIugv.js.map → dropdown-menu-B8hjvbkS.js.map} +1 -1
- package/dist/dropzone-CHBNK3de.js +116 -0
- package/dist/dropzone-CHBNK3de.js.map +1 -0
- package/dist/features/activities.js +682 -628
- package/dist/features/activities.js.map +1 -1
- package/dist/features/ai-chat.js +258 -226
- package/dist/features/ai-chat.js.map +1 -1
- package/dist/features/appointment-calendar.js +436 -340
- package/dist/features/appointment-calendar.js.map +1 -1
- package/dist/features/async-preview.js +351 -265
- package/dist/features/async-preview.js.map +1 -1
- package/dist/features/combobox.js +2 -2
- package/dist/features/comments.js +1 -1
- package/dist/features/data-view.js +212 -151
- package/dist/features/data-view.js.map +1 -1
- package/dist/features/email-composer/engine.js +1 -1
- package/dist/features/email-composer.js +344 -315
- package/dist/features/email-composer.js.map +1 -1
- package/dist/features/event-calendar.js +504 -355
- package/dist/features/event-calendar.js.map +1 -1
- package/dist/features/filters.js +2 -2
- package/dist/features/global-search.js +250 -206
- package/dist/features/global-search.js.map +1 -1
- package/dist/features/kanban.js +269 -189
- package/dist/features/kanban.js.map +1 -1
- package/dist/features/map.js +385 -371
- package/dist/features/map.js.map +1 -1
- package/dist/features/media-library.js +1571 -1199
- package/dist/features/media-library.js.map +1 -1
- package/dist/features/mentions.js +2 -2
- package/dist/features/overlays.js +2 -2
- package/dist/features/products.js +1780 -1691
- package/dist/features/products.js.map +1 -1
- package/dist/features/questionnaire.js +165 -152
- package/dist/features/questionnaire.js.map +1 -1
- package/dist/features/resource-assignment.js +223 -191
- package/dist/features/resource-assignment.js.map +1 -1
- package/dist/features/resource.js +55 -220
- package/dist/features/resource.js.map +1 -1
- package/dist/features/rich-text-editor.js +3 -3
- package/dist/features/schema-form.js +280 -228
- package/dist/features/schema-form.js.map +1 -1
- package/dist/features/suggestions.js +48 -39
- package/dist/features/suggestions.js.map +1 -1
- package/dist/features/table.js +2 -2
- package/dist/features/theme-tweaker.js +723 -633
- package/dist/features/theme-tweaker.js.map +1 -1
- package/dist/feedback-DmqmXKLn.js +254 -0
- package/dist/feedback-DmqmXKLn.js.map +1 -0
- package/dist/{field-affordance-recipes-D6H7tVJi.js → field-affordance-recipes-DfbMadot.js} +13 -9
- package/dist/field-affordance-recipes-DfbMadot.js.map +1 -0
- package/dist/{field-state-recipes-7sza8QbC.js → field-state-recipes-EtCxpEy3.js} +6 -2
- package/dist/field-state-recipes-EtCxpEy3.js.map +1 -0
- package/dist/filters-BviMRMLS.js +2692 -0
- package/dist/filters-BviMRMLS.js.map +1 -0
- package/dist/{focus-recipes-B653VaLq.js → focus-recipes-DSkiUvUp.js} +3 -3
- package/dist/focus-recipes-DSkiUvUp.js.map +1 -0
- package/dist/{form-field-CAPdwdnZ.js → form-field-BdfCwSoQ.js} +5 -5
- package/dist/{form-field-CAPdwdnZ.js.map → form-field-BdfCwSoQ.js.map} +1 -1
- package/dist/{form-sizing-CgcrUbLU.js → form-sizing-DE_dZw32.js} +3 -3
- package/dist/{form-sizing-CgcrUbLU.js.map → form-sizing-DE_dZw32.js.map} +1 -1
- package/dist/{forms-B3W8CH7-.js → forms-B8DzJnBN.js} +35 -35
- package/dist/forms-B8DzJnBN.js.map +1 -0
- package/dist/forms-numeric-DOBswjKj.js +992 -0
- package/dist/forms-numeric-DOBswjKj.js.map +1 -0
- package/dist/{header-ZIIsRKxP.js → header-Cq3G0ZRP.js} +100 -95
- package/dist/header-Cq3G0ZRP.js.map +1 -0
- package/dist/{hooks-BitHSh-Y.js → hooks-DHfeSMAO.js} +34 -14
- package/dist/hooks-DHfeSMAO.js.map +1 -0
- package/dist/{http-D_6rOnzU.js → http-Cu-GPpss.js} +61 -35
- package/dist/http-Cu-GPpss.js.map +1 -0
- package/dist/{icon-badge-npxF1SLX.js → icon-badge-B0Kq7wom.js} +3 -3
- package/dist/{icon-badge-npxF1SLX.js.map → icon-badge-B0Kq7wom.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/inline-gutter-context-CSqmrMFZ.js +11 -0
- package/dist/inline-gutter-context-CSqmrMFZ.js.map +1 -0
- package/dist/{input-DIREVYHs.js → input-2YrgTUrz.js} +3 -3
- package/dist/{input-DIREVYHs.js.map → input-2YrgTUrz.js.map} +1 -1
- package/dist/{input-7KAc7XQL.js → input-DfJyrjoR.js} +6 -6
- package/dist/{input-7KAc7XQL.js.map → input-DfJyrjoR.js.map} +1 -1
- package/dist/{interaction-recipes-4wZ2tvfb.js → interaction-recipes-DmuS1ase.js} +2 -2
- package/dist/{interaction-recipes-4wZ2tvfb.js.map → interaction-recipes-DmuS1ase.js.map} +1 -1
- package/dist/item-GJ9mvCcg.js +279 -0
- package/dist/item-GJ9mvCcg.js.map +1 -0
- package/dist/layout/app-shell.js +1 -1
- package/dist/layout/auth.js +1 -1
- package/dist/layout/containers.js +1 -1
- package/dist/layout/header.js +1 -1
- package/dist/layout/hooks.js +1 -1
- package/dist/layout/navigation.js +1 -1
- package/dist/layout/page.js +2 -2
- package/dist/layout/settings.js +2 -2
- package/dist/layout/sidebar.js +3 -3
- package/dist/layout/workspace.js +1 -1
- package/dist/layout.js +12 -12
- package/dist/{layout.types-E_GAApzO.js → layout.types-DbtnyAtd.js} +11 -8
- package/dist/layout.types-DbtnyAtd.js.map +1 -0
- package/dist/lib/anchored-positioning.d.ts +11 -0
- package/dist/lib/field-affordance-recipes.d.ts +10 -0
- package/dist/lib/field-state-recipes.d.ts +6 -0
- package/dist/lib/focus-recipes.d.ts +7 -0
- package/dist/lib/format.d.ts +25 -0
- package/dist/lib/money-format.d.ts +6 -0
- package/dist/lib/motion-recipes.d.ts +6 -0
- package/dist/lib/surface-recipes.d.ts +32 -2
- package/dist/lib/theme-scope.d.ts +17 -1
- package/dist/lib/token-merge.generated.d.ts +13 -19
- package/dist/lib/ui-provider/index.d.ts +1 -1
- package/dist/lib/ui-provider/types.d.ts +5 -0
- package/dist/lib/use-controllable-state.d.ts +16 -0
- package/dist/lib/use-copy-feedback.d.ts +15 -0
- package/dist/lib/utils.js +1 -1
- package/dist/lib/variant-props.d.ts +9 -0
- package/dist/main-landmark-context-BAsyqp2I.js +11 -0
- package/dist/main-landmark-context-BAsyqp2I.js.map +1 -0
- package/dist/mentions-zz0ewNIq.js +670 -0
- package/dist/mentions-zz0ewNIq.js.map +1 -0
- package/dist/{message-BJHnn43M.js → message-BiiVrRrm.js} +10 -7
- package/dist/{message-BJHnn43M.js.map → message-BiiVrRrm.js.map} +1 -1
- package/dist/{metadata-list-XkqZ_UXH.js → metadata-list-G85roWjS.js} +13 -12
- package/dist/metadata-list-G85roWjS.js.map +1 -0
- package/dist/{motion-recipes-DitYv6P2.js → motion-recipes-CUc_aHuG.js} +7 -4
- package/dist/motion-recipes-CUc_aHuG.js.map +1 -0
- package/dist/navigation-C0Be5C3i.js +304 -0
- package/dist/navigation-C0Be5C3i.js.map +1 -0
- package/dist/{navigation-Bt-v7rWP.js → navigation-CmqaQR_G.js} +99 -103
- package/dist/navigation-CmqaQR_G.js.map +1 -0
- package/dist/number-NFWKIoiK.js +340 -0
- package/dist/number-NFWKIoiK.js.map +1 -0
- package/dist/{overflow-tab-bar-BQCA2Zn2.js → overflow-tab-bar-DV7HE_3t.js} +8 -8
- package/dist/{overflow-tab-bar-BQCA2Zn2.js.map → overflow-tab-bar-DV7HE_3t.js.map} +1 -1
- package/dist/overlays-D-gAIfPF.js +1018 -0
- package/dist/overlays-D-gAIfPF.js.map +1 -0
- package/dist/page-D4pQhgSq.js +216 -0
- package/dist/page-D4pQhgSq.js.map +1 -0
- package/dist/{page-header-commands-DIKspJfx.js → page-header-commands-elelNOfd.js} +29 -29
- package/dist/{page-header-commands-DIKspJfx.js.map → page-header-commands-elelNOfd.js.map} +1 -1
- package/dist/{pagination-Br8TdV9A.js → pagination-BuSWw1US.js} +22 -23
- package/dist/pagination-BuSWw1US.js.map +1 -0
- package/dist/{popover-k8TdUcAt.js → popover-BpMxbqEK.js} +73 -69
- package/dist/popover-BpMxbqEK.js.map +1 -0
- package/dist/{popover-menu-yn-o0kyA.js → popover-menu-CO-_iiuz.js} +7 -7
- package/dist/{popover-menu-yn-o0kyA.js.map → popover-menu-CO-_iiuz.js.map} +1 -1
- package/dist/{popover.recipes-DJ0AkUan.js → popover.recipes-BqkdvlZn.js} +3 -4
- package/dist/{popover.recipes-DJ0AkUan.js.map → popover.recipes-BqkdvlZn.js.map} +1 -1
- package/dist/{portal-recipes-DyUXqUtD.js → portal-recipes-BPeS4rGB.js} +2 -2
- package/dist/{portal-recipes-DyUXqUtD.js.map → portal-recipes-BPeS4rGB.js.map} +1 -1
- package/dist/primitives-BlC1lXBr.js +447 -0
- package/dist/primitives-BlC1lXBr.js.map +1 -0
- package/dist/primitives.js +4 -4
- package/dist/{progress-DZFXXzPs.js → progress-RARK8AjB.js} +5 -5
- package/dist/{progress-DZFXXzPs.js.map → progress-RARK8AjB.js.map} +1 -1
- package/dist/receipt-CUf2Vegp.js +114 -0
- package/dist/receipt-CUf2Vegp.js.map +1 -0
- package/dist/{rich-text-BnTzZjIo.js → rich-text-Cypm9__d.js} +7 -8
- package/dist/{rich-text-BnTzZjIo.js.map → rich-text-Cypm9__d.js.map} +1 -1
- package/dist/rich-text-editor-Z6cQepsA.js +919 -0
- package/dist/rich-text-editor-Z6cQepsA.js.map +1 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js +100 -0
- package/dist/rich-text-editor-toolbar-DYbRJARB.js.map +1 -0
- package/dist/rich-text-tree-DdKHIJx4.js +154 -0
- package/dist/rich-text-tree-DdKHIJx4.js.map +1 -0
- package/dist/safe-image-src-C6kQSMBZ.js +17 -0
- package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
- package/dist/{scroll-area-Bj6CRUif.js → scroll-area-B9HKbji0.js} +3 -3
- package/dist/{scroll-area-Bj6CRUif.js.map → scroll-area-B9HKbji0.js.map} +1 -1
- package/dist/{separator-DM6gs2vu.js → separator-DaDe26sf.js} +3 -3
- package/dist/separator-DaDe26sf.js.map +1 -0
- package/dist/{separator-B9ewiCGO.js → separator-KGsNXt2J.js} +2 -2
- package/dist/{separator-B9ewiCGO.js.map → separator-KGsNXt2J.js.map} +1 -1
- package/dist/services/actions/action-adapters.d.ts +5 -2
- package/dist/services/actions/index.d.ts +1 -1
- package/dist/services/actions.js +2 -2
- package/dist/services/actions.js.map +1 -1
- package/dist/settings-D5j_RJvT.js +160 -0
- package/dist/settings-D5j_RJvT.js.map +1 -0
- package/dist/sheet-B6j_BE9O.js +241 -0
- package/dist/sheet-B6j_BE9O.js.map +1 -0
- package/dist/{sidebar-CmD6a-HK.js → sidebar-C-iQ_TJP.js} +377 -351
- package/dist/sidebar-C-iQ_TJP.js.map +1 -0
- package/dist/sidebar-D5VO2W8S.js +715 -0
- package/dist/sidebar-D5VO2W8S.js.map +1 -0
- package/dist/{skeleton-DDgdhmu9.js → skeleton-Cab_KgVo.js} +12 -12
- package/dist/skeleton-Cab_KgVo.js.map +1 -0
- package/dist/{smart-card-B6vLxqa_.js → smart-card-C59z6KFO.js} +217 -210
- package/dist/smart-card-C59z6KFO.js.map +1 -0
- package/dist/{structure-DZJ2wbAU.js → structure-DElaQwwN.js} +2 -2
- package/dist/{structure-DZJ2wbAU.js.map → structure-DElaQwwN.js.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/{surface-recipes-C8mNycaY.js → surface-recipes-DV6rrOFq.js} +10 -2
- package/dist/surface-recipes-DV6rrOFq.js.map +1 -0
- package/dist/{table-CXSPHH25.js → table-CSRUgpdK.js} +62 -61
- package/dist/table-CSRUgpdK.js.map +1 -0
- package/dist/table-DdXDBsR_.js +1657 -0
- package/dist/table-DdXDBsR_.js.map +1 -0
- package/dist/{tabs-C4Kr_hCr.js → tabs-WnHfV2pM.js} +27 -27
- package/dist/tabs-WnHfV2pM.js.map +1 -0
- package/dist/{text-inputs-jdkS3ReG.js → text-inputs-ljyBYaCd.js} +112 -112
- package/dist/text-inputs-ljyBYaCd.js.map +1 -0
- package/dist/theme.css +21 -5
- package/dist/timelines-mOmS9Eh3.js +479 -0
- package/dist/timelines-mOmS9Eh3.js.map +1 -0
- package/dist/tooltip-yjX-Uv-p.js +112 -0
- package/dist/tooltip-yjX-Uv-p.js.map +1 -0
- package/dist/{tree-CeYVzdFE.js → tree-YpkxUG2Z.js} +80 -72
- package/dist/tree-YpkxUG2Z.js.map +1 -0
- package/dist/typography/rich-text.js +1 -1
- package/dist/{typography-C7-YMW1S.js → typography-C0dELqYV.js} +46 -40
- package/dist/typography-C0dELqYV.js.map +1 -0
- package/dist/typography.js +1 -1
- package/dist/{ui-provider-C-74NVLc.js → ui-provider-Bu1S-o96.js} +4 -3
- package/dist/ui-provider-Bu1S-o96.js.map +1 -0
- package/dist/ui-provider.js +2 -2
- package/dist/{upload-Hdm5gObf.js → upload-DMuMYJFT.js} +276 -268
- package/dist/upload-DMuMYJFT.js.map +1 -0
- package/dist/{usage-card-9s8hLDfn.js → usage-card-DDPki5P1.js} +57 -54
- package/dist/usage-card-DDPki5P1.js.map +1 -0
- package/dist/use-controllable-state-BlP8SyBI.js +13 -0
- package/dist/use-controllable-state-BlP8SyBI.js.map +1 -0
- package/dist/use-copy-feedback-CzcaqlLf.js +28 -0
- package/dist/use-copy-feedback-CzcaqlLf.js.map +1 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js +251 -0
- package/dist/use-metric-format-options-Dk4rC1NO.js.map +1 -0
- package/dist/{utils-DhuoqFy4.js → utils-BVbAG2J6.js} +98 -76
- package/dist/utils-BVbAG2J6.js.map +1 -0
- package/dist/value-inputs-h5MwjGCo.js +982 -0
- package/dist/value-inputs-h5MwjGCo.js.map +1 -0
- package/dist/value-typography-D15uwfj-.js +154 -0
- package/dist/value-typography-D15uwfj-.js.map +1 -0
- package/dist/workspace-DIryPqBt.js +400 -0
- package/dist/workspace-DIryPqBt.js.map +1 -0
- package/docs/consumer-skill/SKILL.md +7 -0
- package/docs/consumer-skill/agents/themelia-ui-designer.md +11 -2
- package/docs/consumer-skill/examples/analytics.tsx +1 -1
- package/docs/consumer-skill/examples/app-layout.tsx +3 -3
- package/docs/consumer-skill/examples/commerce-lines.tsx +7 -5
- package/docs/consumer-skill/examples/detail.tsx +3 -2
- package/docs/consumer-skill/examples/email-composer.tsx +1 -1
- package/docs/consumer-skill/examples/index-table.tsx +2 -2
- package/docs/consumer-skill/examples/scoped-directory.tsx +7 -6
- package/docs/consumer-skill/references/agents-md.md +20 -16
- package/docs/consumer-skill/references/analytics.md +20 -6
- package/docs/consumer-skill/references/building-views.md +213 -0
- package/docs/consumer-skill/references/catalogue.md +617 -0
- package/docs/consumer-skill/references/component-contracts.json +10202 -18084
- package/docs/consumer-skill/references/composition.md +21 -17
- package/docs/consumer-skill/references/discovery.md +8 -5
- package/docs/consumer-skill/references/installation.md +10 -4
- package/docs/consumer-skill/references/integration.md +5 -5
- package/docs/consumer-skill/references/product-composition.md +2 -2
- package/docs/consumer-skill/references/public-api.json +580 -633
- package/docs/consumer-skill/references/review.md +6 -4
- package/docs/consumer-skill/references/screen-archetypes.md +2 -2
- package/docs/consumer-skill/references/theming.md +1 -1
- package/docs/consumer-skill/references/tokens.json +4 -4
- package/docs/consumer-skill/references/workflows.md +7 -7
- package/docs/consumer-skill/scripts/composition-policy.mjs +40 -20
- package/docs/consumer-skill/scripts/composition.mjs +4 -1
- package/docs/consumer-skill/scripts/discovery.mjs +3 -1
- package/docs/consumer-skill/scripts/setup-skills.mjs +31 -4
- package/docs/consumer-skills/themelia-components/SKILL.md +8 -4
- package/docs/consumer-skills/themelia-composition/SKILL.md +7 -3
- package/docs/consumer-skills/themelia-design/SKILL.md +7 -1
- package/docs/consumer-skills/themelia-tokenization/SKILL.md +1 -1
- package/package.json +9 -12
- package/templates/README.md +3 -2
- package/templates/admin-shell-template.tsx +49 -9
- package/templates/analytics-operations-template.tsx +20 -24
- package/templates/customers-template.tsx +12 -9
- package/templates/index.ts +2 -8
- package/templates/orders-template.tsx +28 -24
- package/templates/products-template.tsx +14 -4
- package/templates/user-permissions-template.tsx +11 -14
- package/dist/accordion-0tQUZ20r.js.map +0 -1
- package/dist/action-menu-C0gjzLyE.js +0 -284
- package/dist/action-menu-C0gjzLyE.js.map +0 -1
- package/dist/ai-artifact-CGGpQryR.js +0 -1200
- package/dist/ai-artifact-CGGpQryR.js.map +0 -1
- package/dist/anchored-positioning-DPnKTvNs.js +0 -6
- package/dist/anchored-positioning-DPnKTvNs.js.map +0 -1
- package/dist/app-shell-EHuuRDGy.js +0 -321
- package/dist/app-shell-EHuuRDGy.js.map +0 -1
- package/dist/auth-B0girIk_.js.map +0 -1
- package/dist/badge-wWauMgAt.js.map +0 -1
- package/dist/base/sheet.js +0 -3
- package/dist/breadcrumbs-Bp9Ke7kd.js.map +0 -1
- package/dist/button-ChBovTx0.js.map +0 -1
- package/dist/buttons-DeW0bQeK.js.map +0 -1
- package/dist/cascader-CrAl9zD5.js +0 -439
- package/dist/cascader-CrAl9zD5.js.map +0 -1
- package/dist/choice-inputs-DHGtx0QV.js.map +0 -1
- package/dist/code-block-BSJyq9e-.js.map +0 -1
- package/dist/collapsible-BzJ91LUG.js +0 -81
- package/dist/collapsible-BzJ91LUG.js.map +0 -1
- package/dist/combobox-Bcvu5J8O.js +0 -363
- package/dist/combobox-Bcvu5J8O.js.map +0 -1
- package/dist/combobox-C2JiSQPc.js +0 -915
- package/dist/combobox-C2JiSQPc.js.map +0 -1
- package/dist/command-9e52NPgK.js +0 -425
- package/dist/command-9e52NPgK.js.map +0 -1
- package/dist/comments-BsgErEqd.js +0 -1174
- package/dist/comments-BsgErEqd.js.map +0 -1
- package/dist/components/base/buttons/tooltip-button.d.ts +0 -7
- package/dist/components/base/display/content-block.d.ts +0 -75
- package/dist/components/base/display/content-block.strings.d.ts +0 -5
- package/dist/components/base/sheet/index.d.ts +0 -29
- package/dist/components/blocks/ai/use-copy-feedback.d.ts +0 -6
- package/dist/components/blocks/data-display/metadata/index.d.ts +0 -30
- package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +0 -10
- package/dist/components/features/resource/resource.strings.d.ts +0 -12
- package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +0 -8
- package/dist/components/features/sync/index.d.ts +0 -26
- package/dist/components/features/sync/sync-range-dialog-form.d.ts +0 -5
- package/dist/components/features/sync/sync.strings.d.ts +0 -18
- package/dist/components/features/sync/sync.types.d.ts +0 -44
- package/dist/components/layout/page/partials/page-actions.d.ts +0 -3
- package/dist/components/ui/slot.d.ts +0 -6
- package/dist/containers-CSdc32h9.js.map +0 -1
- package/dist/data-display-Cmj-xZYl.js.map +0 -1
- package/dist/date-Br0FicVv.js +0 -144
- package/dist/date-Br0FicVv.js.map +0 -1
- package/dist/date-picker-CyQlFYsP.js.map +0 -1
- package/dist/date-pickers-tj2MXmXd.js +0 -185
- package/dist/date-pickers-tj2MXmXd.js.map +0 -1
- package/dist/display-CT_N2a3w.js.map +0 -1
- package/dist/features/sync.js +0 -142
- package/dist/features/sync.js.map +0 -1
- package/dist/feedback-Dzo1xtAU.js +0 -246
- package/dist/feedback-Dzo1xtAU.js.map +0 -1
- package/dist/field-affordance-recipes-D6H7tVJi.js.map +0 -1
- package/dist/field-state-recipes-7sza8QbC.js.map +0 -1
- package/dist/filters-Dl80yYtN.js +0 -2415
- package/dist/filters-Dl80yYtN.js.map +0 -1
- package/dist/focus-recipes-B653VaLq.js.map +0 -1
- package/dist/forms-B3W8CH7-.js.map +0 -1
- package/dist/forms-numeric-CwjQJe-O.js +0 -991
- package/dist/forms-numeric-CwjQJe-O.js.map +0 -1
- package/dist/header-ZIIsRKxP.js.map +0 -1
- package/dist/hooks-BitHSh-Y.js.map +0 -1
- package/dist/http-D_6rOnzU.js.map +0 -1
- package/dist/item-FfWnaYST.js +0 -278
- package/dist/item-FfWnaYST.js.map +0 -1
- package/dist/layout.types-E_GAApzO.js.map +0 -1
- package/dist/media-gallery-C81DAnKI.js +0 -203
- package/dist/media-gallery-C81DAnKI.js.map +0 -1
- package/dist/mentions-qOnedSt4.js +0 -639
- package/dist/mentions-qOnedSt4.js.map +0 -1
- package/dist/metadata-list-XkqZ_UXH.js.map +0 -1
- package/dist/motion-recipes-DitYv6P2.js.map +0 -1
- package/dist/navigation-BgtPJAhi.js +0 -288
- package/dist/navigation-BgtPJAhi.js.map +0 -1
- package/dist/navigation-Bt-v7rWP.js.map +0 -1
- package/dist/number-CYqBcrSj.js +0 -346
- package/dist/number-CYqBcrSj.js.map +0 -1
- package/dist/overlays-CC8zI3Du.js +0 -1017
- package/dist/overlays-CC8zI3Du.js.map +0 -1
- package/dist/page-BoQ1VaFJ.js +0 -331
- package/dist/page-BoQ1VaFJ.js.map +0 -1
- package/dist/pagination-Br8TdV9A.js.map +0 -1
- package/dist/popover-k8TdUcAt.js.map +0 -1
- package/dist/primitives-BkkQjYl7.js +0 -385
- package/dist/primitives-BkkQjYl7.js.map +0 -1
- package/dist/receipt-C7LhOg7Q.js +0 -116
- package/dist/receipt-C7LhOg7Q.js.map +0 -1
- package/dist/rich-text-editor-CAurDwT5.js +0 -1273
- package/dist/rich-text-editor-CAurDwT5.js.map +0 -1
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js +0 -99
- package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +0 -1
- package/dist/rich-text-tree-BqyQ_7-R.js +0 -66
- package/dist/rich-text-tree-BqyQ_7-R.js.map +0 -1
- package/dist/sanitize-html-BWkH4dLM.js +0 -105
- package/dist/sanitize-html-BWkH4dLM.js.map +0 -1
- package/dist/separator-DM6gs2vu.js.map +0 -1
- package/dist/settings-DZPHgpx4.js +0 -155
- package/dist/settings-DZPHgpx4.js.map +0 -1
- package/dist/sheet-C4DHsgLk.js +0 -250
- package/dist/sheet-C4DHsgLk.js.map +0 -1
- package/dist/sidebar-C8BnDwTH.js +0 -709
- package/dist/sidebar-C8BnDwTH.js.map +0 -1
- package/dist/sidebar-CmD6a-HK.js.map +0 -1
- package/dist/skeleton-DDgdhmu9.js.map +0 -1
- package/dist/slot-CLF9kLrS.js +0 -16
- package/dist/slot-CLF9kLrS.js.map +0 -1
- package/dist/smart-card-B6vLxqa_.js.map +0 -1
- package/dist/surface-recipes-C8mNycaY.js.map +0 -1
- package/dist/table-CBonSdTp.js +0 -1584
- package/dist/table-CBonSdTp.js.map +0 -1
- package/dist/table-CXSPHH25.js.map +0 -1
- package/dist/tabs-C4Kr_hCr.js.map +0 -1
- package/dist/text-inputs-jdkS3ReG.js.map +0 -1
- package/dist/timelines-CoPwdJP0.js +0 -458
- package/dist/timelines-CoPwdJP0.js.map +0 -1
- package/dist/tooltip-31NwIpTo.js +0 -113
- package/dist/tooltip-31NwIpTo.js.map +0 -1
- package/dist/tree-CeYVzdFE.js.map +0 -1
- package/dist/typography-C7-YMW1S.js.map +0 -1
- package/dist/ui-provider-C-74NVLc.js.map +0 -1
- package/dist/upload-Hdm5gObf.js.map +0 -1
- package/dist/upload-queue-D0sYPuqo.js +0 -409
- package/dist/upload-queue-D0sYPuqo.js.map +0 -1
- package/dist/usage-card-9s8hLDfn.js.map +0 -1
- package/dist/utils-DhuoqFy4.js.map +0 -1
- package/dist/value-inputs-D3aPgq9H.js +0 -980
- package/dist/value-inputs-D3aPgq9H.js.map +0 -1
- package/dist/value-typography-uSzzG9Gf.js +0 -122
- package/dist/value-typography-uSzzG9Gf.js.map +0 -1
- package/dist/workspace-CC8Vchiu.js +0 -411
- package/dist/workspace-CC8Vchiu.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timelines-mOmS9Eh3.js","names":["Text","Stack","Card","Progress","SecondaryValue","MonoValue","Percent","IconBadge","Badge","contentBlockHooks","defaultStepsStrings","DOT_PX","ICON_PX","STATUS_TONE","toneRecipes","Timeline","cn","className","items","status","item","tone","Icon","isLast","i","dotSize","statusStyles","Check","Loader2","Circle","StepsCard","surface","stringsProp","strings","useStrings","steps","titleType","step","footerText","HorizontalDot","stepNumber","StepsHorizontal","stateText","title","description","idx","lineColor","defaultChangelogTimelineStrings","KIND_ICON","Plus","Minus","Wrench","GitCommit","ChangelogTimeline","labelByKind","entries","entry","defaultMilestonesTimelineStrings","STATUS_TO_TIMELINE","STATUS_ICON","Clock","X","STATUS_BADGE","MilestonesTimeline","labelByStatus","milestones","m"],"sources":["../src/components/blocks/timelines/steps-card/types.ts","../src/components/blocks/timelines/shared/timeline.tsx","../src/components/blocks/timelines/steps-card/steps-card.tsx","../src/components/blocks/timelines/changelog/types.ts","../src/components/blocks/timelines/changelog/changelog-timeline.tsx","../src/components/blocks/timelines/milestones/types.ts","../src/components/blocks/timelines/milestones/milestones-timeline.tsx"],"sourcesContent":["import { type ReactNode } from 'react';\nimport type { BadgeTone } from '../../../base/badge';\nimport type { CardProps } from '../../../base/cards';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type StepStatus = 'completed' | 'current' | 'upcoming';\n\nexport interface StepItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription?: string;\n\tstatus: StepStatus;\n\t/** Formatted time for the entry. */\n\ttimestamp?: string;\n\t/** Chip rendered beside the label. */\n\tbadge?: string;\n\tbadgeTone?: BadgeTone;\n\tcontent?: ReactNode;\n}\n\nexport interface StepsStrings {\n\t/** Each step state in words, for assistive technology; the markers show it by colour and glyph. */\n\tstatusLabels: Record<StepStatus, string>;\n}\n\nexport const defaultStepsStrings: StepsStrings = {\n\tstatusLabels: {\n\t\tcompleted: 'Completed',\n\t\tcurrent: 'Current',\n\t\tupcoming: 'Upcoming',\n\t},\n};\n\n/** Unframed by default. Set surface=\"card\" to let this owner frame its heading and body. */\nexport interface StepsCardProps extends Pick<CardProps, 'surface' | 'padding' | 'headerDivider'> {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription?: string;\n\tsteps: StepItem[];\n\tfooterText?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<StepsStrings>;\n}\n\nexport interface StepsHorizontalProps {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription?: string;\n\tsteps: StepItem[];\n\tfooterText?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<StepsStrings>;\n}\n","/**\n * Timeline — shared base primitive for the blocks timeline family.\n *\n * Renders a vertical, dot-and-line list of events. Each item supports an\n * icon (Lucide component), a status that maps to dot tone, a title row, an\n * optional description block, an optional timestamp, and free-form content\n * via `children`. Use this primitive directly for new timeline variants\n * instead of reinventing the dot/line geometry — see `ChangeLogTimeline`,\n * `MilestonesTimeline`, and the existing OrderTimeline / PaymentTimeline /\n * ActivityStream consumers for examples.\n */\nimport type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { SecondaryValue } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { Stack } from '../../../base/structure';\nimport type { ComponentScale } from '../../../../lib/component-vocabulary';\nimport { cn } from '../../../../lib/utils';\nimport { toneRecipes } from '../../../../lib/tone-recipes';\n\nexport type TimelineStatus =\n\t| 'completed'\n\t| 'current'\n\t| 'pending'\n\t| 'success'\n\t| 'warning'\n\t| 'error'\n\t| 'neutral';\n\nexport type TimelineDotSize = ComponentScale;\n\nexport interface TimelineItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy shown under the label. */\n\tdescription?: ReactNode;\n\t/** Formatted time for the entry. */\n\ttimestamp?: ReactNode;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\tstatus?: TimelineStatus;\n\t/**\n\t * State in words, read out before the title. The dot shows state by colour\n\t * and glyph only; the current step is already announced through\n\t * `aria-current`, so pass this for the other states.\n\t */\n\tstatusLabel?: ReactNode;\n\tchildren?: ReactNode;\n}\n\nexport interface TimelineProps {\n\titems: TimelineItem[];\n\tdotSize?: TimelineDotSize;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nconst DOT_PX: Record<TimelineDotSize, string> = {\n\tsm: 'size-2.5',\n\tmd: 'size-icon-md',\n\tlg: 'size-icon-lg',\n};\n\nconst ICON_PX: Record<TimelineDotSize, string> = {\n\tsm: 'size-2',\n\tmd: 'size-2.5',\n\tlg: 'size-icon-sm',\n};\n\nconst STATUS_TONE: Record<TimelineStatus, { bg: string; text: string; ring: string; line: string }> = {\n\tcompleted: { bg: toneRecipes.success.solid, text: 'text-success-foreground', ring: toneRecipes.success.halo, line: toneRecipes.success.line },\n\tcurrent: { bg: toneRecipes.primary.solid, text: 'text-primary-foreground', ring: toneRecipes.primary.halo, line: toneRecipes.primary.line },\n\tpending: { bg: 'bg-muted', text: 'text-muted-foreground', ring: 'ring-border', line: 'bg-border' },\n\tsuccess: { bg: toneRecipes.success.solid, text: 'text-success-foreground', ring: toneRecipes.success.halo, line: toneRecipes.success.line },\n\twarning: { bg: toneRecipes.warning.solid, text: 'text-warning-foreground', ring: toneRecipes.warning.halo, line: toneRecipes.warning.line },\n\terror: { bg: toneRecipes.destructive.solid, text: 'text-destructive-foreground', ring: toneRecipes.destructive.halo, line: toneRecipes.destructive.line },\n\tneutral: { bg: 'bg-card', text: 'text-card-foreground', ring: 'ring-border', line: 'bg-border' },\n};\n\nexport function Timeline({ items, dotSize = 'md', className }: TimelineProps) {\n\treturn (\n\t\t<Stack render={<ol />} gap=\"xl\" className={cn('timeline--component', 'relative m-0 p-0 list-none', className)}>\n\t\t\t{items.map((item, i) => {\n\t\t\t\tconst status = item.status ?? 'neutral';\n\t\t\t\tconst tone = STATUS_TONE[status];\n\t\t\t\tconst Icon = item.icon;\n\t\t\t\tconst isLast = i === items.length - 1;\n\n\t\t\t\treturn (\n\t\t\t\t\t// `data-status` exposes the state as a hook; the current step is\n\t\t\t\t\t// announced through `aria-current`, independently of its colour.\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\tdata-status={status}\n\t\t\t\t\t\taria-current={status === 'current' ? 'step' : undefined}\n\t\t\t\t\t\tclassName=\"timeline--item relative flex gap-space-lg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* The marker column is as wide as the dot and as tall as the item, so\n\t\t\t\t\t\t the connector centres under any dot size and runs from the dot to\n\t\t\t\t\t\t the item's end; its negative end margin carries it across the list\n\t\t\t\t\t\t gap to the next dot. Both follow `--icon` and `--space-scale`. */}\n\t\t\t\t\t\t<div className=\"timeline--marker relative z-[1] mt-0.5 flex shrink-0 flex-col items-center\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'inline-flex shrink-0 items-center justify-center rounded-full ring-2',\n\t\t\t\t\t\t\t\t\ttone.bg,\n\t\t\t\t\t\t\t\t\ttone.text,\n\t\t\t\t\t\t\t\t\ttone.ring,\n\t\t\t\t\t\t\t\t\tDOT_PX[dotSize],\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!Icon && <Icon className={ICON_PX[dotSize]} />}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\tclassName={cn('timeline--connector mt-space-2xs -mb-space-xl w-px flex-1', tone.line)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<Stack gap=\"md\" className=\"min-w-0 flex-1 pb-space-md\">\n\t\t\t\t\t\t\t<Stack gap=\"dense\">\n\t\t\t\t\t\t\t\t{/* One line when there is room; in a narrow rail the timestamp drops\n\t\t\t\t\t\t\t\t under the title instead of pushing past the container edge. */}\n\t\t\t\t\t\t\t\t<div className=\"timeline--heading flex flex-wrap items-baseline justify-between gap-x-space-md gap-y-dense\">\n\t\t\t\t\t\t\t\t\t<Text type=\"inherit\" weight=\"medium\" lineHeight=\"tight\" className=\"min-w-0 break-words\">\n\t\t\t\t\t\t\t\t\t\t{!!item.statusLabel && <span className=\"sr-only\">{item.statusLabel}: </span>}\n\t\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!item.timestamp && (\n\t\t\t\t\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"min-w-0 tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t{item.timestamp}\n\t\t\t\t\t\t\t\t\t\t</SecondaryValue>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t{!!item.children && <div className=\"min-w-0\">{item.children}</div>}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Stack>\n\t);\n}\n\nTimeline.displayName = 'Timeline';\n","import { Stack } from '../../../base/structure';\nimport { Text } from '../../../typography/text';\nimport { Badge } from '../../../base/badge';\nimport { Card } from '../../../base/cards';\nimport { IconBadge } from '../../../base/display';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\nimport { Check, Circle, Loader2 } from 'lucide-react';\nimport { Timeline, type TimelineItem } from '../shared';\nimport { defaultStepsStrings, type StepStatus, type StepsCardProps, type StepsHorizontalProps } from './types';\nimport { contentBlockHooks } from '../../content-block-hooks';\n\nconst statusStyles: Record<StepStatus, {\n\ttitle: 'inherit' | 'secondary';\n\tIcon: typeof Check;\n}> = {\n\tcompleted: { title: 'inherit', Icon: Check },\n\tcurrent: { title: 'inherit', Icon: Loader2 },\n\tupcoming: { title: 'secondary', Icon: Circle },\n};\n\n/* ─── Vertical StepsCard (original) ────────────────────────────────────────── */\n\nexport function StepsCard({\n\ttitle,\n\tdescription,\n\tsteps,\n\tfooterText,\n\tsurface = 'flat',\n\tpadding = surface === 'flat' ? 'none' : 'md',\n\theaderDivider,\n\tclassName,\n\tstrings: stringsProp,\n}: StepsCardProps) {\n\tconst strings = useStrings(defaultStepsStrings, stringsProp);\n\tconst items: TimelineItem[] = steps.map((step) => {\n\t\tconst { Icon, title: titleType } = statusStyles[step.status];\n\t\treturn {\n\t\t\tid: step.id,\n\t\t\ttitle: (\n\t\t\t\t<span className=\"inline-flex flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"semibold\" type={titleType}>\n\t\t\t\t\t\t{step.title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{step.badge ? (\n\t\t\t\t\t\t<Badge tone={step.badgeTone ?? 'secondary'}>{step.badge}</Badge>\n\t\t\t\t\t) : null}\n\t\t\t\t</span>\n\t\t\t),\n\t\t\tdescription: step.description,\n\t\t\ttimestamp: step.timestamp,\n\t\t\ticon: Icon,\n\t\t\tstatus: step.status === 'upcoming' ? 'pending' : step.status,\n\t\t\t// The current step is announced through `aria-current`.\n\t\t\tstatusLabel: step.status === 'current' ? undefined : strings.statusLabels[step.status],\n\t\t\tchildren: step.content,\n\t\t};\n\t});\n\n\treturn (\n\t\t<Card\n\t\t\tsurface={surface}\n\t\t\tpadding={padding}\n\t\t\theaderDivider={headerDivider}\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tfooterSlot={footerText}\n\t\t\t{...contentBlockHooks(cn('steps-card--component', className))}\n\t\t>\n\t\t\t<Timeline items={items} dotSize=\"lg\" />\n\t\t</Card>\n\t);\n}\n\nStepsCard.displayName = 'StepsCard';\n\n/*──────────────────────────────────────────────────────────────────────────────\n * STEPS HORIZONTAL — Horizontal step bar with connecting lines\n *────────────────────────────────────────────────────────────────────────────*/\n\n/** Step marker on the shared IconBadge tile: reached steps show a check, the rest their number. */\nfunction HorizontalDot({ status, stepNumber }: { status: StepStatus; stepNumber: number }) {\n\tif (status === 'completed') {\n\t\treturn <IconBadge icon={Check} tone=\"success\" solid shape=\"square\" size=\"md\" className=\"relative z-10\" />;\n\t}\n\n\t// The number is the step's position, so it stays readable to assistive technology.\n\treturn (\n\t\t<IconBadge\n\t\t\ttone={status === 'current' ? 'primary' : 'neutral'}\n\t\t\tsolid={status === 'current'}\n\t\t\tshape=\"square\"\n\t\t\tsize=\"md\"\n\t\t\taria-hidden={false}\n\t\t\tclassName=\"relative z-10\"\n\t\t>\n\t\t\t<Text tag=\"span\" type=\"inherit\" weight={status === 'current' ? 'bold' : 'medium'} className=\"tabular-nums\">\n\t\t\t\t{stepNumber}\n\t\t\t</Text>\n\t\t</IconBadge>\n\t);\n}\n\nexport function StepsHorizontal({ title, description, steps, footerText, className, strings: stringsProp }: StepsHorizontalProps) {\n\tconst strings = useStrings(defaultStepsStrings, stringsProp);\n\t// A reached step's marker hides its number and an upcoming one is told apart\n\t// by tone alone, so both state it in words. The current step is announced\n\t// through `aria-current`.\n\tconst stateText = (status: StepStatus) => status === 'current'\n\t\t? null\n\t\t: <span className=\"sr-only\">{strings.statusLabels[status]}: </span>;\n\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"steps-horizontal\"\n\t\t\tdata-slot=\"steps-horizontal\"\n\t\t\tclassName={cn('steps-horizontal--component @container/steps-horizontal grid min-w-0 gap-space-md', className)}\n\t\t>\n\t\t\t{!!(title || description) && (\n\t\t\t\t<div className=\"steps-horizontal--header grid min-w-0 gap-normal\">\n\t\t\t\t\t{!!title && <Text type=\"inherit\" weight=\"semibold\">{title}</Text>}\n\t\t\t\t\t{!!description && <Text type=\"secondary\">{description}</Text>}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<Stack render={<ol />} gap=\"lg\" className=\"m-0 list-none p-0 @xl/steps-horizontal:hidden\">\n\t\t\t\t{steps.map((step, idx) => {\n\t\t\t\t\tconst isLast = idx === steps.length - 1;\n\t\t\t\t\tconst lineColor = step.status === 'completed' ? 'bg-success' : 'bg-border';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={step.id} aria-current={step.status === 'current' ? 'step' : undefined} className=\"flex gap-space-lg\">\n\t\t\t\t\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t\t<HorizontalDot status={step.status} stepNumber={idx + 1} />\n\t\t\t\t\t\t\t\t{!isLast && <div aria-hidden=\"true\" className={cn('mt-1 w-0.5 flex-1 min-h-5', lineColor)} />}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Stack gap=\"dense\" className={cn('min-w-0 flex-1 pb-space-md', isLast && 'pb-0')}>\n\t\t\t\t\t\t\t\t<Text weight=\"semibold\" lineHeight=\"snug\" type={statusStyles[step.status].title}>\n\t\t\t\t\t\t\t\t\t{stateText(step.status)}\n\t\t\t\t\t\t\t\t\t{step.title}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{!!step.description && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"line-clamp-2\">\n\t\t\t\t\t\t\t\t\t\t{step.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Stack>\n\n\t\t\t{/* Horizontal scroll wrapper — when total step width exceeds the\n\t\t\t\tcard, this lets users scroll instead of clipping labels. */}\n\t\t\t<div className=\"hidden overflow-x-auto @xl/steps-horizontal:block\">\n\t\t\t\t<ol className=\"m-0 flex min-w-fit list-none items-start p-0\">\n\t\t\t\t\t{steps.map((step, idx) => {\n\t\t\t\t\t\tconst isLast = idx === steps.length - 1;\n\t\t\t\t\t\tconst lineColor = step.status === 'completed' ? 'bg-success' : 'bg-border';\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={step.id} aria-current={step.status === 'current' ? 'step' : undefined} className=\"flex min-w-28 flex-1 items-start\">\n\t\t\t\t\t\t\t\t<Stack gap=\"md\" align=\"center\" className=\"w-full\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex w-full items-center\">\n\t\t\t\t\t\t\t\t\t\t{idx > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<div aria-hidden=\"true\" className={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'h-0.5 flex-1',\n\t\t\t\t\t\t\t\t\t\t\t\tsteps[idx - 1].status === 'completed' ? 'bg-success' : 'bg-border',\n\t\t\t\t\t\t\t\t\t\t\t)} />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{idx === 0 && <div className=\"flex-1\" />}\n\n\t\t\t\t\t\t\t\t\t\t<HorizontalDot status={step.status} stepNumber={idx + 1} />\n\n\t\t\t\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t\t\t\t<div aria-hidden=\"true\" className={cn('h-0.5 flex-1', lineColor)} />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{!!isLast && <div className=\"flex-1\" />}\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t{/* Labels below dot — clamped to 2 lines so long step\n\t\t\t\t\t\t\t\t\t\tnames break gracefully instead of pushing the\n\t\t\t\t\t\t\t\t\t\trow taller. */}\n\t\t\t\t\t\t\t\t\t<Stack gap=\"dense\" align=\"center\" className=\"w-full px-space-xs\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" lineHeight=\"snug\" align=\"center\" type={statusStyles[step.status].title} className=\"line-clamp-2\">\n\t\t\t\t\t\t\t\t\t\t\t{stateText(step.status)}\n\t\t\t\t\t\t\t\t\t\t\t{step.title}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t{!!step.description && (\n\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" lineHeight=\"snug\" align=\"center\" className=\"line-clamp-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{step.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)}\n\t\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ol>\n\t\t\t</div>\n\t\t\t{!!footerText && <Text size=\"xs\" type=\"secondary\">{footerText}</Text>}\n\t\t</div>\n\t);\n}\n\nStepsHorizontal.displayName = 'StepsHorizontal';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type ChangelogEntryKind = 'added' | 'removed' | 'modified' | 'fixed';\n\nexport interface ChangelogEntry {\n\t/** Stable identity for this entry. */\n\tid: string;\n\tkind: ChangelogEntryKind;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy shown under the label. */\n\tdescription?: ReactNode;\n\tversion?: string;\n\t/** Formatted time for the entry. */\n\ttimestamp?: string;\n\t/** Who produced the entry. */\n\tauthor?: string;\n}\n\nexport interface ChangelogTimelineStrings {\n\tadded: string;\n\tremoved: string;\n\tmodified: string;\n\tfixed: string;\n\t/** Writes the author credit after an entry. Defaults to an em dash and the name. */\n\tformatAuthor?: (author: string) => string;\n}\n\nexport const defaultChangelogTimelineStrings: ChangelogTimelineStrings = {\n\tadded: 'Added',\n\tremoved: 'Removed',\n\tmodified: 'Modified',\n\tfixed: 'Fixed',\n};\n\nexport interface ChangelogTimelineProps {\n\tentries: ChangelogEntry[];\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<ChangelogTimelineStrings>;\n}\n","/**\n * ChangelogTimeline — code/release changelog rendered through the shared\n * `Timeline` primitive. Each entry's kind (added / removed / modified /\n * fixed) is a neutral chip plus the marker glyph: a kind is a category, not a\n * status, so it carries no colour. An optional version label and timestamp\n * follow. Strings overridable for i18n.\n */\nimport { GitCommit, Minus, Plus, Wrench } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport { MonoValue } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { Stack } from '../../../base/structure';\nimport { useStrings } from '../../../../lib/strings';\n\nimport {\n\tTimeline,\n\ttype TimelineItem,\n} from '../shared';\nimport {\n\tdefaultChangelogTimelineStrings,\n\ttype ChangelogEntry,\n\ttype ChangelogEntryKind,\n\ttype ChangelogTimelineProps,\n} from './types';\n\nimport { cn } from '../../../../lib/utils';\nconst KIND_ICON = {\n\tadded: Plus,\n\tremoved: Minus,\n\tmodified: Wrench,\n\tfixed: GitCommit,\n} as const;\n\nexport function ChangelogTimeline({\n\tentries,\n\tclassName,\n\tstrings: stringsProp,\n}: ChangelogTimelineProps) {\n\tconst strings = useStrings(defaultChangelogTimelineStrings, stringsProp);\n\tconst labelByKind: Record<ChangelogEntryKind, string> = {\n\t\tadded: strings.added,\n\t\tremoved: strings.removed,\n\t\tmodified: strings.modified,\n\t\tfixed: strings.fixed,\n\t};\n\n\tconst items: TimelineItem[] = entries.map((entry: ChangelogEntry) => ({\n\t\tid: entry.id,\n\t\ttitle: (\n\t\t\t<span className=\"inline-flex flex-wrap items-center gap-space-sm\">\n\t\t\t\t<Badge>\n\t\t\t\t\t{labelByKind[entry.kind]}\n\t\t\t\t</Badge>\n\t\t\t\t<Text type=\"inherit\" tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\">\n\t\t\t\t\t{entry.title}\n\t\t\t\t</Text>\n\t\t\t\t{!!entry.version && (\n\t\t\t\t\t<MonoValue size=\"xs\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t{entry.version}\n\t\t\t\t\t</MonoValue>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t),\n\t\tdescription: entry.author ? (\n\t\t\t<Stack render={<span />} direction=\"horizontal\" gap=\"md\" className=\"inline-flex\">\n\t\t\t\t{entry.description}\n\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"discrete\">\n\t\t\t\t\t{strings.formatAuthor?.(entry.author) ?? `— ${entry.author}`}\n\t\t\t\t</Text>\n\t\t\t</Stack>\n\t\t) : (\n\t\t\tentry.description\n\t\t),\n\t\ttimestamp: entry.timestamp,\n\t\ticon: KIND_ICON[entry.kind],\n\t\tstatus: 'neutral',\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"changelog-timeline\"\n\t\t\tdata-slot=\"changelog-timeline\"\n\t\t\tclassName={cn('changelog-timeline--component', className)}\n\t\t>\n\t\t\t<Timeline items={items} dotSize=\"md\" />\n\t\t</div>\n\t);\n}\n\nChangelogTimeline.displayName = 'ChangelogTimeline';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type MilestoneStatus = 'completed' | 'in_progress' | 'upcoming' | 'blocked';\n\nexport interface MilestoneItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy shown under the label. */\n\tdescription?: ReactNode;\n\tdueDate?: string;\n\tstatus: MilestoneStatus;\n\t/** 0–100; only used when status is `in_progress`. */\n\tprogress?: number;\n}\n\nexport interface MilestonesTimelineStrings {\n\tcompleted: string;\n\tin_progress: string;\n\tupcoming: string;\n\tblocked: string;\n\tdueOn: string;\n\t/** Writes the due date line. Defaults to `dueOn` followed by the date. */\n\tformatDueOn?: (date: string) => string;\n}\n\nexport const defaultMilestonesTimelineStrings: MilestonesTimelineStrings = {\n\tcompleted: 'Completed',\n\tin_progress: 'In progress',\n\tupcoming: 'Upcoming',\n\tblocked: 'Blocked',\n\tdueOn: 'Due',\n};\n\nexport interface MilestonesTimelineProps {\n\tmilestones: MilestoneItem[];\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<MilestonesTimelineStrings>;\n}\n","/**\n * MilestonesTimeline — project / goal milestones rendered through the\n * shared `Timeline` primitive. Each milestone has a status (completed /\n * in-progress / upcoming / blocked) that drives the dot tone, and an\n * optional `progress` percent that renders an inline progress bar when the\n * milestone is in flight. Strings overridable for i18n.\n */\nimport { Check, Circle, Clock, X } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport { Progress } from '../../../base/feedback';\nimport { Stack } from '../../../base/structure';\nimport { Percent } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tTimeline,\n\ttype TimelineItem,\n\ttype TimelineStatus,\n} from '../shared';\nimport {\n\tdefaultMilestonesTimelineStrings,\n\ttype MilestoneItem,\n\ttype MilestoneStatus,\n\ttype MilestonesTimelineProps,\n} from './types';\n\nconst STATUS_TO_TIMELINE: Record<MilestoneStatus, TimelineStatus> = {\n\tcompleted: 'completed',\n\tin_progress: 'current',\n\tupcoming: 'pending',\n\tblocked: 'error',\n};\n\nconst STATUS_ICON = {\n\tcompleted: Check,\n\tin_progress: Clock,\n\tupcoming: Circle,\n\tblocked: X,\n} as const;\n\n// In progress is a status (info); primary is reserved for the main command.\nconst STATUS_BADGE: Record<MilestoneStatus, 'success' | 'info' | 'secondary' | 'destructive'> = {\n\tcompleted: 'success',\n\tin_progress: 'info',\n\tupcoming: 'secondary',\n\tblocked: 'destructive',\n};\n\nexport function MilestonesTimeline({\n\tmilestones,\n\tclassName,\n\tstrings: stringsProp,\n}: MilestonesTimelineProps) {\n\tconst strings = useStrings(defaultMilestonesTimelineStrings, stringsProp);\n\tconst labelByStatus: Record<MilestoneStatus, string> = {\n\t\tcompleted: strings.completed,\n\t\tin_progress: strings.in_progress,\n\t\tupcoming: strings.upcoming,\n\t\tblocked: strings.blocked,\n\t};\n\n\tconst items: TimelineItem[] = milestones.map((m: MilestoneItem) => ({\n\t\tid: m.id,\n\t\ttitle: (\n\t\t\t<span className=\"inline-flex flex-wrap items-center gap-space-sm\">\n\t\t\t\t<Text type=\"inherit\" tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\">\n\t\t\t\t\t{m.title}\n\t\t\t\t</Text>\n\t\t\t\t<Badge tone={STATUS_BADGE[m.status]}>\n\t\t\t\t\t{labelByStatus[m.status]}\n\t\t\t\t</Badge>\n\t\t\t</span>\n\t\t),\n\t\tdescription: m.description,\n\t\ttimestamp: m.dueDate ? strings.formatDueOn?.(m.dueDate) ?? `${strings.dueOn} ${m.dueDate}` : undefined,\n\t\ticon: STATUS_ICON[m.status],\n\t\tstatus: STATUS_TO_TIMELINE[m.status],\n\t\tchildren:\n\t\t\tm.status === 'in_progress' && typeof m.progress === 'number' ? (\n\t\t\t\t<Stack gap=\"xs\" className=\"milestones-timeline--progress\">\n\t\t\t\t\t<Progress value={m.progress} aria-label={labelByStatus.in_progress} />\n\t\t\t\t\t<Percent value={Math.round(m.progress)} scaled size=\"xs\" type=\"secondary\" align=\"left\" />\n\t\t\t\t</Stack>\n\t\t\t) : undefined,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"milestones-timeline\"\n\t\t\tdata-slot=\"milestones-timeline\"\n\t\t\tclassName={cn('milestones-timeline--component', className)}\n\t\t>\n\t\t\t<Timeline items={items} dotSize=\"md\" />\n\t\t</div>\n\t);\n}\n\nMilestonesTimeline.displayName = 'MilestonesTimeline';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { a as e } from "./ui-provider-Bu1S-o96.js";
|
|
3
|
+
import { t } from "./utils-BVbAG2J6.js";
|
|
4
|
+
import { c as n } from "./typography-C0dELqYV.js";
|
|
5
|
+
import { n as r } from "./anchored-positioning-1U_eBFNx.js";
|
|
6
|
+
import { t as i } from "./portal-recipes-BPeS4rGB.js";
|
|
7
|
+
import { t as a } from "./motion-recipes-CUc_aHuG.js";
|
|
8
|
+
import { createContext as o, useContext as s, useId as c, useLayoutEffect as l, useState as u } from "react";
|
|
9
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
10
|
+
import { Tooltip as f } from "@base-ui/react/tooltip";
|
|
11
|
+
//#region src/components/ui/tooltip.tsx
|
|
12
|
+
function p({ delay: e = 0, delayDuration: t, ...n }) {
|
|
13
|
+
return /* @__PURE__ */ d(f.Provider, {
|
|
14
|
+
"data-slot": "tooltip-provider",
|
|
15
|
+
delay: t ?? e,
|
|
16
|
+
...n
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function m({ ...e }) {
|
|
20
|
+
return /* @__PURE__ */ d(p, { children: /* @__PURE__ */ d(f.Root, {
|
|
21
|
+
"data-slot": "tooltip",
|
|
22
|
+
...e
|
|
23
|
+
}) });
|
|
24
|
+
}
|
|
25
|
+
function h({ render: e, children: t, ...n }) {
|
|
26
|
+
let r = typeof e == "function" ? ((t, n) => {
|
|
27
|
+
let { nativeButton: r, ...i } = t;
|
|
28
|
+
return e(i, n);
|
|
29
|
+
}) : e;
|
|
30
|
+
return /* @__PURE__ */ d(f.Trigger, {
|
|
31
|
+
"data-slot": "tooltip-trigger",
|
|
32
|
+
render: r,
|
|
33
|
+
...n,
|
|
34
|
+
children: t
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function g({ className: n, container: o, side: s = "top", sideOffset: c = 4, align: l = "center", alignOffset: u = 0, positionMethod: p = r, children: m, ...h }) {
|
|
38
|
+
let g = e(o);
|
|
39
|
+
return /* @__PURE__ */ d(f.Portal, {
|
|
40
|
+
container: g,
|
|
41
|
+
className: i(),
|
|
42
|
+
children: /* @__PURE__ */ d(f.Positioner, {
|
|
43
|
+
positionMethod: p,
|
|
44
|
+
align: l,
|
|
45
|
+
alignOffset: u,
|
|
46
|
+
side: s,
|
|
47
|
+
sideOffset: c,
|
|
48
|
+
className: "isolate z-50",
|
|
49
|
+
children: /* @__PURE__ */ d(f.Popup, {
|
|
50
|
+
"data-slot": "tooltip-content",
|
|
51
|
+
className: t(a.popup, "rounded-radius-xs px-space-md py-space-xs text-xs bg-inverse-background text-inverse-foreground z-50 w-fit max-w-xs origin-(--transform-origin)", n),
|
|
52
|
+
...h,
|
|
53
|
+
children: m
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/components/base/display/tooltip.tsx
|
|
60
|
+
var _ = o(void 0), v = o(!1);
|
|
61
|
+
function y(e) {
|
|
62
|
+
let t = s(v), n = c(), [r, i] = u(n), a = /* @__PURE__ */ d(_.Provider, {
|
|
63
|
+
value: {
|
|
64
|
+
id: r,
|
|
65
|
+
setId: i
|
|
66
|
+
},
|
|
67
|
+
children: /* @__PURE__ */ d(f.Root, {
|
|
68
|
+
"data-slot": "tooltip",
|
|
69
|
+
...e
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
return t ? a : /* @__PURE__ */ d(p, { children: a });
|
|
73
|
+
}
|
|
74
|
+
function b(e) {
|
|
75
|
+
return /* @__PURE__ */ d(v.Provider, {
|
|
76
|
+
value: !0,
|
|
77
|
+
children: /* @__PURE__ */ d(p, { ...e })
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
function x({ className: e, ...n }) {
|
|
81
|
+
let r = s(_)?.id;
|
|
82
|
+
return /* @__PURE__ */ d(h, {
|
|
83
|
+
className: t("tooltip-trigger--component", e),
|
|
84
|
+
...n,
|
|
85
|
+
"aria-describedby": [n["aria-describedby"], r].filter(Boolean).join(" ") || void 0
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function S({ children: e, className: r, ...i }) {
|
|
89
|
+
let a = s(_), o = i.id ?? a?.id, c = a?.setId;
|
|
90
|
+
l(() => {
|
|
91
|
+
o && c?.(o);
|
|
92
|
+
}, [o, c]);
|
|
93
|
+
let u = typeof e == "string" || typeof e == "number" || typeof e == "bigint" ? /* @__PURE__ */ d(n, {
|
|
94
|
+
tag: "span",
|
|
95
|
+
size: "inherit",
|
|
96
|
+
lineHeight: "snug",
|
|
97
|
+
className: "tooltip-content--text text-inherit",
|
|
98
|
+
children: e
|
|
99
|
+
}) : e;
|
|
100
|
+
return /* @__PURE__ */ d(g, {
|
|
101
|
+
id: o,
|
|
102
|
+
role: "tooltip",
|
|
103
|
+
className: t("tooltip-content--component max-w-xs rounded-radius-xs px-space-md py-space-xs text-xs leading-snug", r),
|
|
104
|
+
...i,
|
|
105
|
+
children: u
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
y.displayName = "Tooltip", b.displayName = "TooltipProvider", x.displayName = "TooltipTrigger", S.displayName = "TooltipContent";
|
|
109
|
+
//#endregion
|
|
110
|
+
export { m as a, x as i, S as n, g as o, b as r, h as s, y as t };
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=tooltip-yjX-Uv-p.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-yjX-Uv-p.js","names":["TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","Tooltip","BaseTooltip","TooltipProviderPrimitive","TooltipTriggerPrimitive","TooltipContentPrimitive","useThemePortalContainer","Text","anchoredPositionMethod","portalClassName","motionRecipes","TooltipProvider$1","props","Tooltip","delayDuration","delay","Tooltip$2","TooltipTrigger$1","safeRender","render","_nativeButton","rest","renderProps","state","TooltipContent$1","resolvedContainer","container","cn","className","TooltipDescriptionContext","createContext","SharedTooltipProviderContext","Tooltip$1","hasSharedProvider","useContext","generatedId","useId","descriptionId","setDescriptionId","useState","root","TooltipProvider","TooltipTrigger","TooltipContent","description","content","children"],"sources":["../src/components/ui/tooltip.tsx","../src/components/base/display/tooltip.tsx"],"sourcesContent":["import { anchoredPositionMethod } from '../../lib/anchored-positioning';\nimport { portalClassName } from '../../lib/portal-recipes';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction TooltipProvider({\n delay = 0,\n delayDuration,\n ...props\n}: TooltipPrimitive.Provider.Props & { delayDuration?: number }) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delayDuration ?? delay}\n {...props}\n />\n )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n render,\n children,\n ...props\n}: TooltipPrimitive.Trigger.Props) {\n const safeRender: TooltipPrimitive.Trigger.Props[\"render\"] = typeof render === \"function\"\n ? ((renderProps, state) => {\n const { nativeButton: _nativeButton, ...rest } = renderProps as Record<string, unknown>\n void _nativeButton\n return render(rest as typeof renderProps, state)\n })\n : render\n\n return (\n <TooltipPrimitive.Trigger\n data-slot=\"tooltip-trigger\"\n render={safeRender}\n {...props}\n >\n {children}\n </TooltipPrimitive.Trigger>\n )\n}\n\nfunction TooltipContent({\n className,\n container,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n positionMethod = anchoredPositionMethod,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"positionMethod\"\n > & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <TooltipPrimitive.Portal container={resolvedContainer} className={portalClassName()}>\n <TooltipPrimitive.Positioner\n positionMethod={positionMethod}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n motionRecipes.popup,\n \"rounded-radius-xs px-space-md py-space-xs text-xs bg-inverse-background text-inverse-foreground z-50 w-fit max-w-xs origin-(--transform-origin)\",\n className\n )}\n {...props}\n >\n {children}\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","/** Tokenized base wrappers for short, non-interactive contextual help. */\nimport { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport { createContext, useContext, useId, useLayoutEffect, useState, type ComponentProps } from 'react';\n\nimport {\n\tTooltipContent as TooltipContentPrimitive,\n\tTooltipProvider as TooltipProviderPrimitive,\n\tTooltipTrigger as TooltipTriggerPrimitive,\n} from '../../ui/tooltip';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nexport type TooltipProps = ComponentProps<typeof BaseTooltip.Root>;\nexport type TooltipProviderProps = ComponentProps<typeof TooltipProviderPrimitive>;\nexport type TooltipTriggerProps = ComponentProps<typeof TooltipTriggerPrimitive>;\nexport type TooltipContentProps = ComponentProps<typeof TooltipContentPrimitive>;\n\nconst TooltipDescriptionContext = createContext<{ id: string; setId: (id: string) => void } | undefined>(undefined);\n\nconst SharedTooltipProviderContext = createContext(false);\n\n/** Tooltip state root. It does not render a DOM node. */\nexport function Tooltip(props: TooltipProps) {\n\tconst hasSharedProvider = useContext(SharedTooltipProviderContext);\n\tconst generatedId = useId();\n\tconst [descriptionId, setDescriptionId] = useState(generatedId);\n\tconst root = <TooltipDescriptionContext.Provider value={{ id: descriptionId, setId: setDescriptionId }}><BaseTooltip.Root data-slot=\"tooltip\" {...props} /></TooltipDescriptionContext.Provider>;\n\n\treturn hasSharedProvider ? root : <TooltipProviderPrimitive>{root}</TooltipProviderPrimitive>;\n}\n\n/** Shared delay provider for a group of tooltip roots. Nested Tooltip roots reuse it. */\nexport function TooltipProvider(props: TooltipProviderProps) {\n\treturn (\n\t\t<SharedTooltipProviderContext.Provider value>\n\t\t\t<TooltipProviderPrimitive {...props} />\n\t\t</SharedTooltipProviderContext.Provider>\n\t);\n}\n\n/** Polymorphic tooltip anchor. */\nexport function TooltipTrigger({ className, ...props }: TooltipTriggerProps) {\n\tconst description = useContext(TooltipDescriptionContext);\n\tconst descriptionId = description?.id;\n\treturn (\n\t\t<TooltipTriggerPrimitive\n\t\t\tclassName={cn('tooltip-trigger--component', className)}\n\t\t\t{...props}\n\t\t\taria-describedby={[props['aria-describedby'], descriptionId].filter(Boolean).join(' ') || undefined}\n\t\t/>\n\t);\n}\n\n/** Inverse contextual-help surface with package spacing and typography. */\nexport function TooltipContent({ children, className, ...props }: TooltipContentProps) {\n\tconst description = useContext(TooltipDescriptionContext);\n\tconst descriptionId = props.id ?? description?.id;\n\tconst setDescriptionId = description?.setId;\n\tuseLayoutEffect(() => { if (descriptionId) setDescriptionId?.(descriptionId); }, [descriptionId, setDescriptionId]);\n\tconst isSimpleText = typeof children === 'string' || typeof children === 'number' || typeof children === 'bigint';\n\tconst content = isSimpleText ? (\n\t\t\t<Text\n\t\t\t\ttag=\"span\"\n\t\t\t\tsize=\"inherit\"\n\t\t\t\t\n\t\t\t\tlineHeight=\"snug\"\n\t\t\t\tclassName=\"tooltip-content--text text-inherit\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t) : children;\n\n\treturn (\n\t\t<TooltipContentPrimitive\n\t\t\tid={descriptionId}\n\t\t\trole=\"tooltip\"\n\t\t\tclassName={cn(\n\t\t\t\t// Short labels use compact corners, including Button and sidebar hints.\n\t\t\t\t'tooltip-content--component max-w-xs rounded-radius-xs px-space-md py-space-xs text-xs leading-snug',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{content}\n\t\t</TooltipContentPrimitive>\n\t);\n}\n\nTooltip.displayName = 'Tooltip';\nTooltipProvider.displayName = 'TooltipProvider';\nTooltipTrigger.displayName = 'TooltipTrigger';\nTooltipContent.displayName = 'TooltipContent';\n"],"mappings":"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"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { t } from "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { t as a } from "./
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { t as
|
|
11
|
-
import { t as
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
2
|
+
import { y as e } from "./ui-provider-Bu1S-o96.js";
|
|
3
|
+
import { useStrings as t } from "./lib/strings.js";
|
|
4
|
+
import { t as n } from "./utils-BVbAG2J6.js";
|
|
5
|
+
import { c as r } from "./typography-C0dELqYV.js";
|
|
6
|
+
import { s as i } from "./text.styles-B64My8RZ.js";
|
|
7
|
+
import { t as a } from "./focus-recipes-DSkiUvUp.js";
|
|
8
|
+
import { t as o } from "./button-rd6FiHfQ.js";
|
|
9
|
+
import { n as s } from "./icon-size-B6PVwjbC.js";
|
|
10
|
+
import { t as c } from "./row-recipes-DL8n7t_b.js";
|
|
11
|
+
import { t as ee } from "./collection-content-D7SoDlYd.js";
|
|
12
|
+
import { t as te } from "./interaction-recipes-DmuS1ase.js";
|
|
13
|
+
import { n as l, r as ne, t as u } from "./navigation-row-recipes-BGVLvU_O.js";
|
|
14
|
+
import { useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
|
|
15
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
16
|
+
import { Check as re, ChevronDown as ie, ChevronRight as ae } from "lucide-react";
|
|
16
17
|
//#region src/components/base/tree/hierarchy.ts
|
|
17
18
|
function _(e) {
|
|
18
19
|
let t = /* @__PURE__ */ new Map();
|
|
@@ -30,21 +31,28 @@ function _(e) {
|
|
|
30
31
|
}
|
|
31
32
|
return n(e, [], !1), t;
|
|
32
33
|
}
|
|
33
|
-
function
|
|
34
|
+
function oe(e, t) {
|
|
34
35
|
let n = new Set(t);
|
|
35
36
|
return [...e.values()].filter((e) => e.path.slice(0, -1).every((e) => n.has(e.value)));
|
|
36
37
|
}
|
|
37
|
-
function
|
|
38
|
+
function v(e) {
|
|
38
39
|
return !!(e.hasChildren || e.children?.length);
|
|
39
40
|
}
|
|
40
41
|
//#endregion
|
|
42
|
+
//#region src/components/base/tree/tree.types.ts
|
|
43
|
+
var y = {
|
|
44
|
+
expand: (e) => `Expand ${e}`,
|
|
45
|
+
collapse: (e) => `Collapse ${e}`,
|
|
46
|
+
empty: "No items"
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
41
49
|
//#region src/components/base/tree/tree.tsx
|
|
42
|
-
function b({ items: b, expandedValues: x, defaultExpandedValues:
|
|
43
|
-
let [N, P] =
|
|
50
|
+
function b({ items: b, expandedValues: x, defaultExpandedValues: se = [], onExpandedValuesChange: S, selectedValues: C, defaultSelectedValues: w = [], onSelectedValuesChange: T, selectionMode: E = "single", branchActivation: D = "select", disabled: O = !1, density: k = "compact", rowLayout: A = "line", indent: j, showGuides: ce = !0, empty: le, strings: ue, renderLabel: de, className: fe, onKeyDown: pe, ...me }) {
|
|
51
|
+
let M = t(y, ue), [N, P] = m(se), [F, I] = m(w), L = x ?? N, R = C ?? F, z = f(() => _(b), [b]), B = oe(z, L).filter((e) => !e.disabled), [V, H] = m(null), U = new Set(B.map((e) => e.node.value)), he = V === null ? void 0 : z.get(V)?.path.slice(0, -1).reverse().find((e) => U.has(e.value))?.value, W = V !== null && U.has(V) ? V : he ?? B.find((e) => R.includes(e.node.value))?.node.value ?? B[0]?.node.value, G = p(/* @__PURE__ */ new Map()), K = p(null), q = p({
|
|
44
52
|
text: "",
|
|
45
53
|
time: 0
|
|
46
|
-
}), { defaultTextSize:
|
|
47
|
-
|
|
54
|
+
}), { defaultTextSize: ge } = e(), J = l[k], Y = A === "rich";
|
|
55
|
+
d(() => {
|
|
48
56
|
let e = K.current;
|
|
49
57
|
!O && W !== void 0 && e && (e === document.activeElement || !e.isConnected && document.activeElement === document.body) && G.current.get(W)?.focus();
|
|
50
58
|
}, [W, O]);
|
|
@@ -58,7 +66,7 @@ function b({ items: b, expandedValues: x, defaultExpandedValues: ae = [], onExpa
|
|
|
58
66
|
}
|
|
59
67
|
function Q(e) {
|
|
60
68
|
if (O || z.get(e.value)?.disabled) return;
|
|
61
|
-
if (D === "toggle" &&
|
|
69
|
+
if (D === "toggle" && v(e)) {
|
|
62
70
|
Z(e);
|
|
63
71
|
return;
|
|
64
72
|
}
|
|
@@ -66,8 +74,8 @@ function b({ items: b, expandedValues: x, defaultExpandedValues: ae = [], onExpa
|
|
|
66
74
|
let t = E === "multiple" ? R.includes(e.value) ? R.filter((t) => t !== e.value) : [...R, e.value] : [e.value];
|
|
67
75
|
C === void 0 && I(t), T?.(t, e);
|
|
68
76
|
}
|
|
69
|
-
function
|
|
70
|
-
if (
|
|
77
|
+
function _e(e) {
|
|
78
|
+
if (pe?.(e), e.defaultPrevented || O || e.target.closest("button") || e.target.closest("[role=tree]") !== e.currentTarget) return;
|
|
71
79
|
let t = B.findIndex((e) => e.node.value === V), n = z.get(V ?? W ?? "");
|
|
72
80
|
if (!n) return;
|
|
73
81
|
let r = getComputedStyle(e.currentTarget).direction === "rtl", i = r ? "ArrowLeft" : "ArrowRight", a = r ? "ArrowRight" : "ArrowLeft";
|
|
@@ -75,11 +83,11 @@ function b({ items: b, expandedValues: x, defaultExpandedValues: ae = [], onExpa
|
|
|
75
83
|
else if (e.key === "ArrowUp") X(B[Math.max(t - 1, 0)]?.node.value);
|
|
76
84
|
else if (e.key === "Home") X(B[0]?.node.value);
|
|
77
85
|
else if (e.key === "End") X(B.at(-1)?.node.value);
|
|
78
|
-
else if (e.key === i &&
|
|
79
|
-
else if (e.key === a)
|
|
86
|
+
else if (e.key === i && v(n.node)) L.includes(n.node.value) ? X(n.node.children?.find((e) => !z.get(e.value)?.disabled)?.value) : Z(n.node);
|
|
87
|
+
else if (e.key === a) v(n.node) && L.includes(n.node.value) ? Z(n.node) : X(n.parent ?? void 0);
|
|
80
88
|
else if (e.key === "Enter" || e.key === " ") Q(n.node);
|
|
81
89
|
else if (e.key === "*") {
|
|
82
|
-
let e = [.../* @__PURE__ */ new Set([...L, ...[...z.values()].filter((e) => e.parent === n.parent && !e.disabled &&
|
|
90
|
+
let e = [.../* @__PURE__ */ new Set([...L, ...[...z.values()].filter((e) => e.parent === n.parent && !e.disabled && v(e.node)).map((e) => e.node.value)])];
|
|
83
91
|
x === void 0 && P(e), S?.(e, n.node);
|
|
84
92
|
} else if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {
|
|
85
93
|
let n = Date.now();
|
|
@@ -89,99 +97,99 @@ function b({ items: b, expandedValues: x, defaultExpandedValues: ae = [], onExpa
|
|
|
89
97
|
} else return;
|
|
90
98
|
e.preventDefault();
|
|
91
99
|
}
|
|
92
|
-
function $(e,
|
|
93
|
-
return e.map((
|
|
94
|
-
let
|
|
95
|
-
return /* @__PURE__ */
|
|
96
|
-
"data-tree-value":
|
|
100
|
+
function $(e, t) {
|
|
101
|
+
return e.map((r, l) => {
|
|
102
|
+
let d = O || !!z.get(r.value)?.disabled, f = v(r), p = L.includes(r.value), m = R.includes(r.value);
|
|
103
|
+
return /* @__PURE__ */ g("div", {
|
|
104
|
+
"data-tree-value": r.value,
|
|
97
105
|
className: "tree--branch min-w-0 outline-none [&:focus-visible>.tree--item]:inset-ring [&:focus-visible>.tree--item]:inset-ring-ring [&:focus-visible>.tree--item]:ring-3 [&:focus-visible>.tree--item]:ring-ring/50",
|
|
98
106
|
ref: (e) => {
|
|
99
|
-
e ? G.current.set(
|
|
107
|
+
e ? G.current.set(r.value, e) : G.current.delete(r.value);
|
|
100
108
|
},
|
|
101
109
|
role: "treeitem",
|
|
102
|
-
"aria-label":
|
|
103
|
-
"aria-level":
|
|
110
|
+
"aria-label": r.label,
|
|
111
|
+
"aria-level": t,
|
|
104
112
|
"aria-posinset": l + 1,
|
|
105
113
|
"aria-setsize": e.length,
|
|
106
|
-
title: !Y && typeof
|
|
107
|
-
"aria-description": !Y && typeof
|
|
108
|
-
"aria-expanded":
|
|
109
|
-
"aria-selected": E !== "none" && !(
|
|
110
|
-
"aria-disabled":
|
|
111
|
-
tabIndex: !
|
|
114
|
+
title: !Y && typeof r.description == "string" ? r.description : void 0,
|
|
115
|
+
"aria-description": !Y && typeof r.description == "string" ? r.description : void 0,
|
|
116
|
+
"aria-expanded": f ? p : void 0,
|
|
117
|
+
"aria-selected": E !== "none" && !(f && D === "toggle") ? m : void 0,
|
|
118
|
+
"aria-disabled": d || void 0,
|
|
119
|
+
tabIndex: !d && W === r.value ? 0 : -1,
|
|
112
120
|
onFocus: (e) => {
|
|
113
|
-
e.target === e.currentTarget && (K.current = e.currentTarget, H(
|
|
121
|
+
e.target === e.currentTarget && (K.current = e.currentTarget, H(r.value));
|
|
114
122
|
},
|
|
115
123
|
onClick: (e) => {
|
|
116
|
-
!
|
|
124
|
+
!d && e.target.closest("[role=treeitem]") === e.currentTarget && (X(r.value), Q(r));
|
|
117
125
|
},
|
|
118
|
-
children: [/* @__PURE__ */
|
|
119
|
-
"data-selected":
|
|
120
|
-
"data-disabled":
|
|
121
|
-
className:
|
|
122
|
-
children: [/* @__PURE__ */
|
|
126
|
+
children: [/* @__PURE__ */ g("div", {
|
|
127
|
+
"data-selected": m || void 0,
|
|
128
|
+
"data-disabled": d || void 0,
|
|
129
|
+
className: n(`tree--item flex w-full items-center cursor-default outline-none ${te.rowHover} ${a.edge} data-selected:bg-accent data-selected:hover:bg-accent data-selected:text-accent-foreground data-disabled:opacity-50`, ne, Y ? c[k] : t === 1 ? J.height : J.childHeight, i[ge ?? "sm"]),
|
|
130
|
+
children: [/* @__PURE__ */ h("span", {
|
|
123
131
|
className: "tree--caret relative size-icon-sm shrink-0",
|
|
124
|
-
children:
|
|
132
|
+
children: f && /* @__PURE__ */ h(o, {
|
|
125
133
|
variant: "ghost",
|
|
126
134
|
size: "icon-xs",
|
|
127
135
|
className: "tree--disclosure absolute start-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-radius rtl:translate-x-1/2 disabled:opacity-100 aria-disabled:opacity-100",
|
|
128
136
|
tabIndex: -1,
|
|
129
|
-
disabled:
|
|
130
|
-
"aria-label":
|
|
137
|
+
disabled: d,
|
|
138
|
+
"aria-label": p ? M.collapse(r.label) : M.expand(r.label),
|
|
131
139
|
onClick: (e) => {
|
|
132
|
-
e.stopPropagation(), X(
|
|
140
|
+
e.stopPropagation(), X(r.value), Z(r);
|
|
133
141
|
},
|
|
134
|
-
children:
|
|
142
|
+
children: p ? /* @__PURE__ */ h(ie, {
|
|
135
143
|
"aria-hidden": "true",
|
|
136
144
|
className: "size-icon-sm"
|
|
137
|
-
}) : /* @__PURE__ */
|
|
145
|
+
}) : /* @__PURE__ */ h(ae, {
|
|
138
146
|
"aria-hidden": "true",
|
|
139
147
|
className: "size-icon-sm rtl:rotate-180"
|
|
140
148
|
})
|
|
141
149
|
})
|
|
142
|
-
}), /* @__PURE__ */
|
|
143
|
-
label:
|
|
144
|
-
description: Y ?
|
|
145
|
-
leading:
|
|
146
|
-
leadingClassName:
|
|
150
|
+
}), /* @__PURE__ */ h(ee, {
|
|
151
|
+
label: de?.(r) ?? r.label,
|
|
152
|
+
description: Y ? r.description : void 0,
|
|
153
|
+
leading: r.icon,
|
|
154
|
+
leadingClassName: s.md,
|
|
147
155
|
leadingDecorative: !0,
|
|
148
156
|
wrap: Y,
|
|
149
157
|
bodyClassName: Y ? void 0 : "overflow-hidden",
|
|
150
|
-
trailing:
|
|
158
|
+
trailing: r.trailing != null || m && E === "multiple" ? /* @__PURE__ */ g("span", {
|
|
151
159
|
className: "inline-flex shrink-0 items-center gap-space-sm",
|
|
152
|
-
children: [
|
|
160
|
+
children: [r.trailing, m && E === "multiple" && /* @__PURE__ */ h(re, {
|
|
153
161
|
"aria-hidden": "true",
|
|
154
162
|
className: "size-icon shrink-0"
|
|
155
163
|
})]
|
|
156
164
|
}) : void 0
|
|
157
165
|
})]
|
|
158
|
-
}),
|
|
166
|
+
}), f && p && !!r.children?.length && /* @__PURE__ */ h("div", {
|
|
159
167
|
role: "group",
|
|
160
|
-
className:
|
|
168
|
+
className: n("tree--group flex flex-col border-s", u, J.childGap, ce ? "border-border" : "border-transparent"),
|
|
161
169
|
style: j === void 0 ? void 0 : {
|
|
162
170
|
marginInlineStart: Math.max(0, j) / 2,
|
|
163
171
|
paddingInlineStart: Math.max(0, j) / 2
|
|
164
172
|
},
|
|
165
|
-
children: $(
|
|
173
|
+
children: $(r.children, t + 1)
|
|
166
174
|
})]
|
|
167
|
-
},
|
|
175
|
+
}, r.value);
|
|
168
176
|
});
|
|
169
177
|
}
|
|
170
|
-
return /* @__PURE__ */
|
|
171
|
-
...
|
|
178
|
+
return /* @__PURE__ */ h("div", {
|
|
179
|
+
...me,
|
|
172
180
|
role: "tree",
|
|
173
181
|
"data-row-layout": A,
|
|
174
182
|
"aria-multiselectable": E === "multiple" || void 0,
|
|
175
183
|
"aria-disabled": O || void 0,
|
|
176
|
-
onKeyDown:
|
|
177
|
-
className:
|
|
178
|
-
children: b.length ? $(b, 1) : /* @__PURE__ */
|
|
184
|
+
onKeyDown: _e,
|
|
185
|
+
className: n("tree--component flex min-w-0 flex-col", J.gap, fe),
|
|
186
|
+
children: b.length ? $(b, 1) : /* @__PURE__ */ h(r, {
|
|
179
187
|
type: "secondary",
|
|
180
|
-
children:
|
|
188
|
+
children: le ?? M.empty
|
|
181
189
|
})
|
|
182
190
|
});
|
|
183
191
|
}
|
|
184
192
|
//#endregion
|
|
185
|
-
export {
|
|
193
|
+
export { v as i, y as n, _ as r, b as t };
|
|
186
194
|
|
|
187
|
-
//# sourceMappingURL=tree-
|
|
195
|
+
//# sourceMappingURL=tree-YpkxUG2Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-YpkxUG2Z.js","names":["DisclosureButton","useTypographyConfig","cn","Text","textSizes","focusRecipes","Button","ICON_DESCENDANT_SIZE_CLASSNAMES","rowBlockPaddingClasses","CollectionContent","interactionRecipes","navigationRowDensityRecipes","navigationRowInlineClasses","navigationChildInsetClasses","indexHierarchy","index","visit","node","nodes","entry","path","disabled","items","visibleHierarchy","open","expanded","isBranch","defaultTreeStrings","label","Tree","stringsProp","props","strings","useStrings","localExpanded","setLocalExpanded","useState","defaultExpandedValues","localSelected","setLocalSelected","defaultSelectedValues","expandedValues","selected","selectedValues","useMemo","visible","focused","setFocused","visibleValues","visibleAncestor","focusValue","refs","useRef","focusedElement","search","recipe","density","rich","rowLayout","previous","focus","value","toggle","next","onExpandedValuesChange","select","branchActivation","selectionMode","onSelectedValuesChange","keyboard","onKeyDown","event","position","rtl","forward","backward","item","now","term","letter","rows","blocked","branch","checked","element","level","defaultTextSize","ChevronDown","ChevronRight","renderLabel","Check","showGuides","indent","className","empty"],"sources":["../src/components/base/tree/hierarchy.ts","../src/components/base/tree/tree.types.ts","../src/components/base/tree/tree.tsx"],"sourcesContent":["import type { TreeNode } from './tree.types';\nexport interface HierarchyEntry<T> { node: TreeNode<T>; parent: string | null; path: TreeNode<T>[]; disabled: boolean }\n/** One canonical traversal for tree focus, cascader paths and local search. */\nexport function indexHierarchy<T>(items: readonly TreeNode<T>[]): Map<string, HierarchyEntry<T>> {\n const index = new Map<string, HierarchyEntry<T>>();\n function visit(nodes: readonly TreeNode<T>[], path: TreeNode<T>[], disabled: boolean) {\n for (const node of nodes) {\n if (index.has(node.value)) throw new Error(`Hierarchy values must be unique: ${node.value}`);\n const entry = { node, parent: path.at(-1)?.value ?? null, path: [...path, node], disabled: disabled || !!node.disabled };\n index.set(node.value, entry);\n visit(node.children ?? [], entry.path, entry.disabled);\n }\n }\n visit(items, [], false);\n return index;\n}\nexport function visibleHierarchy<T>(index: Map<string, HierarchyEntry<T>>, expanded: readonly string[]) {\n const open = new Set(expanded);\n return [...index.values()].filter(entry => entry.path.slice(0, -1).every(node => open.has(node.value)));\n}\nexport function isBranch(node: TreeNode) { return !!(node.hasChildren || node.children?.length); }\n","import type { StringsProp } from '../../../lib/strings';\nimport type { ComponentProps, ReactNode } from 'react';\nimport type { RowDensity } from '../../../lib/row-recipes';\n\n/** Stable values must be unique throughout a hierarchy. */\nexport interface TreeNode<T = unknown> {\n value: string;\n label: string;\n /** Supporting copy in rich rows; plain strings provide a title/description in line rows. */\n description?: ReactNode;\n icon?: ReactNode;\n /** Non-interactive status or metadata, aligned at the end of the row. */\n trailing?: ReactNode;\n children?: readonly TreeNode<T>[];\n /** Declares an unloaded branch. */\n hasChildren?: boolean;\n /** Disables this node and its descendants. */\n disabled?: boolean;\n data?: T;\n}\nexport interface TreeStrings {\n expand: (label: string) => string;\n collapse: (label: string) => string;\n /** Shown when there are no items. The `empty` prop overrides it with any node. */\n empty: string;\n}\nexport const defaultTreeStrings: TreeStrings = {\n expand: (label) => `Expand ${label}`,\n collapse: (label) => `Collapse ${label}`,\n empty: 'No items',\n};\nexport interface TreeProps<T = unknown> extends Omit<ComponentProps<'div'>, 'children' | 'onSelect'> {\n items: readonly TreeNode<T>[];\n expandedValues?: readonly string[];\n defaultExpandedValues?: readonly string[];\n onExpandedValuesChange?: (values: string[], node: TreeNode<T>) => void;\n selectedValues?: readonly string[];\n defaultSelectedValues?: readonly string[];\n onSelectedValuesChange?: (values: string[], node: TreeNode<T>) => void;\n selectionMode?: 'single' | 'multiple' | 'none';\n /** Clicking or pressing Enter/Space on a branch selects it, or toggles its children. */\n branchActivation?: 'select' | 'toggle';\n disabled?: boolean;\n /** Vertical row rhythm. Compact by default; primary text retains the shared size. */\n density?: RowDensity;\n /** Navigation is single-line by default. Rich rows explicitly allow supporting copy and wrapping. */\n rowLayout?: 'line' | 'rich';\n /** Explicit per-level indentation in pixels. Omit to inherit shared spacing. */\n indent?: number;\n /** Decorative guides retain the hierarchy at every nesting level. */\n showGuides?: boolean;\n /** Replaces `strings.empty` with any node. */\n empty?: ReactNode;\n /** Overrides the tree's own copy; merged over `defaultTreeStrings`. */\n strings?: StringsProp<TreeStrings>;\n /** Presentation slot only; interactive content should live outside the tree row. */\n renderLabel?: (node: TreeNode<T>) => ReactNode;\n}\n","import { useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react';\nimport { Check, ChevronDown, ChevronRight } from 'lucide-react';\nimport { Button as DisclosureButton } from '../../ui/button';\nimport { CollectionContent } from '../popover/collection-content';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { useTypographyConfig } from '../../../lib/ui-provider';\nimport { textSizes } from '../../typography/text.styles';\nimport { ICON_DESCENDANT_SIZE_CLASSNAMES } from '../display/icon-size';\nimport { navigationChildInsetClasses, navigationRowDensityRecipes, navigationRowInlineClasses } from '../../../lib/navigation-row-recipes';\nimport { rowBlockPaddingClasses } from '../../../lib/row-recipes';\nimport { indexHierarchy, isBranch, visibleHierarchy } from './hierarchy';\nimport { defaultTreeStrings, type TreeNode, type TreeProps } from './tree.types';\nimport { useStrings } from '../../../lib/strings';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\n\n/** Accessible data-driven hierarchy. Focus moves independently from selection. */\nexport function Tree<T = unknown>({items, expandedValues, defaultExpandedValues = [], onExpandedValuesChange, selectedValues, defaultSelectedValues = [], onSelectedValuesChange, selectionMode = 'single', branchActivation = 'select', disabled = false, density = 'compact', rowLayout = 'line', indent, showGuides = true, empty, strings: stringsProp, renderLabel, className, onKeyDown, ...props}: TreeProps<T>) {\n const strings = useStrings(defaultTreeStrings, stringsProp);\n const [localExpanded, setLocalExpanded] = useState<readonly string[]>(defaultExpandedValues);\n const [localSelected, setLocalSelected] = useState<readonly string[]>(defaultSelectedValues);\n const expanded = expandedValues ?? localExpanded;\n const selected = selectedValues ?? localSelected;\n const index = useMemo(() => indexHierarchy(items), [items]);\n const visible = visibleHierarchy(index, expanded).filter(entry => !entry.disabled);\n const [focused, setFocused] = useState<string | null>(null);\n const visibleValues = new Set(visible.map(entry => entry.node.value));\n const visibleAncestor = focused === null ? undefined : index.get(focused)?.path.slice(0, -1).reverse().find(node => visibleValues.has(node.value))?.value;\n const focusValue = focused !== null && visibleValues.has(focused) ? focused : visibleAncestor ?? visible.find(entry => selected.includes(entry.node.value))?.node.value ?? visible[0]?.node.value;\n const refs = useRef(new Map<string, HTMLDivElement>());\n const focusedElement = useRef<HTMLDivElement | null>(null);\n const search = useRef({ text: '', time: 0 });\n const { defaultTextSize } = useTypographyConfig();\n const recipe = navigationRowDensityRecipes[density];\n const rich = rowLayout === 'rich';\n useLayoutEffect(() => {\n const previous = focusedElement.current;\n if (disabled || focusValue === undefined || !previous) return;\n // Keep focus inside a changing hierarchy, but do not reclaim it from another control.\n if (previous === document.activeElement || (!previous.isConnected && document.activeElement === document.body)) refs.current.get(focusValue)?.focus();\n }, [focusValue, disabled]);\n function focus(value: string | undefined) { if (value !== undefined) { setFocused(value); refs.current.get(value)?.focus(); } }\n function toggle(node: TreeNode<T>) {\n if (disabled || index.get(node.value)?.disabled) return;\n const next = expanded.includes(node.value) ? expanded.filter(value => value !== node.value) : [...expanded, node.value];\n if (expandedValues === undefined) setLocalExpanded(next);\n onExpandedValuesChange?.(next, node);\n }\n function select(node: TreeNode<T>) {\n if (disabled || index.get(node.value)?.disabled) return;\n if (branchActivation === 'toggle' && isBranch(node)) { toggle(node); return; }\n if (selectionMode === 'none') return;\n const next = selectionMode === 'multiple' ? selected.includes(node.value) ? selected.filter(value => value !== node.value) : [...selected, node.value] : [node.value];\n if (selectedValues === undefined) setLocalSelected(next);\n onSelectedValuesChange?.(next, node);\n }\n function keyboard(event: KeyboardEvent<HTMLDivElement>) {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || (event.target as HTMLElement).closest('button') || (event.target as HTMLElement).closest('[role=tree]') !== event.currentTarget) return;\n const position = visible.findIndex(entry => entry.node.value === focused);\n const entry = index.get(focused ?? focusValue ?? '');\n if (!entry) return;\n const rtl = getComputedStyle(event.currentTarget).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n if (event.key === 'ArrowDown') focus(visible[Math.min(position + 1, visible.length - 1)]?.node.value);\n else if (event.key === 'ArrowUp') focus(visible[Math.max(position - 1, 0)]?.node.value);\n else if (event.key === 'Home') focus(visible[0]?.node.value);\n else if (event.key === 'End') focus(visible.at(-1)?.node.value);\n else if (event.key === forward && isBranch(entry.node)) {\n if (!expanded.includes(entry.node.value)) toggle(entry.node);\n else focus(entry.node.children?.find(node => !index.get(node.value)?.disabled)?.value);\n } else if (event.key === backward) {\n if (isBranch(entry.node) && expanded.includes(entry.node.value)) toggle(entry.node);\n else focus(entry.parent ?? undefined);\n } else if (event.key === 'Enter' || event.key === ' ') select(entry.node);\n else if (event.key === '*') {\n const next = [...new Set([...expanded, ...[...index.values()].filter(item => item.parent === entry.parent && !item.disabled && isBranch(item.node)).map(item => item.node.value)])];\n if (expandedValues === undefined) setLocalExpanded(next);\n onExpandedValuesChange?.(next, entry.node);\n } else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n // oxlint-disable-next-line react/purity -- Runs in the key handler, not during render.\n const now = Date.now();\n search.current.text = (now - search.current.time < 500 ? search.current.text : '') + event.key.toLocaleLowerCase();\n search.current.time = now;\n const term = [...search.current.text].every(letter => letter === event.key.toLocaleLowerCase()) ? event.key.toLocaleLowerCase() : search.current.text;\n const rotated = [...visible.slice(position + 1), ...visible.slice(0, position + 1)];\n focus(rotated.find(item => item.node.label.toLocaleLowerCase().startsWith(term))?.node.value);\n } else return;\n event.preventDefault();\n }\n function rows(nodes: readonly TreeNode<T>[], level: number) { return nodes.map((node, position) => {\n const blocked = disabled || !!index.get(node.value)?.disabled;\n const branch = isBranch(node);\n const open = expanded.includes(node.value);\n const checked = selected.includes(node.value);\n // oxlint-disable-next-line jsx-a11y/click-events-have-key-events -- Tree's onKeyDown handles keys for the focused treeitem.\n return <div key={node.value} data-tree-value={node.value} className=\"tree--branch min-w-0 outline-none [&:focus-visible>.tree--item]:inset-ring [&:focus-visible>.tree--item]:inset-ring-ring [&:focus-visible>.tree--item]:ring-3 [&:focus-visible>.tree--item]:ring-ring/50\" ref={element => { if (element) refs.current.set(node.value, element); else refs.current.delete(node.value); }}\n role=\"treeitem\" aria-label={node.label} aria-level={level} aria-posinset={position + 1} aria-setsize={nodes.length}\n title={!rich && typeof node.description === 'string' ? node.description : undefined}\n aria-description={!rich && typeof node.description === 'string' ? node.description : undefined}\n aria-expanded={branch ? open : undefined} aria-selected={selectionMode !== 'none' && !(branch && branchActivation === 'toggle') ? checked : undefined} aria-disabled={blocked || undefined}\n tabIndex={!blocked && focusValue === node.value ? 0 : -1}\n onFocus={event => { if (event.target === event.currentTarget) { focusedElement.current = event.currentTarget; setFocused(node.value); } }}\n onClick={event => { if (!blocked && (event.target as HTMLElement).closest('[role=treeitem]') === event.currentTarget) { focus(node.value); select(node); } }}>\n <div data-selected={checked || undefined} data-disabled={blocked || undefined}\n className={cn(`tree--item flex w-full items-center cursor-default outline-none ${interactionRecipes.rowHover} ${focusRecipes.edge} data-selected:bg-accent data-selected:hover:bg-accent data-selected:text-accent-foreground data-disabled:opacity-50`, navigationRowInlineClasses, rich ? rowBlockPaddingClasses[density] : level === 1 ? recipe.height : recipe.childHeight, textSizes[defaultTextSize ?? 'sm'])}\n >\n <span className=\"tree--caret relative size-icon-sm shrink-0\">\n {branch && <DisclosureButton variant=\"ghost\" size=\"icon-xs\" className=\"tree--disclosure absolute start-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 rounded-radius rtl:translate-x-1/2 disabled:opacity-100 aria-disabled:opacity-100\" tabIndex={-1} disabled={blocked} aria-label={open ? strings.collapse(node.label) : strings.expand(node.label)} onClick={event => {event.stopPropagation(); focus(node.value); toggle(node);}}>\n {open ? <ChevronDown aria-hidden=\"true\" className=\"size-icon-sm\" /> : <ChevronRight aria-hidden=\"true\" className=\"size-icon-sm rtl:rotate-180\" />}\n </DisclosureButton>}\n </span>\n <CollectionContent label={renderLabel?.(node) ?? node.label} description={rich ? node.description : undefined} leading={node.icon} leadingClassName={ICON_DESCENDANT_SIZE_CLASSNAMES.md} leadingDecorative wrap={rich}\n bodyClassName={rich ? undefined : 'overflow-hidden'}\n trailing={node.trailing != null || (checked && selectionMode === 'multiple') ? <span className=\"inline-flex shrink-0 items-center gap-space-sm\">{node.trailing}{checked && selectionMode === 'multiple' && <Check aria-hidden=\"true\" className=\"size-icon shrink-0\" />}</span> : undefined} />\n </div>\n {branch && open && !!node.children?.length && <div role=\"group\" className={cn('tree--group flex flex-col border-s', navigationChildInsetClasses, recipe.childGap, showGuides ? 'border-border' : 'border-transparent')}\n style={indent === undefined ? undefined : { marginInlineStart: Math.max(0, indent) / 2, paddingInlineStart: Math.max(0, indent) / 2 }}>{rows(node.children, level + 1)}</div>}\n </div>;\n }); }\n // oxlint-disable-next-line jsx-a11y/interactive-supports-focus -- Roving tabindex: focus stays on the items and the container handles their keys.\n return <div {...props} role=\"tree\" data-row-layout={rowLayout} aria-multiselectable={selectionMode === 'multiple' || undefined} aria-disabled={disabled || undefined} onKeyDown={keyboard} className={cn('tree--component flex min-w-0 flex-col', recipe.gap, className)}>\n {items.length ? rows(items, 1) : <Text type=\"secondary\">{empty ?? strings.empty}</Text>}\n </div>;\n}\n"],"mappings":"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"}
|