@mizen-labs/ui 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +72 -2
- package/dist/closed.d.ts +5 -0
- package/dist/closed.js +1 -0
- package/dist/components/accordion/accordion.d.ts +28 -0
- package/dist/components/accordion/accordion.js +1 -0
- package/dist/components/accordion/accordion.styles.js +1 -0
- package/dist/components/activity-feed/activity-feed.d.ts +28 -0
- package/dist/components/activity-feed/activity-feed.js +2 -0
- package/dist/components/activity-feed/activity-feed.styles.js +1 -0
- package/dist/components/agent-thinking/agent-thinking.d.ts +25 -0
- package/dist/components/agent-thinking/agent-thinking.js +16 -0
- package/dist/components/agent-thinking/agent-thinking.styles.js +3 -0
- package/dist/components/alert/alert.d.ts +14 -0
- package/dist/components/alert/alert.js +1 -0
- package/dist/components/alert/alert.styles.js +1 -0
- package/dist/components/alert/alert.stylex.js +1 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +29 -0
- package/dist/components/alert-dialog/alert-dialog.js +1 -0
- package/dist/components/alert-dialog/alert-dialog.styles.js +1 -0
- package/dist/components/approval-card/approval-card.d.ts +38 -0
- package/dist/components/approval-card/approval-card.js +8 -0
- package/dist/components/approval-card/approval-card.styles.js +1 -0
- package/dist/components/area-chart/area-chart.d.ts +29 -0
- package/dist/components/area-chart/area-chart.js +10 -0
- package/dist/components/area-chart/area-chart.styles.js +1 -0
- package/dist/components/aspect-ratio/aspect-ratio.d.ts +7 -0
- package/dist/components/aspect-ratio/aspect-ratio.js +1 -0
- package/dist/components/aspect-ratio/aspect-ratio.styles.js +1 -0
- package/dist/components/attachment/attachment.d.ts +20 -0
- package/dist/components/attachment/attachment.js +1 -0
- package/dist/components/attachment/attachment.styles.js +1 -0
- package/dist/components/avatar/avatar-character.styles.js +1 -0
- package/dist/components/avatar/avatar.d.ts +36 -0
- package/dist/components/avatar/avatar.js +4 -0
- package/dist/components/avatar/avatar.styles.js +1 -0
- package/dist/components/badge/badge.d.ts +8 -0
- package/dist/components/badge/badge.js +1 -0
- package/dist/components/badge/badge.styles.js +1 -0
- package/dist/components/bar-list/bar-list.d.ts +22 -0
- package/dist/components/bar-list/bar-list.js +4 -0
- package/dist/components/bar-list/bar-list.styles.js +1 -0
- package/dist/components/blockquote/blockquote.d.ts +12 -0
- package/dist/components/blockquote/blockquote.js +1 -0
- package/dist/components/blockquote/blockquote.styles.js +1 -0
- package/dist/components/breadcrumb/breadcrumb-link.d.ts +4 -0
- package/dist/components/breadcrumb/breadcrumb-link.js +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +16 -0
- package/dist/components/breadcrumb/breadcrumb.js +2 -0
- package/dist/components/breadcrumb/breadcrumb.styles.js +1 -0
- package/dist/components/button/button-colors.stylex.js +3 -0
- package/dist/components/button/button.css +16 -0
- package/dist/components/button/button.css.d.js +0 -0
- package/dist/components/button/button.d.ts +27 -0
- package/dist/components/button/button.js +1 -0
- package/dist/components/button/button.styles.js +3 -0
- package/dist/components/button-group/button-group.css +115 -0
- package/dist/components/button-group/button-group.d.ts +8 -0
- package/dist/components/button-group/button-group.js +3 -0
- package/dist/components/button-group/button-group.styles.js +1 -0
- package/dist/components/calendar/calendar-components.js +2 -0
- package/dist/components/calendar/calendar-context.js +1 -0
- package/dist/components/calendar/calendar-dropdowns.js +2 -0
- package/dist/components/calendar/calendar-utils.js +1 -0
- package/dist/components/calendar/calendar.d.ts +4 -0
- package/dist/components/calendar/calendar.js +1 -0
- package/dist/components/calendar/calendar.styles.js +1 -0
- package/dist/components/calendar/calendar.types.d.ts +48 -0
- package/dist/components/calendar/calendar.types.js +1 -0
- package/dist/components/calendar-heatmap/calendar-heatmap.d.ts +20 -0
- package/dist/components/calendar-heatmap/calendar-heatmap.js +9 -0
- package/dist/components/card/card.d.ts +17 -0
- package/dist/components/card/card.js +1 -0
- package/dist/components/card/card.styles.js +1 -0
- package/dist/components/carousel/carousel.d.ts +33 -0
- package/dist/components/carousel/carousel.js +21 -0
- package/dist/components/carousel/carousel.styles.js +4 -0
- package/dist/components/category-comparison/category-comparison.d.ts +30 -0
- package/dist/components/category-comparison/category-comparison.js +9 -0
- package/dist/components/category-comparison/category-comparison.styles.js +1 -0
- package/dist/components/chart-frame/arc-path.js +7 -0
- package/dist/components/chart-frame/chart-assert.js +2 -0
- package/dist/components/chart-frame/chart-colors.d.ts +10 -0
- package/dist/components/chart-frame/chart-colors.js +2 -0
- package/dist/components/chart-frame/chart-crosshair.js +6 -0
- package/dist/components/chart-frame/chart-data-table.js +4 -0
- package/dist/components/chart-frame/chart-frame.d.ts +24 -0
- package/dist/components/chart-frame/chart-frame.js +7 -0
- package/dist/components/chart-frame/chart-frame.styles.js +1 -0
- package/dist/components/chart-frame/chart-hover.js +3 -0
- package/dist/components/chart-frame/chart-loading.d.ts +22 -0
- package/dist/components/chart-frame/chart-loading.js +6 -0
- package/dist/components/chart-frame/ring-graphic.js +5 -0
- package/dist/components/chart-legend/chart-legend.d.ts +18 -0
- package/dist/components/chart-legend/chart-legend.js +1 -0
- package/dist/components/chart-legend/chart-legend.styles.js +1 -0
- package/dist/components/chart-tooltip/chart-tooltip.d.ts +14 -0
- package/dist/components/chart-tooltip/chart-tooltip.js +1 -0
- package/dist/components/chart-tooltip/chart-tooltip.styles.js +1 -0
- package/dist/components/checkbox/checkbox-card.d.ts +16 -0
- package/dist/components/checkbox/checkbox-card.js +1 -0
- package/dist/components/checkbox/checkbox-card.styles.js +1 -0
- package/dist/components/checkbox/checkbox.d.ts +13 -0
- package/dist/components/checkbox/checkbox.js +5 -0
- package/dist/components/checkbox/checkbox.styles.js +3 -0
- package/dist/components/checkbox-group/checkbox-group.d.ts +6 -0
- package/dist/components/checkbox-group/checkbox-group.js +1 -0
- package/dist/components/checkbox-group/checkbox-group.styles.js +1 -0
- package/dist/components/citation/citation.d.ts +6 -0
- package/dist/components/citation/citation.js +1 -0
- package/dist/components/citation/citation.styles.js +1 -0
- package/dist/components/code/code.d.ts +5 -0
- package/dist/components/code/code.js +1 -0
- package/dist/components/code/code.styles.js +3 -0
- package/dist/components/code-block/code-block-copy.d.ts +6 -0
- package/dist/components/code-block/code-block-copy.js +1 -0
- package/dist/components/code-block/code-block-highlight.d.ts +31 -0
- package/dist/components/code-block/code-block-highlight.js +8 -0
- package/dist/components/code-block/code-block.d.ts +22 -0
- package/dist/components/code-block/code-block.js +4 -0
- package/dist/components/code-block/code-block.styles.js +3 -0
- package/dist/components/collapsible/collapsible.d.ts +19 -0
- package/dist/components/collapsible/collapsible.js +1 -0
- package/dist/components/collapsible/collapsible.styles.js +1 -0
- package/dist/components/combobox/combobox-chips.js +1 -0
- package/dist/components/combobox/combobox-chips.styles.js +1 -0
- package/dist/components/combobox/combobox-context.d.ts +9 -0
- package/dist/components/combobox/combobox-context.js +1 -0
- package/dist/components/combobox/combobox-field.styles.js +1 -0
- package/dist/components/combobox/combobox-input.js +1 -0
- package/dist/components/combobox/combobox-popup.js +1 -0
- package/dist/components/combobox/combobox-popup.styles.js +1 -0
- package/dist/components/combobox/combobox-structure.js +1 -0
- package/dist/components/combobox/combobox.d.ts +27 -0
- package/dist/components/combobox/combobox.js +1 -0
- package/dist/components/combobox/combobox.types.d.ts +43 -0
- package/dist/components/combobox/combobox.types.js +1 -0
- package/dist/components/command/command-dialog.js +1 -0
- package/dist/components/command/command-dialog.styles.js +1 -0
- package/dist/components/command/command-field.styles.js +1 -0
- package/dist/components/command/command-input.js +1 -0
- package/dist/components/command/command-items.js +1 -0
- package/dist/components/command/command-items.styles.js +1 -0
- package/dist/components/command/command-structure.js +1 -0
- package/dist/components/command/command.d.ts +29 -0
- package/dist/components/command/command.js +2 -0
- package/dist/components/command/command.types.d.ts +28 -0
- package/dist/components/command/command.types.js +1 -0
- package/dist/components/composer/attachment-marker.stylex.js +2 -0
- package/dist/components/composer/composer-clipboard.js +1 -0
- package/dist/components/composer/composer-context-meter.d.ts +36 -0
- package/dist/components/composer/composer-context-meter.js +6 -0
- package/dist/components/composer/composer-dictation.d.ts +17 -0
- package/dist/components/composer/composer-dictation.js +5 -0
- package/dist/components/composer/composer-document.d.ts +32 -0
- package/dist/components/composer/composer-document.js +1 -0
- package/dist/components/composer/composer-editor.d.ts +57 -0
- package/dist/components/composer/composer-editor.js +4 -0
- package/dist/components/composer/composer-history.js +1 -0
- package/dist/components/composer/composer-options.d.ts +45 -0
- package/dist/components/composer/composer-options.js +1 -0
- package/dist/components/composer/composer-parts.d.ts +36 -0
- package/dist/components/composer/composer-parts.js +4 -0
- package/dist/components/composer/composer-parts.styles.js +4 -0
- package/dist/components/composer/composer-picker.d.ts +50 -0
- package/dist/components/composer/composer-picker.js +15 -0
- package/dist/components/composer/composer-progress-ring.js +1 -0
- package/dist/components/composer/composer-query.js +1 -0
- package/dist/components/composer/composer-scroll-area.js +1 -0
- package/dist/components/composer/composer-session.js +3 -0
- package/dist/components/composer/composer-value.d.ts +45 -0
- package/dist/components/composer/composer-value.js +1 -0
- package/dist/components/composer/composer.css +80 -0
- package/dist/components/composer/composer.d.ts +72 -0
- package/dist/components/composer/composer.js +3 -0
- package/dist/components/composer/composer.styles.js +2 -0
- package/dist/components/composer/use-composer-editor.d.ts +8 -0
- package/dist/components/composer/use-composer-editor.js +2 -0
- package/dist/components/context-menu/context-menu-items.d.ts +10 -0
- package/dist/components/context-menu/context-menu-items.js +2 -0
- package/dist/components/context-menu/context-menu-utils.js +1 -0
- package/dist/components/context-menu/context-menu.d.ts +22 -0
- package/dist/components/context-menu/context-menu.js +1 -0
- package/dist/components/context-menu/context-menu.types.d.ts +57 -0
- package/dist/components/context-menu/context-menu.types.js +1 -0
- package/dist/components/conversation/conversation.d.ts +41 -0
- package/dist/components/conversation/conversation.js +6 -0
- package/dist/components/conversation/conversation.styles.js +2 -0
- package/dist/components/data-table/data-table.d.ts +30 -0
- package/dist/components/data-table/data-table.js +13 -0
- package/dist/components/data-table/data-table.styles.js +1 -0
- package/dist/components/data-table/grid-navigation.js +10 -0
- package/dist/components/date-picker/date-picker-date.js +1 -0
- package/dist/components/date-picker/date-picker-icon.js +1 -0
- package/dist/components/date-picker/date-picker-state.js +1 -0
- package/dist/components/date-picker/date-picker.d.ts +4 -0
- package/dist/components/date-picker/date-picker.js +1 -0
- package/dist/components/date-picker/date-picker.styles.js +1 -0
- package/dist/components/date-picker/date-picker.types.d.ts +28 -0
- package/dist/components/date-picker/date-picker.types.js +1 -0
- package/dist/components/date-range-picker/date-range-picker-date.js +1 -0
- package/dist/components/date-range-picker/date-range-picker-state.js +1 -0
- package/dist/components/date-range-picker/date-range-picker-views.js +1 -0
- package/dist/components/date-range-picker/date-range-picker.d.ts +4 -0
- package/dist/components/date-range-picker/date-range-picker.js +1 -0
- package/dist/components/date-range-picker/date-range-picker.styles.js +1 -0
- package/dist/components/date-range-picker/date-range-picker.types.d.ts +37 -0
- package/dist/components/date-range-picker/date-range-picker.types.js +1 -0
- package/dist/components/date-time-input/date-time-input.d.ts +13 -0
- package/dist/components/date-time-input/date-time-input.js +1 -0
- package/dist/components/diagram/diagram-renderer.js +5 -0
- package/dist/components/diagram/diagram.css +51 -0
- package/dist/components/diagram/diagram.d.ts +11 -0
- package/dist/components/diagram/diagram.js +4 -0
- package/dist/components/diagram/diagram.styles.js +6 -0
- package/dist/components/dialog/dialog.d.ts +34 -0
- package/dist/components/dialog/dialog.js +1 -0
- package/dist/components/dialog/dialog.styles.js +1 -0
- package/dist/components/distribution/distribution.d.ts +16 -0
- package/dist/components/distribution/distribution.js +6 -0
- package/dist/components/distribution/distribution.styles.js +1 -0
- package/dist/components/drawer/drawer-affordance.styles.js +1 -0
- package/dist/components/drawer/drawer-bar.js +1 -0
- package/dist/components/drawer/drawer-content.js +1 -0
- package/dist/components/drawer/drawer-layout.js +1 -0
- package/dist/components/drawer/drawer-menu.d.ts +30 -0
- package/dist/components/drawer/drawer-menu.js +1 -0
- package/dist/components/drawer/drawer-menu.styles.js +1 -0
- package/dist/components/drawer/drawer-positions.styles.js +1 -0
- package/dist/components/drawer/drawer.context.js +1 -0
- package/dist/components/drawer/drawer.d.ts +22 -0
- package/dist/components/drawer/drawer.js +2 -0
- package/dist/components/drawer/drawer.styles.js +1 -0
- package/dist/components/drawer/drawer.types.d.ts +53 -0
- package/dist/components/drawer/drawer.types.js +1 -0
- package/dist/components/empty/empty.d.ts +18 -0
- package/dist/components/empty/empty.js +1 -0
- package/dist/components/empty/empty.styles.js +1 -0
- package/dist/components/error-state/error-state.d.ts +15 -0
- package/dist/components/error-state/error-state.js +1 -0
- package/dist/components/error-state/error-state.styles.js +1 -0
- package/dist/components/field/field-context.d.ts +33 -0
- package/dist/components/field/field-context.js +1 -0
- package/dist/components/field/field.d.ts +44 -0
- package/dist/components/field/field.js +3 -0
- package/dist/components/field/field.styles.js +1 -0
- package/dist/components/fieldset/fieldset.d.ts +14 -0
- package/dist/components/fieldset/fieldset.js +1 -0
- package/dist/components/fieldset/fieldset.styles.js +1 -0
- package/dist/components/file-upload/file-upload-context.js +1 -0
- package/dist/components/file-upload/file-upload-controls.d.ts +4 -0
- package/dist/components/file-upload/file-upload-controls.js +7 -0
- package/dist/components/file-upload/file-upload-item-preview.d.ts +5 -0
- package/dist/components/file-upload/file-upload-item-preview.js +3 -0
- package/dist/components/file-upload/file-upload-items.d.ts +8 -0
- package/dist/components/file-upload/file-upload-items.js +5 -0
- package/dist/components/file-upload/file-upload-motion.js +6 -0
- package/dist/components/file-upload/file-upload-validation.d.ts +18 -0
- package/dist/components/file-upload/file-upload-validation.js +1 -0
- package/dist/components/file-upload/file-upload.d.ts +19 -0
- package/dist/components/file-upload/file-upload.js +2 -0
- package/dist/components/file-upload/file-upload.styles.js +2 -0
- package/dist/components/file-upload/file-upload.types.d.ts +87 -0
- package/dist/components/file-upload/file-upload.types.js +1 -0
- package/dist/components/frame/frame.d.ts +13 -0
- package/dist/components/frame/frame.js +1 -0
- package/dist/components/frame/frame.styles.js +1 -0
- package/dist/components/funnel/funnel-flow.js +3 -0
- package/dist/components/funnel/funnel.d.ts +31 -0
- package/dist/components/funnel/funnel.js +4 -0
- package/dist/components/funnel/funnel.styles.js +1 -0
- package/dist/components/grid/grid.d.ts +5 -0
- package/dist/components/grid/grid.js +1 -0
- package/dist/components/grid/grid.styles.js +1 -0
- package/dist/components/group/group.d.ts +5 -0
- package/dist/components/group/group.js +1 -0
- package/dist/components/group/group.styles.js +1 -0
- package/dist/components/heading/heading.d.ts +10 -0
- package/dist/components/heading/heading.js +1 -0
- package/dist/components/heading/heading.styles.js +1 -0
- package/dist/components/heatmap/heatmap-scale.js +3 -0
- package/dist/components/heatmap/heatmap.d.ts +17 -0
- package/dist/components/heatmap/heatmap.js +2 -0
- package/dist/components/inline/inline.d.ts +5 -0
- package/dist/components/inline/inline.js +1 -0
- package/dist/components/inline/inline.styles.js +1 -0
- package/dist/components/inline-citation/citation-source.d.ts +27 -0
- package/dist/components/inline-citation/citation-source.js +13 -0
- package/dist/components/inline-citation/inline-citation.d.ts +22 -0
- package/dist/components/inline-citation/inline-citation.js +10 -0
- package/dist/components/inline-citation/inline-citation.styles.js +1 -0
- package/dist/components/input/input.d.ts +17 -0
- package/dist/components/input/input.js +3 -0
- package/dist/components/input/input.styles.js +1 -0
- package/dist/components/input-group/input-group.d.ts +17 -0
- package/dist/components/input-group/input-group.js +1 -0
- package/dist/components/input-group/input-group.styles.js +1 -0
- package/dist/components/kbd/kbd.d.ts +7 -0
- package/dist/components/kbd/kbd.js +1 -0
- package/dist/components/kbd/kbd.styles.js +1 -0
- package/dist/components/label/label.d.ts +5 -0
- package/dist/components/label/label.js +1 -0
- package/dist/components/label/label.styles.js +1 -0
- package/dist/components/lightbox/lightbox-gallery.d.ts +25 -0
- package/dist/components/lightbox/lightbox-gallery.js +6 -0
- package/dist/components/lightbox/lightbox.d.ts +30 -0
- package/dist/components/lightbox/lightbox.js +6 -0
- package/dist/components/lightbox/lightbox.styles.js +3 -0
- package/dist/components/link/link.d.ts +15 -0
- package/dist/components/link/link.js +1 -0
- package/dist/components/link/link.styles.js +1 -0
- package/dist/components/list/list.d.ts +10 -0
- package/dist/components/list/list.js +2 -0
- package/dist/components/list/list.styles.js +1 -0
- package/dist/components/markdown/markdown.d.ts +34 -0
- package/dist/components/markdown/markdown.js +8 -0
- package/dist/components/markdown/markdown.styles.js +1 -0
- package/dist/components/menu/menu-align-context.js +3 -0
- package/dist/components/menu/menu.d.ts +75 -0
- package/dist/components/menu/menu.js +2 -0
- package/dist/components/menu/menu.styles.js +1 -0
- package/dist/components/menubar/menubar.d.ts +13 -0
- package/dist/components/menubar/menubar.js +1 -0
- package/dist/components/menubar/menubar.styles.js +1 -0
- package/dist/components/message/message.d.ts +47 -0
- package/dist/components/message/message.js +16 -0
- package/dist/components/message/message.styles.js +3 -0
- package/dist/components/message-scroller/message-scroller-store.d.ts +58 -0
- package/dist/components/message-scroller/message-scroller-store.js +27 -0
- package/dist/components/message-scroller/message-scroller.d.ts +76 -0
- package/dist/components/message-scroller/message-scroller.js +30 -0
- package/dist/components/message-scroller/message-scroller.styles.js +4 -0
- package/dist/components/meter/meter.d.ts +30 -0
- package/dist/components/meter/meter.js +2 -0
- package/dist/components/meter/meter.styles.js +1 -0
- package/dist/components/metric/metric.d.ts +17 -0
- package/dist/components/metric/metric.js +4 -0
- package/dist/components/metric/metric.styles.js +1 -0
- package/dist/components/metric-trend/metric-trend.d.ts +26 -0
- package/dist/components/metric-trend/metric-trend.js +6 -0
- package/dist/components/metric-trend/metric-trend.styles.js +1 -0
- package/dist/components/navigation-menu/navigation-menu.d.ts +40 -0
- package/dist/components/navigation-menu/navigation-menu.js +1 -0
- package/dist/components/navigation-menu/navigation-menu.styles.js +1 -0
- package/dist/components/number-field/number-field-context.js +1 -0
- package/dist/components/number-field/number-field.d.ts +11 -0
- package/dist/components/number-field/number-field.js +1 -0
- package/dist/components/number-field/number-field.styles.js +1 -0
- package/dist/components/number-field/number-field.types.d.ts +30 -0
- package/dist/components/number-field/number-field.types.js +1 -0
- package/dist/components/otp-field/otp-field.d.ts +21 -0
- package/dist/components/otp-field/otp-field.js +1 -0
- package/dist/components/otp-field/otp-field.styles.js +1 -0
- package/dist/components/overflow-list/overflow-list.d.ts +10 -0
- package/dist/components/overflow-list/overflow-list.js +3 -0
- package/dist/components/overflow-list/overflow-list.styles.js +1 -0
- package/dist/components/pagination/pagination-link.d.ts +10 -0
- package/dist/components/pagination/pagination-link.js +1 -0
- package/dist/components/pagination/pagination.d.ts +22 -0
- package/dist/components/pagination/pagination.js +2 -0
- package/dist/components/pagination/pagination.styles.js +1 -0
- package/dist/components/part-to-whole/part-to-whole.d.ts +18 -0
- package/dist/components/part-to-whole/part-to-whole.js +2 -0
- package/dist/components/part-to-whole/part-to-whole.styles.js +1 -0
- package/dist/components/popover/popover.d.ts +33 -0
- package/dist/components/popover/popover.js +1 -0
- package/dist/components/popover/popover.styles.js +1 -0
- package/dist/components/preview-card/preview-card.d.ts +21 -0
- package/dist/components/preview-card/preview-card.js +1 -0
- package/dist/components/preview-card/preview-card.styles.js +1 -0
- package/dist/components/progress/progress.d.ts +28 -0
- package/dist/components/progress/progress.js +1 -0
- package/dist/components/progress/progress.styles.js +1 -0
- package/dist/components/progress-rings/progress-rings.d.ts +25 -0
- package/dist/components/progress-rings/progress-rings.js +2 -0
- package/dist/components/progress-rings/progress-rings.styles.js +1 -0
- package/dist/components/property-list/property-list.d.ts +9 -0
- package/dist/components/property-list/property-list.js +1 -0
- package/dist/components/property-list/property-list.styles.js +1 -0
- package/dist/components/question-card/question-card.d.ts +35 -0
- package/dist/components/question-card/question-card.js +13 -0
- package/dist/components/question-card/question-card.styles.js +1 -0
- package/dist/components/radar-chart/radar-chart.d.ts +28 -0
- package/dist/components/radar-chart/radar-chart.js +1 -0
- package/dist/components/radial-bars/radial-bars.d.ts +19 -0
- package/dist/components/radial-bars/radial-bars.js +8 -0
- package/dist/components/radio/radio-card.d.ts +15 -0
- package/dist/components/radio/radio-card.js +1 -0
- package/dist/components/radio/radio.d.ts +9 -0
- package/dist/components/radio/radio.js +1 -0
- package/dist/components/radio/radio.styles.js +1 -0
- package/dist/components/radio-group/radio-group.d.ts +3 -0
- package/dist/components/radio-group/radio-group.js +1 -0
- package/dist/components/sankey-chart/sankey-chart.d.ts +16 -0
- package/dist/components/sankey-chart/sankey-chart.js +1 -0
- package/dist/components/sankey-chart/sankey-layout.d.ts +34 -0
- package/dist/components/sankey-chart/sankey-layout.js +5 -0
- package/dist/components/scatter-chart/scatter-chart.d.ts +30 -0
- package/dist/components/scatter-chart/scatter-chart.js +6 -0
- package/dist/components/scatter-chart/scatter-chart.styles.js +1 -0
- package/dist/components/score-gauge/score-gauge.d.ts +24 -0
- package/dist/components/score-gauge/score-gauge.js +8 -0
- package/dist/components/score-gauge/score-gauge.styles.js +1 -0
- package/dist/components/scroll-area/scroll-area.d.ts +26 -0
- package/dist/components/scroll-area/scroll-area.js +1 -0
- package/dist/components/scroll-area/scroll-area.styles.js +2 -0
- package/dist/components/section/section.d.ts +5 -0
- package/dist/components/section/section.js +1 -0
- package/dist/components/section/section.styles.js +1 -0
- package/dist/components/segmented-control/segmented-control.d.ts +10 -0
- package/dist/components/segmented-control/segmented-control.js +1 -0
- package/dist/components/segmented-control/segmented-control.styles.js +1 -0
- package/dist/components/select/select.d.ts +55 -0
- package/dist/components/select/select.js +1 -0
- package/dist/components/select/select.styles.js +1 -0
- package/dist/components/separator/separator.d.ts +5 -0
- package/dist/components/separator/separator.js +1 -0
- package/dist/components/separator/separator.styles.js +1 -0
- package/dist/components/sheet/sheet-layout.js +1 -0
- package/dist/components/sheet/sheet-positions.styles.js +1 -0
- package/dist/components/sheet/sheet.d.ts +15 -0
- package/dist/components/sheet/sheet.js +1 -0
- package/dist/components/sheet/sheet.styles.js +1 -0
- package/dist/components/sheet/sheet.types.d.ts +32 -0
- package/dist/components/sheet/sheet.types.js +1 -0
- package/dist/components/skeleton/skeleton.d.ts +8 -0
- package/dist/components/skeleton/skeleton.js +1 -0
- package/dist/components/skeleton/skeleton.styles.js +1 -0
- package/dist/components/slider/slider-context.d.ts +23 -0
- package/dist/components/slider/slider-context.js +9 -0
- package/dist/components/slider/slider-default-anatomy.js +1 -0
- package/dist/components/slider/slider-ref-utils.js +1 -0
- package/dist/components/slider/slider-slot.js +1 -0
- package/dist/components/slider/slider.d.ts +15 -0
- package/dist/components/slider/slider.js +1 -0
- package/dist/components/slider/slider.styles.js +1 -0
- package/dist/components/slider/slider.types.d.ts +36 -0
- package/dist/components/slider/slider.types.js +1 -0
- package/dist/components/sources/sources.d.ts +22 -0
- package/dist/components/sources/sources.js +6 -0
- package/dist/components/sources/sources.styles.js +3 -0
- package/dist/components/spacer/spacer.d.ts +5 -0
- package/dist/components/spacer/spacer.js +1 -0
- package/dist/components/spacer/spacer.styles.js +1 -0
- package/dist/components/spinner/spinner.d.ts +18 -0
- package/dist/components/spinner/spinner.js +9 -0
- package/dist/components/spinner/spinner.styles.js +11 -0
- package/dist/components/stack/stack.d.ts +9 -0
- package/dist/components/stack/stack.js +1 -0
- package/dist/components/stack/stack.styles.d.ts +76 -0
- package/dist/components/stack/stack.styles.js +2 -0
- package/dist/components/status-dot/status-dot.d.ts +9 -0
- package/dist/components/status-dot/status-dot.js +1 -0
- package/dist/components/status-dot/status-dot.styles.js +1 -0
- package/dist/components/stepper/stepper.d.ts +42 -0
- package/dist/components/stepper/stepper.js +2 -0
- package/dist/components/stepper/stepper.styles.js +1 -0
- package/dist/components/streaming-text/streaming-text-words.d.ts +29 -0
- package/dist/components/streaming-text/streaming-text-words.js +19 -0
- package/dist/components/streaming-text/streaming-text.d.ts +35 -0
- package/dist/components/streaming-text/streaming-text.js +13 -0
- package/dist/components/streaming-text/streaming-text.styles.js +6 -0
- package/dist/components/suggestion/suggestion.d.ts +23 -0
- package/dist/components/suggestion/suggestion.js +7 -0
- package/dist/components/suggestion/suggestion.styles.js +3 -0
- package/dist/components/switch/switch.d.ts +12 -0
- package/dist/components/switch/switch.js +1 -0
- package/dist/components/switch/switch.styles.js +1 -0
- package/dist/components/table/table.d.ts +64 -0
- package/dist/components/table/table.js +1 -0
- package/dist/components/table/table.styles.js +1 -0
- package/dist/components/tabs/tabs.d.ts +32 -0
- package/dist/components/tabs/tabs.js +1 -0
- package/dist/components/tabs/tabs.styles.js +1 -0
- package/dist/components/task-list/task-list.d.ts +34 -0
- package/dist/components/task-list/task-list.js +10 -0
- package/dist/components/task-list/task-list.styles.js +2 -0
- package/dist/components/terminal/ansi.js +11 -0
- package/dist/components/terminal/terminal.d.ts +23 -0
- package/dist/components/terminal/terminal.js +15 -0
- package/dist/components/terminal/terminal.styles.js +1 -0
- package/dist/components/text/text.d.ts +11 -0
- package/dist/components/text/text.js +1 -0
- package/dist/components/text/text.styles.js +1 -0
- package/dist/components/textarea/textarea.d.ts +13 -0
- package/dist/components/textarea/textarea.js +3 -0
- package/dist/components/textarea/textarea.styles.js +1 -0
- package/dist/components/thumbnail/thumbnail.d.ts +9 -0
- package/dist/components/thumbnail/thumbnail.js +2 -0
- package/dist/components/thumbnail/thumbnail.styles.js +1 -0
- package/dist/components/time-input/time-input.d.ts +13 -0
- package/dist/components/time-input/time-input.js +1 -0
- package/dist/components/time-series/time-format.d.ts +16 -0
- package/dist/components/time-series/time-format.js +10 -0
- package/dist/components/time-series/time-series.d.ts +30 -0
- package/dist/components/time-series/time-series.js +10 -0
- package/dist/components/time-series/time-series.styles.js +1 -0
- package/dist/components/timestamp/timestamp.d.ts +15 -0
- package/dist/components/timestamp/timestamp.js +4 -0
- package/dist/components/timestamp/timestamp.styles.js +1 -0
- package/dist/components/toast/toast-anchored.styles.js +1 -0
- package/dist/components/toast/toast-animation.styles.js +1 -0
- package/dist/components/toast/toast-icons.js +1 -0
- package/dist/components/toast/toast-stacked.styles.js +1 -0
- package/dist/components/toast/toast-utils.js +1 -0
- package/dist/components/toast/toast-views.js +1 -0
- package/dist/components/toast/toast.d.ts +8 -0
- package/dist/components/toast/toast.js +1 -0
- package/dist/components/toast/toast.styles.js +1 -0
- package/dist/components/toast/toast.types.d.ts +18 -0
- package/dist/components/toast/toast.types.js +1 -0
- package/dist/components/toggle/toggle-colors.stylex.js +2 -0
- package/dist/components/toggle/toggle.d.ts +33 -0
- package/dist/components/toggle/toggle.js +1 -0
- package/dist/components/toggle/toggle.styles.js +1 -0
- package/dist/components/token/token.d.ts +16 -0
- package/dist/components/token/token.js +1 -0
- package/dist/components/token/token.styles.js +1 -0
- package/dist/components/tool-call/tool-call-group.d.ts +17 -0
- package/dist/components/tool-call/tool-call-group.js +6 -0
- package/dist/components/tool-call/tool-call.d.ts +36 -0
- package/dist/components/tool-call/tool-call.js +12 -0
- package/dist/components/tool-call/tool-call.styles.js +3 -0
- package/dist/components/toolbar/toolbar-context.js +2 -0
- package/dist/components/toolbar/toolbar.d.ts +37 -0
- package/dist/components/toolbar/toolbar.js +1 -0
- package/dist/components/toolbar/toolbar.styles.js +1 -0
- package/dist/components/tooltip/tooltip.d.ts +25 -0
- package/dist/components/tooltip/tooltip.js +1 -0
- package/dist/components/tooltip/tooltip.styles.js +1 -0
- package/dist/components/tree/tree.d.ts +31 -0
- package/dist/components/tree/tree.js +5 -0
- package/dist/components/tree/tree.styles.js +3 -0
- package/dist/components/visually-hidden/visually-hidden.d.ts +6 -0
- package/dist/components/visually-hidden/visually-hidden.js +1 -0
- package/dist/components/visually-hidden/visually-hidden.styles.js +1 -0
- package/dist/control-label.js +3 -0
- package/dist/copy-button.js +1 -0
- package/dist/form.d.ts +2 -0
- package/dist/form.js +2 -0
- package/dist/icon-masks.stylex.js +3 -0
- package/dist/icons.js +5 -0
- package/dist/index.d.ts +275 -0
- package/dist/index.js +1 -0
- package/dist/loading-indicator.js +3 -0
- package/dist/motion.js +9 -0
- package/dist/ref-utils.js +1 -0
- package/dist/render-utils.js +3 -0
- package/dist/styles/application-structure.stylex.js +1 -0
- package/dist/styles/colors.stylex.d.ts +50 -0
- package/dist/styles/colors.stylex.js +1 -0
- package/dist/styles/conditions.stylex.d.ts +9 -0
- package/dist/styles/conditions.stylex.js +1 -0
- package/dist/styles/dimensions.stylex.d.ts +14 -0
- package/dist/styles/dimensions.stylex.js +1 -0
- package/dist/styles/floating-item-colors.stylex.js +1 -0
- package/dist/styles/fonts.stylex.d.ts +5 -0
- package/dist/styles/fonts.stylex.js +1 -0
- package/dist/styles/interaction.stylex.d.ts +23 -0
- package/dist/styles/interaction.stylex.js +4 -0
- package/dist/styles/motion.stylex.d.ts +22 -0
- package/dist/styles/motion.stylex.js +3 -0
- package/dist/styles/overlay-layers.styles.js +1 -0
- package/dist/styles/palette.stylex.d.ts +26 -0
- package/dist/styles/palette.stylex.js +1 -0
- package/dist/styles/shadows.stylex.d.ts +10 -0
- package/dist/styles/shadows.stylex.js +1 -0
- package/dist/styles/shape.stylex.d.ts +9 -0
- package/dist/styles/shape.stylex.js +1 -0
- package/dist/styles/spacing.stylex.d.ts +14 -0
- package/dist/styles/spacing.stylex.js +3 -0
- package/dist/styles/themes.d.ts +49 -0
- package/dist/styles/themes.js +1 -0
- package/dist/styles/typography.styles.d.ts +90 -0
- package/dist/styles/typography.styles.js +8 -0
- package/dist/styles/typography.stylex.d.ts +35 -0
- package/dist/styles/typography.stylex.js +5 -0
- package/dist/styles.css +2125 -0
- package/dist/theme/index.d.ts +11 -0
- package/dist/theme/index.js +1 -0
- package/dist/theme/initialize.d.ts +4 -0
- package/dist/theme/initialize.js +1 -0
- package/dist/theme/theme-provider.d.ts +3 -0
- package/dist/theme/theme-provider.js +4 -0
- package/dist/theme/theme-root.js +1 -0
- package/dist/theme/theme-script.d.ts +3 -0
- package/dist/theme/theme-script.js +1 -0
- package/dist/theme/theme-storage.js +1 -0
- package/dist/theme/theme-tokens.js +1 -0
- package/dist/theme/theme-transition-guard.js +1 -0
- package/dist/theme/types.d.ts +25 -0
- package/dist/theme/types.js +1 -0
- package/dist/use-copy-to-clipboard.d.ts +17 -0
- package/dist/use-copy-to-clipboard.js +6 -0
- package/dist/use-elapsed.js +4 -0
- package/package.json +769 -3
- package/src/closed.ts +7 -0
- package/src/components/accordion/accordion.styles.ts +246 -0
- package/src/components/accordion/accordion.tsx +221 -0
- package/src/components/activity-feed/activity-feed.styles.ts +135 -0
- package/src/components/activity-feed/activity-feed.tsx +182 -0
- package/src/components/agent-thinking/agent-thinking.styles.ts +140 -0
- package/src/components/agent-thinking/agent-thinking.tsx +275 -0
- package/src/components/alert/alert.styles.ts +135 -0
- package/src/components/alert/alert.stylex.ts +6 -0
- package/src/components/alert/alert.tsx +123 -0
- package/src/components/alert-dialog/alert-dialog.styles.ts +29 -0
- package/src/components/alert-dialog/alert-dialog.tsx +197 -0
- package/src/components/approval-card/approval-card.styles.ts +69 -0
- package/src/components/approval-card/approval-card.tsx +379 -0
- package/src/components/area-chart/area-chart.styles.ts +14 -0
- package/src/components/area-chart/area-chart.tsx +571 -0
- package/src/components/aspect-ratio/aspect-ratio.styles.ts +20 -0
- package/src/components/aspect-ratio/aspect-ratio.tsx +43 -0
- package/src/components/attachment/attachment.styles.ts +71 -0
- package/src/components/attachment/attachment.tsx +132 -0
- package/src/components/avatar/avatar-character.styles.ts +32 -0
- package/src/components/avatar/avatar.styles.ts +118 -0
- package/src/components/avatar/avatar.tsx +262 -0
- package/src/components/badge/badge.styles.ts +116 -0
- package/src/components/badge/badge.tsx +66 -0
- package/src/components/bar-list/bar-list.styles.ts +72 -0
- package/src/components/bar-list/bar-list.tsx +157 -0
- package/src/components/blockquote/blockquote.styles.ts +26 -0
- package/src/components/blockquote/blockquote.tsx +75 -0
- package/src/components/breadcrumb/breadcrumb-link.tsx +32 -0
- package/src/components/breadcrumb/breadcrumb.styles.ts +114 -0
- package/src/components/breadcrumb/breadcrumb.tsx +137 -0
- package/src/components/button/button-colors.stylex.ts +7 -0
- package/src/components/button/button.css +16 -0
- package/src/components/button/button.css.d.ts +1 -0
- package/src/components/button/button.styles.ts +457 -0
- package/src/components/button/button.tsx +168 -0
- package/src/components/button-group/button-group.css +115 -0
- package/src/components/button-group/button-group.styles.ts +24 -0
- package/src/components/button-group/button-group.tsx +46 -0
- package/src/components/calendar/calendar-components.tsx +187 -0
- package/src/components/calendar/calendar-context.ts +16 -0
- package/src/components/calendar/calendar-dropdowns.tsx +84 -0
- package/src/components/calendar/calendar-utils.ts +67 -0
- package/src/components/calendar/calendar.styles.ts +270 -0
- package/src/components/calendar/calendar.tsx +244 -0
- package/src/components/calendar/calendar.types.ts +55 -0
- package/src/components/calendar-heatmap/calendar-heatmap.tsx +384 -0
- package/src/components/card/card.styles.ts +122 -0
- package/src/components/card/card.tsx +154 -0
- package/src/components/carousel/carousel.styles.ts +142 -0
- package/src/components/carousel/carousel.tsx +786 -0
- package/src/components/category-comparison/category-comparison.styles.ts +14 -0
- package/src/components/category-comparison/category-comparison.tsx +567 -0
- package/src/components/chart-frame/arc-path.ts +33 -0
- package/src/components/chart-frame/chart-assert.ts +47 -0
- package/src/components/chart-frame/chart-colors.ts +14 -0
- package/src/components/chart-frame/chart-crosshair.ts +129 -0
- package/src/components/chart-frame/chart-data-table.tsx +15 -0
- package/src/components/chart-frame/chart-frame.styles.ts +48 -0
- package/src/components/chart-frame/chart-frame.tsx +223 -0
- package/src/components/chart-frame/chart-hover.tsx +127 -0
- package/src/components/chart-frame/chart-loading.tsx +130 -0
- package/src/components/chart-frame/ring-graphic.tsx +100 -0
- package/src/components/chart-legend/chart-legend.styles.ts +80 -0
- package/src/components/chart-legend/chart-legend.tsx +107 -0
- package/src/components/chart-tooltip/chart-tooltip.styles.ts +71 -0
- package/src/components/chart-tooltip/chart-tooltip.tsx +94 -0
- package/src/components/checkbox/checkbox-card.styles.ts +75 -0
- package/src/components/checkbox/checkbox-card.tsx +71 -0
- package/src/components/checkbox/checkbox.styles.ts +199 -0
- package/src/components/checkbox/checkbox.tsx +104 -0
- package/src/components/checkbox-group/checkbox-group.styles.ts +11 -0
- package/src/components/checkbox-group/checkbox-group.tsx +29 -0
- package/src/components/citation/citation.styles.ts +7 -0
- package/src/components/citation/citation.tsx +30 -0
- package/src/components/code/code.styles.ts +22 -0
- package/src/components/code/code.tsx +22 -0
- package/src/components/code-block/code-block-copy.tsx +62 -0
- package/src/components/code-block/code-block-highlight.tsx +69 -0
- package/src/components/code-block/code-block.styles.ts +129 -0
- package/src/components/code-block/code-block.tsx +128 -0
- package/src/components/collapsible/collapsible.styles.ts +22 -0
- package/src/components/collapsible/collapsible.tsx +109 -0
- package/src/components/combobox/combobox-chips.styles.ts +182 -0
- package/src/components/combobox/combobox-chips.tsx +164 -0
- package/src/components/combobox/combobox-context.tsx +26 -0
- package/src/components/combobox/combobox-field.styles.ts +156 -0
- package/src/components/combobox/combobox-input.tsx +185 -0
- package/src/components/combobox/combobox-popup.styles.ts +190 -0
- package/src/components/combobox/combobox-popup.tsx +113 -0
- package/src/components/combobox/combobox-structure.tsx +138 -0
- package/src/components/combobox/combobox.tsx +162 -0
- package/src/components/combobox/combobox.types.ts +77 -0
- package/src/components/command/command-dialog.styles.ts +43 -0
- package/src/components/command/command-dialog.tsx +126 -0
- package/src/components/command/command-field.styles.ts +59 -0
- package/src/components/command/command-input.tsx +59 -0
- package/src/components/command/command-items.styles.ts +169 -0
- package/src/components/command/command-items.tsx +99 -0
- package/src/components/command/command-structure.tsx +172 -0
- package/src/components/command/command.tsx +157 -0
- package/src/components/command/command.types.ts +58 -0
- package/src/components/composer/attachment-marker.stylex.ts +4 -0
- package/src/components/composer/composer-clipboard.ts +49 -0
- package/src/components/composer/composer-context-meter.tsx +179 -0
- package/src/components/composer/composer-dictation.tsx +56 -0
- package/src/components/composer/composer-document.ts +508 -0
- package/src/components/composer/composer-editor.ts +544 -0
- package/src/components/composer/composer-history.ts +74 -0
- package/src/components/composer/composer-options.ts +51 -0
- package/src/components/composer/composer-parts.styles.ts +456 -0
- package/src/components/composer/composer-parts.tsx +245 -0
- package/src/components/composer/composer-picker.tsx +375 -0
- package/src/components/composer/composer-progress-ring.tsx +44 -0
- package/src/components/composer/composer-query.ts +52 -0
- package/src/components/composer/composer-scroll-area.tsx +29 -0
- package/src/components/composer/composer-session.ts +593 -0
- package/src/components/composer/composer-value.ts +46 -0
- package/src/components/composer/composer.css +80 -0
- package/src/components/composer/composer.styles.ts +236 -0
- package/src/components/composer/composer.tsx +581 -0
- package/src/components/composer/use-composer-editor.ts +153 -0
- package/src/components/context-menu/context-menu-items.tsx +230 -0
- package/src/components/context-menu/context-menu-utils.tsx +65 -0
- package/src/components/context-menu/context-menu.tsx +198 -0
- package/src/components/context-menu/context-menu.types.ts +97 -0
- package/src/components/conversation/conversation.styles.ts +56 -0
- package/src/components/conversation/conversation.tsx +142 -0
- package/src/components/data-table/data-table.styles.ts +63 -0
- package/src/components/data-table/data-table.tsx +723 -0
- package/src/components/data-table/grid-navigation.ts +186 -0
- package/src/components/date-picker/date-picker-date.ts +142 -0
- package/src/components/date-picker/date-picker-icon.tsx +6 -0
- package/src/components/date-picker/date-picker-state.ts +193 -0
- package/src/components/date-picker/date-picker.styles.ts +53 -0
- package/src/components/date-picker/date-picker.tsx +213 -0
- package/src/components/date-picker/date-picker.types.ts +32 -0
- package/src/components/date-range-picker/date-range-picker-date.ts +191 -0
- package/src/components/date-range-picker/date-range-picker-state.ts +235 -0
- package/src/components/date-range-picker/date-range-picker-views.tsx +144 -0
- package/src/components/date-range-picker/date-range-picker.styles.ts +80 -0
- package/src/components/date-range-picker/date-range-picker.tsx +208 -0
- package/src/components/date-range-picker/date-range-picker.types.ts +41 -0
- package/src/components/date-time-input/date-time-input.tsx +30 -0
- package/src/components/diagram/diagram-renderer.ts +35 -0
- package/src/components/diagram/diagram.css +51 -0
- package/src/components/diagram/diagram.styles.ts +130 -0
- package/src/components/diagram/diagram.tsx +238 -0
- package/src/components/dialog/dialog.styles.ts +226 -0
- package/src/components/dialog/dialog.tsx +227 -0
- package/src/components/distribution/distribution.styles.ts +14 -0
- package/src/components/distribution/distribution.tsx +450 -0
- package/src/components/drawer/drawer-affordance.styles.ts +61 -0
- package/src/components/drawer/drawer-bar.tsx +53 -0
- package/src/components/drawer/drawer-content.tsx +25 -0
- package/src/components/drawer/drawer-layout.tsx +129 -0
- package/src/components/drawer/drawer-menu.styles.ts +52 -0
- package/src/components/drawer/drawer-menu.tsx +222 -0
- package/src/components/drawer/drawer-positions.styles.ts +138 -0
- package/src/components/drawer/drawer.context.tsx +25 -0
- package/src/components/drawer/drawer.styles.ts +233 -0
- package/src/components/drawer/drawer.tsx +278 -0
- package/src/components/drawer/drawer.types.ts +85 -0
- package/src/components/empty/empty.styles.ts +118 -0
- package/src/components/empty/empty.tsx +175 -0
- package/src/components/error-state/error-state.styles.ts +97 -0
- package/src/components/error-state/error-state.tsx +151 -0
- package/src/components/field/field-context.ts +83 -0
- package/src/components/field/field.styles.ts +141 -0
- package/src/components/field/field.tsx +212 -0
- package/src/components/fieldset/fieldset.styles.ts +28 -0
- package/src/components/fieldset/fieldset.tsx +68 -0
- package/src/components/file-upload/file-upload-context.tsx +191 -0
- package/src/components/file-upload/file-upload-controls.tsx +280 -0
- package/src/components/file-upload/file-upload-item-preview.tsx +56 -0
- package/src/components/file-upload/file-upload-items.tsx +339 -0
- package/src/components/file-upload/file-upload-motion.ts +85 -0
- package/src/components/file-upload/file-upload-validation.ts +141 -0
- package/src/components/file-upload/file-upload.styles.ts +426 -0
- package/src/components/file-upload/file-upload.tsx +278 -0
- package/src/components/file-upload/file-upload.types.ts +161 -0
- package/src/components/frame/frame.styles.ts +66 -0
- package/src/components/frame/frame.tsx +126 -0
- package/src/components/funnel/funnel-flow.tsx +198 -0
- package/src/components/funnel/funnel.styles.ts +73 -0
- package/src/components/funnel/funnel.tsx +177 -0
- package/src/components/grid/grid.styles.ts +15 -0
- package/src/components/grid/grid.tsx +22 -0
- package/src/components/group/group.styles.ts +13 -0
- package/src/components/group/group.tsx +22 -0
- package/src/components/heading/heading.styles.ts +10 -0
- package/src/components/heading/heading.tsx +52 -0
- package/src/components/heatmap/heatmap-scale.tsx +92 -0
- package/src/components/heatmap/heatmap.tsx +402 -0
- package/src/components/inline/inline.styles.ts +13 -0
- package/src/components/inline/inline.tsx +22 -0
- package/src/components/inline-citation/citation-source.tsx +105 -0
- package/src/components/inline-citation/inline-citation.styles.ts +94 -0
- package/src/components/inline-citation/inline-citation.tsx +199 -0
- package/src/components/input/input.styles.ts +95 -0
- package/src/components/input/input.tsx +147 -0
- package/src/components/input-group/input-group.styles.ts +183 -0
- package/src/components/input-group/input-group.tsx +215 -0
- package/src/components/kbd/kbd.styles.ts +42 -0
- package/src/components/kbd/kbd.tsx +70 -0
- package/src/components/label/label.styles.ts +8 -0
- package/src/components/label/label.tsx +29 -0
- package/src/components/lightbox/lightbox-gallery.tsx +208 -0
- package/src/components/lightbox/lightbox.styles.ts +196 -0
- package/src/components/lightbox/lightbox.tsx +137 -0
- package/src/components/link/link.styles.ts +41 -0
- package/src/components/link/link.tsx +48 -0
- package/src/components/list/list.styles.ts +49 -0
- package/src/components/list/list.tsx +105 -0
- package/src/components/markdown/markdown.styles.ts +104 -0
- package/src/components/markdown/markdown.tsx +268 -0
- package/src/components/menu/menu-align-context.ts +8 -0
- package/src/components/menu/menu.styles.ts +281 -0
- package/src/components/menu/menu.tsx +485 -0
- package/src/components/menubar/menubar.styles.ts +97 -0
- package/src/components/menubar/menubar.tsx +89 -0
- package/src/components/message/message.styles.ts +145 -0
- package/src/components/message/message.tsx +501 -0
- package/src/components/message-scroller/message-scroller-store.ts +457 -0
- package/src/components/message-scroller/message-scroller.styles.ts +177 -0
- package/src/components/message-scroller/message-scroller.tsx +417 -0
- package/src/components/meter/meter.styles.ts +48 -0
- package/src/components/meter/meter.tsx +176 -0
- package/src/components/metric/metric.styles.ts +64 -0
- package/src/components/metric/metric.tsx +134 -0
- package/src/components/metric-trend/metric-trend.styles.ts +103 -0
- package/src/components/metric-trend/metric-trend.tsx +188 -0
- package/src/components/navigation-menu/navigation-menu.styles.ts +183 -0
- package/src/components/navigation-menu/navigation-menu.tsx +255 -0
- package/src/components/number-field/number-field-context.tsx +46 -0
- package/src/components/number-field/number-field.styles.ts +229 -0
- package/src/components/number-field/number-field.tsx +268 -0
- package/src/components/number-field/number-field.types.ts +46 -0
- package/src/components/otp-field/otp-field.styles.ts +138 -0
- package/src/components/otp-field/otp-field.tsx +174 -0
- package/src/components/overflow-list/overflow-list.styles.ts +25 -0
- package/src/components/overflow-list/overflow-list.tsx +84 -0
- package/src/components/pagination/pagination-link.tsx +96 -0
- package/src/components/pagination/pagination.styles.ts +137 -0
- package/src/components/pagination/pagination.tsx +153 -0
- package/src/components/part-to-whole/part-to-whole.styles.ts +56 -0
- package/src/components/part-to-whole/part-to-whole.tsx +329 -0
- package/src/components/popover/popover.styles.ts +177 -0
- package/src/components/popover/popover.tsx +197 -0
- package/src/components/preview-card/preview-card.styles.ts +61 -0
- package/src/components/preview-card/preview-card.tsx +94 -0
- package/src/components/progress/progress.styles.ts +82 -0
- package/src/components/progress/progress.tsx +153 -0
- package/src/components/progress-rings/progress-rings.styles.ts +65 -0
- package/src/components/progress-rings/progress-rings.tsx +163 -0
- package/src/components/property-list/property-list.styles.ts +49 -0
- package/src/components/property-list/property-list.tsx +91 -0
- package/src/components/question-card/question-card.styles.ts +106 -0
- package/src/components/question-card/question-card.tsx +525 -0
- package/src/components/radar-chart/radar-chart.tsx +281 -0
- package/src/components/radial-bars/radial-bars.tsx +197 -0
- package/src/components/radio/radio-card.tsx +57 -0
- package/src/components/radio/radio.styles.ts +57 -0
- package/src/components/radio/radio.tsx +61 -0
- package/src/components/radio-group/radio-group.tsx +29 -0
- package/src/components/sankey-chart/sankey-chart.tsx +340 -0
- package/src/components/sankey-chart/sankey-layout.ts +107 -0
- package/src/components/scatter-chart/scatter-chart.styles.ts +7 -0
- package/src/components/scatter-chart/scatter-chart.tsx +509 -0
- package/src/components/score-gauge/score-gauge.styles.ts +77 -0
- package/src/components/score-gauge/score-gauge.tsx +236 -0
- package/src/components/scroll-area/scroll-area.styles.ts +174 -0
- package/src/components/scroll-area/scroll-area.tsx +202 -0
- package/src/components/section/section.styles.ts +11 -0
- package/src/components/section/section.tsx +29 -0
- package/src/components/segmented-control/segmented-control.styles.ts +107 -0
- package/src/components/segmented-control/segmented-control.tsx +98 -0
- package/src/components/select/select.styles.ts +295 -0
- package/src/components/select/select.tsx +335 -0
- package/src/components/separator/separator.styles.ts +14 -0
- package/src/components/separator/separator.tsx +24 -0
- package/src/components/sheet/sheet-layout.tsx +92 -0
- package/src/components/sheet/sheet-positions.styles.ts +104 -0
- package/src/components/sheet/sheet.styles.ts +209 -0
- package/src/components/sheet/sheet.tsx +182 -0
- package/src/components/sheet/sheet.types.ts +67 -0
- package/src/components/skeleton/skeleton.styles.ts +52 -0
- package/src/components/skeleton/skeleton.tsx +35 -0
- package/src/components/slider/slider-context.tsx +414 -0
- package/src/components/slider/slider-default-anatomy.tsx +71 -0
- package/src/components/slider/slider-ref-utils.ts +16 -0
- package/src/components/slider/slider-slot.ts +7 -0
- package/src/components/slider/slider.styles.ts +368 -0
- package/src/components/slider/slider.tsx +303 -0
- package/src/components/slider/slider.types.ts +57 -0
- package/src/components/sources/sources.styles.ts +105 -0
- package/src/components/sources/sources.tsx +150 -0
- package/src/components/spacer/spacer.styles.ts +11 -0
- package/src/components/spacer/spacer.tsx +25 -0
- package/src/components/spinner/spinner.styles.ts +231 -0
- package/src/components/spinner/spinner.tsx +153 -0
- package/src/components/stack/stack.styles.ts +37 -0
- package/src/components/stack/stack.tsx +34 -0
- package/src/components/status-dot/status-dot.styles.ts +27 -0
- package/src/components/status-dot/status-dot.tsx +55 -0
- package/src/components/stepper/stepper.styles.ts +564 -0
- package/src/components/stepper/stepper.tsx +349 -0
- package/src/components/streaming-text/streaming-text-words.tsx +275 -0
- package/src/components/streaming-text/streaming-text.styles.ts +166 -0
- package/src/components/streaming-text/streaming-text.tsx +299 -0
- package/src/components/suggestion/suggestion.styles.ts +55 -0
- package/src/components/suggestion/suggestion.tsx +125 -0
- package/src/components/switch/switch.styles.ts +195 -0
- package/src/components/switch/switch.tsx +69 -0
- package/src/components/table/table.styles.ts +198 -0
- package/src/components/table/table.tsx +290 -0
- package/src/components/tabs/tabs.styles.ts +245 -0
- package/src/components/tabs/tabs.tsx +186 -0
- package/src/components/task-list/task-list.styles.ts +82 -0
- package/src/components/task-list/task-list.tsx +430 -0
- package/src/components/terminal/ansi.ts +86 -0
- package/src/components/terminal/terminal.styles.ts +20 -0
- package/src/components/terminal/terminal.tsx +339 -0
- package/src/components/text/text.styles.ts +8 -0
- package/src/components/text/text.tsx +47 -0
- package/src/components/textarea/textarea.styles.ts +85 -0
- package/src/components/textarea/textarea.tsx +163 -0
- package/src/components/thumbnail/thumbnail.styles.ts +33 -0
- package/src/components/thumbnail/thumbnail.tsx +63 -0
- package/src/components/time-input/time-input.tsx +30 -0
- package/src/components/time-series/time-format.ts +172 -0
- package/src/components/time-series/time-series.styles.ts +18 -0
- package/src/components/time-series/time-series.tsx +521 -0
- package/src/components/timestamp/timestamp.styles.ts +9 -0
- package/src/components/timestamp/timestamp.tsx +162 -0
- package/src/components/toast/toast-anchored.styles.ts +146 -0
- package/src/components/toast/toast-animation.styles.ts +64 -0
- package/src/components/toast/toast-icons.tsx +58 -0
- package/src/components/toast/toast-stacked.styles.ts +129 -0
- package/src/components/toast/toast-utils.ts +53 -0
- package/src/components/toast/toast-views.tsx +223 -0
- package/src/components/toast/toast.styles.ts +198 -0
- package/src/components/toast/toast.tsx +59 -0
- package/src/components/toast/toast.types.ts +41 -0
- package/src/components/toggle/toggle-colors.stylex.ts +27 -0
- package/src/components/toggle/toggle.styles.ts +267 -0
- package/src/components/toggle/toggle.tsx +193 -0
- package/src/components/token/token.styles.ts +135 -0
- package/src/components/token/token.tsx +208 -0
- package/src/components/tool-call/tool-call-group.tsx +147 -0
- package/src/components/tool-call/tool-call.styles.ts +146 -0
- package/src/components/tool-call/tool-call.tsx +324 -0
- package/src/components/toolbar/toolbar-context.ts +6 -0
- package/src/components/toolbar/toolbar.styles.ts +120 -0
- package/src/components/toolbar/toolbar.tsx +219 -0
- package/src/components/tooltip/tooltip.styles.ts +104 -0
- package/src/components/tooltip/tooltip.tsx +106 -0
- package/src/components/tree/tree.styles.ts +133 -0
- package/src/components/tree/tree.tsx +862 -0
- package/src/components/visually-hidden/visually-hidden.styles.ts +15 -0
- package/src/components/visually-hidden/visually-hidden.tsx +36 -0
- package/src/control-label.tsx +48 -0
- package/src/copy-button.tsx +38 -0
- package/src/form.ts +44 -0
- package/src/icon-masks.stylex.ts +7 -0
- package/src/icons.ts +43 -0
- package/src/index.ts +1392 -0
- package/src/loading-indicator.tsx +45 -0
- package/src/motion.tsx +124 -0
- package/src/ref-utils.ts +27 -0
- package/src/render-utils.ts +35 -0
- package/src/styles/application-structure.stylex.ts +5 -0
- package/src/styles/colors.stylex.ts +64 -0
- package/src/styles/conditions.stylex.ts +10 -0
- package/src/styles/dimensions.stylex.ts +17 -0
- package/src/styles/floating-item-colors.stylex.ts +22 -0
- package/src/styles/fonts.stylex.ts +9 -0
- package/src/styles/interaction.stylex.ts +34 -0
- package/src/styles/motion.stylex.ts +28 -0
- package/src/styles/overlay-layers.styles.ts +26 -0
- package/src/styles/palette.stylex.ts +28 -0
- package/src/styles/shadows.stylex.ts +14 -0
- package/src/styles/shape.stylex.ts +11 -0
- package/src/styles/spacing.stylex.ts +18 -0
- package/src/styles/themes.ts +57 -0
- package/src/styles/typography.styles.ts +116 -0
- package/src/styles/typography.stylex.ts +44 -0
- package/src/theme/index.ts +25 -0
- package/src/theme/initialize.ts +31 -0
- package/src/theme/theme-provider.tsx +189 -0
- package/src/theme/theme-root.ts +37 -0
- package/src/theme/theme-script.tsx +35 -0
- package/src/theme/theme-storage.ts +256 -0
- package/src/theme/theme-tokens.ts +11 -0
- package/src/theme/theme-transition-guard.ts +102 -0
- package/src/theme/types.ts +33 -0
- package/src/use-copy-to-clipboard.ts +57 -0
- package/src/use-elapsed.ts +40 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ContextMenuCheckboxItemProps, ContextMenuGroupLabelProps, ContextMenuGroupProps, ContextMenuItemProps, ContextMenuLinkItemProps, ContextMenuRadioGroupProps, ContextMenuRadioItemProps, ContextMenuSeparatorProps, ContextMenuShortcutProps } from "./context-menu.types";
|
|
2
|
+
export declare function ContextMenuItem({ render, children, inset, ref: forwardedRef, variant, ...rest }: ContextMenuItemProps): import("react").JSX.Element;
|
|
3
|
+
export declare function ContextMenuLinkItem({ children, closeOnClick, inset, ref: forwardedRef, render, variant, ...rest }: ContextMenuLinkItemProps): import("react").JSX.Element;
|
|
4
|
+
export declare function ContextMenuGroup({ render, children, ref: forwardedRef, ...rest }: ContextMenuGroupProps): import("react").JSX.Element;
|
|
5
|
+
export declare function ContextMenuGroupLabel({ render, children, inset, ref: forwardedRef, ...rest }: ContextMenuGroupLabelProps): import("react").JSX.Element;
|
|
6
|
+
export declare function ContextMenuSeparator({ render, ref: forwardedRef, ...rest }: ContextMenuSeparatorProps): import("react").JSX.Element;
|
|
7
|
+
export declare function ContextMenuShortcut({ children, ref: forwardedRef, ...rest }: ContextMenuShortcutProps): import("react").JSX.Element;
|
|
8
|
+
export declare function ContextMenuCheckboxItem({ render, children, ref: forwardedRef, variant, ...rest }: ContextMenuCheckboxItemProps): import("react").JSX.Element;
|
|
9
|
+
export declare function ContextMenuRadioGroup<Value = unknown>({ render, ...rest }: ContextMenuRadioGroupProps<Value>): import("react").JSX.Element;
|
|
10
|
+
export declare function ContextMenuRadioItem<Value = unknown>({ render, children, ref: forwardedRef, ...rest }: ContextMenuRadioItemProps<Value>): import("react").JSX.Element;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{ContextMenu as BaseContextMenu}from"@base-ui/react/context-menu";import{mergeProps}from"@base-ui/react/merge-props";import{props}from"@stylexjs/stylex";import{controlLabel}from"../../control-label";import{protectRenderSlot as protectSlot}from"../../render-utils";import{kbdStyles}from"../kbd/kbd.styles";import{menuStyles}from"../menu/menu.styles";import{CheckIcon,itemVariantStyles,renderSwitchIndicator}from"./context-menu-utils";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function ContextMenuItem({render,children,inset=false,ref:forwardedRef,variant="default",...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.Item,{...rest,"data-inset":inset||undefined,"data-slot":"context-menu-item","data-variant":variant,ref:forwardedRef,render:protectSlot("context-menu-item",render),...props(menuStyles.item,itemVariantStyles[variant],inset&&menuStyles.inset),children:controlLabel(children)});}export function ContextMenuLinkItem({children,closeOnClick=true,inset=false,ref:forwardedRef,render,variant="default",...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.LinkItem,{closeOnClick:closeOnClick,...rest,"data-inset":inset||undefined,"data-slot":"context-menu-link-item","data-variant":variant,ref:forwardedRef,render:protectSlot("context-menu-link-item",render),...props(menuStyles.item,itemVariantStyles[variant],inset&&menuStyles.inset),children:controlLabel(children)});}export function ContextMenuGroup({render,children,ref:forwardedRef,...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.Group,{...rest,"data-slot":"context-menu-group",ref:forwardedRef,render:protectSlot("context-menu-group",render),...props(menuStyles.group),children:children});}export function ContextMenuGroupLabel({render,children,inset=false,ref:forwardedRef,...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.GroupLabel,{...rest,"data-inset":inset||undefined,"data-slot":"context-menu-label",ref:forwardedRef,render:protectSlot("context-menu-label",render),...props(menuStyles.groupLabel,inset&&menuStyles.inset),children:children});}export function ContextMenuSeparator({render,ref:forwardedRef,...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.Separator,{...rest,"data-slot":"context-menu-separator",ref:forwardedRef,render:protectSlot("context-menu-separator",render),...props(menuStyles.separator)});}export function ContextMenuShortcut({children,ref:forwardedRef,...rest}){return(/*#__PURE__*/// Key order reads left to right in every language.
|
|
2
|
+
_jsx("kbd",{dir:"ltr",...rest,"data-slot":"context-menu-shortcut",ref:forwardedRef,...mergeProps(props(kbdStyles.group,menuStyles.shortcut),{}),children:controlLabel(children)}));}export function ContextMenuCheckboxItem({render,children,ref:forwardedRef,variant="default",...rest}){const indicator=variant==="switch"?/*#__PURE__*/_jsx(BaseContextMenu.CheckboxItemIndicator,{keepMounted:true,render:renderSwitchIndicator}):/*#__PURE__*/_jsx(BaseContextMenu.CheckboxItemIndicator,{keepMounted:true,...props(menuStyles.indicator),children:/*#__PURE__*/_jsx(CheckIcon,{})});return/*#__PURE__*/_jsxs(BaseContextMenu.CheckboxItem,{...rest,"data-slot":"context-menu-checkbox-item",ref:forwardedRef,render:protectSlot("context-menu-checkbox-item",render),...props(menuStyles.item,menuStyles.itemDefault),children:[variant==="default"&&indicator,controlLabel(children),variant==="switch"&&indicator]});}export function ContextMenuRadioGroup({render,...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.RadioGroup,{...rest,"data-slot":"context-menu-radio-group",render:protectSlot("context-menu-radio-group",render)});}export function ContextMenuRadioItem({render,children,ref:forwardedRef,...rest}){return/*#__PURE__*/_jsxs(BaseContextMenu.RadioItem,{...rest,"data-slot":"context-menu-radio-item",ref:forwardedRef,render:protectSlot("context-menu-radio-item",render),...props(menuStyles.item,menuStyles.itemDefault),children:[/*#__PURE__*/_jsx(BaseContextMenu.RadioItemIndicator,{keepMounted:true,...props(menuStyles.indicator),children:/*#__PURE__*/_jsx("span",{...props(menuStyles.radioDot)})}),controlLabel(children)]});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{useDirection}from"@base-ui/react/direction-provider";import{props}from"@stylexjs/stylex";import{IconCheck,IconChevronLeft,IconChevronRight}from"../../icons";import{menuStyles}from"../menu/menu.styles";import{jsx as _jsx}from"react/jsx-runtime";export const itemVariantStyles={default:menuStyles.itemDefault,destructive:menuStyles.itemDestructive};export function CheckIcon(){return/*#__PURE__*/_jsx(IconCheck,{"aria-hidden":"true",focusable:"false",...props(menuStyles.checkIcon),size:"1em"});}export function ChevronIcon(){const direction=useDirection();return direction==="rtl"?/*#__PURE__*/_jsx(IconChevronLeft,{"aria-hidden":"true",focusable:"false",...props(menuStyles.chevron),size:"1em"}):/*#__PURE__*/_jsx(IconChevronRight,{"aria-hidden":"true",focusable:"false",...props(menuStyles.chevron),size:"1em"});}export function renderSwitchIndicator(indicatorProps,state){return/*#__PURE__*/_jsx("span",{...indicatorProps,...props(menuStyles.switchIndicator,state.checked&&menuStyles.switchIndicatorChecked),children:/*#__PURE__*/_jsx("span",{...props(menuStyles.switchThumb,state.checked&&menuStyles.switchThumbChecked)})});}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ContextMenu as BaseContextMenu } from "@base-ui/react/context-menu";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
import type { ContextMenuPopupProps, ContextMenuPortalProps, ContextMenuSubPopupProps, ContextMenuSubTriggerProps, ContextMenuTriggerProps } from "./context-menu.types";
|
|
4
|
+
import { ContextMenuCheckboxItem as ContextMenuCheckboxItemImpl, ContextMenuGroup as ContextMenuGroupImpl, ContextMenuGroupLabel as ContextMenuGroupLabelImpl, ContextMenuItem as ContextMenuItemImpl, ContextMenuLinkItem as ContextMenuLinkItemImpl, ContextMenuRadioGroup as ContextMenuRadioGroupImpl, ContextMenuRadioItem as ContextMenuRadioItemImpl, ContextMenuSeparator as ContextMenuSeparatorImpl, ContextMenuShortcut as ContextMenuShortcutImpl } from "./context-menu-items";
|
|
5
|
+
export type * from "./context-menu.types";
|
|
6
|
+
export declare const ContextMenuItem: typeof ContextMenuItemImpl;
|
|
7
|
+
export declare const ContextMenuLinkItem: typeof ContextMenuLinkItemImpl;
|
|
8
|
+
export declare const ContextMenuGroup: typeof ContextMenuGroupImpl;
|
|
9
|
+
export declare const ContextMenuGroupLabel: typeof ContextMenuGroupLabelImpl;
|
|
10
|
+
export declare const ContextMenuSeparator: typeof ContextMenuSeparatorImpl;
|
|
11
|
+
export declare const ContextMenuShortcut: typeof ContextMenuShortcutImpl;
|
|
12
|
+
export declare const ContextMenuCheckboxItem: typeof ContextMenuCheckboxItemImpl;
|
|
13
|
+
export declare const ContextMenuRadioGroup: typeof ContextMenuRadioGroupImpl;
|
|
14
|
+
export declare const ContextMenuRadioItem: typeof ContextMenuRadioItemImpl;
|
|
15
|
+
export declare const ContextMenu: typeof BaseContextMenu.Root;
|
|
16
|
+
export declare const ContextMenuPortal: (props: ContextMenuPortalProps) => ReactNode;
|
|
17
|
+
export declare const ContextMenuPrimitive: typeof BaseContextMenu;
|
|
18
|
+
export declare function ContextMenuTrigger({ ref: forwardedRef, render, ...rest }: ContextMenuTriggerProps): import("react").JSX.Element;
|
|
19
|
+
export declare function ContextMenuPopup({ align, alignOffset, anchor, side, sideOffset, ...rest }: ContextMenuPopupProps): import("react").JSX.Element;
|
|
20
|
+
export declare const ContextMenuSub: typeof BaseContextMenu.SubmenuRoot;
|
|
21
|
+
export declare function ContextMenuSubTrigger({ render, children, inset, ref: forwardedRef, ...rest }: ContextMenuSubTriggerProps): import("react").JSX.Element;
|
|
22
|
+
export declare function ContextMenuSubPopup({ align, alignOffset, anchor, side, sideOffset, ...rest }: ContextMenuSubPopupProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{ContextMenu as BaseContextMenu}from"@base-ui/react/context-menu";import{mergeProps}from"@base-ui/react/merge-props";import{props}from"@stylexjs/stylex";import{controlLabel}from"../../control-label";import{protectRenderSlot as protectSlot}from"../../render-utils";import{menuStyles}from"../menu/menu.styles";import{ScrollArea}from"../scroll-area/scroll-area";import{ContextMenuCheckboxItem as ContextMenuCheckboxItemImpl,ContextMenuGroup as ContextMenuGroupImpl,ContextMenuGroupLabel as ContextMenuGroupLabelImpl,ContextMenuItem as ContextMenuItemImpl,ContextMenuLinkItem as ContextMenuLinkItemImpl,ContextMenuRadioGroup as ContextMenuRadioGroupImpl,ContextMenuRadioItem as ContextMenuRadioItemImpl,ContextMenuSeparator as ContextMenuSeparatorImpl,ContextMenuShortcut as ContextMenuShortcutImpl}from"./context-menu-items";import{ChevronIcon,itemVariantStyles}from"./context-menu-utils";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export const ContextMenuItem=ContextMenuItemImpl;export const ContextMenuLinkItem=ContextMenuLinkItemImpl;export const ContextMenuGroup=ContextMenuGroupImpl;export const ContextMenuGroupLabel=ContextMenuGroupLabelImpl;export const ContextMenuSeparator=ContextMenuSeparatorImpl;export const ContextMenuShortcut=ContextMenuShortcutImpl;export const ContextMenuCheckboxItem=ContextMenuCheckboxItemImpl;export const ContextMenuRadioGroup=ContextMenuRadioGroupImpl;export const ContextMenuRadioItem=ContextMenuRadioItemImpl;export const ContextMenu=BaseContextMenu.Root;export const ContextMenuPortal=BaseContextMenu.Portal;export const ContextMenuPrimitive=BaseContextMenu;function ContextMenuPopupSurface({render,align,alignOffset,anchor,children,dataSlot,portalProps,ref:forwardedRef,side,sideOffset,...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.Portal,{...portalProps,children:/*#__PURE__*/_jsx(BaseContextMenu.Positioner,{align:align,alignOffset:alignOffset,anchor:anchor,"data-slot":"context-menu-positioner",side:side,sideOffset:sideOffset,...props(menuStyles.positioner),children:/*#__PURE__*/_jsx(BaseContextMenu.Popup,{...rest,"data-slot":dataSlot,ref:forwardedRef,render:protectSlot(dataSlot,render),...props(menuStyles.popup),children:/*#__PURE__*/_jsx(ScrollArea,{overscrollContain:true,scrollFade:true,children:/*#__PURE__*/_jsx("div",{...props(menuStyles.content),children:children})})})})});}function handleContextMenuKeyDown(event){if(event.defaultPrevented||event.altKey||event.ctrlKey||event.metaKey||!(event.key==="ContextMenu"||event.key==="F10"&&event.shiftKey)){return;}event.preventDefault();const rect=event.currentTarget.getBoundingClientRect();event.currentTarget.dispatchEvent(new MouseEvent("contextmenu",{bubbles:true,button:2,cancelable:true,clientX:rect.left+rect.width/2,clientY:rect.top+rect.height/2,composed:true}));}export function ContextMenuTrigger({ref:forwardedRef,render,...rest}){return/*#__PURE__*/_jsx(BaseContextMenu.Trigger,{...mergeProps({onKeyDown:handleContextMenuKeyDown},rest),"data-slot":"context-menu-trigger",ref:forwardedRef,render:protectSlot("context-menu-trigger",render)});}export function ContextMenuPopup({align="center",alignOffset,anchor,side="bottom",sideOffset=4,...rest}){return/*#__PURE__*/_jsx(ContextMenuPopupSurface,{align:align,alignOffset:alignOffset,anchor:anchor,dataSlot:"context-menu-popup",side:side,sideOffset:sideOffset,...rest});}export const ContextMenuSub=BaseContextMenu.SubmenuRoot;export function ContextMenuSubTrigger({render,children,inset=false,ref:forwardedRef,...rest}){return/*#__PURE__*/_jsxs(BaseContextMenu.SubmenuTrigger,{...rest,"data-inset":inset||undefined,"data-slot":"context-menu-sub-trigger",ref:forwardedRef,render:protectSlot("context-menu-sub-trigger",render),...props(menuStyles.item,itemVariantStyles.default,menuStyles.subTrigger,inset&&menuStyles.inset),children:[controlLabel(children),/*#__PURE__*/_jsx(ChevronIcon,{})]});}export function ContextMenuSubPopup({align="start",alignOffset,anchor,side="inline-end",sideOffset=0,...rest}){const defaultAlignOffset=align==="center"?undefined:-5;return/*#__PURE__*/_jsx(ContextMenuPopupSurface,{align:align,alignOffset:alignOffset??defaultAlignOffset,anchor:anchor,dataSlot:"context-menu-sub-content",side:side,sideOffset:sideOffset,...rest});}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ContextMenu as BaseContextMenu, ContextMenuRootProps as BaseContextMenuRootProps, ContextMenuSubmenuRootProps } from "@base-ui/react/context-menu";
|
|
2
|
+
import type { MenuRadioGroupChangeEventDetails as ContextMenuRadioGroupChangeEventDetails } from "@base-ui/react/menu";
|
|
3
|
+
import type { ComponentPropsWithRef } from "react";
|
|
4
|
+
import type { Closed } from "../../closed";
|
|
5
|
+
type ContextMenuPositionerProps = ComponentPropsWithRef<typeof BaseContextMenu.Positioner>;
|
|
6
|
+
type ContextMenuBasePopupProps = ComponentPropsWithRef<typeof BaseContextMenu.Popup>;
|
|
7
|
+
export type ContextMenuProps<_Payload = unknown> = Closed<BaseContextMenuRootProps>;
|
|
8
|
+
export type ContextMenuPortalProps = Closed<ComponentPropsWithRef<typeof BaseContextMenu.Portal>>;
|
|
9
|
+
export type ContextMenuTriggerProps = Closed<ComponentPropsWithRef<typeof BaseContextMenu.Trigger>>;
|
|
10
|
+
export type ContextMenuPopupProps = Closed<Omit<ContextMenuBasePopupProps, "ref"> & {
|
|
11
|
+
align?: ContextMenuPositionerProps["align"];
|
|
12
|
+
alignOffset?: ContextMenuPositionerProps["alignOffset"];
|
|
13
|
+
anchor?: ContextMenuPositionerProps["anchor"];
|
|
14
|
+
portalProps?: Omit<ContextMenuPortalProps, "children" | "ref">;
|
|
15
|
+
ref?: ContextMenuBasePopupProps["ref"];
|
|
16
|
+
side?: ContextMenuPositionerProps["side"];
|
|
17
|
+
sideOffset?: ContextMenuPositionerProps["sideOffset"];
|
|
18
|
+
}>;
|
|
19
|
+
export type ContextMenuItemVariant = "default" | "destructive";
|
|
20
|
+
export type ContextMenuItemProps = Closed<Omit<ComponentPropsWithRef<typeof BaseContextMenu.Item>, "ref"> & {
|
|
21
|
+
closeOnClick?: boolean;
|
|
22
|
+
inset?: boolean;
|
|
23
|
+
ref?: ComponentPropsWithRef<typeof BaseContextMenu.Item>["ref"];
|
|
24
|
+
variant?: ContextMenuItemVariant;
|
|
25
|
+
}>;
|
|
26
|
+
export type ContextMenuLinkItemProps = Closed<ComponentPropsWithRef<typeof BaseContextMenu.LinkItem> & {
|
|
27
|
+
inset?: boolean;
|
|
28
|
+
variant?: ContextMenuItemVariant;
|
|
29
|
+
}>;
|
|
30
|
+
export type ContextMenuGroupProps = Closed<ComponentPropsWithRef<typeof BaseContextMenu.Group>>;
|
|
31
|
+
export type ContextMenuGroupLabelProps = Closed<ComponentPropsWithRef<typeof BaseContextMenu.GroupLabel> & {
|
|
32
|
+
inset?: boolean;
|
|
33
|
+
}>;
|
|
34
|
+
export type ContextMenuSeparatorProps = Closed<ComponentPropsWithRef<typeof BaseContextMenu.Separator>>;
|
|
35
|
+
export type ContextMenuShortcutProps = Closed<ComponentPropsWithRef<"kbd">>;
|
|
36
|
+
export type ContextMenuCheckboxItemVariant = "default" | "switch";
|
|
37
|
+
export type ContextMenuCheckboxItemProps = Closed<Omit<ComponentPropsWithRef<typeof BaseContextMenu.CheckboxItem>, "ref"> & {
|
|
38
|
+
ref?: ComponentPropsWithRef<typeof BaseContextMenu.CheckboxItem>["ref"];
|
|
39
|
+
variant?: ContextMenuCheckboxItemVariant;
|
|
40
|
+
}>;
|
|
41
|
+
type BaseContextMenuRadioGroupProps = ComponentPropsWithRef<typeof BaseContextMenu.RadioGroup>;
|
|
42
|
+
export type ContextMenuRadioGroupProps<Value = unknown> = Closed<Omit<BaseContextMenuRadioGroupProps, "defaultValue" | "onValueChange" | "value"> & {
|
|
43
|
+
defaultValue?: Value;
|
|
44
|
+
onValueChange?: (value: Value, eventDetails: ContextMenuRadioGroupChangeEventDetails) => void;
|
|
45
|
+
value?: Value;
|
|
46
|
+
}>;
|
|
47
|
+
type BaseContextMenuRadioItemProps = ComponentPropsWithRef<typeof BaseContextMenu.RadioItem>;
|
|
48
|
+
export type ContextMenuRadioItemProps<Value = unknown> = Closed<Omit<BaseContextMenuRadioItemProps, "value"> & {
|
|
49
|
+
value: Value;
|
|
50
|
+
}>;
|
|
51
|
+
export type ContextMenuSubProps = Closed<ContextMenuSubmenuRootProps>;
|
|
52
|
+
export type ContextMenuSubTriggerProps = Closed<Omit<ComponentPropsWithRef<typeof BaseContextMenu.SubmenuTrigger>, "ref"> & {
|
|
53
|
+
inset?: boolean;
|
|
54
|
+
ref?: ComponentPropsWithRef<typeof BaseContextMenu.SubmenuTrigger>["ref"];
|
|
55
|
+
}>;
|
|
56
|
+
export type ContextMenuSubPopupProps = Closed<ContextMenuPopupProps>;
|
|
57
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef, type ReactNode } from "react";
|
|
2
|
+
import type { Closed } from "../../closed";
|
|
3
|
+
type Part = Omit<Closed<ComponentPropsWithRef<"div">>, "data-slot">;
|
|
4
|
+
export type ConversationProps = Part & {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* The thread with the agent: turns that scroll, an empty state before the
|
|
9
|
+
* first one, and the composer docked under them. It fills a parent with a
|
|
10
|
+
* bounded height.
|
|
11
|
+
*/
|
|
12
|
+
export declare function Conversation({ children, ...rest }: ConversationProps): import("react").JSX.Element;
|
|
13
|
+
export interface ConversationEmptyStateProps {
|
|
14
|
+
/** Starters, such as Suggestions, under the words. */
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
description?: ReactNode;
|
|
17
|
+
title: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** The start screen, shown in place of the thread before the first turn. */
|
|
20
|
+
export declare function ConversationEmptyState({ children, description, title, }: ConversationEmptyStateProps): import("react").JSX.Element;
|
|
21
|
+
export interface ConversationContentProps {
|
|
22
|
+
"aria-label"?: string;
|
|
23
|
+
/** True while a reply streams, so assistive tech waits for it. */
|
|
24
|
+
busy?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The turns, each with a key that is its id, and an optional
|
|
27
|
+
* ConversationEmptyState. A turn holding the person's own Message
|
|
28
|
+
* settles near the top when sent, and the rail lists it.
|
|
29
|
+
*/
|
|
30
|
+
children: ReactNode;
|
|
31
|
+
/** Adds a MessageScrollerNavigation rail, one tick per turn the person sent. */
|
|
32
|
+
navigation?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** The scrolling thread, with the jump button floating over its end. */
|
|
35
|
+
export declare function ConversationContent({ "aria-label": ariaLabel, busy, children, navigation, }: ConversationContentProps): import("react").JSX.Element;
|
|
36
|
+
export type ConversationFooterProps = Part & {
|
|
37
|
+
children: ReactNode;
|
|
38
|
+
};
|
|
39
|
+
/** Holds the composer under the thread, in the thread's column. */
|
|
40
|
+
export declare function ConversationFooter({ children, ...rest }: ConversationFooterProps): import("react").JSX.Element;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use client";import{props}from"@stylexjs/stylex";import{Children,isValidElement}from"react";import{typeRoles}from"../../styles/typography.styles";import{MessageScroller,MessageScrollerButton,MessageScrollerContent,MessageScrollerItem,MessageScrollerNavigation,MessageScrollerViewport}from"../message-scroller/message-scroller";import{conversationStyles as styles}from"./conversation.styles";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";/**
|
|
2
|
+
* The thread with the agent: turns that scroll, an empty state before the
|
|
3
|
+
* first one, and the composer docked under them. It fills a parent with a
|
|
4
|
+
* bounded height.
|
|
5
|
+
*/export function Conversation({children,...rest}){return/*#__PURE__*/_jsx(MessageScroller,{...rest,children:children});}/** The start screen, shown in place of the thread before the first turn. */export function ConversationEmptyState({children,description,title}){return/*#__PURE__*/_jsxs("div",{"data-slot":"conversation-empty-state",...props(styles.emptyState),children:[/*#__PURE__*/_jsxs("div",{...props(styles.emptyText),children:[/*#__PURE__*/_jsx("h2",{...props(typeRoles.subheading,styles.emptyTitle),children:title}),description?/*#__PURE__*/_jsx("p",{...props(typeRoles.body,styles.emptyDescription),children:description}):null]}),children]});}// React prefixes keys from Children.toArray; the id is the key as written.
|
|
6
|
+
const KEY_PREFIX=/^\.\$/u;function idOf(turn){return String(turn.key).replace(KEY_PREFIX,"");}function split(children){const empty=[];const turns=[];for(const child of Children.toArray(children)){if(isValidElement(child)&&child.type===ConversationEmptyState){empty.push(child);}else if(isValidElement(child)){turns.push(child);}}return{empty,turns};}/** The scrolling thread, with the jump button floating over its end. */export function ConversationContent({"aria-label":ariaLabel="Conversation",busy=false,children,navigation=false}){const{empty,turns}=split(children);return/*#__PURE__*/_jsxs("div",{"data-slot":"conversation-content",...props(styles.body),children:[/*#__PURE__*/_jsx(MessageScrollerViewport,{"aria-label":ariaLabel,children:/*#__PURE__*/_jsxs("div",{...props(styles.column,navigation&&styles.columnWithRail),children:[turns.length===0?empty:null,/*#__PURE__*/_jsx(MessageScrollerContent,{busy:busy,children:turns.map(turn=>/*#__PURE__*/_jsx(MessageScrollerItem,{messageId:idOf(turn),scrollAnchor:"auto",children:turn},turn.key))})]})}),navigation?/*#__PURE__*/_jsx(MessageScrollerNavigation,{}):null,/*#__PURE__*/_jsx(MessageScrollerButton,{})]});}/** Holds the composer under the thread, in the thread's column. */export function ConversationFooter({children,...rest}){return/*#__PURE__*/_jsx("div",{...rest,"data-slot":"conversation-footer",...props(styles.footer),children:children});}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{create}from"@stylexjs/stylex";import"../../styles/colors.stylex";import{colors}from"../../styles/colors.stylex";import"../../styles/spacing.stylex";import{space}from"../../styles/spacing.stylex";// A readable measure for the thread and the composer under it.
|
|
2
|
+
const MEASURE="48rem";export const conversationStyles={body:{k1xSpc:"x78zum5",kzQI83:"x1iyjqo2",kAzted:"x2lwn1j",kVAEAm:"x1n2onr6",$$css:true},column:{kB7OPa:"x9f619",k1xSpc:"x78zum5",kXwgrk:"xdt5ytf",kUOVxO:"xvueqy4",ks0D6T:"x1vpbbxe",kAzted:"x1us19tq",k8WAf4:"x16z3cw9",kg3NbH:"xaqi9fd",$$css:true},columnWithRail:{kwRFfy:"x1d8qtu6",$$css:true},emptyDescription:{kMwMTN:"x125omll",kogj98:"x1ghz6dp",$$css:true},emptyState:{kGNEyG:"x1qjc9v5",k1xSpc:"x78zum5",kXwgrk:"xdt5ytf",kzQI83:"x1iyjqo2",kOIVth:"x1q60jeg",kjj79g:"xl56j7k",k9WMMc:"x2b8uid",$$css:true},emptyText:{k1xSpc:"x78zum5",kXwgrk:"xdt5ytf",kOIVth:"x13hh4mm",$$css:true},emptyTitle:{kMwMTN:"x14tvo57",kogj98:"x1ghz6dp",$$css:true},footer:{kB7OPa:"x9f619",kzqmXN:"xh8yej3",kUOVxO:"xvueqy4",ks0D6T:"x1vpbbxe",kGO01o:"xvdpcou",kg3NbH:"xaqi9fd",$$css:true}};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { columnSizingFeature, columnVisibilityFeature, ReactTable, RowData, rowPaginationFeature, rowSortingFeature, Table_RowPagination, Table_RowSorting, TableFeatures } from "@tanstack/react-table";
|
|
2
|
+
export interface DataTableColumnMeta {
|
|
3
|
+
numeric?: boolean;
|
|
4
|
+
rowHeader?: boolean;
|
|
5
|
+
sticky?: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare module "@tanstack/react-table" {
|
|
8
|
+
interface ColumnMeta<TFeatures extends TableFeatures, TData extends RowData, TValue> {
|
|
9
|
+
mizen?: DataTableColumnMeta;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
type DataTableFeatureMap = TableFeatures & {
|
|
13
|
+
columnSizingFeature: typeof columnSizingFeature;
|
|
14
|
+
columnVisibilityFeature: typeof columnVisibilityFeature;
|
|
15
|
+
rowPaginationFeature: typeof rowPaginationFeature;
|
|
16
|
+
rowSortingFeature: typeof rowSortingFeature;
|
|
17
|
+
};
|
|
18
|
+
type SortableTable<TFeatures extends DataTableFeatureMap, TData extends RowData> = ReactTable<TFeatures, TData> & Table_RowSorting<TFeatures, TData>;
|
|
19
|
+
type PaginatedTable<TFeatures extends DataTableFeatureMap, TData extends RowData> = ReactTable<TFeatures, TData> & Table_RowPagination<TFeatures, TData>;
|
|
20
|
+
export interface DataTableProps<TFeatures extends DataTableFeatureMap, TData extends RowData> {
|
|
21
|
+
caption: string;
|
|
22
|
+
table: SortableTable<TFeatures, TData>;
|
|
23
|
+
virtualized?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function DataTable<TFeatures extends DataTableFeatureMap, TData extends RowData>({ caption, table: source, virtualized, }: DataTableProps<TFeatures, TData>): import("react").JSX.Element;
|
|
26
|
+
export interface DataTablePaginationProps<TFeatures extends DataTableFeatureMap, TData extends RowData> {
|
|
27
|
+
table: PaginatedTable<TFeatures, TData>;
|
|
28
|
+
}
|
|
29
|
+
export declare function DataTablePagination<TFeatures extends DataTableFeatureMap, TData extends RowData>({ table: source }: DataTablePaginationProps<TFeatures, TData>): import("react").JSX.Element;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";import{props}from"@stylexjs/stylex";import{useVirtualizer}from"@tanstack/react-virtual";import{useCallback,useRef}from"react";import{IconArrowDown,IconArrowUp}from"../../icons";import{typographyStyles}from"../../styles/typography.styles";import{Button}from"../button/button";import{Table,TableBody,TableCaption,TableCell,TableContainer,TableHead,TableHeader,TableRow}from"../table/table";import{Text}from"../text/text";import{dataTableStyles}from"./data-table.styles";import{useGridNavigation}from"./grid-navigation";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";// Compact grid rows: a 20px line, 8px padding above and below, and a 1px rule.
|
|
2
|
+
const ESTIMATED_ROW_HEIGHT=37;const selectState=state=>state;const RESIZE_STEP=16;const MIN_COLUMN_WIDTH=48;// Column resizing is opt-in: it exists when the table includes TanStack's
|
|
3
|
+
// columnResizingFeature.
|
|
4
|
+
function canResize(header){const column=header.column;return typeof header.getResizeHandler==="function"&&column.getCanResize?.()!==false;}function resizeBy(source,column,delta){const{maxSize,minSize}=column.columnDef;const size=Math.min(Math.max(column.getSize()+delta,minSize??MIN_COLUMN_WIDTH),maxSize??Number.POSITIVE_INFINITY);source.setColumnSizing?.(sizing=>({...sizing,[column.id]:size}));}function hasColumnSizing(source){const{columnSizing}=source.state;return Object.keys(columnSizing??{}).length>0;}// Columns start at their natural widths. The first resize records every
|
|
5
|
+
// rendered width, so from then on the table is exactly the sum of its columns.
|
|
6
|
+
function seedColumnSizing(source,from){const cells=from.closest("table")?.tHead?.rows;const headers=cells?.[cells.length-1]?.cells;if(hasColumnSizing(source)||!headers){return;}const columns=source.getAllLeafColumns();const sizing=Object.fromEntries(columns.filter(column=>column.getIsVisible()).map((column,index)=>[column.id,Math.round(headers[index]?.getBoundingClientRect().width??0)]));source.setColumnSizing?.(()=>sizing);}const sortIcons={asc:IconArrowUp,desc:IconArrowDown};export function DataTable({caption,table:source,virtualized=false}){return/*#__PURE__*/_jsx(source.Subscribe,{selector:selectState,children:()=>/*#__PURE__*/_jsx(DataTableView,{caption:caption,table:source,virtualized:virtualized})});}function DataTableView({caption,table:source,virtualized}){const viewportRef=useRef(null);const gridNavigation=useGridNavigation();const{rows}=source.getRowModel();const columns=source.getAllLeafColumns().filter(column=>column.getIsVisible());const headerGroups=source.getHeaderGroups();const resizable=headerGroups.some(group=>group.headers.some(header=>canResize(header)));const getItemKey=useCallback(index=>rows[index]?.id??index,[rows]);// eslint-disable-next-line react-hooks/incompatible-library -- TanStack Virtual returns a mutable instance by design; this component stays uncompiled.
|
|
7
|
+
const virtualizer=useVirtualizer({anchorTo:"end",count:rows.length,enabled:virtualized,estimateSize:()=>ESTIMATED_ROW_HEIGHT,getItemKey,getScrollElement:()=>viewportRef.current,initialRect:{height:448,width:1024},overscan:5});const virtualRows=virtualizer.getVirtualItems();const topPadding=virtualRows[0]?.start??0;const bottomPadding=virtualizer.getTotalSize()-(virtualRows.at(-1)?.end??0);return/*#__PURE__*/_jsx(TableContainer,{"aria-label":caption,focusable:false,ref:viewportRef,scroll:"both",children:/*#__PURE__*/_jsxs(Table,{"aria-rowcount":virtualized?rows.length+headerGroups.length:undefined,grid:"interactive",onFocus:gridNavigation.onFocus,onKeyDown:gridNavigation.onKeyDown,ref:gridNavigation.ref,width:resizable&&hasColumnSizing(source)?source.getTotalSize?.():undefined,children:[/*#__PURE__*/_jsx(TableCaption,{children:caption}),/*#__PURE__*/_jsx("colgroup",{children:columns.map(column=>/*#__PURE__*/_jsx("col",{...props(dataTableStyles.column(column.getSize()))},column.id))}),/*#__PURE__*/_jsx(TableHeader,{children:headerGroups.map((group,rowIndex)=>/*#__PURE__*/_jsx(DataTableHeaderGroup,{group:group,primarySortId:source.state.sorting?.[0]?.id,rowIndex:rowIndex,table:source,virtualized:Boolean(virtualized)},group.id))}),/*#__PURE__*/_jsx(TableBody,{children:rows.length===0?/*#__PURE__*/_jsx(TableRow,{children:/*#__PURE__*/_jsx(TableCell,{colSpan:columns.length,children:"No results found."})}):/*#__PURE__*/_jsx(DataTableRows,{bottomPadding:bottomPadding,columnsCount:columns.length,headerCount:headerGroups.length,rows:rows,table:source,topPadding:topPadding,virtualized:Boolean(virtualized),virtualizer:virtualizer,virtualRows:virtualRows})})]})});}function VirtualSpacer({height,columnCount}){return/*#__PURE__*/_jsx(TableRow,{"aria-hidden":"true",children:/*#__PURE__*/_jsx("td",{colSpan:columnCount,...props(dataTableStyles.spacerCell,dataTableStyles.spacerHeight(height))})});}function DataTableRows({columnsCount,headerCount,rows,table:source,virtualized,virtualRows,virtualizer,topPadding,bottomPadding}){const renderedRows=virtualized?virtualRows.map(({index})=>({index,row:rows[index]})):rows.map((row,index)=>({index,row}));return/*#__PURE__*/_jsxs(_Fragment,{children:[virtualized&&topPadding>0?/*#__PURE__*/_jsx(VirtualSpacer,{columnCount:columnsCount,height:topPadding}):null,renderedRows.map(({index,row})=>/*#__PURE__*/_jsx(DataTableBodyRow,{headerCount:headerCount,index:index,measureElement:virtualized?virtualizer.measureElement:undefined,row:row,table:source,virtualized:virtualized},row.id)),virtualized&&bottomPadding>0?/*#__PURE__*/_jsx(VirtualSpacer,{columnCount:columnsCount,height:bottomPadding}):null]});}function DataTableHeaderGroup({group,primarySortId,rowIndex,table:source,virtualized}){return/*#__PURE__*/_jsx(TableRow,{"aria-rowindex":virtualized?rowIndex+1:undefined,children:group.headers.map(header=>/*#__PURE__*/_jsx(DataTableHeaderCell,{header:header,primarySortId:primarySortId,table:source},header.id))});}function DataTableHeaderCell({header,primarySortId,table:source}){const column=header.column;const sorted=column.getIsSorted();const meta=column.columnDef.meta?.mizen;const sortValues={asc:"ascending",desc:"descending"};const ariaSort=column.id===primarySortId&&!header.isPlaceholder&&sorted?sortValues[sorted]:undefined;const resizable=canResize(header);return/*#__PURE__*/_jsxs(TableHead,{"aria-sort":ariaSort,colSpan:header.colSpan,numeric:meta?.numeric,onKeyDown:getResizeKeyHandler(resizable,source,column),sticky:meta?.sticky??meta?.rowHeader,children:[/*#__PURE__*/_jsx(HeaderContent,{column:column,header:header,table:source}),resizable?/*#__PURE__*/_jsx(ColumnResizeHandle,{header:header,table:source}):null]});}function getResizeKeyHandler(resizable,source,column){if(!resizable){return;}return event=>handleResizeKey(event,source,column);}// Shift+Left and Shift+Right resize the focused column; plain arrows still move
|
|
8
|
+
// between cells.
|
|
9
|
+
function handleResizeKey(event,source,column){const direction={ArrowLeft:-1,ArrowRight:1}[event.key];if(!(event.shiftKey&&direction)){return;}event.preventDefault();event.stopPropagation();seedColumnSizing(source,event.currentTarget);resizeBy(source,column,direction*RESIZE_STEP);}// Pointer affordance on the column's trailing edge. Double-click restores the
|
|
10
|
+
// default width.
|
|
11
|
+
function ColumnResizeHandle({header,table:source}){const column=header.column;const onResize=useCallback(event=>{seedColumnSizing(source,event.currentTarget);header.getResizeHandler?.()(event);},[header,source]);const onReset=useCallback(()=>column.resetSize?.(),[column]);return(/*#__PURE__*/// biome-ignore lint/a11y/noStaticElementInteractions: A pointer-only affordance hidden from assistive tech; keyboard users resize with Shift+Left/Right on the header.
|
|
12
|
+
// biome-ignore lint/a11y/noNoninteractiveElementInteractions: Same pointer-only affordance as above.
|
|
13
|
+
_jsx("span",{"aria-hidden":"true","data-resizing":column.getIsResizing?.()||undefined,"data-slot":"data-table-resize-handle",onDoubleClick:onReset,onMouseDown:onResize,onTouchStart:onResize,...props(dataTableStyles.resizeHandle)}));}function HeaderContent({column,header,table:source}){if(header.isPlaceholder){return null;}const label=/*#__PURE__*/_jsx(source.FlexRender,{header:header});const sorted=column.getIsSorted();const SortIcon=sorted?sortIcons[sorted]:null;return column.getCanSort()?/*#__PURE__*/_jsx("span",{...props(dataTableStyles.sortButton),children:/*#__PURE__*/_jsxs(Button,{onClick:column.getToggleSortingHandler(),size:"sm",variant:"ghost",children:[/*#__PURE__*/_jsx("span",{...props(typographyStyles.controlLabel),children:label}),SortIcon?/*#__PURE__*/_jsx(SortIcon,{"aria-hidden":"true",focusable:"false",size:"1em"}):null]})}):label;}function DataTableBodyRow({headerCount,index,measureElement,row,table:source,virtualized}){return/*#__PURE__*/_jsx(TableRow,{"aria-rowindex":virtualized?index+headerCount+1:undefined,"data-index":virtualized?index:undefined,ref:measureElement,children:row.getVisibleCells().map(cell=>/*#__PURE__*/_jsx(DataTableBodyCell,{cell:cell,table:source},cell.id))});}function DataTableBodyCell({cell,table:source}){const meta=cell.column.columnDef.meta?.mizen;return meta?.rowHeader?/*#__PURE__*/_jsx(TableHead,{numeric:meta.numeric,scope:"row",sticky:meta.sticky??true,children:/*#__PURE__*/_jsx(source.FlexRender,{cell:cell})}):/*#__PURE__*/_jsx(TableCell,{numeric:meta?.numeric,sticky:meta?.sticky,children:/*#__PURE__*/_jsx(source.FlexRender,{cell:cell})});}export function DataTablePagination({table:source}){return/*#__PURE__*/_jsx(source.Subscribe,{selector:selectState,children:state=>/*#__PURE__*/_jsx(PaginationControls,{pagination:state.pagination,table:source})});}function PaginationControls({table:source,pagination}){const rowCount=source.getRowCount();const pageCount=source.getPageCount();const start=rowCount===0?0:pagination.pageIndex*pagination.pageSize+1;const end=Math.min((pagination.pageIndex+1)*pagination.pageSize,rowCount);return/*#__PURE__*/_jsxs("div",{"data-slot":"data-table-pagination",...props(dataTableStyles.footer),children:[/*#__PURE__*/_jsx(Text,{"aria-live":"polite",size:"ui",tone:"muted",children:pageCount<0?`Rows on this page: ${source.getRowModel().rows.length}`:`${start}–${end} of ${rowCount} rows`}),/*#__PURE__*/_jsxs("div",{...props(dataTableStyles.controls),children:[/*#__PURE__*/_jsx(Button,{"aria-label":"First page",disabled:!source.getCanPreviousPage(),onClick:source.firstPage,variant:"outline",children:"First"}),/*#__PURE__*/_jsx(Button,{"aria-label":"Previous page",disabled:!source.getCanPreviousPage(),onClick:source.previousPage,variant:"outline",children:"Previous"}),/*#__PURE__*/_jsxs(Text,{"aria-live":"polite",size:"ui",tone:"muted",children:["Page ",pagination.pageIndex+1,pageCount<0?"":` of ${Math.max(1,pageCount)}`]}),/*#__PURE__*/_jsx(Button,{"aria-label":"Next page",disabled:!source.getCanNextPage(),onClick:source.nextPage,variant:"outline",children:"Next"}),/*#__PURE__*/_jsx(Button,{"aria-label":"Last page",disabled:pageCount<0||!source.getCanNextPage(),onClick:source.lastPage,variant:"outline",children:"Last"})]})]});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{create}from"@stylexjs/stylex";import"../../styles/colors.stylex";import{colors}from"../../styles/colors.stylex";import"../../styles/conditions.stylex";import{conditions}from"../../styles/conditions.stylex";import"../../styles/dimensions.stylex";import{controlSize}from"../../styles/dimensions.stylex";import"../../styles/spacing.stylex";import{space}from"../../styles/spacing.stylex";import"../../styles/typography.stylex";import{lineHeight}from"../../styles/typography.stylex";export const dataTableStyles={column:width=>[{kzqmXN:width!=null?"x5lhr3w":width,$$css:true},{"--x-width":(val=>typeof val==="number"?val+"px":val!=null?val:undefined)(width)}],controls:{kGNEyG:"x6s0dn4",k1xSpc:"x78zum5",kwnvtZ:"x1a02dak",kOIVth:"x13hh4mm",$$css:true},footer:{kGNEyG:"x6s0dn4",k1xSpc:"x78zum5",kwnvtZ:"x1a02dak",kcqcaj:"xss6m8b",kOIVth:"xp4ho6d",kjj79g:"x1qughib",$$css:true},resizeHandle:{ks3ayO:"x2g32wa xwxf2ow xyhc2n1",k5JduY:"x1s928wv",kSy8m5:"xd54j2p",kH8aOt:"x1unh1gc",kwXMNM:"x1j6awrg",kkgrvl:"x13694x8",kkrTdU:"xicojor",kYYq5F:"x10no89f",kt4wiu:"xtijo5x",kVAEAm:"x10l6tqk",kFalU9:"x5ve5x3",kfSwDN:"x87ps6o",kzqmXN:"x1xc55vz",kY2c9j:"x1vjfegm",$$css:true},sortButton:{k1xSpc:"x3nfvp2",kqGvvJ:"x4284qm",kUOVxO:"x1sg5gjk",kXLuUW:"x16dsc37",$$css:true},spacerCell:{kMzoRj:"xc342km",kZKoxP:"xqtp20y",k8WAf4:"xt970qd",kg3NbH:"xnjsko4",$$css:true},spacerHeight:height=>[{kZKoxP:height!=null?"x16ye13r":height,kAzted:height!=null?"x82snj4":height,$$css:true},{"--x-height":(val=>typeof val==="number"?val+"px":val!=null?val:undefined)(height),"--x-minHeight":(val=>typeof val==="number"?val+"px":val!=null?val:undefined)(height)}]};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{useCallback,useRef}from"react";// WAI-ARIA data grid keyboard model: one tab stop, arrows move between cells,
|
|
2
|
+
// and a cell holding exactly one control hands focus to that control.
|
|
3
|
+
// Widget roles cover Base UI controls rendered on spans; their hidden form
|
|
4
|
+
// inputs are aria-hidden and must never take focus.
|
|
5
|
+
const CONTROLS=["a[href]","button","input","select","textarea",'[role="checkbox"]','[role="switch"]','[role="combobox"]'].map(selector=>`${selector}:not([aria-hidden="true"])`).join(", ");const PAGE_ROWS=10;const TEXT_ENTRY=new Set(["email","number","password","search","tel","text","url"]);function getGridRows(table){return[...table.rows].filter(row=>row.getAttribute("aria-hidden")!=="true");}function getCell(table,{column,row}){const cells=getGridRows(table)[row]?.cells;return cells?.[Math.min(column,(cells?.length??1)-1)];}function getFocusTarget(cell){const controls=cell.querySelectorAll(CONTROLS);return controls.length===1?controls[0]:cell;}function getPosition(table,cell){const row=getGridRows(table).indexOf(cell.parentElement);return{column:cell.cellIndex,row:Math.max(row,0)};}// Text fields and selects keep their own arrow and Home/End keys.
|
|
6
|
+
function ownsArrowKeys(target){if(target instanceof HTMLInputElement){return TEXT_ENTRY.has(target.type);}return target instanceof HTMLTextAreaElement||target instanceof HTMLSelectElement;}function getStep(event){const steps={ArrowDown:{column:0,row:1},ArrowLeft:{column:-1,row:0},ArrowRight:{column:1,row:0},ArrowUp:{column:0,row:-1},PageDown:{column:0,row:PAGE_ROWS},PageUp:{column:0,row:-PAGE_ROWS}};if(event.key==="Home"||event.key==="End"){const edge=event.key==="Home"?"start":"end";return event.ctrlKey||event.metaKey?edge:{column:edge==="start"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,row:0};}return steps[event.key]??null;}function resolveTarget(table,from,step){const rows=getGridRows(table);if(step==="start"){return{column:0,row:0};}if(step==="end"){const last=rows.length-1;return{column:(rows[last]?.cells.length??1)-1,row:last};}const row=Math.min(Math.max(from.row+step.row,0),rows.length-1);const width=rows[row]?.cells.length??1;const column=Math.min(Math.max(from.column+step.column,0),width-1);return{column,row};}// Only the active cell (or its single control) is tabbable.
|
|
7
|
+
function syncTabStops(table,active){for(const row of getGridRows(table)){for(const cell of row.cells){cell.tabIndex=-1;for(const control of cell.querySelectorAll(CONTROLS)){control.tabIndex=-1;}}}const cell=getCell(table,active);if(cell){getFocusTarget(cell).tabIndex=0;}}export function useGridNavigation(){const tableRef=useRef(null);const active=useRef({column:0,row:0});// Keep one tab stop as rows, cells, and controls change, including a
|
|
8
|
+
// control that resets its own tabindex on re-render. Our own writes are
|
|
9
|
+
// dropped from the queue so they never retrigger the sync.
|
|
10
|
+
const ref=useCallback(table=>{tableRef.current=table;const sync=()=>{syncTabStops(table,active.current);observer.takeRecords();};const observer=new MutationObserver(sync);observer.observe(table,{attributeFilter:["tabindex"],childList:true,subtree:true});sync();return()=>{observer.disconnect();tableRef.current=null;};},[]);const onFocus=useCallback(event=>{const table=tableRef.current;const cell=event.target.closest?.("td, th");if(!(table&&cell instanceof HTMLTableCellElement)){return;}active.current=getPosition(table,cell);syncTabStops(table,active.current);},[]);const onKeyDown=useCallback(event=>{const table=tableRef.current;const step=getStep(event);if(!(table&&step)||ownsArrowKeys(event.target)){return;}const cell=getCell(table,resolveTarget(table,active.current,step));if(!cell){return;}event.preventDefault();getFocusTarget(cell).focus();cell.scrollIntoView({block:"nearest",inline:"nearest"});},[]);return{onFocus,onKeyDown,ref};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function formatIsoDate(date){if(!date){return"";}const year=date.getFullYear();const month=String(date.getMonth()+1).padStart(2,"0");const day=String(date.getDate()).padStart(2,"0");return`${year}-${month}-${day}`;}const ISO_DATE_PATTERN=/^\d{4}-\d{2}-\d{2}$/u;export function parseIsoDate(text){const trimmed=text.trim();if(!ISO_DATE_PATTERN.test(trimmed)){return undefined;}const parts=trimmed.split("-");const year=Number(parts[0]);const month=Number(parts[1]);const day=Number(parts[2]);if(month<1||month>12||day<1||day>31){return undefined;}const date=new Date(year,month-1,day);if(date.getFullYear()!==year||date.getMonth()!==month-1||date.getDate()!==day){return undefined;}date.setHours(0,0,0,0);return date;}export function areDatesEqual(a,b){if(a===undefined&&b===undefined){return true;}if(a===undefined||b===undefined){return false;}return a.getFullYear()===b.getFullYear()&&a.getMonth()===b.getMonth()&&a.getDate()===b.getDate();}export function startOfDay(date){const result=new Date(date);result.setHours(0,0,0,0);return result;}export function isDateConstraintSatisfied(date,constraints){const target=startOfDay(date);if(constraints.minValue){const min=startOfDay(constraints.minValue);if(target.getTime()<min.getTime()){return false;}}if(constraints.maxValue){const max=startOfDay(constraints.maxValue);if(target.getTime()>max.getTime()){return false;}}return!constraints.isDateUnavailable?.(date);}export function validateDateInput(text,constraints){const trimmed=text.trim();if(trimmed===""){return{date:undefined,status:constraints.required?"invalid":"valid"};}const parsed=parseIsoDate(trimmed);if(!parsed){return{date:undefined,status:"invalid"};}if(!isDateConstraintSatisfied(parsed,constraints)){return{date:undefined,status:"invalid"};}return{date:parsed,status:"valid"};}export function getDateInputValidationMessage(text,constraints){return text!==""&&validateDateInput(text,constraints).status==="invalid"?"Enter a valid date within the allowed range.":"";}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{IconCalendar}from"../../icons";import{jsx as _jsx}from"react/jsx-runtime";export function CalendarIcon(){return/*#__PURE__*/_jsx(IconCalendar,{"aria-hidden":"true",focusable:"false",size:"16"});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useCallback,useState}from"react";import{areDatesEqual,getDateInputValidationMessage,isDateConstraintSatisfied,validateDateInput}from"./date-picker-date";export function useDatePickerDraft({committedText,committedValue,constraints,disabled,isControlled,onValueChange,readOnly,setIsOpen,setUncontrolledValue}){const[isFocused,setIsFocused]=useState(false);const[focusedDraft,setFocusedDraft]=useState(null);const[invalidState,setInvalidState]=useState(null);const isInvalidActive=invalidState!==null&&invalidState.baseKey===committedText;let displayText=committedText;if(isFocused){displayText=focusedDraft??(isInvalidActive?invalidState.text:committedText);}else if(isInvalidActive){displayText=invalidState.text;}const commitCandidate=useCallback(nextDate=>{if(!isControlled){setUncontrolledValue(nextDate);}setInvalidState(null);setFocusedDraft(null);onValueChange?.(nextDate);},[isControlled,onValueChange,setUncontrolledValue]);const handleDraftReset=useCallback(()=>{setIsFocused(false);setFocusedDraft(null);setInvalidState(null);},[]);const handleInputChange=useCallback(event=>{if(readOnly||disabled){return;}event.currentTarget.setCustomValidity(getDateInputValidationMessage(event.currentTarget.value,constraints));setInvalidState(null);setFocusedDraft(event.target.value);},[constraints,disabled,readOnly]);const handleInputFocus=useCallback(()=>{if(disabled){return;}setIsFocused(true);},[disabled]);const handleInputBlur=useCallback(event=>{setIsFocused(false);if(readOnly||disabled){return;}const currentDraft=focusedDraft??event.target.value;setFocusedDraft(null);const result=validateDateInput(currentDraft,constraints);event.currentTarget.setCustomValidity(getDateInputValidationMessage(currentDraft,constraints));if(result.status==="valid"){setInvalidState(null);if(!areDatesEqual(committedValue,result.date)){commitCandidate(result.date);}}else{setInvalidState({baseKey:committedText,text:currentDraft});}},[commitCandidate,committedText,committedValue,constraints,disabled,focusedDraft,readOnly]);const handleInputKeyDown=useCallback(event=>{if(disabled||readOnly){return;}if(event.key==="Enter"){const currentDraft=focusedDraft??event.currentTarget.value;const result=validateDateInput(currentDraft,constraints);event.currentTarget.setCustomValidity(getDateInputValidationMessage(currentDraft,constraints));if(result.status==="valid"){commitCandidate(result.date);}else{setInvalidState({baseKey:committedText,text:currentDraft});event.preventDefault();}}else if(event.key==="Escape"){event.currentTarget.setCustomValidity(getDateInputValidationMessage(committedText,constraints));setFocusedDraft(null);setInvalidState(null);}},[commitCandidate,committedText,constraints,disabled,focusedDraft,readOnly]);const handleCalendarSelect=useCallback(selectedDate=>{if(readOnly||disabled){return;}if(selectedDate&&!isDateConstraintSatisfied(selectedDate,constraints)){return;}commitCandidate(selectedDate);setIsOpen(false);},[commitCandidate,constraints,disabled,readOnly,setIsOpen]);const isLocalInvalid=isInvalidActive;return{displayText,handleCalendarSelect,handleDraftReset,handleInputBlur,handleInputChange,handleInputFocus,handleInputKeyDown,isLocalInvalid};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{props}from"@stylexjs/stylex";import{useCallback,useId,useMemo,useRef,useState}from"react";import{assignRef}from"../../ref-utils";import{Calendar}from"../calendar/calendar";import{BoundFieldProvider}from"../field/field-context";import{InputGroup,InputGroupAddon,InputGroupInput}from"../input-group/input-group";import{Popover,PopoverPopup,PopoverTrigger}from"../popover/popover";import{datePickerStyles}from"./date-picker.styles";import{formatIsoDate,getDateInputValidationMessage}from"./date-picker-date";import{CalendarIcon}from"./date-picker-icon";import{useDatePickerDraft}from"./date-picker-state";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function DatePicker(datePickerProps){const[isControlled]=useState(()=>Object.hasOwn(datePickerProps,"value"));const[uncontrolledValue,setUncontrolledValue]=useState(datePickerProps.defaultValue);const initialValue=useRef(datePickerProps.defaultValue);const committedValue=isControlled?datePickerProps.value:uncontrolledValue;const{"aria-describedby":ariaDescribedBy,"aria-label":ariaLabel,"aria-labelledby":ariaLabelledBy,autoFocus,captionLayout,dir,disabled=false,endMonth,id:providedId,invalid:externalInvalid,isDateUnavailable,locale,maxValue,minValue,name,onValueChange,readOnly=false,ref:forwardedInputRef,required,size="default",startMonth,weekStartsOn}=datePickerProps;const generatedId=useId();const inputId=providedId??generatedId;const committedText=useMemo(()=>formatIsoDate(committedValue),[committedValue]);const groupRef=useRef(null);const[isOpen,setIsOpen]=useState(false);const constraints=useMemo(()=>({isDateUnavailable,maxValue,minValue,required}),[isDateUnavailable,maxValue,minValue,required]);const{displayText,handleCalendarSelect,handleDraftReset,handleInputBlur,handleInputChange,handleInputFocus,handleInputKeyDown,isLocalInvalid}=useDatePickerDraft({committedText,committedValue,constraints,disabled,isControlled,onValueChange,readOnly,setIsOpen,setUncontrolledValue});const isEffectivelyInvalid=Boolean(externalInvalid||isLocalInvalid);const setInputRef=useCallback(node=>{if(!node){return assignRef(forwardedInputRef,node);}node.setCustomValidity(disabled||readOnly?"":getDateInputValidationMessage(displayText,constraints));const{form}=node;const handleFormReset=event=>{queueMicrotask(()=>{if(event.defaultPrevented||isControlled){return;}setUncontrolledValue(initialValue.current);setIsOpen(false);handleDraftReset();});};if(!isControlled){form?.addEventListener("reset",handleFormReset);}const cleanupRef=assignRef(forwardedInputRef,node);return()=>{form?.removeEventListener("reset",handleFormReset);cleanupRef?.();};},[constraints,disabled,displayText,forwardedInputRef,handleDraftReset,isControlled,readOnly]);return/*#__PURE__*/_jsxs(Popover,{onOpenChange:setIsOpen,open:isOpen,children:[/*#__PURE__*/_jsx(BoundFieldProvider,{value:null,children:/*#__PURE__*/_jsxs(InputGroup,{ref:groupRef,children:[/*#__PURE__*/_jsx(InputGroupInput,{"aria-describedby":ariaDescribedBy,"aria-label":ariaLabel,"aria-labelledby":ariaLabelledBy,autoFocus:autoFocus,disabled:disabled,id:inputId,invalid:isEffectivelyInvalid,name:name,onBlur:handleInputBlur,onChange:handleInputChange,onFocus:handleInputFocus,onKeyDown:handleInputKeyDown,placeholder:"YYYY-MM-DD",readOnly:readOnly,ref:setInputRef,required:required,size:size,value:displayText}),/*#__PURE__*/_jsx(InputGroupAddon,{align:"inline-end",children:/*#__PURE__*/_jsx(PopoverTrigger,{"aria-label":"Open calendar",disabled:disabled,...props(datePickerStyles.triggerButton,disabled&&datePickerStyles.triggerButtonDisabled),children:/*#__PURE__*/_jsx("span",{...props(datePickerStyles.triggerIcon),children:/*#__PURE__*/_jsx(CalendarIcon,{})})})})]})}),/*#__PURE__*/_jsx(PopoverPopup,{align:"start",anchor:groupRef,"aria-label":ariaLabel??"Date picker calendar dialog",variant:"bare",children:/*#__PURE__*/_jsx(Calendar,{"aria-label":ariaLabel??"Date picker calendar",autoFocus:true,captionLayout:captionLayout,defaultMonth:committedValue,dir:dir,disabled:disabled,endMonth:endMonth,isDateUnavailable:isDateUnavailable,locale:locale,maxValue:maxValue,minValue:minValue,mode:"single",onValueChange:handleCalendarSelect,readOnly:readOnly,required:required,startMonth:startMonth,value:committedValue,weekStartsOn:weekStartsOn})})]});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{create}from"@stylexjs/stylex";import"../../styles/colors.stylex";import{colors}from"../../styles/colors.stylex";import"../../styles/conditions.stylex";import{conditions}from"../../styles/conditions.stylex";import"../../styles/interaction.stylex";import{borderWidth,focus,focusMotion,focusOutline}from"../../styles/interaction.stylex";import"../../styles/shape.stylex";import{shape}from"../../styles/shape.stylex";import"../../styles/spacing.stylex";import{space}from"../../styles/spacing.stylex";export const datePickerStyles={triggerButton:{kGNEyG:"x6s0dn4",k44tkh:"x1iha7go",kKVMdj:"x1b5t0b2",kWkggS:"xkz2hrh xjbqb8w",kVAM5u:"x9r1u3d",kaIpWk:"x2b34ud",ksu8eU:"xng3xce",kMwMTN:"x14tvo57",kkrTdU:"x1ypdohk",k1xSpc:"x3nfvp2",kZKoxP:"x5yr21d",kjj79g:"xl56j7k",kjBf7l:"x4dprnk x1uczgqu",kInvED:"x1w1ofmy",k3XXqK:"xzc55om",kMeerF:"x1vhx2qj",kmVPX3:"xlxy37g",$$css:true},triggerButtonDisabled:{kkrTdU:"x1h6gzvc",$$css:true},triggerIcon:{k1xSpc:"x3nfvp2",kmuXW:"x2lah0s",kLWn49:"x14ju556",$$css:true}};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef } from "react";
|
|
2
|
+
import type { CalendarCommonProps, CalendarLocale } from "../calendar/calendar.types";
|
|
3
|
+
export interface DatePickerProps {
|
|
4
|
+
readonly "aria-describedby"?: string | undefined;
|
|
5
|
+
readonly "aria-label"?: string | undefined;
|
|
6
|
+
readonly "aria-labelledby"?: string | undefined;
|
|
7
|
+
autoFocus?: boolean | undefined;
|
|
8
|
+
captionLayout?: CalendarCommonProps["captionLayout"];
|
|
9
|
+
defaultValue?: Date | undefined;
|
|
10
|
+
dir?: "ltr" | "rtl" | undefined;
|
|
11
|
+
disabled?: boolean | undefined;
|
|
12
|
+
endMonth?: Date | undefined;
|
|
13
|
+
id?: string | undefined;
|
|
14
|
+
invalid?: boolean | undefined;
|
|
15
|
+
isDateUnavailable?: ((date: Date) => boolean) | undefined;
|
|
16
|
+
locale?: CalendarLocale | undefined;
|
|
17
|
+
maxValue?: Date | undefined;
|
|
18
|
+
minValue?: Date | undefined;
|
|
19
|
+
name?: string | undefined;
|
|
20
|
+
onValueChange?: ((value: Date | undefined) => void) | undefined;
|
|
21
|
+
readOnly?: boolean | undefined;
|
|
22
|
+
ref?: ComponentPropsWithRef<"input">["ref"] | undefined;
|
|
23
|
+
required?: boolean | undefined;
|
|
24
|
+
size?: "default" | "lg" | "sm" | undefined;
|
|
25
|
+
startMonth?: Date | undefined;
|
|
26
|
+
value?: Date | undefined;
|
|
27
|
+
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{areDatesEqual,formatIsoDate,isDateConstraintSatisfied,parseIsoDate,startOfDay}from"../date-picker/date-picker-date";export function formatIsoRange(range){if(!range?.from){return"";}const fromText=formatIsoDate(range.from);if(!range.to){return fromText;}return`${fromText} – ${formatIsoDate(range.to)}`;}export function countNights(from,to){const utcFrom=Date.UTC(from.getFullYear(),from.getMonth(),from.getDate());const utcTo=Date.UTC(to.getFullYear(),to.getMonth(),to.getDate());const diffDays=Math.round((utcTo-utcFrom)/(1000*60*60*24));return Math.max(0,diffDays);}const RANGE_SEPARATOR_REGEX=/\s+[–—-]\s+|[–—]|\/|\s+(?:to)\s+/iu;export function parseIsoRange(text){const trimmed=text.trim();if(trimmed===""){return undefined;}const separatorMatch=RANGE_SEPARATOR_REGEX.exec(trimmed);if(!separatorMatch){const single=parseIsoDate(trimmed);return single?{from:single}:undefined;}const[separator]=separatorMatch;const{index}=separatorMatch;const firstPart=trimmed.slice(0,index).trim();const secondPart=trimmed.slice(index+separator.length).trim();if(firstPart===""||secondPart===""){return undefined;}const from=parseIsoDate(firstPart);const to=parseIsoDate(secondPart);if(!(from&&to)){return undefined;}if(startOfDay(to).getTime()<startOfDay(from).getTime()){return undefined;}return{from,to};}export function areRangesEqual(a,b){if(a===undefined&&b===undefined){return true;}if(a===undefined||b===undefined){return false;}return areDatesEqual(a.from,b.from)&&areDatesEqual(a.to,b.to);}function areRangeDaysAvailable(from,to,isUnavailable){const current=startOfDay(from);const end=startOfDay(to);while(current.getTime()<=end.getTime()){if(isUnavailable(current)){return false;}current.setDate(current.getDate()+1);}return true;}function areNightsWithinLimits(nights,minNights,maxNights){if(minNights!==undefined&&nights<minNights){return false;}return!(maxNights!==undefined&&nights>maxNights);}export function isRangeConstraintSatisfied(range,constraints){if(!isDateConstraintSatisfied(range.from,constraints)){return false;}if(!range.to){return true;}if(startOfDay(range.to).getTime()<startOfDay(range.from).getTime()){return false;}if(!isDateConstraintSatisfied(range.to,constraints)){return false;}const nights=countNights(range.from,range.to);if(!areNightsWithinLimits(nights,constraints.minNights,constraints.maxNights)){return false;}if(constraints.isDateUnavailable){return areRangeDaysAvailable(range.from,range.to,constraints.isDateUnavailable);}return true;}export function validateRangeInput(text,constraints){const trimmed=text.trim();if(trimmed===""){return{range:undefined,status:constraints.required?"invalid":"valid"};}const parsed=parseIsoRange(trimmed);if(!parsed){return{range:undefined,status:"invalid"};}if(!(parsed.to&&isRangeConstraintSatisfied(parsed,constraints))){return{range:undefined,status:"invalid"};}return{range:parsed,status:"valid"};}export function getRangeInputValidationMessage(text,constraints){return text!==""&&validateRangeInput(text,constraints).status==="invalid"?"Enter a valid date range within the allowed limits.":"";}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useCallback,useState}from"react";import{areRangesEqual,formatIsoRange,getRangeInputValidationMessage,isRangeConstraintSatisfied,validateRangeInput}from"./date-range-picker-date";function getNextCalendarCommit(selectedRange){if(!selectedRange){return{isComplete:false,nextVal:undefined};}const isComplete=selectedRange.to!==undefined;return{isComplete,nextVal:isComplete?selectedRange:{from:selectedRange.from}};}export function useDateRangePickerDraft({committedText,committedValue,constraints,disabled,isControlled,onValueChange,readOnly,setIsOpen,setUncontrolledValue}){const[isFocused,setIsFocused]=useState(false);const[focusedDraft,setFocusedDraft]=useState(null);const[invalidState,setInvalidState]=useState(null);const isInvalidActive=invalidState!==null&&invalidState.baseKey===committedText;const handleDraftReset=useCallback(()=>{setIsFocused(false);setFocusedDraft(null);setInvalidState(null);},[]);let displayText=committedText;if(isFocused){displayText=focusedDraft??(isInvalidActive?invalidState.text:committedText);}else if(isInvalidActive){displayText=invalidState.text;}const commitCandidate=useCallback(nextRange=>{setInvalidState(null);setFocusedDraft(null);if(areRangesEqual(committedValue,nextRange)){return;}if(!isControlled){setUncontrolledValue(nextRange);}onValueChange?.(nextRange);},[committedValue,isControlled,onValueChange,setUncontrolledValue]);const handleInputChange=useCallback(event=>{if(readOnly||disabled){return;}event.currentTarget.setCustomValidity(getRangeInputValidationMessage(event.currentTarget.value,constraints));setInvalidState(null);setFocusedDraft(event.target.value);},[constraints,disabled,readOnly]);const handleInputFocus=useCallback(()=>{if(disabled){return;}setIsFocused(true);},[disabled]);const handleInputBlur=useCallback(event=>{setIsFocused(false);if(readOnly||disabled){return;}const currentDraft=focusedDraft??event.target.value;setFocusedDraft(null);const result=validateRangeInput(currentDraft,constraints);event.currentTarget.setCustomValidity(getRangeInputValidationMessage(currentDraft,constraints));if(result.status==="valid"){setInvalidState(null);if(!areRangesEqual(committedValue,result.range)){commitCandidate(result.range);}}else{setInvalidState({baseKey:committedText,text:currentDraft});}},[commitCandidate,committedText,committedValue,constraints,disabled,focusedDraft,readOnly]);const handleInputKeyDown=useCallback(event=>{if(disabled||readOnly){return;}if(event.key==="Enter"){const currentDraft=focusedDraft??event.currentTarget.value;const result=validateRangeInput(currentDraft,constraints);event.currentTarget.setCustomValidity(getRangeInputValidationMessage(currentDraft,constraints));if(result.status==="valid"){commitCandidate(result.range);}else{setInvalidState({baseKey:committedText,text:currentDraft});event.preventDefault();}}else if(event.key==="Escape"){event.currentTarget.setCustomValidity(getRangeInputValidationMessage(committedText,constraints));setFocusedDraft(null);setInvalidState(null);setIsOpen(false);}},[commitCandidate,committedText,constraints,disabled,focusedDraft,readOnly,setIsOpen]);const handleCalendarSelect=useCallback(selectedRange=>{if(readOnly||disabled){return;}if(selectedRange&&!isRangeConstraintSatisfied(selectedRange,constraints)){return;}const{isComplete,nextVal}=getNextCalendarCommit(selectedRange);commitCandidate(nextVal);if(isComplete){setIsOpen(false);}},[commitCandidate,constraints,disabled,readOnly,setIsOpen]);const handlePresetSelect=useCallback(presetRange=>{if(readOnly||disabled){return;}if(!isRangeConstraintSatisfied(presetRange,constraints)){return;}commitCandidate(presetRange);setIsOpen(false);},[commitCandidate,constraints,disabled,readOnly,setIsOpen]);const isLocalInvalid=isInvalidActive;return{displayText:isFocused||isInvalidActive?displayText:formatIsoRange(committedValue),handleCalendarSelect,handleDraftReset,handleInputBlur,handleInputChange,handleInputFocus,handleInputKeyDown,handlePresetSelect,isLocalInvalid};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{props}from"@stylexjs/stylex";import{useCallback}from"react";import{Calendar}from"../calendar/calendar";import{dateRangePickerStyles}from"./date-range-picker.styles";import{isRangeConstraintSatisfied}from"./date-range-picker-date";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function DateRangePresetButton({disabled,label,onSelect,value}){const handleClick=useCallback(()=>{onSelect(value);},[onSelect,value]);return/*#__PURE__*/_jsx("button",{disabled:disabled,onClick:handleClick,type:"button",...props(dateRangePickerStyles.presetButton,disabled&&dateRangePickerStyles.presetButtonDisabled),children:label});}function DateRangePresetsList({constraints,disabled,onSelect,presets,readOnly}){if(!presets||presets.length===0){return null;}return/*#__PURE__*/_jsx("div",{...props(dateRangePickerStyles.presetsRow),children:presets.map(preset=>{const isPresetValid=isRangeConstraintSatisfied(preset.value,constraints);const isBtnDisabled=disabled||readOnly||!isPresetValid;return/*#__PURE__*/_jsx(DateRangePresetButton,{disabled:isBtnDisabled,label:preset.label,onSelect:onSelect,value:preset.value},preset.label);})});}export function DateRangeCalendarView({committedValue,constraints,disabled,onCalendarSelect,onPresetSelect,props:calendarViewProps,readOnly}){return/*#__PURE__*/_jsxs("div",{...props(dateRangePickerStyles.popupContainer),children:[/*#__PURE__*/_jsx(DateRangePresetsList,{constraints:constraints,disabled:disabled,onSelect:onPresetSelect,presets:calendarViewProps.presets,readOnly:readOnly}),/*#__PURE__*/_jsx(Calendar,{"aria-label":calendarViewProps["aria-label"]??"Date range picker calendar",autoFocus:true,captionLayout:calendarViewProps.captionLayout,defaultMonth:committedValue?.from,dir:calendarViewProps.dir,disabled:disabled,endMonth:calendarViewProps.endMonth,isDateUnavailable:calendarViewProps.isDateUnavailable,locale:calendarViewProps.locale,maxNights:calendarViewProps.maxNights,maxValue:calendarViewProps.maxValue,minNights:calendarViewProps.minNights??0,minValue:calendarViewProps.minValue,mode:"range",onValueChange:onCalendarSelect,readOnly:readOnly,required:calendarViewProps.required,resetOnSelect:true,startMonth:calendarViewProps.startMonth,value:committedValue,variant:"embedded",weekStartsOn:calendarViewProps.weekStartsOn})]});}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
import type { DateRangePickerProps } from "./date-range-picker.types";
|
|
3
|
+
export type { DateRangePickerProps, DateRangePreset, } from "./date-range-picker.types";
|
|
4
|
+
export declare function DateRangePicker(dateRangePickerProps: DateRangePickerProps): ReactElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{props}from"@stylexjs/stylex";import{useCallback,useId,useMemo,useRef,useState}from"react";import{assignRef}from"../../ref-utils";import{datePickerStyles}from"../date-picker/date-picker.styles";import{CalendarIcon}from"../date-picker/date-picker-icon";import{BoundFieldProvider}from"../field/field-context";import{InputGroup,InputGroupAddon,InputGroupInput}from"../input-group/input-group";import{Popover,PopoverPopup,PopoverTrigger}from"../popover/popover";import{formatIsoRange,getRangeInputValidationMessage}from"./date-range-picker-date";import{useDateRangePickerDraft}from"./date-range-picker-state";import{DateRangeCalendarView}from"./date-range-picker-views";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export function DateRangePicker(dateRangePickerProps){const[isControlled]=useState(()=>Object.hasOwn(dateRangePickerProps,"value"));const[uncontrolledValue,setUncontrolledValue]=useState(dateRangePickerProps.defaultValue);const initialValue=useRef(dateRangePickerProps.defaultValue);const committedValue=isControlled?dateRangePickerProps.value:uncontrolledValue;const generatedId=useId();const inputId=dateRangePickerProps.id??generatedId;const committedText=useMemo(()=>formatIsoRange(committedValue),[committedValue]);const groupRef=useRef(null);const[isOpen,setIsOpen]=useState(false);const constraints=useMemo(()=>({isDateUnavailable:dateRangePickerProps.isDateUnavailable,maxNights:dateRangePickerProps.maxNights,maxValue:dateRangePickerProps.maxValue,minNights:dateRangePickerProps.minNights,minValue:dateRangePickerProps.minValue,required:dateRangePickerProps.required}),[dateRangePickerProps.isDateUnavailable,dateRangePickerProps.maxNights,dateRangePickerProps.maxValue,dateRangePickerProps.minNights,dateRangePickerProps.minValue,dateRangePickerProps.required]);const{displayText,handleCalendarSelect,handleInputBlur,handleInputChange,handleInputFocus,handleInputKeyDown,handlePresetSelect,handleDraftReset,isLocalInvalid}=useDateRangePickerDraft({committedText,committedValue,constraints,disabled:dateRangePickerProps.disabled??false,isControlled,onValueChange:dateRangePickerProps.onValueChange,readOnly:dateRangePickerProps.readOnly??false,setIsOpen,setUncontrolledValue});const isEffectivelyInvalid=Boolean(dateRangePickerProps.invalid||isLocalInvalid);const resolvedDisabled=Boolean(dateRangePickerProps.disabled);const resolvedReadOnly=Boolean(dateRangePickerProps.readOnly);const size=dateRangePickerProps.size??"default";const setInputRef=useCallback(node=>{if(!node){return assignRef(dateRangePickerProps.ref,node);}node.setCustomValidity(resolvedDisabled||resolvedReadOnly?"":getRangeInputValidationMessage(displayText,constraints));const{form}=node;const handleFormReset=event=>{queueMicrotask(()=>{if(event.defaultPrevented){return;}setUncontrolledValue(initialValue.current);setIsOpen(false);handleDraftReset();});};if(form&&!isControlled){form.addEventListener("reset",handleFormReset);}const cleanupRef=assignRef(dateRangePickerProps.ref,node);return()=>{if(form&&!isControlled){form.removeEventListener("reset",handleFormReset);}cleanupRef?.();};},[constraints,dateRangePickerProps.ref,displayText,handleDraftReset,isControlled,resolvedDisabled,resolvedReadOnly]);return/*#__PURE__*/_jsxs(Popover,{onOpenChange:setIsOpen,open:isOpen,children:[/*#__PURE__*/_jsx(BoundFieldProvider,{value:null,children:/*#__PURE__*/_jsxs(InputGroup,{ref:groupRef,children:[/*#__PURE__*/_jsx(InputGroupInput,{"aria-describedby":dateRangePickerProps["aria-describedby"],"aria-label":dateRangePickerProps["aria-label"],"aria-labelledby":dateRangePickerProps["aria-labelledby"],autoFocus:dateRangePickerProps.autoFocus,disabled:resolvedDisabled,id:inputId,invalid:isEffectivelyInvalid,name:dateRangePickerProps.name,onBlur:handleInputBlur,onChange:handleInputChange,onFocus:handleInputFocus,onKeyDown:handleInputKeyDown,placeholder:"YYYY-MM-DD – YYYY-MM-DD",readOnly:resolvedReadOnly,ref:setInputRef,required:dateRangePickerProps.required,size:size,value:displayText}),/*#__PURE__*/_jsx(InputGroupAddon,{align:"inline-end",children:/*#__PURE__*/_jsx(PopoverTrigger,{"aria-label":"Open calendar",disabled:resolvedDisabled,...props(datePickerStyles.triggerButton,resolvedDisabled&&datePickerStyles.triggerButtonDisabled),children:/*#__PURE__*/_jsx("span",{...props(datePickerStyles.triggerIcon),children:/*#__PURE__*/_jsx(CalendarIcon,{})})})})]})}),/*#__PURE__*/_jsx(PopoverPopup,{align:"start",anchor:groupRef,"aria-label":dateRangePickerProps["aria-label"]??"Date range picker calendar dialog",variant:"bare",children:/*#__PURE__*/_jsx(DateRangeCalendarView,{committedValue:committedValue,constraints:constraints,disabled:resolvedDisabled,onCalendarSelect:handleCalendarSelect,onPresetSelect:handlePresetSelect,props:dateRangePickerProps,readOnly:resolvedReadOnly})})]});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{create}from"@stylexjs/stylex";import"../../styles/colors.stylex";import{colors}from"../../styles/colors.stylex";import"../../styles/conditions.stylex";import{conditions}from"../../styles/conditions.stylex";import"../../styles/interaction.stylex";import{borderWidth,focus,focusMotion,focusOutline,opacity}from"../../styles/interaction.stylex";import"../../styles/shape.stylex";import{shape}from"../../styles/shape.stylex";import"../../styles/spacing.stylex";import{space}from"../../styles/spacing.stylex";import"../../styles/typography.stylex";import{fontSize,fontWeight,lineHeight}from"../../styles/typography.stylex";export const dateRangePickerStyles={popupContainer:{kWkggS:"xui3q9s",kVAM5u:"x155xxfk",kaIpWk:"x1yl01a3",ksu8eU:"x1y0btm7",kMzoRj:"x1cdonsl",kB7OPa:"x9f619",k1xSpc:"x78zum5",kXwgrk:"xdt5ytf",ks0D6T:"x16xn7b0",kVQacm:"xb3r6kr",$$css:true},presetButton:{kGNEyG:"x6s0dn4",k44tkh:"x1iha7go",kKVMdj:"x1b5t0b2",kWkggS:"xkz2hrh xjbqb8w",kVAM5u:"x155xxfk",kaIpWk:"x2b34ud",ksu8eU:"x1y0btm7",kMzoRj:"x1cdonsl",kMwMTN:"x14tvo57",kkrTdU:"x1ypdohk",k1xSpc:"x3nfvp2",kGuDYH:"x12ama9c",k63SB2:"x1lo1l87",kLWn49:"x1rn0pvf",kjBf7l:"x4dprnk x1uczgqu",kInvED:"x1w1ofmy",k3XXqK:"xzc55om",kMeerF:"x1vhx2qj",k8WAf4:"x1lmimt7",kg3NbH:"xdbhxi8",khDVqt:"xuxw1ft",$$css:true},presetButtonDisabled:{kkrTdU:"x1h6gzvc",kSiTet:"xd57v9i",$$css:true},presetsRow:{kL6WhQ:"x9rbyu3",kfdmCh:"x1q0q8m5",kt9PQ7:"x13k63ub",k1xSpc:"x78zum5",kwnvtZ:"x1a02dak",kOIVth:"x13hh4mm",kmVPX3:"xh23c4d",$$css:true}};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef } from "react";
|
|
2
|
+
import type { CalendarCommonProps, CalendarLocale, CalendarRangeValue } from "../calendar/calendar.types";
|
|
3
|
+
export interface DateRangePreset {
|
|
4
|
+
readonly label: string;
|
|
5
|
+
readonly value: CalendarRangeValue & {
|
|
6
|
+
readonly to: Date;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export interface DateRangePickerProps {
|
|
10
|
+
readonly "aria-describedby"?: string | undefined;
|
|
11
|
+
readonly "aria-label"?: string | undefined;
|
|
12
|
+
readonly "aria-labelledby"?: string | undefined;
|
|
13
|
+
autoFocus?: boolean | undefined;
|
|
14
|
+
captionLayout?: CalendarCommonProps["captionLayout"];
|
|
15
|
+
defaultValue?: CalendarRangeValue | undefined;
|
|
16
|
+
dir?: "ltr" | "rtl" | undefined;
|
|
17
|
+
disabled?: boolean | undefined;
|
|
18
|
+
endMonth?: Date | undefined;
|
|
19
|
+
id?: string | undefined;
|
|
20
|
+
invalid?: boolean | undefined;
|
|
21
|
+
isDateUnavailable?: ((date: Date) => boolean) | undefined;
|
|
22
|
+
locale?: CalendarLocale | undefined;
|
|
23
|
+
maxNights?: number | undefined;
|
|
24
|
+
maxValue?: Date | undefined;
|
|
25
|
+
minNights?: number | undefined;
|
|
26
|
+
minValue?: Date | undefined;
|
|
27
|
+
name?: string | undefined;
|
|
28
|
+
onValueChange?: ((value: CalendarRangeValue | undefined) => void) | undefined;
|
|
29
|
+
presets?: readonly DateRangePreset[] | undefined;
|
|
30
|
+
readOnly?: boolean | undefined;
|
|
31
|
+
ref?: ComponentPropsWithRef<"input">["ref"] | undefined;
|
|
32
|
+
required?: boolean | undefined;
|
|
33
|
+
size?: "default" | "lg" | "sm" | undefined;
|
|
34
|
+
startMonth?: Date | undefined;
|
|
35
|
+
value?: CalendarRangeValue | undefined;
|
|
36
|
+
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
import type { InputProps } from "../input/input";
|
|
3
|
+
export type DateTimeInputProps = Omit<InputProps, "data-slot" | "defaultValue" | "max" | "min" | "render" | "type" | "unstyled" | "value"> & {
|
|
4
|
+
"data-slot"?: never;
|
|
5
|
+
defaultValue?: string;
|
|
6
|
+
max?: string;
|
|
7
|
+
min?: string;
|
|
8
|
+
render?: never;
|
|
9
|
+
type?: never;
|
|
10
|
+
unstyled?: never;
|
|
11
|
+
value?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function DateTimeInput(props: DateTimeInputProps): ReactElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{Input}from"../input/input";import{jsx as _jsx}from"react/jsx-runtime";export function DateTimeInput(props){return/*#__PURE__*/_jsx(Input,{...props,"data-slot":"date-time-input",type:"datetime-local"});}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
const ZOOM_LABELS={reset:"Fit diagram",zoomIn:"Zoom in",zoomOut:"Zoom out"};/**
|
|
2
|
+
* Loads only the grammar the source uses, then mounts it. Every Mermaid type
|
|
3
|
+
* Pele renders works; cancelled mounts never touch detached DOM.
|
|
4
|
+
*/export async function mountDiagram(element,source,options,signal){const{detectType,load,mount}=await import("pele/lazy");const supported=await load(detectType(source));if(signal.aborted){return;}if(!supported){throw new Error("This diagram type isn't supported.");}return mount(element,source,{...options,fontSize:Number.parseFloat(getComputedStyle(element).fontSize),images:false,links:false,// Fits the container; large diagrams get pinch, Ctrl+scroll, and + or −.
|
|
5
|
+
zoom:{labels:ZOOM_LABELS}});}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* Pele owns the SVG DOM. Center diagrams narrower than their container. */
|
|
2
|
+
[data-slot="diagram-canvas"] > svg {
|
|
3
|
+
display: block;
|
|
4
|
+
margin-inline: auto;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Pele styles its zoom controls inline; match Mizen's quiet floating toolbar.
|
|
8
|
+
They appear on hover or keyboard focus so they never cover the diagram at
|
|
9
|
+
rest; touch screens zoom with a pinch, so the buttons stay hidden there. */
|
|
10
|
+
[data-slot="diagram-canvas"] .pele-zoom {
|
|
11
|
+
padding: 3px !important;
|
|
12
|
+
border-color: color-mix(in oklch, var(--pele-fg) 12%, transparent) !important;
|
|
13
|
+
border-radius: 10px !important;
|
|
14
|
+
box-shadow: 0 1px 2px rgb(0 0 0 / 0.06);
|
|
15
|
+
opacity: 0;
|
|
16
|
+
transition: opacity 140ms cubic-bezier(0.16, 1, 0.3, 1);
|
|
17
|
+
}
|
|
18
|
+
[data-slot="diagram-canvas"] .pele-zoom button {
|
|
19
|
+
width: 26px !important;
|
|
20
|
+
height: 26px !important;
|
|
21
|
+
color: var(--pele-muted) !important;
|
|
22
|
+
border-radius: 7px !important;
|
|
23
|
+
}
|
|
24
|
+
[data-slot="diagram-canvas"]:focus-within .pele-zoom {
|
|
25
|
+
opacity: 1;
|
|
26
|
+
}
|
|
27
|
+
@media (hover: none) {
|
|
28
|
+
[data-slot="diagram-canvas"] .pele-zoom {
|
|
29
|
+
display: none !important;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
@media (hover: hover) {
|
|
33
|
+
[data-slot="diagram-canvas"]:hover .pele-zoom {
|
|
34
|
+
opacity: 1;
|
|
35
|
+
}
|
|
36
|
+
[data-slot="diagram-canvas"] .pele-zoom button:hover:not(:disabled) {
|
|
37
|
+
color: var(--pele-fg) !important;
|
|
38
|
+
background: color-mix(in oklch, var(--pele-fg) 8%, transparent) !important;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
[data-slot="diagram-canvas"] .pele-zoom button:focus-visible {
|
|
42
|
+
outline: 3px solid var(--pele-accent);
|
|
43
|
+
outline-offset: 1px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@media (prefers-reduced-motion: reduce) {
|
|
47
|
+
[data-slot="diagram-canvas"] * {
|
|
48
|
+
transition: none !important;
|
|
49
|
+
animation: none !important;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef, ReactNode } from "react";
|
|
2
|
+
import type { Closed } from "../../closed";
|
|
3
|
+
import "./diagram.css";
|
|
4
|
+
export type DiagramState = "loading" | "ready" | "error";
|
|
5
|
+
export type DiagramProps = Omit<Closed<ComponentPropsWithRef<"figure">>, "aria-label" | "children" | "dangerouslySetInnerHTML" | "data-slot" | "role"> & {
|
|
6
|
+
"aria-label": string;
|
|
7
|
+
caption?: ReactNode;
|
|
8
|
+
source: string;
|
|
9
|
+
status?: DiagramState;
|
|
10
|
+
};
|
|
11
|
+
export declare function Diagram({ "aria-label": label, caption, source, status, ref, ...rest }: DiagramProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use client";import{props}from"@stylexjs/stylex";import{useCallback,useId,useState}from"react";import{typeRoles}from"../../styles/typography.styles";import{Spinner}from"../spinner/spinner";import{diagramStyles}from"./diagram.styles";import{mountDiagram}from"./diagram-renderer";import"./diagram.css";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";// Pele's PeleError carries the line, column, and a snippet with a caret.
|
|
2
|
+
function toDiagramError(error){if(!(error instanceof Error)){return{message:"The diagram could not be rendered.",snippet:""};}const{column=0,line=0,snippet=""}=error;const message=line>0?`Line ${line}, column ${column}`:error.message.split("\n")[0]??error.message;return{message,snippet};}function Feedback({error,message,status}){return/*#__PURE__*/_jsxs("div",{"data-slot":"diagram-feedback",role:status==="error"?"alert":"status",...props(typeRoles.ui,diagramStyles.feedback),children:[status==="loading"&&/*#__PURE__*/_jsx(Spinner,{"aria-hidden":"true"}),/*#__PURE__*/_jsx("p",{...props(diagramStyles.feedbackTitle,status==="error"&&diagramStyles.error),children:message}),error?/*#__PURE__*/_jsx("p",{...props(diagramStyles.feedbackDetail),children:error.message}):null,error?.snippet?/*#__PURE__*/_jsx("pre",{...props(typeRoles.mono,diagramStyles.snippet),children:error.snippet}):null]});}function DiagramCanvas({source}){const prefix=useId().replace(/[^A-Za-z0-9_-]/gu,"");const[state,setState]=useState({status:"loading"});const attach=useCallback(element=>{if(!element){return;}const controller=new AbortController();let view;const onRender=()=>{if(!controller.signal.aborted){setState(current=>current.status==="ready"?current:{status:"ready"});}};const onError=error=>{if(!controller.signal.aborted){setState({error:toDiagramError(error),status:"error"});}};mountDiagram(element,source,{idPrefix:`mizen-diagram-${prefix}`,onError,onRender},controller.signal).then(mounted=>{if(controller.signal.aborted){mounted?.destroy();}else{view=mounted;}}).catch(onError);return()=>{controller.abort();view?.destroy();};},[source,prefix]);return/*#__PURE__*/_jsxs("div",{"aria-busy":state.status==="loading"||undefined,"data-slot":"diagram-content","data-status":state.status,...props(diagramStyles.content),children:[/*#__PURE__*/_jsx("div",{"data-slot":"diagram-canvas",ref:attach// Body size: Pele draws secondary labels (Gantt tasks, keys,
|
|
3
|
+
// cardinalities) smaller than the base, and 16px keeps them at 12px.
|
|
4
|
+
,...props(typeRoles.body,diagramStyles.canvas,state.status==="loading"&&diagramStyles.canvasPending,state.status==="error"&&diagramStyles.canvasFailed)}),state.status==="loading"?/*#__PURE__*/_jsx("div",{...props(diagramStyles.overlay),children:/*#__PURE__*/_jsx(Feedback,{message:"Rendering diagram",status:"loading"})}):null,state.status==="error"?/*#__PURE__*/_jsx(Feedback,{error:state.error,message:"Couldn't render this diagram",status:"error"}):null]});}function DiagramContent({source,status}){if(status==="loading"){return/*#__PURE__*/_jsx(Feedback,{message:"Loading diagram",status:"loading"});}if(status==="error"){return/*#__PURE__*/_jsx(Feedback,{message:"Couldn't load this diagram",status:"error"});}if(!source.trim()){return/*#__PURE__*/_jsx(Feedback,{message:"No diagram to show",status:"empty"});}return/*#__PURE__*/_jsx(DiagramCanvas,{source:source},source);}export function Diagram({"aria-label":label,caption,source,status="ready",ref,...rest}){if(!label?.trim()){throw new TypeError("Diagram requires a non-empty aria-label.");}if(typeof source!=="string"){throw new TypeError("Diagram source must be a string.");}if(!["loading","ready","error"].includes(status)){throw new TypeError("Diagram status must be loading, ready, or error.");}for(const name of["className","style","role","data-slot","children","dangerouslySetInnerHTML"]){Reflect.deleteProperty(rest,name);}return/*#__PURE__*/_jsxs("figure",{...rest,"aria-busy":status==="loading"||undefined,"aria-label":label,"data-slot":"diagram","data-status":status,ref:ref,...props(diagramStyles.root),children:[/*#__PURE__*/_jsx(DiagramContent,{source:source,status:status}),caption!==undefined&&caption!==null&&/*#__PURE__*/_jsx("figcaption",{"data-slot":"diagram-caption",...props(typeRoles.ui,diagramStyles.caption),children:caption})]});}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{create}from"@stylexjs/stylex";import"../../styles/colors.stylex";import{colors}from"../../styles/colors.stylex";import"../../styles/conditions.stylex";import{conditions}from"../../styles/conditions.stylex";import"../../styles/fonts.stylex";import{fonts}from"../../styles/fonts.stylex";import"../../styles/shape.stylex";import{shape}from"../../styles/shape.stylex";import"../../styles/spacing.stylex";import{space}from"../../styles/spacing.stylex";import"../../styles/typography.stylex";import{fontWeight}from"../../styles/typography.stylex";// Nodes sit on the workarea gray with a quiet edge; lines stay muted so labels
|
|
2
|
+
// lead. Pele's eight series take Mizen's chart palette, so pies and Gantt bars
|
|
3
|
+
// match the charts; the last two fall back to the reference gray.
|
|
4
|
+
const NODE_BORDER=`color-mix(in oklch, ${colors.content} 16%, transparent)`;// The canvas frame: room for zoom and pan, and the space a pending or failed
|
|
5
|
+
// diagram holds, so rendering never jumps the page.
|
|
6
|
+
const FRAME_HEIGHT="20rem";export const diagramStyles={canvas:{"--pele-accent":"x1enfc00 x1lwq31j","--pele-bg":"xl5kj0w x1sei1ph","--pele-bold-weight":"xr04ye6","--pele-border":"xiqmira xr4xb56","--pele-critical":"xk5ot19","--pele-error":"x5yh7vq","--pele-fg":"x14ge4ki xyr798j","--pele-font-mono":"xgel1hv","--pele-heading-weight":"x1ovx77v","--pele-line":"x1d8b5lg x1kbx2cv","--pele-muted":"xo9mza1 xbd6hd2","--pele-radius":"xdqlpey","--pele-series-1":"xomyuge","--pele-series-2":"xnz0tb8","--pele-series-3":"x1h82vco","--pele-series-4":"x1gtdnbc","--pele-series-5":"xiivjno","--pele-series-6":"xwvxo0t","--pele-series-7":"x1ixdn6i","--pele-series-8":"x1m1meg3","--pele-surface":"x1oatbhz x1gznfgu","--pele-surface-alt":"x1d7dixd x19v7ue3","--pele-title-weight":"x139pdsa","--pele-zoom-right":"x7qxgta","--pele-zoom-top":"x1bvhiyf",kfiyM8:"xc26acl",k1xSpc:"xrvj5dj",kAzted:"xciow05",k7Eaqz:"xeuugli",kVAEAm:"x1n2onr6",$$css:true},canvasFailed:{k1xSpc:"x1s85apg",$$css:true},canvasPending:{kAzted:"xciow05",k33iCy:"xlshs6z",$$css:true},caption:{kMwMTN:"x125omll",kogj98:"x1ghz6dp",kHjlTd:"xj0a0fe",$$css:true},content:{k7Eaqz:"xeuugli",kVAEAm:"x1n2onr6",$$css:true},error:{kMwMTN:"x1ytrddi",$$css:true},feedback:{kGNEyG:"x6s0dn4",kWkggS:"xu84zt7",kaIpWk:"x1jw0md8",kB7OPa:"x9f619",kMwMTN:"x125omll",k1xSpc:"x78zum5",kXwgrk:"xdt5ytf",kOIVth:"xp4ho6d",kjj79g:"xl56j7k",kAzted:"xciow05",k7Eaqz:"xeuugli",kHjlTd:"xj0a0fe",kmVPX3:"xvgr8tm",k9WMMc:"x2b8uid",$$css:true},feedbackDetail:{kogj98:"x1ghz6dp",ks0D6T:"xf2d64e",$$css:true},feedbackTitle:{kMwMTN:"x14tvo57",k63SB2:"xuku2lm",kogj98:"x1ghz6dp",$$css:true},overlay:{kpwlN0:"x10a8y8t",kVAEAm:"x10l6tqk",$$css:true},root:{k1xSpc:"xrvj5dj",kOIVth:"xiw8qbs",kumcoG:"x1mkdm3x",kogj98:"x1ghz6dp",k7Eaqz:"xeuugli",kzqmXN:"xh8yej3",$$css:true},snippet:{kWkggS:"xwn18cz",kaIpWk:"x2b34ud",kMwMTN:"x14tvo57",kXP6Bh:"xdb2kus",kogj98:"x1ghz6dp",ks0D6T:"x193iq5w",kXHlph:"xw2csxc",k8WAf4:"x391bbb",kg3NbH:"xy7odpl",k9WMMc:"x1yc453h",khDVqt:"x1sdyfia",$$css:true}};
|