@womp/kookie-ui 0.6.2 → 0.8.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/components.css +741 -1078
- package/dist/cjs/components/_internal/base-button.js +1 -1
- package/dist/cjs/components/_internal/base-button.js.map +4 -4
- package/dist/cjs/components/_internal/base-button.props.d.ts +2 -7
- package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.props.js +1 -1
- package/dist/cjs/components/_internal/base-button.props.js.map +4 -4
- package/dist/cjs/components/_internal/base-checkbox.props.d.ts +0 -5
- package/dist/cjs/components/_internal/base-checkbox.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-checkbox.props.js +1 -1
- package/dist/cjs/components/_internal/base-checkbox.props.js.map +4 -4
- package/dist/cjs/components/_internal/base-menu.props.d.ts +0 -10
- package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js.map +4 -4
- package/dist/cjs/components/_internal/base-menu.utils.js +1 -1
- package/dist/cjs/components/_internal/base-menu.utils.js.map +3 -3
- package/dist/cjs/components/_internal/base-radio.props.d.ts +0 -5
- package/dist/cjs/components/_internal/base-radio.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-radio.props.js +1 -1
- package/dist/cjs/components/_internal/base-radio.props.js.map +4 -4
- package/dist/cjs/components/_internal/base-tab-list.props.d.ts +0 -5
- package/dist/cjs/components/_internal/base-tab-list.props.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-tab-list.props.js +1 -1
- package/dist/cjs/components/_internal/base-tab-list.props.js.map +4 -4
- package/dist/cjs/components/_internal/menu-context.js +1 -1
- package/dist/cjs/components/_internal/menu-context.js.map +3 -3
- package/dist/cjs/components/_internal/shell-bottom.d.ts +6 -7
- package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js.map +4 -4
- package/dist/cjs/components/_internal/shell-handles.d.ts +9 -0
- package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-handles.js +1 -1
- package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
- package/dist/cjs/components/_internal/shell-inspector.d.ts +4 -6
- package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js.map +4 -4
- package/dist/cjs/components/_internal/shell-pane.d.ts +70 -0
- package/dist/cjs/components/_internal/shell-pane.d.ts.map +1 -0
- package/dist/cjs/components/_internal/shell-pane.js +2 -0
- package/dist/cjs/components/_internal/shell-pane.js.map +7 -0
- package/dist/cjs/components/_internal/shell-resizable.d.ts +48 -0
- package/dist/cjs/components/_internal/shell-resizable.d.ts.map +1 -0
- package/dist/cjs/components/_internal/shell-resizable.js +2 -0
- package/dist/cjs/components/_internal/shell-resizable.js.map +7 -0
- package/dist/cjs/components/_internal/shell-resize.d.ts +11 -3
- package/dist/cjs/components/_internal/shell-resize.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-resize.js +1 -1
- package/dist/cjs/components/_internal/shell-resize.js.map +2 -2
- package/dist/cjs/components/_internal/shell-rest.d.ts +27 -0
- package/dist/cjs/components/_internal/shell-rest.d.ts.map +1 -0
- package/dist/cjs/components/_internal/shell-rest.js +2 -0
- package/dist/cjs/components/_internal/shell-rest.js.map +7 -0
- package/dist/cjs/components/_internal/shell-sidebar.d.ts +7 -12
- package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
- package/dist/cjs/components/_internal/shell-store.d.ts +99 -0
- package/dist/cjs/components/_internal/shell-store.d.ts.map +1 -0
- package/dist/cjs/components/_internal/shell-store.js +2 -0
- package/dist/cjs/components/_internal/shell-store.js.map +7 -0
- package/dist/cjs/components/accordion.js +1 -1
- package/dist/cjs/components/accordion.js.map +4 -4
- package/dist/cjs/components/accordion.props.d.ts +0 -6
- package/dist/cjs/components/accordion.props.d.ts.map +1 -1
- package/dist/cjs/components/accordion.props.js +1 -1
- package/dist/cjs/components/accordion.props.js.map +4 -4
- package/dist/cjs/components/alert-dialog.js +1 -1
- package/dist/cjs/components/alert-dialog.js.map +4 -4
- package/dist/cjs/components/avatar.js +1 -1
- package/dist/cjs/components/avatar.js.map +4 -4
- package/dist/cjs/components/avatar.props.d.ts +0 -5
- package/dist/cjs/components/avatar.props.d.ts.map +1 -1
- package/dist/cjs/components/avatar.props.js +1 -1
- package/dist/cjs/components/avatar.props.js.map +4 -4
- package/dist/cjs/components/badge.js +1 -1
- package/dist/cjs/components/badge.js.map +4 -4
- package/dist/cjs/components/badge.props.d.ts +0 -5
- package/dist/cjs/components/badge.props.d.ts.map +1 -1
- package/dist/cjs/components/badge.props.js +1 -1
- package/dist/cjs/components/badge.props.js.map +4 -4
- package/dist/cjs/components/blockquote.js +1 -1
- package/dist/cjs/components/blockquote.js.map +4 -4
- package/dist/cjs/components/blockquote.props.d.ts +3 -2
- package/dist/cjs/components/blockquote.props.d.ts.map +1 -1
- package/dist/cjs/components/blockquote.props.js +1 -1
- package/dist/cjs/components/blockquote.props.js.map +4 -4
- package/dist/cjs/components/button.js +1 -1
- package/dist/cjs/components/button.js.map +4 -4
- package/dist/cjs/components/button.props.js +1 -1
- package/dist/cjs/components/button.props.js.map +4 -4
- package/dist/cjs/components/callout.js +1 -1
- package/dist/cjs/components/callout.js.map +4 -4
- package/dist/cjs/components/callout.props.d.ts +0 -5
- package/dist/cjs/components/callout.props.d.ts.map +1 -1
- package/dist/cjs/components/callout.props.js +1 -1
- package/dist/cjs/components/callout.props.js.map +4 -4
- package/dist/cjs/components/chatbar.d.ts.map +1 -1
- package/dist/cjs/components/chatbar.js +2 -2
- package/dist/cjs/components/chatbar.js.map +4 -4
- package/dist/cjs/components/checkbox-cards.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-cards.js +1 -1
- package/dist/cjs/components/checkbox-cards.js.map +4 -4
- package/dist/cjs/components/checkbox-cards.props.d.ts +0 -5
- package/dist/cjs/components/checkbox-cards.props.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-cards.props.js +1 -1
- package/dist/cjs/components/checkbox-cards.props.js.map +4 -4
- package/dist/cjs/components/checkbox-group.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-group.js +1 -1
- package/dist/cjs/components/checkbox-group.js.map +4 -4
- package/dist/cjs/components/checkbox-group.props.d.ts +0 -5
- package/dist/cjs/components/checkbox-group.props.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-group.props.js +1 -1
- package/dist/cjs/components/checkbox-group.props.js.map +4 -4
- package/dist/cjs/components/checkbox.js +1 -1
- package/dist/cjs/components/checkbox.js.map +4 -4
- package/dist/cjs/components/checkbox.props.js +1 -1
- package/dist/cjs/components/checkbox.props.js.map +4 -4
- package/dist/cjs/components/code.js +1 -1
- package/dist/cjs/components/code.js.map +4 -4
- package/dist/cjs/components/code.props.d.ts +3 -2
- package/dist/cjs/components/code.props.d.ts.map +1 -1
- package/dist/cjs/components/code.props.js +1 -1
- package/dist/cjs/components/code.props.js.map +4 -4
- package/dist/cjs/components/combobox.d.ts.map +1 -1
- package/dist/cjs/components/combobox.js +1 -1
- package/dist/cjs/components/combobox.js.map +4 -4
- package/dist/cjs/components/combobox.props.d.ts +1 -11
- package/dist/cjs/components/combobox.props.d.ts.map +1 -1
- package/dist/cjs/components/combobox.props.js +1 -1
- package/dist/cjs/components/combobox.props.js.map +4 -4
- package/dist/cjs/components/context-menu.d.ts.map +1 -1
- package/dist/cjs/components/context-menu.js +1 -1
- package/dist/cjs/components/context-menu.js.map +4 -4
- package/dist/cjs/components/context-menu.props.js +1 -1
- package/dist/cjs/components/context-menu.props.js.map +4 -4
- package/dist/cjs/components/data-list.js +1 -1
- package/dist/cjs/components/data-list.js.map +4 -4
- package/dist/cjs/components/data-list.props.d.ts +4 -3
- package/dist/cjs/components/data-list.props.d.ts.map +1 -1
- package/dist/cjs/components/data-list.props.js +1 -1
- package/dist/cjs/components/data-list.props.js.map +4 -4
- package/dist/cjs/components/dialog.js +1 -1
- package/dist/cjs/components/dialog.js.map +4 -4
- package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
- package/dist/cjs/components/dropdown-menu.js +1 -1
- package/dist/cjs/components/dropdown-menu.js.map +4 -4
- package/dist/cjs/components/dropdown-menu.props.js +1 -1
- package/dist/cjs/components/dropdown-menu.props.js.map +4 -4
- package/dist/cjs/components/heading.js +1 -1
- package/dist/cjs/components/heading.js.map +4 -4
- package/dist/cjs/components/heading.props.d.ts +3 -2
- package/dist/cjs/components/heading.props.d.ts.map +1 -1
- package/dist/cjs/components/heading.props.js +1 -1
- package/dist/cjs/components/heading.props.js.map +4 -4
- package/dist/cjs/components/hover-card.js.map +1 -1
- package/dist/cjs/components/icon-button.js +2 -2
- package/dist/cjs/components/icon-button.js.map +4 -4
- package/dist/cjs/components/icon-button.props.js +1 -1
- package/dist/cjs/components/icon-button.props.js.map +4 -4
- package/dist/cjs/components/index.js +5 -5
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/components/link.js +1 -1
- package/dist/cjs/components/link.js.map +4 -4
- package/dist/cjs/components/link.props.d.ts +0 -5
- package/dist/cjs/components/link.props.d.ts.map +1 -1
- package/dist/cjs/components/link.props.js +1 -1
- package/dist/cjs/components/link.props.js.map +4 -4
- package/dist/cjs/components/popover.js.map +1 -1
- package/dist/cjs/components/progress.js +1 -1
- package/dist/cjs/components/progress.js.map +4 -4
- package/dist/cjs/components/progress.props.d.ts +0 -5
- package/dist/cjs/components/progress.props.d.ts.map +1 -1
- package/dist/cjs/components/progress.props.js +1 -1
- package/dist/cjs/components/progress.props.js.map +4 -4
- package/dist/cjs/components/radio-cards.js +1 -1
- package/dist/cjs/components/radio-cards.js.map +4 -4
- package/dist/cjs/components/radio-cards.props.d.ts +0 -5
- package/dist/cjs/components/radio-cards.props.d.ts.map +1 -1
- package/dist/cjs/components/radio-cards.props.js +1 -1
- package/dist/cjs/components/radio-cards.props.js.map +4 -4
- package/dist/cjs/components/radio-group.d.ts.map +1 -1
- package/dist/cjs/components/radio-group.js +1 -1
- package/dist/cjs/components/radio-group.js.map +4 -4
- package/dist/cjs/components/radio-group.props.d.ts +0 -5
- package/dist/cjs/components/radio-group.props.d.ts.map +1 -1
- package/dist/cjs/components/radio-group.props.js +1 -1
- package/dist/cjs/components/radio-group.props.js.map +4 -4
- package/dist/cjs/components/radio.js +1 -1
- package/dist/cjs/components/radio.js.map +4 -4
- package/dist/cjs/components/radio.props.js +1 -1
- package/dist/cjs/components/radio.props.js.map +4 -4
- package/dist/cjs/components/schemas/base-button.schema.d.ts +0 -1
- package/dist/cjs/components/schemas/base-button.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/base-button.schema.js +1 -1
- package/dist/cjs/components/schemas/base-button.schema.js.map +2 -2
- package/dist/cjs/components/schemas/button.schema.d.ts +0 -1
- package/dist/cjs/components/schemas/button.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/button.schema.js +1 -1
- package/dist/cjs/components/schemas/button.schema.js.map +2 -2
- package/dist/cjs/components/schemas/icon-button.schema.d.ts +0 -1
- package/dist/cjs/components/schemas/icon-button.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/icon-button.schema.js +1 -1
- package/dist/cjs/components/schemas/icon-button.schema.js.map +2 -2
- package/dist/cjs/components/schemas/index.js +1 -1
- package/dist/cjs/components/schemas/index.js.map +3 -3
- package/dist/cjs/components/schemas/shell.schema.d.ts +277 -229
- package/dist/cjs/components/schemas/shell.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/shell.schema.js +1 -1
- package/dist/cjs/components/schemas/shell.schema.js.map +3 -3
- package/dist/cjs/components/schemas/toggle-button.schema.d.ts +0 -1
- package/dist/cjs/components/schemas/toggle-button.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/toggle-button.schema.js +1 -1
- package/dist/cjs/components/schemas/toggle-button.schema.js.map +2 -2
- package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +0 -1
- package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts.map +1 -1
- package/dist/cjs/components/schemas/toggle-icon-button.schema.js +1 -1
- package/dist/cjs/components/schemas/toggle-icon-button.schema.js.map +2 -2
- package/dist/cjs/components/select.js +1 -1
- package/dist/cjs/components/select.js.map +4 -4
- package/dist/cjs/components/select.props.d.ts +0 -5
- package/dist/cjs/components/select.props.d.ts.map +1 -1
- package/dist/cjs/components/select.props.js +1 -1
- package/dist/cjs/components/select.props.js.map +4 -4
- package/dist/cjs/components/separator.js.map +1 -1
- package/dist/cjs/components/separator.props.js.map +1 -1
- package/dist/cjs/components/sheet.js +1 -1
- package/dist/cjs/components/sheet.js.map +4 -4
- package/dist/cjs/components/shell.context.d.ts +25 -114
- package/dist/cjs/components/shell.context.d.ts.map +1 -1
- package/dist/cjs/components/shell.context.js +1 -1
- package/dist/cjs/components/shell.context.js.map +4 -4
- package/dist/cjs/components/shell.d.ts +42 -21
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.hooks.d.ts +7 -23
- package/dist/cjs/components/shell.hooks.d.ts.map +1 -1
- package/dist/cjs/components/shell.hooks.js +1 -1
- package/dist/cjs/components/shell.hooks.js.map +4 -4
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +4 -4
- package/dist/cjs/components/shell.types.d.ts +19 -2
- package/dist/cjs/components/shell.types.d.ts.map +1 -1
- package/dist/cjs/components/shell.types.js +1 -1
- package/dist/cjs/components/shell.types.js.map +3 -3
- package/dist/cjs/components/sidebar.d.ts +0 -1
- package/dist/cjs/components/sidebar.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +4 -4
- package/dist/cjs/components/sidebar.props.d.ts +0 -5
- package/dist/cjs/components/sidebar.props.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.props.js +1 -1
- package/dist/cjs/components/sidebar.props.js.map +4 -4
- package/dist/cjs/components/slider.js +1 -1
- package/dist/cjs/components/slider.js.map +4 -4
- package/dist/cjs/components/slider.props.d.ts +0 -5
- package/dist/cjs/components/slider.props.d.ts.map +1 -1
- package/dist/cjs/components/slider.props.js +1 -1
- package/dist/cjs/components/slider.props.js.map +4 -4
- package/dist/cjs/components/switch.d.ts.map +1 -1
- package/dist/cjs/components/switch.js +1 -1
- package/dist/cjs/components/switch.js.map +4 -4
- package/dist/cjs/components/switch.props.d.ts +0 -5
- package/dist/cjs/components/switch.props.d.ts.map +1 -1
- package/dist/cjs/components/switch.props.js +1 -1
- package/dist/cjs/components/switch.props.js.map +4 -4
- package/dist/cjs/components/tab-nav.js +1 -1
- package/dist/cjs/components/tab-nav.js.map +4 -4
- package/dist/cjs/components/tab-nav.props.js +1 -1
- package/dist/cjs/components/tab-nav.props.js.map +4 -4
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +4 -4
- package/dist/cjs/components/tabs.props.js +1 -1
- package/dist/cjs/components/tabs.props.js.map +4 -4
- package/dist/cjs/components/text-area.js.map +1 -1
- package/dist/cjs/components/text-area.props.js.map +1 -1
- package/dist/cjs/components/text-field.js.map +1 -1
- package/dist/cjs/components/text-field.props.js.map +1 -1
- package/dist/cjs/components/text.js +1 -1
- package/dist/cjs/components/text.js.map +4 -4
- package/dist/cjs/components/text.props.d.ts +3 -2
- package/dist/cjs/components/text.props.d.ts.map +1 -1
- package/dist/cjs/components/text.props.js +1 -1
- package/dist/cjs/components/text.props.js.map +4 -4
- package/dist/cjs/components/theme-panel.js +3 -3
- package/dist/cjs/components/theme-panel.js.map +4 -4
- package/dist/cjs/components/theme.js.map +1 -1
- package/dist/cjs/components/theme.props.js.map +1 -1
- package/dist/cjs/components/toggle-button.js +2 -2
- package/dist/cjs/components/toggle-button.js.map +4 -4
- package/dist/cjs/components/toggle-icon-button.js +3 -3
- package/dist/cjs/components/toggle-icon-button.js.map +4 -4
- package/dist/cjs/components/toolbar.js +1 -1
- package/dist/cjs/components/toolbar.js.map +4 -4
- package/dist/cjs/components/tooltip.js +1 -1
- package/dist/cjs/components/tooltip.js.map +4 -4
- package/dist/cjs/components/user-card.d.ts.map +1 -1
- package/dist/cjs/components/user-card.js +1 -1
- package/dist/cjs/components/user-card.js.map +4 -4
- package/dist/cjs/components/user-card.props.d.ts +0 -5
- package/dist/cjs/components/user-card.props.d.ts.map +1 -1
- package/dist/cjs/components/user-card.props.js +1 -1
- package/dist/cjs/components/user-card.props.js.map +4 -4
- package/dist/cjs/components/virtual-menu.js.map +1 -1
- package/dist/cjs/hooks/use-breakpoint.d.ts +5 -0
- package/dist/cjs/hooks/use-breakpoint.d.ts.map +1 -1
- package/dist/cjs/hooks/use-breakpoint.js +1 -1
- package/dist/cjs/hooks/use-breakpoint.js.map +3 -3
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/props/color.prop.js.map +1 -1
- package/dist/cjs/props/emphasis.prop.d.ts +11 -0
- package/dist/cjs/props/emphasis.prop.d.ts.map +1 -0
- package/dist/cjs/props/emphasis.prop.js +2 -0
- package/dist/cjs/props/emphasis.prop.js.map +7 -0
- package/dist/cjs/props/index.d.ts +1 -1
- package/dist/cjs/props/index.d.ts.map +1 -1
- package/dist/cjs/props/index.js +1 -1
- package/dist/cjs/props/index.js.map +4 -4
- package/dist/esm/{chunk-MBCBP73P.js → chunk-25X75TI7.js} +2 -2
- package/dist/esm/chunk-26I257HE.js +2 -0
- package/dist/esm/chunk-26I257HE.js.map +7 -0
- package/dist/esm/chunk-2CMM7MEL.js +2 -0
- package/dist/esm/chunk-2CMM7MEL.js.map +7 -0
- package/dist/esm/chunk-2EQWBT2S.js +2 -0
- package/dist/esm/chunk-2EQWBT2S.js.map +7 -0
- package/dist/esm/{chunk-GLERJXVS.js → chunk-2Q7BJ7YG.js} +2 -2
- package/dist/esm/chunk-3AOFY2B4.js +2 -0
- package/dist/esm/chunk-3AOFY2B4.js.map +7 -0
- package/dist/esm/chunk-3J6AUDID.js +2 -0
- package/dist/esm/chunk-3J6AUDID.js.map +7 -0
- package/dist/esm/chunk-3KSGRY6I.js +2 -0
- package/dist/esm/chunk-3KSGRY6I.js.map +7 -0
- package/dist/esm/chunk-3PTSRBVY.js +2 -0
- package/dist/esm/{chunk-SZTZ2XLI.js.map → chunk-3PTSRBVY.js.map} +2 -2
- package/dist/esm/chunk-3XSB7YIM.js +2 -0
- package/dist/esm/{chunk-FMBECDL4.js.map → chunk-3XSB7YIM.js.map} +3 -3
- package/dist/esm/{chunk-FIB3XATL.js → chunk-44JZYS7A.js} +3 -3
- package/dist/esm/{chunk-FIB3XATL.js.map → chunk-44JZYS7A.js.map} +2 -2
- package/dist/esm/{chunk-CTA5ODAO.js → chunk-4WU2WKUJ.js} +2 -2
- package/dist/esm/chunk-4WVNMGI5.js +2 -0
- package/dist/esm/chunk-4WVNMGI5.js.map +7 -0
- package/dist/esm/chunk-5M7STAH3.js +2 -0
- package/dist/esm/chunk-5M7STAH3.js.map +7 -0
- package/dist/esm/chunk-5SNHUVDA.js +2 -0
- package/dist/esm/{chunk-H7ST535H.js → chunk-5TAHT6VC.js} +2 -2
- package/dist/esm/chunk-5XV4QEP5.js +2 -0
- package/dist/esm/chunk-5XV4QEP5.js.map +7 -0
- package/dist/esm/chunk-667BKCUG.js +2 -0
- package/dist/esm/chunk-667BKCUG.js.map +7 -0
- package/dist/esm/{chunk-MHPPVJDB.js → chunk-67MKPTZJ.js} +2 -2
- package/dist/esm/{chunk-UFI53QUC.js → chunk-6J6YX2VX.js} +2 -2
- package/dist/esm/chunk-7FKKGUHK.js +2 -0
- package/dist/esm/chunk-7FKKGUHK.js.map +7 -0
- package/dist/esm/{chunk-UUUZXUIP.js → chunk-7NYODT3Z.js} +2 -2
- package/dist/esm/{chunk-NVDXXGVW.js → chunk-7PMMYHZV.js} +2 -2
- package/dist/esm/chunk-A2XVR7GL.js +2 -0
- package/dist/esm/chunk-A2XVR7GL.js.map +7 -0
- package/dist/esm/chunk-ADXZNG4F.js +2 -0
- package/dist/esm/chunk-ADXZNG4F.js.map +7 -0
- package/dist/esm/chunk-AF6XKU3W.js +2 -0
- package/dist/esm/chunk-AF6XKU3W.js.map +7 -0
- package/dist/esm/chunk-AGNIFHOE.js +2 -0
- package/dist/esm/chunk-AGNIFHOE.js.map +7 -0
- package/dist/esm/chunk-AIHQ3MVK.js +2 -0
- package/dist/esm/{chunk-SO67YEVQ.js.map → chunk-AIHQ3MVK.js.map} +2 -2
- package/dist/esm/{chunk-UBOOUDS4.js → chunk-AO32NT75.js} +2 -2
- package/dist/esm/chunk-BZZXXZ3O.js +2 -0
- package/dist/esm/chunk-BZZXXZ3O.js.map +7 -0
- package/dist/esm/{chunk-JDGJSNWT.js → chunk-C5RVO3C3.js} +2 -2
- package/dist/esm/{chunk-IHK3H2OM.js → chunk-CBNTPHYK.js} +2 -2
- package/dist/esm/chunk-CFNESRYI.js +2 -0
- package/dist/esm/chunk-CFNESRYI.js.map +7 -0
- package/dist/esm/{chunk-SESAEJ6W.js → chunk-CLMOWP5T.js} +2 -2
- package/dist/esm/{chunk-BBJUB52V.js → chunk-CRBOJ7N7.js} +2 -2
- package/dist/esm/{chunk-DUHJVT64.js → chunk-CRSHBENJ.js} +2 -2
- package/dist/esm/{chunk-56TS6OKQ.js → chunk-DCIQHXAR.js} +2 -2
- package/dist/esm/chunk-EBQZ3Z22.js +2 -0
- package/dist/esm/chunk-EBQZ3Z22.js.map +7 -0
- package/dist/esm/chunk-EDKQURDU.js +2 -0
- package/dist/esm/chunk-EDKQURDU.js.map +7 -0
- package/dist/esm/{chunk-43A5GUSI.js → chunk-EHBAK3LQ.js} +2 -2
- package/dist/esm/{chunk-2TIADHPD.js → chunk-F3AXE27Q.js} +2 -2
- package/dist/esm/chunk-F6V7GBNQ.js +2 -0
- package/dist/esm/chunk-F6V7GBNQ.js.map +7 -0
- package/dist/esm/{chunk-VA4CTVQL.js → chunk-FB3PD4Z3.js} +2 -2
- package/dist/esm/{chunk-OYF6YXH7.js → chunk-FEAOFF77.js} +2 -2
- package/dist/esm/chunk-G4YKBAZT.js +2 -0
- package/dist/esm/{chunk-666GX7O5.js.map → chunk-G4YKBAZT.js.map} +2 -2
- package/dist/esm/{chunk-ADBLURLJ.js → chunk-GDAKJS64.js} +2 -2
- package/dist/esm/{chunk-IEWCQU2S.js → chunk-GGSJXOKR.js} +2 -2
- package/dist/esm/chunk-GM7KMQDI.js +2 -0
- package/dist/esm/chunk-GMHA5CFH.js +2 -0
- package/dist/esm/chunk-GMHA5CFH.js.map +7 -0
- package/dist/esm/{chunk-HBR42MIX.js → chunk-H4GR4262.js} +2 -2
- package/dist/esm/chunk-HBIF43PT.js +2 -0
- package/dist/esm/chunk-HBIF43PT.js.map +7 -0
- package/dist/esm/chunk-HCNO7PX6.js +2 -0
- package/dist/esm/chunk-HCNO7PX6.js.map +7 -0
- package/dist/esm/chunk-HMSSFU6I.js +2 -0
- package/dist/esm/{chunk-UIRSGVJG.js.map → chunk-HMSSFU6I.js.map} +2 -2
- package/dist/esm/chunk-HWQ3NTJP.js +2 -0
- package/dist/esm/chunk-HWQ3NTJP.js.map +7 -0
- package/dist/esm/{chunk-S5C5YRBS.js → chunk-IDUVJJYG.js} +2 -2
- package/dist/esm/{chunk-P7IAHW4V.js → chunk-IK3MQHA5.js} +2 -2
- package/dist/esm/{chunk-SPIU5JYC.js → chunk-JDEBKA56.js} +2 -2
- package/dist/esm/{chunk-E67CIG6A.js → chunk-JDWCQ2XP.js} +2 -2
- package/dist/esm/chunk-JFWMAYEH.js +2 -0
- package/dist/esm/chunk-JFWMAYEH.js.map +7 -0
- package/dist/esm/chunk-JQSZF3E2.js +2 -0
- package/dist/esm/chunk-JQSZF3E2.js.map +7 -0
- package/dist/esm/{chunk-JBO5YOUM.js → chunk-JQW4XYBS.js} +2 -2
- package/dist/esm/{chunk-P5OSU4NX.js → chunk-JRFZ535T.js} +2 -2
- package/dist/esm/{chunk-GYBLXQ4R.js → chunk-KEEPKI2X.js} +2 -2
- package/dist/esm/{chunk-WXP6MMUB.js → chunk-KOFEFBB3.js} +2 -2
- package/dist/esm/{chunk-YMUGKYGW.js → chunk-KV4SZP3F.js} +2 -2
- package/dist/esm/chunk-KZYFTDGO.js +2 -0
- package/dist/esm/chunk-KZYFTDGO.js.map +7 -0
- package/dist/esm/{chunk-FG7XM7KJ.js → chunk-LJCUPAOI.js} +2 -2
- package/dist/esm/{chunk-MBE2YSBU.js → chunk-MBCQA7UZ.js} +2 -2
- package/dist/esm/chunk-MM5IHQFM.js +2 -0
- package/dist/esm/{chunk-YVBCDTTD.js → chunk-MN3XALXD.js} +2 -2
- package/dist/esm/chunk-NIIEIZKQ.js +2 -0
- package/dist/esm/chunk-NIIEIZKQ.js.map +7 -0
- package/dist/esm/{chunk-3R7XMRV5.js → chunk-NQXRWBQM.js} +2 -2
- package/dist/esm/{chunk-CSKZZOI2.js → chunk-NTNMJX5M.js} +2 -2
- package/dist/esm/chunk-NV3P2CKH.js +2 -0
- package/dist/esm/chunk-NV3P2CKH.js.map +7 -0
- package/dist/esm/{chunk-4ME6O27S.js → chunk-O4CSXNST.js} +2 -2
- package/dist/esm/chunk-ODCVOXEV.js +2 -0
- package/dist/esm/{chunk-DMJJM5IS.js → chunk-OEEF6KJG.js} +2 -2
- package/dist/esm/chunk-OGVKSYLL.js +2 -0
- package/dist/esm/chunk-OGVKSYLL.js.map +7 -0
- package/dist/esm/{chunk-ABSKRHVM.js → chunk-OJSOX3AX.js} +2 -2
- package/dist/esm/chunk-OJU5GCDZ.js +2 -0
- package/dist/esm/chunk-OJU5GCDZ.js.map +7 -0
- package/dist/esm/{chunk-JGLAE5G7.js → chunk-OQU2SKLN.js} +2 -2
- package/dist/esm/chunk-OTKQN2KY.js +2 -0
- package/dist/esm/chunk-OTKQN2KY.js.map +7 -0
- package/dist/esm/{chunk-UWT6TE5D.js → chunk-OTXCKEWT.js} +2 -2
- package/dist/esm/chunk-OWMA6GTG.js +2 -0
- package/dist/esm/chunk-OWMA6GTG.js.map +7 -0
- package/dist/esm/{chunk-LAOMR7SE.js → chunk-P27KV2LS.js} +2 -2
- package/dist/esm/{chunk-LAOMR7SE.js.map → chunk-P27KV2LS.js.map} +3 -3
- package/dist/esm/{chunk-JUY7CBSL.js → chunk-PBFSBHBS.js} +2 -2
- package/dist/esm/{chunk-L6PVH3RM.js → chunk-PDUHBDFC.js} +2 -2
- package/dist/esm/{chunk-HW324FK3.js → chunk-POG3YABW.js} +2 -2
- package/dist/esm/chunk-PYHEBG5I.js +2 -0
- package/dist/esm/chunk-PYHEBG5I.js.map +7 -0
- package/dist/esm/{chunk-TOOSHJOA.js → chunk-PYXMGEO7.js} +2 -2
- package/dist/esm/{chunk-T4UHUQFJ.js → chunk-QEGEUD4D.js} +2 -2
- package/dist/esm/chunk-QEL55MLF.js +2 -0
- package/dist/esm/chunk-QFPHEY77.js +2 -0
- package/dist/esm/chunk-QFPHEY77.js.map +7 -0
- package/dist/esm/{chunk-F7IYL2VW.js → chunk-QJVAS7AK.js} +2 -2
- package/dist/esm/chunk-QQ62LO3X.js +2 -0
- package/dist/esm/chunk-QQ62LO3X.js.map +7 -0
- package/dist/esm/chunk-RDAMYQFF.js +2 -0
- package/dist/esm/chunk-RDAMYQFF.js.map +7 -0
- package/dist/esm/chunk-ROSWI2CL.js +2 -0
- package/dist/esm/chunk-ROSWI2CL.js.map +7 -0
- package/dist/esm/chunk-RY67WG3O.js +2 -0
- package/dist/esm/chunk-RY67WG3O.js.map +7 -0
- package/dist/esm/{chunk-DXL6V2A5.js → chunk-SEY4NA45.js} +2 -2
- package/dist/esm/{chunk-TS623UPD.js → chunk-TLGXIWAS.js} +2 -2
- package/dist/esm/{chunk-6FLLFCBU.js → chunk-UBSLEGQZ.js} +2 -2
- package/dist/esm/{chunk-37OGSEQR.js → chunk-UNWPH3SO.js} +2 -2
- package/dist/esm/chunk-V5ZSDDVZ.js +2 -0
- package/dist/esm/chunk-V5ZSDDVZ.js.map +7 -0
- package/dist/esm/chunk-VLTXI4A7.js +2 -0
- package/dist/esm/chunk-VLTXI4A7.js.map +7 -0
- package/dist/esm/{chunk-HIKVMKYQ.js → chunk-VTIL55SR.js} +2 -2
- package/dist/esm/{chunk-CQNPBTM5.js → chunk-W2LD2YE6.js} +2 -2
- package/dist/esm/chunk-WGWUEU4K.js +2 -0
- package/dist/esm/chunk-WGWUEU4K.js.map +7 -0
- package/dist/esm/{chunk-NMKPFUNP.js → chunk-WIDJYVZF.js} +2 -2
- package/dist/esm/{chunk-3OBXZUFJ.js → chunk-WJBOOAIO.js} +2 -2
- package/dist/esm/chunk-WMGIFPI2.js +2 -0
- package/dist/esm/chunk-WMGIFPI2.js.map +7 -0
- package/dist/esm/{chunk-7FC7HF76.js → chunk-WQCB7KSH.js} +2 -2
- package/dist/esm/{chunk-OWAUCLRT.js → chunk-WZFVTC7P.js} +2 -2
- package/dist/esm/chunk-XDDKT4NF.js +2 -0
- package/dist/esm/{chunk-DX5JJYMZ.js → chunk-XYVLQDGR.js} +2 -2
- package/dist/esm/{chunk-KFA53SVQ.js → chunk-YA5DF67M.js} +2 -2
- package/dist/esm/chunk-YA5DF67M.js.map +7 -0
- package/dist/esm/chunk-YAQBIO2B.js +2 -0
- package/dist/esm/chunk-YAQBIO2B.js.map +7 -0
- package/dist/esm/{chunk-VNPNEJI6.js → chunk-YG66IRW4.js} +2 -2
- package/dist/esm/chunk-YVSM2LGS.js +2 -0
- package/dist/esm/chunk-YVSM2LGS.js.map +7 -0
- package/dist/esm/chunk-Z7AZNMNX.js +2 -0
- package/dist/esm/chunk-Z7AZNMNX.js.map +7 -0
- package/dist/esm/chunk-ZJ33QP5N.js +2 -0
- package/dist/esm/{chunk-66ZLZAAJ.js → chunk-ZNK6AH2G.js} +1 -1
- package/dist/esm/{chunk-66ZLZAAJ.js.map → chunk-ZNK6AH2G.js.map} +1 -1
- package/dist/esm/{chunk-KPBG7CIL.js → chunk-ZO7TTWJI.js} +2 -2
- package/dist/esm/{chunk-OGXZHAQL.js → chunk-ZW26J2SA.js} +2 -2
- package/dist/esm/chunk-ZWZGUBL4.js +2 -0
- package/dist/esm/chunk-ZWZGUBL4.js.map +7 -0
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-button.props.d.ts +2 -7
- package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.props.js +1 -1
- package/dist/esm/components/_internal/base-checkbox.props.d.ts +0 -5
- package/dist/esm/components/_internal/base-checkbox.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
- package/dist/esm/components/_internal/base-menu.props.d.ts +0 -10
- package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-menu.props.js +1 -1
- package/dist/esm/components/_internal/base-menu.utils.js +1 -1
- package/dist/esm/components/_internal/base-radio.props.d.ts +0 -5
- package/dist/esm/components/_internal/base-radio.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-radio.props.js +1 -1
- package/dist/esm/components/_internal/base-tab-list.props.d.ts +0 -5
- package/dist/esm/components/_internal/base-tab-list.props.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-tab-list.props.js +1 -1
- package/dist/esm/components/_internal/menu-context.js +1 -1
- package/dist/esm/components/_internal/shell-bottom.d.ts +6 -7
- package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-bottom.js +1 -1
- package/dist/esm/components/_internal/shell-handles.d.ts +9 -0
- package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-handles.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.d.ts +4 -6
- package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-pane.d.ts +70 -0
- package/dist/esm/components/_internal/shell-pane.d.ts.map +1 -0
- package/dist/esm/components/_internal/shell-pane.js +2 -0
- package/dist/esm/components/_internal/shell-resizable.d.ts +48 -0
- package/dist/esm/components/_internal/shell-resizable.d.ts.map +1 -0
- package/dist/esm/components/_internal/shell-resizable.js +2 -0
- package/dist/esm/components/_internal/shell-resize.d.ts +11 -3
- package/dist/esm/components/_internal/shell-resize.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-resize.js +1 -1
- package/dist/esm/components/_internal/shell-rest.d.ts +27 -0
- package/dist/esm/components/_internal/shell-rest.d.ts.map +1 -0
- package/dist/esm/components/_internal/shell-rest.js +2 -0
- package/dist/esm/components/_internal/shell-rest.js.map +7 -0
- package/dist/esm/components/_internal/shell-sidebar.d.ts +7 -12
- package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/_internal/shell-store.d.ts +99 -0
- package/dist/esm/components/_internal/shell-store.d.ts.map +1 -0
- package/dist/esm/components/_internal/shell-store.js +2 -0
- package/dist/esm/components/_internal/shell-store.js.map +7 -0
- package/dist/esm/components/accordion.js +1 -1
- package/dist/esm/components/accordion.props.d.ts +0 -6
- package/dist/esm/components/accordion.props.d.ts.map +1 -1
- package/dist/esm/components/accordion.props.js +1 -1
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/avatar.props.d.ts +0 -5
- package/dist/esm/components/avatar.props.d.ts.map +1 -1
- package/dist/esm/components/avatar.props.js +1 -1
- package/dist/esm/components/badge.js +1 -1
- package/dist/esm/components/badge.props.d.ts +0 -5
- package/dist/esm/components/badge.props.d.ts.map +1 -1
- package/dist/esm/components/badge.props.js +1 -1
- package/dist/esm/components/blockquote.js +1 -1
- package/dist/esm/components/blockquote.props.d.ts +3 -2
- package/dist/esm/components/blockquote.props.d.ts.map +1 -1
- package/dist/esm/components/blockquote.props.js +1 -1
- package/dist/esm/components/box.js +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/button.props.js +1 -1
- package/dist/esm/components/callout.js +1 -1
- package/dist/esm/components/callout.props.d.ts +0 -5
- package/dist/esm/components/callout.props.d.ts.map +1 -1
- package/dist/esm/components/callout.props.js +1 -1
- package/dist/esm/components/card.js +1 -1
- package/dist/esm/components/chatbar.d.ts.map +1 -1
- package/dist/esm/components/chatbar.js +1 -1
- package/dist/esm/components/checkbox-cards.d.ts.map +1 -1
- package/dist/esm/components/checkbox-cards.js +1 -1
- package/dist/esm/components/checkbox-cards.props.d.ts +0 -5
- package/dist/esm/components/checkbox-cards.props.d.ts.map +1 -1
- package/dist/esm/components/checkbox-cards.props.js +1 -1
- package/dist/esm/components/checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/checkbox-group.js +1 -1
- package/dist/esm/components/checkbox-group.props.d.ts +0 -5
- package/dist/esm/components/checkbox-group.props.d.ts.map +1 -1
- package/dist/esm/components/checkbox-group.props.js +1 -1
- package/dist/esm/components/checkbox.js +1 -1
- package/dist/esm/components/checkbox.props.js +1 -1
- package/dist/esm/components/code.js +1 -1
- package/dist/esm/components/code.props.d.ts +3 -2
- package/dist/esm/components/code.props.d.ts.map +1 -1
- package/dist/esm/components/code.props.js +1 -1
- package/dist/esm/components/combobox.d.ts.map +1 -1
- package/dist/esm/components/combobox.js +1 -1
- package/dist/esm/components/combobox.props.d.ts +1 -11
- package/dist/esm/components/combobox.props.d.ts.map +1 -1
- package/dist/esm/components/combobox.props.js +1 -1
- package/dist/esm/components/container.js +1 -1
- package/dist/esm/components/context-menu.d.ts.map +1 -1
- package/dist/esm/components/context-menu.js +1 -1
- package/dist/esm/components/context-menu.props.js +1 -1
- package/dist/esm/components/data-list.js +1 -1
- package/dist/esm/components/data-list.props.d.ts +4 -3
- package/dist/esm/components/data-list.props.d.ts.map +1 -1
- package/dist/esm/components/data-list.props.js +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/dropdown-menu.js +1 -1
- package/dist/esm/components/dropdown-menu.props.js +1 -1
- package/dist/esm/components/em.js +1 -1
- package/dist/esm/components/em.props.js +1 -1
- package/dist/esm/components/flex.js +1 -1
- package/dist/esm/components/grid.js +1 -1
- package/dist/esm/components/heading.js +1 -1
- package/dist/esm/components/heading.props.d.ts +3 -2
- package/dist/esm/components/heading.props.d.ts.map +1 -1
- package/dist/esm/components/heading.props.js +1 -1
- package/dist/esm/components/hover-card.js +1 -1
- package/dist/esm/components/icon-button.js +1 -1
- package/dist/esm/components/icon-button.props.js +1 -1
- package/dist/esm/components/image.js +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/inset.js +1 -1
- package/dist/esm/components/kbd.js +1 -1
- package/dist/esm/components/link.js +1 -1
- package/dist/esm/components/link.props.d.ts +0 -5
- package/dist/esm/components/link.props.d.ts.map +1 -1
- package/dist/esm/components/link.props.js +1 -1
- package/dist/esm/components/navbar.js +1 -1
- package/dist/esm/components/popover.js +1 -1
- package/dist/esm/components/progress.js +1 -1
- package/dist/esm/components/progress.props.d.ts +0 -5
- package/dist/esm/components/progress.props.d.ts.map +1 -1
- package/dist/esm/components/progress.props.js +1 -1
- package/dist/esm/components/quote.js +1 -1
- package/dist/esm/components/quote.props.js +1 -1
- package/dist/esm/components/radio-cards.js +1 -1
- package/dist/esm/components/radio-cards.props.d.ts +0 -5
- package/dist/esm/components/radio-cards.props.d.ts.map +1 -1
- package/dist/esm/components/radio-cards.props.js +1 -1
- package/dist/esm/components/radio-group.d.ts.map +1 -1
- package/dist/esm/components/radio-group.js +1 -1
- package/dist/esm/components/radio-group.props.d.ts +0 -5
- package/dist/esm/components/radio-group.props.d.ts.map +1 -1
- package/dist/esm/components/radio-group.props.js +1 -1
- package/dist/esm/components/radio.js +1 -1
- package/dist/esm/components/radio.props.js +1 -1
- package/dist/esm/components/schemas/base-button.schema.d.ts +0 -1
- package/dist/esm/components/schemas/base-button.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/base-button.schema.js +1 -1
- package/dist/esm/components/schemas/button.schema.d.ts +0 -1
- package/dist/esm/components/schemas/button.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/button.schema.js +1 -1
- package/dist/esm/components/schemas/icon-button.schema.d.ts +0 -1
- package/dist/esm/components/schemas/icon-button.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/icon-button.schema.js +1 -1
- package/dist/esm/components/schemas/index.js +1 -1
- package/dist/esm/components/schemas/shell.schema.d.ts +277 -229
- package/dist/esm/components/schemas/shell.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/shell.schema.js +1 -1
- package/dist/esm/components/schemas/toggle-button.schema.d.ts +0 -1
- package/dist/esm/components/schemas/toggle-button.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/toggle-button.schema.js +1 -1
- package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +0 -1
- package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts.map +1 -1
- package/dist/esm/components/schemas/toggle-icon-button.schema.js +1 -1
- package/dist/esm/components/scroll-area.js +1 -1
- package/dist/esm/components/section.js +1 -1
- package/dist/esm/components/segmented-control.js +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/select.props.d.ts +0 -5
- package/dist/esm/components/select.props.d.ts.map +1 -1
- package/dist/esm/components/select.props.js +1 -1
- package/dist/esm/components/separator.js +1 -1
- package/dist/esm/components/separator.props.js +1 -1
- package/dist/esm/components/sheet.js +1 -1
- package/dist/esm/components/shell.context.d.ts +25 -114
- package/dist/esm/components/shell.context.d.ts.map +1 -1
- package/dist/esm/components/shell.context.js +1 -1
- package/dist/esm/components/shell.d.ts +42 -21
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.hooks.d.ts +7 -23
- package/dist/esm/components/shell.hooks.d.ts.map +1 -1
- package/dist/esm/components/shell.hooks.js +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/shell.types.d.ts +19 -2
- package/dist/esm/components/shell.types.d.ts.map +1 -1
- package/dist/esm/components/shell.types.js +1 -1
- package/dist/esm/components/sidebar.d.ts +0 -1
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/sidebar.props.d.ts +0 -5
- package/dist/esm/components/sidebar.props.d.ts.map +1 -1
- package/dist/esm/components/sidebar.props.js +1 -1
- package/dist/esm/components/skeleton.js +1 -1
- package/dist/esm/components/slider.js +1 -1
- package/dist/esm/components/slider.props.d.ts +0 -5
- package/dist/esm/components/slider.props.d.ts.map +1 -1
- package/dist/esm/components/slider.props.js +1 -1
- package/dist/esm/components/spinner.js +1 -1
- package/dist/esm/components/strong.js +1 -1
- package/dist/esm/components/strong.props.js +1 -1
- package/dist/esm/components/switch.d.ts.map +1 -1
- package/dist/esm/components/switch.js +1 -1
- package/dist/esm/components/switch.props.d.ts +0 -5
- package/dist/esm/components/switch.props.d.ts.map +1 -1
- package/dist/esm/components/switch.props.js +1 -1
- package/dist/esm/components/tab-nav.js +1 -1
- package/dist/esm/components/tab-nav.props.js +1 -1
- package/dist/esm/components/table.js +1 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/tabs.props.js +1 -1
- package/dist/esm/components/text-area.js +1 -1
- package/dist/esm/components/text-area.props.js +1 -1
- package/dist/esm/components/text-field.js +1 -1
- package/dist/esm/components/text-field.props.js +1 -1
- package/dist/esm/components/text.js +1 -1
- package/dist/esm/components/text.props.d.ts +3 -2
- package/dist/esm/components/text.props.d.ts.map +1 -1
- package/dist/esm/components/text.props.js +1 -1
- package/dist/esm/components/theme-panel.js +1 -1
- package/dist/esm/components/theme.js +1 -1
- package/dist/esm/components/theme.props.js +1 -1
- package/dist/esm/components/toggle-button.js +1 -1
- package/dist/esm/components/toggle-icon-button.js +1 -1
- package/dist/esm/components/toolbar.js +1 -1
- package/dist/esm/components/tooltip.js +1 -1
- package/dist/esm/components/user-card.d.ts.map +1 -1
- package/dist/esm/components/user-card.js +1 -1
- package/dist/esm/components/user-card.props.d.ts +0 -5
- package/dist/esm/components/user-card.props.d.ts.map +1 -1
- package/dist/esm/components/user-card.props.js +1 -1
- package/dist/esm/components/virtual-menu.js +1 -1
- package/dist/esm/helpers/extract-props.js +1 -1
- package/dist/esm/helpers/get-margin-styles.js +1 -1
- package/dist/esm/helpers/get-responsive-styles.js +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/use-breakpoint.d.ts +5 -0
- package/dist/esm/hooks/use-breakpoint.d.ts.map +1 -1
- package/dist/esm/hooks/use-breakpoint.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/props/color.prop.js +1 -1
- package/dist/esm/props/emphasis.prop.d.ts +11 -0
- package/dist/esm/props/emphasis.prop.d.ts.map +1 -0
- package/dist/esm/props/emphasis.prop.js +2 -0
- package/dist/esm/props/emphasis.prop.js.map +7 -0
- package/dist/esm/props/index.d.ts +1 -1
- package/dist/esm/props/index.d.ts.map +1 -1
- package/dist/esm/props/index.js +1 -1
- package/package.json +7 -2
- package/schemas/base-button.json +0 -5
- package/schemas/button.json +0 -5
- package/schemas/icon-button.json +0 -5
- package/schemas/index.json +1655 -25
- package/schemas/shell-bottom.d.ts +2 -0
- package/schemas/shell-bottom.json +180 -76
- package/schemas/shell-content.d.ts +2 -0
- package/schemas/shell-content.json +11 -5
- package/schemas/shell-handle.d.ts +2 -0
- package/schemas/shell-handle.json +7 -5
- package/schemas/shell-header.d.ts +2 -0
- package/schemas/shell-header.json +9 -10
- package/schemas/shell-inspector.d.ts +2 -0
- package/schemas/shell-inspector.json +183 -79
- package/schemas/shell-panel.d.ts +2 -0
- package/schemas/shell-panel.json +180 -76
- package/schemas/shell-rail.d.ts +2 -0
- package/schemas/shell-rail.json +137 -64
- package/schemas/shell-root.d.ts +2 -0
- package/schemas/shell-root.json +11 -9
- package/schemas/shell-sidebar.d.ts +2 -0
- package/schemas/shell-sidebar.json +274 -85
- package/schemas/shell-trigger.d.ts +2 -0
- package/schemas/shell-trigger.json +29 -17
- package/schemas/toggle-button.json +0 -5
- package/schemas/toggle-icon-button.json +0 -5
- package/src/components/_internal/base-button.css +14 -69
- package/src/components/_internal/base-button.props.ts +2 -4
- package/src/components/_internal/base-checkbox.css +9 -63
- package/src/components/_internal/base-checkbox.props.ts +0 -2
- package/src/components/_internal/base-menu.css +7 -59
- package/src/components/_internal/base-menu.props.ts +0 -2
- package/src/components/_internal/base-radio.css +9 -46
- package/src/components/_internal/base-radio.props.ts +0 -2
- package/src/components/_internal/base-sidebar-menu.css +3 -3
- package/src/components/_internal/base-tab-list.css +1 -7
- package/src/components/_internal/base-tab-list.props.ts +0 -2
- package/src/components/_internal/shell-bottom.tsx +92 -361
- package/src/components/_internal/shell-handles.tsx +193 -108
- package/src/components/_internal/shell-inspector.tsx +93 -360
- package/src/components/_internal/shell-pane.tsx +283 -0
- package/src/components/_internal/shell-resizable.tsx +263 -0
- package/src/components/_internal/shell-resize.tsx +11 -3
- package/src/components/_internal/shell-rest.ts +45 -0
- package/src/components/_internal/shell-sidebar.tsx +130 -441
- package/src/components/_internal/shell-store.tsx +204 -0
- package/src/components/accordion.css +4 -62
- package/src/components/accordion.props.tsx +0 -3
- package/src/components/avatar.css +10 -61
- package/src/components/avatar.props.tsx +0 -2
- package/src/components/badge.css +7 -32
- package/src/components/badge.props.tsx +0 -2
- package/src/components/blockquote.props.tsx +2 -2
- package/src/components/callout.css +5 -25
- package/src/components/callout.props.tsx +0 -2
- package/src/components/chatbar.tsx +6 -3
- package/src/components/checkbox-cards.props.tsx +0 -2
- package/src/components/checkbox-cards.tsx +1 -4
- package/src/components/checkbox-group.tsx +0 -2
- package/src/components/code.css +36 -36
- package/src/components/code.props.tsx +2 -2
- package/src/components/combobox.css +4 -10
- package/src/components/combobox.props.tsx +1 -5
- package/src/components/combobox.tsx +4 -8
- package/src/components/context-menu.tsx +5 -8
- package/src/components/data-list.css +14 -9
- package/src/components/data-list.props.tsx +5 -2
- package/src/components/dropdown-menu.tsx +5 -9
- package/src/components/heading.css +16 -5
- package/src/components/heading.props.tsx +2 -2
- package/src/components/link.css +3 -4
- package/src/components/link.props.tsx +0 -2
- package/src/components/progress.css +3 -10
- package/src/components/progress.props.tsx +0 -2
- package/src/components/radio-cards.css +1 -4
- package/src/components/radio-cards.props.tsx +0 -2
- package/src/components/radio-group.props.tsx +0 -2
- package/src/components/radio-group.tsx +0 -2
- package/src/components/schemas/base-button.schema.ts +0 -10
- package/src/components/schemas/shell.schema.ts +162 -153
- package/src/components/select.css +13 -96
- package/src/components/select.props.tsx +0 -2
- package/src/components/sheet.tsx +2 -2
- package/src/components/shell.context.tsx +112 -124
- package/src/components/shell.css +637 -496
- package/src/components/shell.hooks.ts +12 -170
- package/src/components/shell.tsx +566 -1497
- package/src/components/shell.types.ts +22 -2
- package/src/components/sidebar.css +21 -115
- package/src/components/sidebar.props.tsx +0 -2
- package/src/components/sidebar.tsx +2 -5
- package/src/components/slider.css +4 -37
- package/src/components/slider.props.tsx +0 -2
- package/src/components/slider.tsx +1 -1
- package/src/components/switch.css +4 -23
- package/src/components/switch.props.tsx +0 -2
- package/src/components/switch.tsx +1 -3
- package/src/components/text.css +16 -5
- package/src/components/text.props.tsx +2 -2
- package/src/components/theme-panel.tsx +1 -1
- package/src/components/user-card.props.tsx +0 -2
- package/src/components/user-card.tsx +1 -2
- package/src/hooks/use-breakpoint.ts +9 -0
- package/src/props/color.prop.ts +1 -1
- package/src/props/emphasis.prop.ts +19 -0
- package/src/props/index.ts +1 -1
- package/src/styles/tokens/color.css +109 -0
- package/src/styles/tokens/constants.css +0 -1
- package/styles.css +970 -1254
- package/tokens/base.css +204 -150
- package/tokens.css +204 -151
- package/dist/cjs/components/_internal/shell-prop-helpers.d.ts +0 -7
- package/dist/cjs/components/_internal/shell-prop-helpers.d.ts.map +0 -1
- package/dist/cjs/components/_internal/shell-prop-helpers.js +0 -2
- package/dist/cjs/components/_internal/shell-prop-helpers.js.map +0 -7
- package/dist/cjs/props/high-contrast.prop.d.ts +0 -9
- package/dist/cjs/props/high-contrast.prop.d.ts.map +0 -1
- package/dist/cjs/props/high-contrast.prop.js +0 -2
- package/dist/cjs/props/high-contrast.prop.js.map +0 -7
- package/dist/esm/chunk-3DC63EZP.js +0 -2
- package/dist/esm/chunk-3DC63EZP.js.map +0 -7
- package/dist/esm/chunk-4JQZUQY7.js +0 -2
- package/dist/esm/chunk-4SMJ7D4S.js +0 -2
- package/dist/esm/chunk-4SMJ7D4S.js.map +0 -7
- package/dist/esm/chunk-4TCXI3L3.js +0 -2
- package/dist/esm/chunk-4TCXI3L3.js.map +0 -7
- package/dist/esm/chunk-5BYHEYO6.js +0 -2
- package/dist/esm/chunk-5BYHEYO6.js.map +0 -7
- package/dist/esm/chunk-5LXFJMFB.js +0 -2
- package/dist/esm/chunk-5LXFJMFB.js.map +0 -7
- package/dist/esm/chunk-5MNBQROW.js +0 -2
- package/dist/esm/chunk-5MNBQROW.js.map +0 -7
- package/dist/esm/chunk-666GX7O5.js +0 -2
- package/dist/esm/chunk-6HEAF5IT.js +0 -2
- package/dist/esm/chunk-6HEAF5IT.js.map +0 -7
- package/dist/esm/chunk-7ESHXHHO.js +0 -2
- package/dist/esm/chunk-7ESHXHHO.js.map +0 -7
- package/dist/esm/chunk-A3NH376A.js +0 -2
- package/dist/esm/chunk-A3NH376A.js.map +0 -7
- package/dist/esm/chunk-BI7W34WW.js +0 -2
- package/dist/esm/chunk-BI7W34WW.js.map +0 -7
- package/dist/esm/chunk-CBR3VIRS.js +0 -2
- package/dist/esm/chunk-CBR3VIRS.js.map +0 -7
- package/dist/esm/chunk-CECQNGUL.js +0 -2
- package/dist/esm/chunk-CECQNGUL.js.map +0 -7
- package/dist/esm/chunk-D2AZAGGP.js +0 -2
- package/dist/esm/chunk-D2AZAGGP.js.map +0 -7
- package/dist/esm/chunk-DCAZPMOB.js +0 -2
- package/dist/esm/chunk-DCAZPMOB.js.map +0 -7
- package/dist/esm/chunk-DQAUX5ZL.js +0 -2
- package/dist/esm/chunk-DQAUX5ZL.js.map +0 -7
- package/dist/esm/chunk-F7IUK2I2.js +0 -2
- package/dist/esm/chunk-FLBLS7M4.js +0 -2
- package/dist/esm/chunk-FLBLS7M4.js.map +0 -7
- package/dist/esm/chunk-FMBECDL4.js +0 -2
- package/dist/esm/chunk-GSIE6SUD.js +0 -2
- package/dist/esm/chunk-GSIE6SUD.js.map +0 -7
- package/dist/esm/chunk-HOHUDTTL.js +0 -2
- package/dist/esm/chunk-HOHUDTTL.js.map +0 -7
- package/dist/esm/chunk-HSAG7C53.js +0 -2
- package/dist/esm/chunk-HUKPWYG2.js +0 -2
- package/dist/esm/chunk-HUKPWYG2.js.map +0 -7
- package/dist/esm/chunk-IDYHZIS6.js +0 -2
- package/dist/esm/chunk-IDYHZIS6.js.map +0 -7
- package/dist/esm/chunk-IGQRZCAI.js +0 -2
- package/dist/esm/chunk-IGQRZCAI.js.map +0 -7
- package/dist/esm/chunk-ILRJA7FU.js +0 -2
- package/dist/esm/chunk-ILRJA7FU.js.map +0 -7
- package/dist/esm/chunk-JJKQ7CGI.js +0 -2
- package/dist/esm/chunk-KFA53SVQ.js.map +0 -7
- package/dist/esm/chunk-KRDP5SQ7.js +0 -2
- package/dist/esm/chunk-KRDP5SQ7.js.map +0 -7
- package/dist/esm/chunk-KTAFIHJY.js +0 -2
- package/dist/esm/chunk-KTAFIHJY.js.map +0 -7
- package/dist/esm/chunk-MCQAJV4K.js +0 -2
- package/dist/esm/chunk-MCQAJV4K.js.map +0 -7
- package/dist/esm/chunk-MCQCG6AS.js +0 -2
- package/dist/esm/chunk-MJ47O7KH.js +0 -2
- package/dist/esm/chunk-MJ47O7KH.js.map +0 -7
- package/dist/esm/chunk-N2B7TWIP.js +0 -2
- package/dist/esm/chunk-N2B7TWIP.js.map +0 -7
- package/dist/esm/chunk-NIQT45PJ.js +0 -2
- package/dist/esm/chunk-NKEJTTIL.js +0 -2
- package/dist/esm/chunk-NKEJTTIL.js.map +0 -7
- package/dist/esm/chunk-NNO7M466.js +0 -2
- package/dist/esm/chunk-NNO7M466.js.map +0 -7
- package/dist/esm/chunk-PTS6QYQW.js +0 -2
- package/dist/esm/chunk-PTS6QYQW.js.map +0 -7
- package/dist/esm/chunk-RLPKKCBL.js +0 -2
- package/dist/esm/chunk-RLPKKCBL.js.map +0 -7
- package/dist/esm/chunk-SNHEJU2S.js +0 -2
- package/dist/esm/chunk-SNHEJU2S.js.map +0 -7
- package/dist/esm/chunk-SO67YEVQ.js +0 -2
- package/dist/esm/chunk-SZTZ2XLI.js +0 -2
- package/dist/esm/chunk-T2FZN7G3.js +0 -2
- package/dist/esm/chunk-T2FZN7G3.js.map +0 -7
- package/dist/esm/chunk-TBJ6L4NL.js +0 -2
- package/dist/esm/chunk-TBJ6L4NL.js.map +0 -7
- package/dist/esm/chunk-TGN5ZJU5.js +0 -2
- package/dist/esm/chunk-TGN5ZJU5.js.map +0 -7
- package/dist/esm/chunk-TLWTUKKL.js +0 -2
- package/dist/esm/chunk-TLWTUKKL.js.map +0 -7
- package/dist/esm/chunk-UIRSGVJG.js +0 -2
- package/dist/esm/chunk-UMX5MGLG.js +0 -2
- package/dist/esm/chunk-UMX5MGLG.js.map +0 -7
- package/dist/esm/chunk-WR7YLY46.js +0 -2
- package/dist/esm/chunk-WR7YLY46.js.map +0 -7
- package/dist/esm/chunk-WZETC7WV.js +0 -2
- package/dist/esm/chunk-WZETC7WV.js.map +0 -7
- package/dist/esm/chunk-XGGLYV5D.js +0 -2
- package/dist/esm/chunk-XGGLYV5D.js.map +0 -7
- package/dist/esm/chunk-XI5YXUCK.js +0 -2
- package/dist/esm/chunk-XKASPWCJ.js +0 -2
- package/dist/esm/chunk-XKASPWCJ.js.map +0 -7
- package/dist/esm/chunk-ZRKE3NVU.js +0 -2
- package/dist/esm/chunk-ZRKE3NVU.js.map +0 -7
- package/dist/esm/chunk-ZWYYPFZW.js +0 -2
- package/dist/esm/chunk-ZWYYPFZW.js.map +0 -7
- package/dist/esm/chunk-ZXZOH63L.js +0 -2
- package/dist/esm/chunk-ZXZOH63L.js.map +0 -7
- package/dist/esm/components/_internal/shell-prop-helpers.d.ts +0 -7
- package/dist/esm/components/_internal/shell-prop-helpers.d.ts.map +0 -1
- package/dist/esm/components/_internal/shell-prop-helpers.js +0 -2
- package/dist/esm/props/high-contrast.prop.d.ts +0 -9
- package/dist/esm/props/high-contrast.prop.d.ts.map +0 -1
- package/dist/esm/props/high-contrast.prop.js +0 -2
- package/src/components/_internal/shell-prop-helpers.ts +0 -54
- package/src/props/high-contrast.prop.ts +0 -13
- /package/dist/esm/{chunk-MBCBP73P.js.map → chunk-25X75TI7.js.map} +0 -0
- /package/dist/esm/{chunk-GLERJXVS.js.map → chunk-2Q7BJ7YG.js.map} +0 -0
- /package/dist/esm/{chunk-CTA5ODAO.js.map → chunk-4WU2WKUJ.js.map} +0 -0
- /package/dist/esm/{chunk-F7IUK2I2.js.map → chunk-5SNHUVDA.js.map} +0 -0
- /package/dist/esm/{chunk-H7ST535H.js.map → chunk-5TAHT6VC.js.map} +0 -0
- /package/dist/esm/{chunk-MHPPVJDB.js.map → chunk-67MKPTZJ.js.map} +0 -0
- /package/dist/esm/{chunk-UFI53QUC.js.map → chunk-6J6YX2VX.js.map} +0 -0
- /package/dist/esm/{chunk-UUUZXUIP.js.map → chunk-7NYODT3Z.js.map} +0 -0
- /package/dist/esm/{chunk-NVDXXGVW.js.map → chunk-7PMMYHZV.js.map} +0 -0
- /package/dist/esm/{chunk-UBOOUDS4.js.map → chunk-AO32NT75.js.map} +0 -0
- /package/dist/esm/{chunk-JDGJSNWT.js.map → chunk-C5RVO3C3.js.map} +0 -0
- /package/dist/esm/{chunk-IHK3H2OM.js.map → chunk-CBNTPHYK.js.map} +0 -0
- /package/dist/esm/{chunk-SESAEJ6W.js.map → chunk-CLMOWP5T.js.map} +0 -0
- /package/dist/esm/{chunk-BBJUB52V.js.map → chunk-CRBOJ7N7.js.map} +0 -0
- /package/dist/esm/{chunk-DUHJVT64.js.map → chunk-CRSHBENJ.js.map} +0 -0
- /package/dist/esm/{chunk-56TS6OKQ.js.map → chunk-DCIQHXAR.js.map} +0 -0
- /package/dist/esm/{chunk-43A5GUSI.js.map → chunk-EHBAK3LQ.js.map} +0 -0
- /package/dist/esm/{chunk-2TIADHPD.js.map → chunk-F3AXE27Q.js.map} +0 -0
- /package/dist/esm/{chunk-VA4CTVQL.js.map → chunk-FB3PD4Z3.js.map} +0 -0
- /package/dist/esm/{chunk-OYF6YXH7.js.map → chunk-FEAOFF77.js.map} +0 -0
- /package/dist/esm/{chunk-ADBLURLJ.js.map → chunk-GDAKJS64.js.map} +0 -0
- /package/dist/esm/{chunk-IEWCQU2S.js.map → chunk-GGSJXOKR.js.map} +0 -0
- /package/dist/esm/{chunk-4JQZUQY7.js.map → chunk-GM7KMQDI.js.map} +0 -0
- /package/dist/esm/{chunk-HBR42MIX.js.map → chunk-H4GR4262.js.map} +0 -0
- /package/dist/esm/{chunk-S5C5YRBS.js.map → chunk-IDUVJJYG.js.map} +0 -0
- /package/dist/esm/{chunk-P7IAHW4V.js.map → chunk-IK3MQHA5.js.map} +0 -0
- /package/dist/esm/{chunk-SPIU5JYC.js.map → chunk-JDEBKA56.js.map} +0 -0
- /package/dist/esm/{chunk-E67CIG6A.js.map → chunk-JDWCQ2XP.js.map} +0 -0
- /package/dist/esm/{chunk-JBO5YOUM.js.map → chunk-JQW4XYBS.js.map} +0 -0
- /package/dist/esm/{chunk-P5OSU4NX.js.map → chunk-JRFZ535T.js.map} +0 -0
- /package/dist/esm/{chunk-GYBLXQ4R.js.map → chunk-KEEPKI2X.js.map} +0 -0
- /package/dist/esm/{chunk-WXP6MMUB.js.map → chunk-KOFEFBB3.js.map} +0 -0
- /package/dist/esm/{chunk-YMUGKYGW.js.map → chunk-KV4SZP3F.js.map} +0 -0
- /package/dist/esm/{chunk-FG7XM7KJ.js.map → chunk-LJCUPAOI.js.map} +0 -0
- /package/dist/esm/{chunk-MBE2YSBU.js.map → chunk-MBCQA7UZ.js.map} +0 -0
- /package/dist/esm/{chunk-JJKQ7CGI.js.map → chunk-MM5IHQFM.js.map} +0 -0
- /package/dist/esm/{chunk-YVBCDTTD.js.map → chunk-MN3XALXD.js.map} +0 -0
- /package/dist/esm/{chunk-3R7XMRV5.js.map → chunk-NQXRWBQM.js.map} +0 -0
- /package/dist/esm/{chunk-CSKZZOI2.js.map → chunk-NTNMJX5M.js.map} +0 -0
- /package/dist/esm/{chunk-4ME6O27S.js.map → chunk-O4CSXNST.js.map} +0 -0
- /package/dist/esm/{chunk-HSAG7C53.js.map → chunk-ODCVOXEV.js.map} +0 -0
- /package/dist/esm/{chunk-DMJJM5IS.js.map → chunk-OEEF6KJG.js.map} +0 -0
- /package/dist/esm/{chunk-ABSKRHVM.js.map → chunk-OJSOX3AX.js.map} +0 -0
- /package/dist/esm/{chunk-JGLAE5G7.js.map → chunk-OQU2SKLN.js.map} +0 -0
- /package/dist/esm/{chunk-UWT6TE5D.js.map → chunk-OTXCKEWT.js.map} +0 -0
- /package/dist/esm/{chunk-JUY7CBSL.js.map → chunk-PBFSBHBS.js.map} +0 -0
- /package/dist/esm/{chunk-L6PVH3RM.js.map → chunk-PDUHBDFC.js.map} +0 -0
- /package/dist/esm/{chunk-HW324FK3.js.map → chunk-POG3YABW.js.map} +0 -0
- /package/dist/esm/{chunk-TOOSHJOA.js.map → chunk-PYXMGEO7.js.map} +0 -0
- /package/dist/esm/{chunk-T4UHUQFJ.js.map → chunk-QEGEUD4D.js.map} +0 -0
- /package/dist/esm/{chunk-MCQCG6AS.js.map → chunk-QEL55MLF.js.map} +0 -0
- /package/dist/esm/{chunk-F7IYL2VW.js.map → chunk-QJVAS7AK.js.map} +0 -0
- /package/dist/esm/{chunk-DXL6V2A5.js.map → chunk-SEY4NA45.js.map} +0 -0
- /package/dist/esm/{chunk-TS623UPD.js.map → chunk-TLGXIWAS.js.map} +0 -0
- /package/dist/esm/{chunk-6FLLFCBU.js.map → chunk-UBSLEGQZ.js.map} +0 -0
- /package/dist/esm/{chunk-37OGSEQR.js.map → chunk-UNWPH3SO.js.map} +0 -0
- /package/dist/esm/{chunk-HIKVMKYQ.js.map → chunk-VTIL55SR.js.map} +0 -0
- /package/dist/esm/{chunk-CQNPBTM5.js.map → chunk-W2LD2YE6.js.map} +0 -0
- /package/dist/esm/{chunk-NMKPFUNP.js.map → chunk-WIDJYVZF.js.map} +0 -0
- /package/dist/esm/{chunk-3OBXZUFJ.js.map → chunk-WJBOOAIO.js.map} +0 -0
- /package/dist/esm/{chunk-7FC7HF76.js.map → chunk-WQCB7KSH.js.map} +0 -0
- /package/dist/esm/{chunk-OWAUCLRT.js.map → chunk-WZFVTC7P.js.map} +0 -0
- /package/dist/esm/{chunk-XI5YXUCK.js.map → chunk-XDDKT4NF.js.map} +0 -0
- /package/dist/esm/{chunk-DX5JJYMZ.js.map → chunk-XYVLQDGR.js.map} +0 -0
- /package/dist/esm/{chunk-VNPNEJI6.js.map → chunk-YG66IRW4.js.map} +0 -0
- /package/dist/esm/{chunk-NIQT45PJ.js.map → chunk-ZJ33QP5N.js.map} +0 -0
- /package/dist/esm/{chunk-KPBG7CIL.js.map → chunk-ZO7TTWJI.js.map} +0 -0
- /package/dist/esm/{chunk-OGXZHAQL.js.map → chunk-ZW26J2SA.js.map} +0 -0
- /package/dist/esm/components/_internal/{shell-prop-helpers.js.map → shell-pane.js.map} +0 -0
- /package/dist/esm/{props/high-contrast.prop.js.map → components/_internal/shell-resizable.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/chatbar.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { LazyMotion, MotionConfig, domAnimation, m } from 'motion/react';\nimport { useComposedRefs } from 'radix-ui/internal';\nimport { useDropzone } from 'react-dropzone';\n\nimport { IconButton, type IconButtonProps } from './icon-button.js';\nimport { CloseIcon, FileTextIcon } from './icons.js';\nimport { Flex } from './flex.js';\nimport { ScrollArea } from './scroll-area.js';\nimport { Slot } from './slot.js';\nimport { Text } from './text.js';\nimport { VisuallyHidden } from './visually-hidden.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { accentColors } from '../props/color.prop.js';\nimport type { radii } from '../props/radius.prop.js';\n\n// Avoid SSR warnings by using an isomorphic layout effect\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * Runs `measure` with the placeholder taken out of layout, so a height read\n * reflects the value alone.\n *\n * A textarea with an empty value lays its placeholder out as real text, so\n * `scrollHeight` reports the placeholder wrapped at whatever width the field\n * has at that instant. That sizes an empty bar to the suggestion showing in it\n * rather than to `minLines`, and when the read lands before the field has its\n * final width -- a panel still animating open, a flex parent whose basis is 0\n * -- it wraps that text at a fraction of the real width and opens the bar at\n * `maxLines`. The first keystroke takes the placeholder out of layout and the\n * height snaps back, which is what made the bug look intermittent rather than\n * simply wrong.\n *\n * The reset to 'auto' and the `scrollHeight` read sit in different functions\n * here, so the whole measurement window is wrapped rather than a single read.\n * Costs one extra style recalc on a path that is already forcing a reflow.\n */\nfunction withoutPlaceholder(el: HTMLTextAreaElement, measure: () => void): void {\n const { placeholder } = el;\n if (!placeholder) {\n measure();\n return;\n }\n el.placeholder = '';\n try {\n measure();\n } finally {\n el.placeholder = placeholder;\n }\n}\n\n// Shared layout spring; hoisted so every motion node receives the same object\nconst LAYOUT_TRANSITION = { layout: { type: 'spring', visualDuration: 0.15, bounce: 0.1 } } as const;\n\ntype ExpandOn = 'none' | 'focus' | 'overflow' | 'both';\ntype SendMode = 'always' | 'whenDirty' | 'never';\n\n// Attachments\n/** Status flag for attachment lifecycle. */\ntype AttachmentStatus = 'idle' | 'uploading' | 'error' | 'done';\n/**\n * Attachment data model used by Chatbar.\n * - `file` exposes the original File object for uploads and processing.\n * - `url` is an object URL used for image previews. Chatbar revokes it when the\n * attachment is removed; once an attachment is handed to `onSubmit`, the\n * consumer owns the URL and is responsible for revoking it.\n */\ninterface ChatbarAttachment {\n id: string;\n name: string;\n size: number;\n type: string;\n /** Original File object for uploads and processing */\n file: File;\n url?: string;\n status?: AttachmentStatus;\n progress?: number;\n meta?: Record<string, unknown>;\n}\n\ntype ChatbarRejectReason = 'type' | 'size' | 'count';\ninterface ChatbarAttachmentRejection {\n file: File;\n reason: ChatbarRejectReason;\n}\n\ninterface ChatbarSubmitPayload {\n value: string;\n attachments: ChatbarAttachment[];\n}\n\ninterface FilePickerOptions {\n accept?: string | string[];\n multiple?: boolean;\n}\n\ninterface ChatbarContextValue {\n open: boolean;\n setOpen(next: boolean): void;\n\n setValue(next: string): void;\n\n size: '1' | '2' | '3';\n expandOn: ExpandOn;\n minLines: number;\n maxLines: number;\n sendMode: SendMode;\n disabled?: boolean;\n readOnly?: boolean;\n paste: boolean;\n clearOnSubmit: boolean;\n multiple: boolean;\n\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\n\n attachments: ChatbarAttachment[];\n removeAttachment(id: string): void;\n\n /** Validates and submits; returns false when there was nothing to submit */\n submit(clear: boolean): boolean;\n appendFiles(files: File[]): number;\n appendFilesFromPaste(files: File[]): number;\n openFilePicker(options?: FilePickerOptions): void;\n /** Guards blur-collapse between pointerdown on a picker trigger and its click */\n beginFilePickerPress(): void;\n}\n\nconst ChatbarContext = React.createContext<ChatbarContextValue | null>(null);\n// Value lives in its own context so keystrokes only re-render parts that read it\nconst ChatbarValueContext = React.createContext<string>('');\n\nconst useChatbarContext = () => {\n const ctx = React.useContext(ChatbarContext);\n if (!ctx) throw new Error('Chatbar context not found. Wrap parts in <Chatbar.Root>.');\n return ctx;\n};\n\nconst toArray = (val: string | string[] | undefined) =>\n Array.isArray(val) ? val : typeof val === 'string' ? val.split(',').map((s) => s.trim()).filter(Boolean) : [];\n\nconst matchesAccept = (file: File, patterns: string[]) => {\n if (patterns.length === 0) return true;\n const mime = file.type.toLowerCase();\n const name = file.name.toLowerCase();\n for (const patRaw of patterns) {\n const pat = patRaw.toLowerCase();\n if (pat.includes('/')) {\n const [type, subtype] = pat.split('/');\n const [fmType, fmSubtype] = mime.split('/');\n if (type === '*' || (type === fmType && (subtype === '*' || subtype === fmSubtype))) return true;\n } else if (pat.startsWith('.')) {\n if (name.endsWith(pat)) return true;\n }\n }\n return false;\n};\n\nconst IMAGE_EXT_RE = /\\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i;\nconst isImageLike = (name: string, type: string) => (type || '').toLowerCase().startsWith('image/') || IMAGE_EXT_RE.test(name);\n\nconst hasText = (value: string) => value.trim().length > 0;\n\nconst plural = (n: number, word: string) => `${n} ${word}${n === 1 ? '' : 's'}`;\n\nlet attachmentCounter = 0;\nconst createAttachmentId = () => `chatbar-attachment-${Date.now()}-${++attachmentCounter}`;\n\n/**\n * Chatbar container and state provider.\n *\n * Value & Open\n * - Supports controlled/uncontrolled `value` and `open`.\n *\n * Attachments\n * - Controlled/uncontrolled attachments with client-side filtering.\n * - Filters by `accept`/`pasteAccept`, `multiple`, `maxAttachments`, and `maxFileSize`.\n * - Rejections are reported via `onAttachmentReject`.\n *\n * Submit\n * - `onSubmit({ value, attachments })` emits both message and attachments.\n * - Submitting requires text or at least one attachment.\n * - `clearOnSubmit` clears message and attachments by default.\n */\ninterface ChatbarRootBaseProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n /** When the chatbar expands on its own. `none` leaves open state entirely to the consumer. */\n expandOn?: ExpandOn;\n\n /** Minimum visible lines when expanded (default: 3). The compact state is always one line. */\n minLines?: number;\n /** Maximum number of lines before scrolling (default: 6) */\n maxLines?: number;\n\n /** Controls Send button visibility only. Enter-to-submit is controlled by `Textarea submitOnEnter`. */\n sendMode?: SendMode;\n\n /** Disables text input, submission and every way of adding attachments */\n disabled?: boolean;\n /** Prevents editing, submission and adding attachments */\n readOnly?: boolean;\n\n /** Combined submit payload */\n onSubmit?: (payload: ChatbarSubmitPayload) => void;\n\n size?: '1' | '2' | '3';\n variant?: 'surface' | 'outline' | 'classic' | 'ghost' | 'soft';\n /** Accent color for the control (matches TextArea) */\n color?: (typeof accentColors)[number];\n /** Optional radius override (matches TextArea) */\n radius?: (typeof radii)[number];\n /** Panel/material translucency flags (matches TextArea) */\n panelBackground?: 'solid' | 'translucent';\n material?: 'solid' | 'translucent';\n\n width?: React.CSSProperties['width'];\n maxWidth?: React.CSSProperties['maxWidth'];\n\n // Attachments API\n attachments?: ChatbarAttachment[];\n defaultAttachments?: ChatbarAttachment[];\n onAttachmentsChange?: (attachments: ChatbarAttachment[]) => void;\n accept?: string | string[];\n /** Allow more than one file per pick, paste or drop */\n multiple?: boolean;\n maxAttachments?: number;\n maxFileSize?: number;\n paste?: boolean;\n /** Accepted types for pasted files. Replaces `accept` for paste when set. */\n pasteAccept?: string | string[];\n /** Clear message and attachments after submit */\n clearOnSubmit?: boolean;\n onAttachmentReject?: (rejections: ChatbarAttachmentRejection[]) => void;\n\n /**\n * Enables drag-and-drop file uploads when true.\n *\n * When enabled:\n * - Files can be dropped anywhere on the chatbar\n * - Same validation rules apply (accept, multiple, maxFileSize, maxAttachments)\n * - Visual feedback shows during drag operations\n * - Rejected files trigger onAttachmentReject\n *\n * @default true\n */\n dropzone?: boolean;\n\n /**\n * Optional API ref to control Chatbar imperatively without relying on DOM refs.\n * Provides methods to focus the textarea and open the file picker.\n */\n apiRef?: React.Ref<ChatbarApi>;\n}\n\ntype RootElement = React.ElementRef<'div'>;\n/** Imperative API for Chatbar.Root */\nexport interface ChatbarApi {\n /** Focus the textarea input */\n focusTextarea: () => void;\n /** Open the file picker dialog (respects accept/multiple). No-op when disabled or read-only. */\n openFilePicker: () => void;\n}\n/**\n * Chatbar container and state provider.\n *\n * Behavior\n * - Supports controlled and uncontrolled `value` and `open` states via props.\n * - Provides context to subcomponents like `Textarea`, `Row`, and `Send`.\n * - Exposes `data-state`, `data-disabled`, and `data-readonly` attributes for styling.\n *\n * Attachments\n * - Paste-to-attach: when `paste` is enabled, pasting files adds attachments.\n * - Additions and rejections are announced through a polite live region.\n *\n * Dropzone\n * - When `dropzone` is true, enables drag-and-drop file uploads.\n * - Visual feedback via `data-drop-active` attribute during drag operations.\n *\n * Accessibility\n * - Consumers should label the `Textarea` via `aria-label`/`aria-labelledby`.\n */\ninterface RootProps extends ComponentPropsWithout<'div', RemovedProps | 'onSubmit' | 'color'>, ChatbarRootBaseProps {}\n\nconst Root = React.forwardRef<RootElement, RootProps>((props, forwardedRef) => {\n const {\n className,\n style,\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n expandOn = 'both',\n minLines = 3,\n maxLines = 6,\n sendMode = 'whenDirty',\n disabled,\n readOnly,\n onSubmit,\n size = '2',\n variant,\n color,\n radius,\n panelBackground,\n material,\n width,\n maxWidth,\n attachments: attachmentsProp,\n defaultAttachments,\n onAttachmentsChange,\n accept,\n multiple = true,\n maxAttachments,\n maxFileSize,\n paste = true,\n pasteAccept,\n clearOnSubmit = true,\n onAttachmentReject,\n dropzone = true,\n apiRef,\n onBlurCapture,\n ...divProps\n } = props;\n const effectiveMaterial = material || panelBackground;\n\n const isValueControlled = valueProp != null;\n const [valueUncontrolled, setValueUncontrolled] = React.useState<string>(defaultValue);\n const value = isValueControlled ? valueProp : valueUncontrolled;\n\n const isOpenControlled = openProp != null;\n const [openUncontrolled, setOpenUncontrolled] = React.useState<boolean>(defaultOpen);\n const open = isOpenControlled ? openProp : openUncontrolled;\n\n // Treat `attachments` as controlled if the prop is provided, even if its value is `undefined`.\n // This avoids switching between controlled and uncontrolled when a consumer sets\n // `attachments={undefined}` to clear attachments. In that case we normalize to an empty array.\n const isAttachmentsControlled = 'attachments' in props;\n const [attachmentsUncontrolled, setAttachmentsUncontrolled] = React.useState<ChatbarAttachment[]>(() => defaultAttachments ?? []);\n const attachments = React.useMemo(\n () => (isAttachmentsControlled ? (attachmentsProp ?? []) : attachmentsUncontrolled),\n [isAttachmentsControlled, attachmentsProp, attachmentsUncontrolled],\n );\n\n // `id` changes on every announcement so identical messages still update the live region\n const [announcement, setAnnouncementState] = React.useState({ text: '', id: 0 });\n const announce = React.useCallback((text: string) => setAnnouncementState((prev) => ({ text, id: prev.id + 1 })), []);\n\n const rootRef = React.useRef<HTMLDivElement>(null);\n const composedRootRef = useComposedRefs(forwardedRef, rootRef);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n // Blur-collapse guards: `pickerOpenRef` is true while the native dialog is open,\n // `pressGuardRef` covers the gap between pointerdown on a trigger and its click\n // (Safari blurs the textarea before the click fires).\n const pickerOpenRef = React.useRef(false);\n const pressGuardRef = React.useRef(false);\n const pressGuardTimerRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const pickerRef = React.useRef<{ patterns: string[]; multiple: boolean } | null>(null);\n\n const acceptKey = toArray(accept).join(',');\n const pasteAcceptKey = toArray(pasteAccept).join(',');\n const accepts = React.useMemo(() => toArray(acceptKey), [acceptKey]);\n const pasteAccepts = React.useMemo(() => (pasteAcceptKey ? toArray(pasteAcceptKey) : accepts), [pasteAcceptKey, accepts]);\n\n // Latest props/state for stable callbacks. Synced during render (not in an effect) so\n // child layout effects that call setOpen/setValue see this render's handlers.\n const snapshot = {\n value,\n attachments,\n accepts,\n pasteAccepts,\n multiple,\n maxAttachments,\n maxFileSize,\n disabled,\n readOnly,\n expandOn,\n isValueControlled,\n isOpenControlled,\n isAttachmentsControlled,\n onValueChange,\n onOpenChange,\n onAttachmentsChange,\n onAttachmentReject,\n onSubmit,\n };\n const latest = React.useRef(snapshot);\n // eslint-disable-next-line react-hooks/refs -- read only in callbacks/effects; see comment above\n latest.current = snapshot;\n\n // Attachments set during the current event, before Root re-renders. Cleared at the end\n // of the task so a controlled parent that rejects the change is not overridden.\n const pendingAttachmentsRef = React.useRef<ChatbarAttachment[] | null>(null);\n const getAttachments = React.useCallback(() => pendingAttachmentsRef.current ?? latest.current.attachments, []);\n\n const setOpen = React.useCallback((next: boolean) => {\n if (!latest.current.isOpenControlled) setOpenUncontrolled(next);\n latest.current.onOpenChange?.(next);\n }, []);\n\n const setValue = React.useCallback((next: string) => {\n if (!latest.current.isValueControlled) setValueUncontrolled(next);\n latest.current.onValueChange?.(next);\n }, []);\n\n const setAttachments = React.useCallback((next: ChatbarAttachment[]) => {\n // Back-to-back updates in one event must see each other\n pendingAttachmentsRef.current = next;\n queueMicrotask(() => {\n pendingAttachmentsRef.current = null;\n });\n if (!latest.current.isAttachmentsControlled) setAttachmentsUncontrolled(next);\n latest.current.onAttachmentsChange?.(next);\n }, []);\n\n // Object URLs Chatbar created and still owns\n const ownedUrlsRef = React.useRef<Set<string>>(new Set());\n\n const addFiles = React.useCallback(\n (files: File[], patterns: string[], multiple: boolean = latest.current.multiple): number => {\n const cfg = latest.current;\n if (cfg.disabled || cfg.readOnly || files.length === 0) return 0;\n\n const current = getAttachments();\n const next: ChatbarAttachment[] = [];\n const rejected: ChatbarAttachmentRejection[] = [];\n const remainingSlots = typeof cfg.maxAttachments === 'number' ? Math.max(cfg.maxAttachments - current.length, 0) : Infinity;\n const perActionLimit = multiple ? Infinity : 1;\n\n for (const file of files) {\n if (next.length >= remainingSlots || next.length >= perActionLimit) {\n rejected.push({ file, reason: 'count' });\n continue;\n }\n if (typeof cfg.maxFileSize === 'number' && file.size > cfg.maxFileSize) {\n rejected.push({ file, reason: 'size' });\n continue;\n }\n if (!matchesAccept(file, patterns)) {\n rejected.push({ file, reason: 'type' });\n continue;\n }\n const url = isImageLike(file.name, file.type) ? URL.createObjectURL(file) : undefined;\n if (url) ownedUrlsRef.current.add(url);\n next.push({ id: createAttachmentId(), name: file.name, size: file.size, type: file.type, file, url, status: 'idle' });\n }\n\n const messages: string[] = [];\n if (next.length > 0) {\n setAttachments(current.concat(next));\n if (cfg.expandOn !== 'none') setOpen(true);\n messages.push(`${plural(next.length, 'file')} attached.`);\n }\n if (rejected.length > 0) {\n cfg.onAttachmentReject?.(rejected);\n messages.push(`${plural(rejected.length, 'file')} could not be attached.`);\n }\n if (messages.length > 0) announce(messages.join(' '));\n return next.length;\n },\n [getAttachments, setAttachments, setOpen, announce],\n );\n\n const appendFiles = React.useCallback((files: File[]) => addFiles(files, latest.current.accepts), [addFiles]);\n const appendFilesFromPaste = React.useCallback((files: File[]) => addFiles(files, latest.current.pasteAccepts), [addFiles]);\n\n const removeAttachment = React.useCallback(\n (id: string) => {\n const current = getAttachments();\n const removed = current.find((a) => a.id === id);\n if (!removed) return;\n setAttachments(current.filter((a) => a.id !== id));\n announce(`Removed ${removed.name}.`);\n },\n [getAttachments, setAttachments, announce],\n );\n\n const submit = React.useCallback(\n (clear: boolean) => {\n const cfg = latest.current;\n if (cfg.disabled || cfg.readOnly) return false;\n const current = getAttachments();\n if (!hasText(cfg.value) && current.length === 0) return false;\n const payload = { value: cfg.value, attachments: current };\n // Hand preview URLs to the consumer only when they leave the chatbar; URLs still\n // rendered here stay owned so removing them later revokes them\n if (clear && cfg.onSubmit) {\n for (const att of current) if (att.url) ownedUrlsRef.current.delete(att.url);\n }\n cfg.onSubmit?.(payload);\n if (clear) {\n setValue('');\n setAttachments([]);\n }\n return true;\n },\n [getAttachments, setValue, setAttachments],\n );\n\n // Revoke owned object URLs that are no longer referenced by current attachments\n React.useEffect(() => {\n const owned = ownedUrlsRef.current;\n if (owned.size === 0) return;\n const current = new Set(attachments.map((a) => a.url));\n for (const url of Array.from(owned)) {\n if (!current.has(url)) {\n URL.revokeObjectURL(url);\n owned.delete(url);\n }\n }\n }, [attachments]);\n\n // On unmount, revoke URLs only when Chatbar owns the attachment list;\n // controlled attachments may still be rendered by the parent.\n React.useEffect(() => {\n const owned = ownedUrlsRef.current;\n return () => {\n if (latest.current.isAttachmentsControlled) return;\n for (const url of Array.from(owned)) URL.revokeObjectURL(url);\n owned.clear();\n };\n }, []);\n\n const openFilePicker = React.useCallback((options?: FilePickerOptions) => {\n const cfg = latest.current;\n const input = fileInputRef.current;\n // The picker guard takes over from the press guard\n clearTimeout(pressGuardTimerRef.current);\n pressGuardRef.current = false;\n if (!input || cfg.disabled || cfg.readOnly) return;\n const patterns = options?.accept != null ? toArray(options.accept) : cfg.accepts;\n const multiple = options?.multiple ?? cfg.multiple;\n pickerRef.current = { patterns, multiple };\n input.accept = patterns.join(',');\n input.multiple = multiple;\n pickerOpenRef.current = true;\n input.click();\n // Browsers block the dialog outside a user gesture; if the window kept focus,\n // no dialog opened and no focus/cancel/change event will clear the guard\n setTimeout(() => {\n if (document.hasFocus()) pickerOpenRef.current = false;\n }, 1000);\n }, []);\n\n const beginFilePickerPress = React.useCallback(() => {\n // On touch (notably iOS), the compatibility mousedown, blur and click arrive in later\n // tasks than pointerup, so hold the guard until the click or a timeout\n pressGuardRef.current = true;\n clearTimeout(pressGuardTimerRef.current);\n pressGuardTimerRef.current = setTimeout(() => {\n pressGuardRef.current = false;\n }, 800);\n }, []);\n\n React.useEffect(() => () => clearTimeout(pressGuardTimerRef.current), []);\n\n // Clear the picker guard when the dialog closes, whichever way it closes\n React.useEffect(() => {\n const input = fileInputRef.current;\n const reset = () => {\n pickerOpenRef.current = false;\n };\n window.addEventListener('focus', reset);\n input?.addEventListener('cancel', reset);\n return () => {\n window.removeEventListener('focus', reset);\n input?.removeEventListener('cancel', reset);\n };\n }, []);\n\n const handleFileInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n const files = Array.from(input.files ?? []);\n const picker = pickerRef.current;\n addFiles(files, picker?.patterns ?? latest.current.accepts, picker?.multiple);\n pickerOpenRef.current = false;\n pickerRef.current = null;\n // Reset so selecting the same file again still fires change\n input.value = '';\n },\n [addFiles],\n );\n\n const handleBlurCapture = React.useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onBlurCapture?.(event);\n const cfg = latest.current;\n const rootEl = rootRef.current;\n if (!rootEl || cfg.expandOn === 'none') return;\n const nextTarget = event.relatedTarget as Node | null;\n if (nextTarget && rootEl.contains(nextTarget)) return;\n if (pickerOpenRef.current || pressGuardRef.current) return;\n if (!hasText(cfg.value) && getAttachments().length === 0) setOpen(false);\n },\n [onBlurCapture, setOpen, getAttachments],\n );\n\n const handleDrop = React.useCallback((files: File[]) => {\n appendFiles(files);\n }, [appendFiles]);\n\n // Validation happens in addFiles so drop, paste and picker share one rule set\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: handleDrop,\n // Drop any earlier message so it is not re-announced when the drag hint goes away\n onDragEnter: () => announce(''),\n noClick: true,\n noKeyboard: true,\n // Textarea handles paste itself; letting the dropzone see it attaches twice\n noPaste: true,\n disabled: !dropzone || disabled || readOnly,\n });\n const dragActive = dropzone && isDragActive;\n\n React.useImperativeHandle(\n apiRef,\n () => ({\n focusTextarea: () => textareaRef.current?.focus({ preventScroll: true }),\n openFilePicker: () => openFilePicker(),\n }),\n [openFilePicker],\n );\n\n // Click-to-focus: focus textarea when clicking non-interactive areas inside the container\n const handleContainerPointerDown = React.useCallback(\n (event: React.PointerEvent) => {\n if (disabled) return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n const target = event.target;\n if (target instanceof Element && target.closest('button, [role=\"button\"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex=\"-1\"])')) return;\n event.preventDefault();\n textareaRef.current?.focus({ preventScroll: true });\n },\n [disabled],\n );\n\n const contextValue = React.useMemo<ChatbarContextValue>(\n () => ({\n open,\n setOpen,\n setValue,\n size,\n expandOn,\n minLines,\n maxLines,\n sendMode,\n disabled,\n readOnly,\n paste,\n clearOnSubmit,\n multiple,\n textareaRef,\n attachments,\n removeAttachment,\n submit,\n appendFiles,\n appendFilesFromPaste,\n openFilePicker,\n beginFilePickerPress,\n }),\n [\n open, setOpen, setValue, size, expandOn, minLines, maxLines, sendMode, disabled, readOnly, paste,\n clearOnSubmit, multiple, attachments, removeAttachment, submit, appendFiles, appendFilesFromPaste,\n openFilePicker, beginFilePickerPress,\n ],\n );\n\n return (\n <ChatbarContext.Provider value={contextValue}>\n <ChatbarValueContext.Provider value={value}>\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <div\n {...divProps}\n ref={composedRootRef}\n className={classNames('rt-ChatbarRoot', `rt-r-size-${size}`, className)}\n style={{ position: 'relative', width, maxWidth, ...style }}\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n data-readonly={readOnly ? '' : undefined}\n data-drop-active={dragActive ? '' : undefined}\n data-accent-color={color}\n data-radius={radius}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n onBlurCapture={handleBlurCapture}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n tabIndex={-1}\n aria-hidden\n style={{ display: 'none' }}\n onChange={handleFileInputChange}\n />\n <div {...(dropzone ? getRootProps() : {})} style={{ width: '100%', height: '100%' }} onPointerDown={handleContainerPointerDown}>\n <m.div\n className={classNames('rt-ChatbarBox', `rt-variant-${variant ?? 'surface'}`)}\n style={{ position: 'relative' }}\n data-accent-color={color}\n data-radius={radius}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n layout\n transition={LAYOUT_TRANSITION}\n >\n <m.div className=\"rt-ChatbarGrid\" layout=\"position\" transition={LAYOUT_TRANSITION}>\n {children}\n </m.div>\n {dragActive && (\n <div className=\"rt-ChatbarDropOverlay\" aria-hidden>\n <div className=\"rt-ChatbarDropContent\">\n <Text color=\"gray\" size={size} weight=\"medium\">\n Drop files here to attach\n </Text>\n </div>\n </div>\n )}\n </m.div>\n </div>\n <VisuallyHidden role=\"status\" aria-live=\"polite\">\n {dragActive ? 'Drop files here to attach.' : <span key={announcement.id}>{announcement.text}</span>}\n </VisuallyHidden>\n </div>\n </MotionConfig>\n </LazyMotion>\n </ChatbarValueContext.Provider>\n </ChatbarContext.Provider>\n );\n});\nRoot.displayName = 'Chatbar.Root';\n\n/**\n * Multi-line text input for Chatbar.\n * - Uses onChange to control value and avoid duplicate updates.\n * - Auto-resizes between minLines and maxLines.\n * - Expands on focus/overflow per `expandOn`.\n * - Paste-to-attach: when `paste` is enabled on Root, pasting files adds attachments.\n * - Provide `aria-label` or `aria-labelledby` for an accessible name.\n */\ninterface TextareaProps extends Omit<React.ComponentPropsWithoutRef<'textarea'>, 'size' | 'rows' | 'value' | 'defaultValue'> {\n asChild?: boolean;\n /**\n * When true, pressing Enter submits (Shift+Enter inserts a newline).\n * Works with every `sendMode`. Defaults to false.\n */\n submitOnEnter?: boolean;\n}\n\n/**\n * Chatbar multi-line text input.\n *\n * Behavior\n * - Controls the Chatbar value via React onChange.\n * - Auto-resizes between minLines and maxLines in a single layout effect, which\n * also opens the Chatbar when content overflows the compact height and\n * `expandOn` is `overflow` or `both`.\n * - Consumer handlers run first; calling `preventDefault` in `onKeyDown` or\n * `onPaste` skips the built-in submit or attach behavior.\n *\n * Accessibility\n * - Consumers should provide labeling via aria-label or aria-labelledby\n * on this component, as no implicit label is rendered.\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>((props, forwardedRef) => {\n const {\n className,\n style,\n asChild,\n onFocus,\n onChange,\n onPaste,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n submitOnEnter = false,\n ...textareaProps\n } = props;\n const ctx = useChatbarContext();\n const value = React.useContext(ChatbarValueContext);\n const { open, minLines, maxLines, expandOn, disabled, readOnly, setOpen, setValue, textareaRef, paste, appendFilesFromPaste, size, submit, clearOnSubmit } = ctx;\n const composedRef = useComposedRefs(forwardedRef, textareaRef);\n\n // Cached metrics to avoid repeated getComputedStyle calls\n const lineHeightRef = React.useRef(0);\n const paddingRef = React.useRef(0);\n const composingRef = React.useRef(false);\n\n const sizingRef = React.useRef({ open, minLines, maxLines });\n // Declared before the sizing effect so it runs first in the same commit\n useIsomorphicLayoutEffect(() => {\n sizingRef.current = { open, minLines, maxLines };\n }, [open, minLines, maxLines]);\n\n const recomputeMetrics = React.useCallback(() => {\n const el = textareaRef.current;\n if (!el) return;\n const computedStyle = window.getComputedStyle(el);\n lineHeightRef.current = parseFloat(computedStyle.lineHeight) || 20;\n paddingRef.current = (parseFloat(computedStyle.paddingTop) || 0) + (parseFloat(computedStyle.paddingBottom) || 0);\n }, [textareaRef]);\n\n // Sizes `el` for the given open state; caller must have set height to 'auto' first\n const applyHeight = React.useCallback((el: HTMLTextAreaElement, isOpen: boolean) => {\n const { minLines: min, maxLines: max } = sizingRef.current;\n const lineHeight = lineHeightRef.current;\n const padding = paddingRef.current;\n const minHeight = Math.ceil((isOpen ? min : 1) * lineHeight) + padding;\n const maxHeight = Math.ceil((isOpen ? max : 1) * lineHeight) + padding;\n const contentHeight = Math.max(el.scrollHeight, minHeight);\n el.style.height = `${Math.min(contentHeight, maxHeight)}px`;\n const overflowing = contentHeight > maxHeight;\n el.style.overflowY = overflowing ? 'auto' : 'hidden';\n el.style.maxHeight = overflowing ? `${maxHeight}px` : 'none';\n }, []);\n\n // Typography depends on size\n useIsomorphicLayoutEffect(() => {\n recomputeMetrics();\n }, [recomputeMetrics, size]);\n\n // Single place for sizing and overflow auto-open: one height reset, one scrollHeight read\n useIsomorphicLayoutEffect(() => {\n const el = textareaRef.current;\n if (!el) return;\n if (lineHeightRef.current === 0) recomputeMetrics();\n withoutPlaceholder(el, () => {\n el.style.height = 'auto';\n let isOpen = open;\n if (!open && (expandOn === 'overflow' || expandOn === 'both')) {\n const compactHeight = Math.ceil(lineHeightRef.current) + paddingRef.current;\n if (el.scrollHeight > compactHeight + 1) {\n isOpen = true;\n setOpen(true);\n }\n }\n applyHeight(el, isOpen);\n });\n }, [value, open, expandOn, minLines, maxLines, size, setOpen, textareaRef, recomputeMetrics, applyHeight]);\n\n // Width changes re-wrap text; re-measure only when the width actually changes\n React.useEffect(() => {\n const el = textareaRef.current;\n if (!el || typeof ResizeObserver === 'undefined') return;\n let prevWidth = -1;\n const ro = new ResizeObserver((entries) => {\n const width = entries[0]?.contentRect.width ?? 0;\n if (width === prevWidth) return;\n const first = prevWidth === -1;\n prevWidth = width;\n if (first) return;\n recomputeMetrics();\n withoutPlaceholder(el, () => {\n el.style.height = 'auto';\n applyHeight(el, sizingRef.current.open);\n });\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [textareaRef, recomputeMetrics, applyHeight]);\n\n // Dev-only warning if no accessible name is provided\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n const hasLabel = textareaProps['aria-label'] != null || textareaProps['aria-labelledby'] != null;\n if (!hasLabel) {\n console.warn('[Chatbar.Textarea] Provide aria-label or aria-labelledby to ensure the control has an accessible name.');\n }\n // warn only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleFocus = React.useCallback<React.FocusEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onFocus?.(event);\n if (disabled || readOnly) return;\n if ((expandOn === 'focus' || expandOn === 'both') && !open) setOpen(true);\n },\n [disabled, readOnly, expandOn, open, setOpen, onFocus],\n );\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLTextAreaElement>>(\n (event) => {\n setValue(event.currentTarget.value);\n onChange?.(event);\n },\n [setValue, onChange],\n );\n\n const handlePaste = React.useCallback<React.ClipboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onPaste?.(event);\n if (event.defaultPrevented || !paste || disabled || readOnly) return;\n const files = Array.from(event.clipboardData?.items ?? [])\n .filter((item) => item.kind === 'file')\n .map((item) => item.getAsFile())\n .filter((f): f is File => !!f);\n if (files.length === 0) return;\n // Suppress the filename/text representation only when a file was actually attached\n if (appendFilesFromPaste(files) > 0) event.preventDefault();\n },\n [paste, disabled, readOnly, onPaste, appendFilesFromPaste],\n );\n\n const handleCompositionStart = React.useCallback<React.CompositionEventHandler<HTMLTextAreaElement>>(\n (event) => {\n composingRef.current = true;\n onCompositionStart?.(event);\n },\n [onCompositionStart],\n );\n\n const handleCompositionEnd = React.useCallback<React.CompositionEventHandler<HTMLTextAreaElement>>(\n (event) => {\n composingRef.current = false;\n onCompositionEnd?.(event);\n },\n [onCompositionEnd],\n );\n\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || !submitOnEnter) return;\n if (event.key !== 'Enter' || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;\n // Safari fires the IME-confirming Enter after compositionend with keyCode 229\n if (composingRef.current || event.nativeEvent.isComposing || event.nativeEvent.keyCode === 229) return;\n // Plain Enter never inserts a newline when submitOnEnter is on, even with nothing to send\n event.preventDefault();\n submit(clearOnSubmit);\n },\n [submitOnEnter, onKeyDown, submit, clearOnSubmit],\n );\n\n const Comp = asChild ? Slot : 'textarea';\n return (\n <m.div className={classNames('rt-ChatbarField', 'rt-ChatbarTextarea', className)} layout=\"position\" transition={LAYOUT_TRANSITION}>\n <Comp\n {...textareaProps}\n ref={composedRef}\n className=\"rt-ChatbarInput\"\n value={value}\n onChange={handleChange}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n disabled={disabled}\n readOnly={readOnly}\n rows={open ? minLines : 1}\n spellCheck={textareaProps.spellCheck ?? true}\n autoCorrect={textareaProps.autoCorrect ?? 'on'}\n style={style}\n />\n </m.div>\n );\n});\nTextarea.displayName = 'Chatbar.Textarea';\n\ninterface InlineSlotProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst InlineStart = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineStart', className)}>\n {children}\n </Comp>\n );\n});\nInlineStart.displayName = 'Chatbar.InlineStart';\n\nconst InlineEnd = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineEnd', className)}>\n {children}\n </Comp>\n );\n});\nInlineEnd.displayName = 'Chatbar.InlineEnd';\n\n/**\n * Renders a horizontally scrollable list of attachments above the inline row.\n * Hidden when empty unless `forceMount`. Override per-item with `renderAttachment`.\n */\ninterface AttachmentsRowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n forceMount?: boolean;\n /** If provided, custom-render a tile; otherwise default tile is used */\n renderAttachment?: (attachment: ChatbarAttachment) => React.ReactNode;\n}\n\nconst AttachmentsRow = React.forwardRef<HTMLDivElement, AttachmentsRowProps>((props, forwardedRef) => {\n const { asChild, forceMount, renderAttachment, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.attachments.length === 0 && !forceMount) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <m.div layout=\"position\" transition={LAYOUT_TRANSITION}>\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarAttachmentsRow', className)} role=\"list\" aria-label={divProps['aria-label'] ?? 'Attachments'}>\n <ScrollArea className=\"rt-ChatbarScrollArea\" scrollbars=\"horizontal\" size=\"1\">\n <Flex align=\"center\" gap=\"2\" minWidth=\"fit-content\">\n {ctx.attachments.map((att) => (\n <Attachment key={att.id} attachment={att} asChild={!!renderAttachment}>\n {renderAttachment?.(att)}\n </Attachment>\n ))}\n </Flex>\n </ScrollArea>\n </Comp>\n </m.div>\n );\n});\nAttachmentsRow.displayName = 'Chatbar.AttachmentsRow';\n\n/** Default tile renderer for a single attachment. */\ninterface AttachmentProps extends React.ComponentPropsWithoutRef<'div'> {\n attachment: ChatbarAttachment;\n asChild?: boolean;\n}\n\nconst STATUS_LABEL: Partial<Record<AttachmentStatus, string>> = { uploading: 'uploading', error: 'failed to upload' };\n\nconst Attachment = React.forwardRef<HTMLDivElement, AttachmentProps>((props, forwardedRef) => {\n const { attachment, asChild, className, children, ...divProps } = props;\n const ctx = useChatbarContext();\n const Comp = asChild ? Slot : 'div';\n const isImage = !!attachment.url && isImageLike(attachment.name, attachment.type);\n const sizeLabel = `${Math.ceil(attachment.size / 1024)} KB`;\n const statusLabel = attachment.status ? STATUS_LABEL[attachment.status] : undefined;\n const locked = ctx.disabled || ctx.readOnly;\n\n const handleRemove = (event: React.MouseEvent<HTMLButtonElement>) => {\n // Move focus before the tile unmounts so keyboard users are not dropped to <body>\n const tile = event.currentTarget.closest('[role=\"listitem\"]');\n const tiles = tile?.parentElement ? Array.from(tile.parentElement.children) : [];\n const index = tile ? tiles.indexOf(tile) : -1;\n const neighbour = tiles[index + 1] ?? tiles[index - 1];\n const nextButton = neighbour?.querySelector<HTMLButtonElement>('.rt-ChatbarAttachmentRemove');\n if (nextButton) nextButton.focus();\n else ctx.textareaRef.current?.focus({ preventScroll: true });\n ctx.removeAttachment(attachment.id);\n };\n\n return (\n <Comp\n {...divProps}\n ref={forwardedRef}\n className={classNames('rt-ChatbarAttachment', className)}\n role=\"listitem\"\n data-kind={isImage ? 'image' : 'file'}\n data-status={attachment.status}\n title={attachment.name}\n >\n {children ?? (\n <Flex align=\"center\" gap=\"2\" pr={!isImage ? '6' : undefined}>\n <div className=\"rt-ChatbarAttachmentPreview\" aria-hidden>\n {isImage ? <img className=\"rt-ChatbarAttachmentImage\" src={attachment.url} alt=\"\" /> : <FileTextIcon />}\n </div>\n {isImage ? (\n <VisuallyHidden>\n {attachment.name}, {sizeLabel}\n {statusLabel ? `, ${statusLabel}` : ''}\n </VisuallyHidden>\n ) : (\n <Flex direction=\"column\" gap=\"0\" minWidth=\"0\">\n <Text size={ctx.size} weight=\"medium\" truncate>\n {attachment.name}\n </Text>\n <Text size=\"1\" color={attachment.status === 'error' ? 'red' : 'gray'}>\n {sizeLabel}\n {statusLabel ? ` \u00B7 ${statusLabel}` : ''}\n </Text>\n </Flex>\n )}\n {!locked && (\n <IconButton\n className=\"rt-ChatbarAttachmentRemove\"\n aria-label={`Remove ${attachment.name}`}\n size=\"1\"\n variant=\"classic\"\n highContrast\n color=\"gray\"\n onClick={handleRemove}\n >\n <CloseIcon />\n </IconButton>\n )}\n </Flex>\n )}\n </Comp>\n );\n});\nAttachment.displayName = 'Chatbar.Attachment';\n\ninterface AttachTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n /** Overrides Root `accept` for files chosen through this trigger */\n accept?: string | string[];\n multiple?: boolean;\n}\n\nconst AttachTrigger = React.forwardRef<HTMLButtonElement, AttachTriggerProps>((props, forwardedRef) => {\n const { asChild, accept, multiple, disabled: disabledProp, onPointerDown, onClick, ...buttonProps } = props;\n const ctx = useChatbarContext();\n const disabled = disabledProp || ctx.disabled || ctx.readOnly;\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n {...buttonProps}\n ref={forwardedRef}\n className={classNames('rt-ChatbarAttachTrigger', buttonProps.className)}\n type={buttonProps.type ?? 'button'}\n aria-label={buttonProps['aria-label'] ?? 'Add attachments'}\n disabled={disabled}\n onPointerDown={(event: React.PointerEvent<HTMLButtonElement>) => {\n onPointerDown?.(event);\n if (!disabled && !event.defaultPrevented) ctx.beginFilePickerPress();\n }}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (disabled || event.defaultPrevented) return;\n ctx.openFilePicker({ accept, multiple });\n }}\n />\n );\n});\nAttachTrigger.displayName = 'Chatbar.AttachTrigger';\n\ninterface RowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst Row = React.forwardRef<HTMLDivElement, RowProps>((props, forwardedRef) => {\n const { asChild, children, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (!ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <m.div layout=\"position\" transition={LAYOUT_TRANSITION}>\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRow', className)}>\n <Flex align=\"center\" justify=\"between\" width=\"100%\">\n {children}\n </Flex>\n </Comp>\n </m.div>\n );\n});\nRow.displayName = 'Chatbar.Row';\n\ntype RowSlotProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst RowStart = React.forwardRef<HTMLDivElement, RowSlotProps>((props, forwardedRef) => {\n const { className, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowStart', className)} />;\n});\nRowStart.displayName = 'Chatbar.RowStart';\n\nconst RowEnd = React.forwardRef<HTMLDivElement, RowSlotProps>((props, forwardedRef) => {\n const { className, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowEnd', className)} />;\n});\nRowEnd.displayName = 'Chatbar.RowEnd';\n\ntype SendProps = Omit<IconButtonProps, 'aria-label' | 'aria-labelledby'> & {\n /** Optional override for accessible name. Defaults to \"Send\". */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n asChild?: boolean;\n /** Clear message and attachments after sending. Defaults to Root `clearOnSubmit`. */\n clearOnSend?: boolean;\n};\n\nconst Send = React.forwardRef<HTMLButtonElement, SendProps>((props, forwardedRef) => {\n const {\n asChild,\n clearOnSend,\n disabled,\n children,\n style,\n className,\n size: sizeProp,\n variant: variantProp,\n tabIndex,\n onClick,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n ...buttonProps\n } = props;\n const ctx = useChatbarContext();\n const value = React.useContext(ChatbarValueContext);\n\n if (ctx.sendMode === 'never') return null;\n\n const hasContent = hasText(value) || ctx.attachments.length > 0;\n const visible = ctx.sendMode === 'always' || hasContent;\n const inactive = disabled || ctx.disabled || ctx.readOnly || !hasContent;\n\n const labelProps: { 'aria-label': string } | { 'aria-labelledby': string } = ariaLabelledby\n ? { 'aria-labelledby': ariaLabelledby }\n : { 'aria-label': ariaLabel ?? 'Send' };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || inactive) return;\n const clear = clearOnSend ?? ctx.clearOnSubmit;\n // Clearing hides and disables this button; keep keyboard focus in the composer\n if (ctx.submit(clear) && clear) ctx.textareaRef.current?.focus({ preventScroll: true });\n };\n\n return (\n <IconButton\n {...buttonProps}\n ref={forwardedRef}\n size={sizeProp ?? ctx.size}\n variant={variantProp ?? (ctx.open ? 'solid' : 'ghost')}\n disabled={inactive}\n className={classNames('rt-ChatbarSend', className)}\n style={{ opacity: visible ? 1 : 0, pointerEvents: visible ? undefined : 'none', ...style }}\n // Hidden Send must not be reachable by keyboard or announced\n aria-hidden={visible ? undefined : true}\n tabIndex={visible ? tabIndex : -1}\n asChild={asChild}\n onClick={handleClick}\n {...labelProps}\n >\n {children ?? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n )}\n </IconButton>\n );\n});\nSend.displayName = 'Chatbar.Send';\n\nexport { Root, Textarea, InlineStart, InlineEnd, AttachmentsRow, Attachment, AttachTrigger, Row, RowStart, RowEnd, Send };\nexport type {\n RootProps as ChatbarRootProps,\n TextareaProps as ChatbarTextareaProps,\n InlineSlotProps as ChatbarInlineSlotProps,\n AttachmentsRowProps as ChatbarAttachmentsRowProps,\n AttachmentProps as ChatbarAttachmentProps,\n AttachTriggerProps as ChatbarAttachTriggerProps,\n RowProps as ChatbarRowProps,\n RowSlotProps as ChatbarRowSlotProps,\n SendProps as ChatbarSendProps,\n ChatbarAttachment,\n ChatbarAttachmentRejection,\n ChatbarRejectReason,\n ChatbarSubmitPayload,\n AttachmentStatus as ChatbarAttachmentStatus,\n ExpandOn as ChatbarExpandOn,\n SendMode as ChatbarSendMode,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { LazyMotion, MotionConfig, domAnimation, m } from 'motion/react';\nimport { useComposedRefs } from 'radix-ui/internal';\nimport { useDropzone } from 'react-dropzone';\n\nimport { IconButton, type IconButtonProps } from './icon-button.js';\nimport { CloseIcon, FileTextIcon } from './icons.js';\nimport { Flex } from './flex.js';\nimport { ScrollArea } from './scroll-area.js';\nimport { Slot } from './slot.js';\nimport { Text } from './text.js';\nimport { VisuallyHidden } from './visually-hidden.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { accentColors } from '../props/color.prop.js';\nimport type { radii } from '../props/radius.prop.js';\n\n// Avoid SSR warnings by using an isomorphic layout effect\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\n/**\n * Runs `measure` with the placeholder taken out of layout, so a height read\n * reflects the value alone.\n *\n * A textarea with an empty value lays its placeholder out as real text, so\n * `scrollHeight` reports the placeholder wrapped at whatever width the field\n * has at that instant. That sizes an empty bar to the suggestion showing in it\n * rather than to `minLines`, and when the read lands before the field has its\n * final width -- a panel still animating open, a flex parent whose basis is 0\n * -- it wraps that text at a fraction of the real width and opens the bar at\n * `maxLines`. The first keystroke takes the placeholder out of layout and the\n * height snaps back, which is what made the bug look intermittent rather than\n * simply wrong.\n *\n * The reset to 'auto' and the `scrollHeight` read sit in different functions\n * here, so the whole measurement window is wrapped rather than a single read.\n * Costs one extra style recalc on a path that is already forcing a reflow.\n */\nfunction withoutPlaceholder(el: HTMLTextAreaElement, measure: () => void): void {\n const { placeholder } = el;\n if (!placeholder) {\n measure();\n return;\n }\n el.placeholder = '';\n try {\n measure();\n } finally {\n el.placeholder = placeholder;\n }\n}\n\n// Shared layout spring; hoisted so every motion node receives the same object\nconst LAYOUT_TRANSITION = { layout: { type: 'spring', visualDuration: 0.15, bounce: 0.1 } } as const;\n\ntype ExpandOn = 'none' | 'focus' | 'overflow' | 'both';\ntype SendMode = 'always' | 'whenDirty' | 'never';\n\n// Attachments\n/** Status flag for attachment lifecycle. */\ntype AttachmentStatus = 'idle' | 'uploading' | 'error' | 'done';\n/**\n * Attachment data model used by Chatbar.\n * - `file` exposes the original File object for uploads and processing.\n * - `url` is an object URL used for image previews. Chatbar revokes it when the\n * attachment is removed; once an attachment is handed to `onSubmit`, the\n * consumer owns the URL and is responsible for revoking it.\n */\ninterface ChatbarAttachment {\n id: string;\n name: string;\n size: number;\n type: string;\n /** Original File object for uploads and processing */\n file: File;\n url?: string;\n status?: AttachmentStatus;\n progress?: number;\n meta?: Record<string, unknown>;\n}\n\ntype ChatbarRejectReason = 'type' | 'size' | 'count';\ninterface ChatbarAttachmentRejection {\n file: File;\n reason: ChatbarRejectReason;\n}\n\ninterface ChatbarSubmitPayload {\n value: string;\n attachments: ChatbarAttachment[];\n}\n\ninterface FilePickerOptions {\n accept?: string | string[];\n multiple?: boolean;\n}\n\ninterface ChatbarContextValue {\n open: boolean;\n setOpen(next: boolean): void;\n\n setValue(next: string): void;\n\n size: '1' | '2' | '3';\n expandOn: ExpandOn;\n minLines: number;\n maxLines: number;\n sendMode: SendMode;\n disabled?: boolean;\n readOnly?: boolean;\n paste: boolean;\n clearOnSubmit: boolean;\n multiple: boolean;\n\n textareaRef: React.RefObject<HTMLTextAreaElement | null>;\n\n attachments: ChatbarAttachment[];\n removeAttachment(id: string): void;\n\n /** Validates and submits; returns false when there was nothing to submit */\n submit(clear: boolean): boolean;\n appendFiles(files: File[]): number;\n appendFilesFromPaste(files: File[]): number;\n openFilePicker(options?: FilePickerOptions): void;\n /** Guards blur-collapse between pointerdown on a picker trigger and its click */\n beginFilePickerPress(): void;\n}\n\nconst ChatbarContext = React.createContext<ChatbarContextValue | null>(null);\n// Value lives in its own context so keystrokes only re-render parts that read it\nconst ChatbarValueContext = React.createContext<string>('');\n\nconst useChatbarContext = () => {\n const ctx = React.useContext(ChatbarContext);\n if (!ctx) throw new Error('Chatbar context not found. Wrap parts in <Chatbar.Root>.');\n return ctx;\n};\n\nconst toArray = (val: string | string[] | undefined) =>\n Array.isArray(val) ? val : typeof val === 'string' ? val.split(',').map((s) => s.trim()).filter(Boolean) : [];\n\nconst matchesAccept = (file: File, patterns: string[]) => {\n if (patterns.length === 0) return true;\n const mime = file.type.toLowerCase();\n const name = file.name.toLowerCase();\n for (const patRaw of patterns) {\n const pat = patRaw.toLowerCase();\n if (pat.includes('/')) {\n const [type, subtype] = pat.split('/');\n const [fmType, fmSubtype] = mime.split('/');\n if (type === '*' || (type === fmType && (subtype === '*' || subtype === fmSubtype))) return true;\n } else if (pat.startsWith('.')) {\n if (name.endsWith(pat)) return true;\n }\n }\n return false;\n};\n\nconst IMAGE_EXT_RE = /\\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i;\nconst isImageLike = (name: string, type: string) => (type || '').toLowerCase().startsWith('image/') || IMAGE_EXT_RE.test(name);\n\nconst hasText = (value: string) => value.trim().length > 0;\n\nconst plural = (n: number, word: string) => `${n} ${word}${n === 1 ? '' : 's'}`;\n\nlet attachmentCounter = 0;\nconst createAttachmentId = () => `chatbar-attachment-${Date.now()}-${++attachmentCounter}`;\n\n/**\n * Chatbar container and state provider.\n *\n * Value & Open\n * - Supports controlled/uncontrolled `value` and `open`.\n *\n * Attachments\n * - Controlled/uncontrolled attachments with client-side filtering.\n * - Filters by `accept`/`pasteAccept`, `multiple`, `maxAttachments`, and `maxFileSize`.\n * - Rejections are reported via `onAttachmentReject`.\n *\n * Submit\n * - `onSubmit({ value, attachments })` emits both message and attachments.\n * - Submitting requires text or at least one attachment.\n * - `clearOnSubmit` clears message and attachments by default.\n */\ninterface ChatbarRootBaseProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n /** When the chatbar expands on its own. `none` leaves open state entirely to the consumer. */\n expandOn?: ExpandOn;\n\n /** Minimum visible lines when expanded (default: 3). The compact state is always one line. */\n minLines?: number;\n /** Maximum number of lines before scrolling (default: 6) */\n maxLines?: number;\n\n /** Controls Send button visibility only. Enter-to-submit is controlled by `Textarea submitOnEnter`. */\n sendMode?: SendMode;\n\n /** Disables text input, submission and every way of adding attachments */\n disabled?: boolean;\n /** Prevents editing, submission and adding attachments */\n readOnly?: boolean;\n\n /** Combined submit payload */\n onSubmit?: (payload: ChatbarSubmitPayload) => void;\n\n size?: '1' | '2' | '3';\n variant?: 'surface' | 'outline' | 'classic' | 'ghost' | 'soft';\n /** Accent color for the control (matches TextArea) */\n color?: (typeof accentColors)[number];\n /** Optional radius override (matches TextArea) */\n radius?: (typeof radii)[number];\n /** Panel/material translucency flags (matches TextArea) */\n panelBackground?: 'solid' | 'translucent';\n material?: 'solid' | 'translucent';\n\n width?: React.CSSProperties['width'];\n maxWidth?: React.CSSProperties['maxWidth'];\n\n // Attachments API\n attachments?: ChatbarAttachment[];\n defaultAttachments?: ChatbarAttachment[];\n onAttachmentsChange?: (attachments: ChatbarAttachment[]) => void;\n accept?: string | string[];\n /** Allow more than one file per pick, paste or drop */\n multiple?: boolean;\n maxAttachments?: number;\n maxFileSize?: number;\n paste?: boolean;\n /** Accepted types for pasted files. Replaces `accept` for paste when set. */\n pasteAccept?: string | string[];\n /** Clear message and attachments after submit */\n clearOnSubmit?: boolean;\n onAttachmentReject?: (rejections: ChatbarAttachmentRejection[]) => void;\n\n /**\n * Enables drag-and-drop file uploads when true.\n *\n * When enabled:\n * - Files can be dropped anywhere on the chatbar\n * - Same validation rules apply (accept, multiple, maxFileSize, maxAttachments)\n * - Visual feedback shows during drag operations\n * - Rejected files trigger onAttachmentReject\n *\n * @default true\n */\n dropzone?: boolean;\n\n /**\n * Optional API ref to control Chatbar imperatively without relying on DOM refs.\n * Provides methods to focus the textarea and open the file picker.\n */\n apiRef?: React.Ref<ChatbarApi>;\n}\n\ntype RootElement = React.ElementRef<'div'>;\n/** Imperative API for Chatbar.Root */\nexport interface ChatbarApi {\n /** Focus the textarea input */\n focusTextarea: () => void;\n /** Open the file picker dialog (respects accept/multiple). No-op when disabled or read-only. */\n openFilePicker: () => void;\n}\n/**\n * Chatbar container and state provider.\n *\n * Behavior\n * - Supports controlled and uncontrolled `value` and `open` states via props.\n * - Provides context to subcomponents like `Textarea`, `Row`, and `Send`.\n * - Exposes `data-state`, `data-disabled`, and `data-readonly` attributes for styling.\n *\n * Attachments\n * - Paste-to-attach: when `paste` is enabled, pasting files adds attachments.\n * - Additions and rejections are announced through a polite live region.\n *\n * Dropzone\n * - When `dropzone` is true, enables drag-and-drop file uploads.\n * - Visual feedback via `data-drop-active` attribute during drag operations.\n *\n * Accessibility\n * - Consumers should label the `Textarea` via `aria-label`/`aria-labelledby`.\n */\ninterface RootProps extends ComponentPropsWithout<'div', RemovedProps | 'onSubmit' | 'color'>, ChatbarRootBaseProps {}\n\nconst Root = React.forwardRef<RootElement, RootProps>((props, forwardedRef) => {\n const {\n className,\n style,\n children,\n value: valueProp,\n defaultValue = '',\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n expandOn = 'both',\n minLines = 3,\n maxLines = 6,\n sendMode = 'whenDirty',\n disabled,\n readOnly,\n onSubmit,\n size = '2',\n variant,\n color,\n radius,\n panelBackground,\n material,\n width,\n maxWidth,\n attachments: attachmentsProp,\n defaultAttachments,\n onAttachmentsChange,\n accept,\n multiple = true,\n maxAttachments,\n maxFileSize,\n paste = true,\n pasteAccept,\n clearOnSubmit = true,\n onAttachmentReject,\n dropzone = true,\n apiRef,\n onBlurCapture,\n ...divProps\n } = props;\n const effectiveMaterial = material || panelBackground;\n\n const isValueControlled = valueProp != null;\n const [valueUncontrolled, setValueUncontrolled] = React.useState<string>(defaultValue);\n const value = isValueControlled ? valueProp : valueUncontrolled;\n\n const isOpenControlled = openProp != null;\n const [openUncontrolled, setOpenUncontrolled] = React.useState<boolean>(defaultOpen);\n const open = isOpenControlled ? openProp : openUncontrolled;\n\n // Treat `attachments` as controlled if the prop is provided, even if its value is `undefined`.\n // This avoids switching between controlled and uncontrolled when a consumer sets\n // `attachments={undefined}` to clear attachments. In that case we normalize to an empty array.\n const isAttachmentsControlled = 'attachments' in props;\n const [attachmentsUncontrolled, setAttachmentsUncontrolled] = React.useState<ChatbarAttachment[]>(() => defaultAttachments ?? []);\n const attachments = React.useMemo(\n () => (isAttachmentsControlled ? (attachmentsProp ?? []) : attachmentsUncontrolled),\n [isAttachmentsControlled, attachmentsProp, attachmentsUncontrolled],\n );\n\n // `id` changes on every announcement so identical messages still update the live region\n const [announcement, setAnnouncementState] = React.useState({ text: '', id: 0 });\n const announce = React.useCallback((text: string) => setAnnouncementState((prev) => ({ text, id: prev.id + 1 })), []);\n\n const rootRef = React.useRef<HTMLDivElement>(null);\n const composedRootRef = useComposedRefs(forwardedRef, rootRef);\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n // Blur-collapse guards: `pickerOpenRef` is true while the native dialog is open,\n // `pressGuardRef` covers the gap between pointerdown on a trigger and its click\n // (Safari blurs the textarea before the click fires).\n const pickerOpenRef = React.useRef(false);\n const pressGuardRef = React.useRef(false);\n const pressGuardTimerRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const pickerRef = React.useRef<{ patterns: string[]; multiple: boolean } | null>(null);\n\n const acceptKey = toArray(accept).join(',');\n const pasteAcceptKey = toArray(pasteAccept).join(',');\n const accepts = React.useMemo(() => toArray(acceptKey), [acceptKey]);\n const pasteAccepts = React.useMemo(() => (pasteAcceptKey ? toArray(pasteAcceptKey) : accepts), [pasteAcceptKey, accepts]);\n\n // Latest props/state for stable callbacks. Synced during render (not in an effect) so\n // child layout effects that call setOpen/setValue see this render's handlers.\n const snapshot = {\n value,\n attachments,\n accepts,\n pasteAccepts,\n multiple,\n maxAttachments,\n maxFileSize,\n disabled,\n readOnly,\n expandOn,\n isValueControlled,\n isOpenControlled,\n isAttachmentsControlled,\n onValueChange,\n onOpenChange,\n onAttachmentsChange,\n onAttachmentReject,\n onSubmit,\n };\n const latest = React.useRef(snapshot);\n // eslint-disable-next-line react-hooks/refs -- read only in callbacks/effects; see comment above\n latest.current = snapshot;\n\n // Attachments set during the current event, before Root re-renders. Cleared at the end\n // of the task so a controlled parent that rejects the change is not overridden.\n const pendingAttachmentsRef = React.useRef<ChatbarAttachment[] | null>(null);\n const getAttachments = React.useCallback(() => pendingAttachmentsRef.current ?? latest.current.attachments, []);\n\n const setOpen = React.useCallback((next: boolean) => {\n if (!latest.current.isOpenControlled) setOpenUncontrolled(next);\n latest.current.onOpenChange?.(next);\n }, []);\n\n const setValue = React.useCallback((next: string) => {\n if (!latest.current.isValueControlled) setValueUncontrolled(next);\n latest.current.onValueChange?.(next);\n }, []);\n\n const setAttachments = React.useCallback((next: ChatbarAttachment[]) => {\n // Back-to-back updates in one event must see each other\n pendingAttachmentsRef.current = next;\n queueMicrotask(() => {\n pendingAttachmentsRef.current = null;\n });\n if (!latest.current.isAttachmentsControlled) setAttachmentsUncontrolled(next);\n latest.current.onAttachmentsChange?.(next);\n }, []);\n\n // Object URLs Chatbar created and still owns\n const ownedUrlsRef = React.useRef<Set<string>>(new Set());\n\n const addFiles = React.useCallback(\n (files: File[], patterns: string[], multiple: boolean = latest.current.multiple): number => {\n const cfg = latest.current;\n if (cfg.disabled || cfg.readOnly || files.length === 0) return 0;\n\n const current = getAttachments();\n const next: ChatbarAttachment[] = [];\n const rejected: ChatbarAttachmentRejection[] = [];\n const remainingSlots = typeof cfg.maxAttachments === 'number' ? Math.max(cfg.maxAttachments - current.length, 0) : Infinity;\n const perActionLimit = multiple ? Infinity : 1;\n\n for (const file of files) {\n if (next.length >= remainingSlots || next.length >= perActionLimit) {\n rejected.push({ file, reason: 'count' });\n continue;\n }\n if (typeof cfg.maxFileSize === 'number' && file.size > cfg.maxFileSize) {\n rejected.push({ file, reason: 'size' });\n continue;\n }\n if (!matchesAccept(file, patterns)) {\n rejected.push({ file, reason: 'type' });\n continue;\n }\n const url = isImageLike(file.name, file.type) ? URL.createObjectURL(file) : undefined;\n if (url) ownedUrlsRef.current.add(url);\n next.push({ id: createAttachmentId(), name: file.name, size: file.size, type: file.type, file, url, status: 'idle' });\n }\n\n const messages: string[] = [];\n if (next.length > 0) {\n setAttachments(current.concat(next));\n if (cfg.expandOn !== 'none') setOpen(true);\n messages.push(`${plural(next.length, 'file')} attached.`);\n }\n if (rejected.length > 0) {\n cfg.onAttachmentReject?.(rejected);\n messages.push(`${plural(rejected.length, 'file')} could not be attached.`);\n }\n if (messages.length > 0) announce(messages.join(' '));\n return next.length;\n },\n [getAttachments, setAttachments, setOpen, announce],\n );\n\n const appendFiles = React.useCallback((files: File[]) => addFiles(files, latest.current.accepts), [addFiles]);\n const appendFilesFromPaste = React.useCallback((files: File[]) => addFiles(files, latest.current.pasteAccepts), [addFiles]);\n\n const removeAttachment = React.useCallback(\n (id: string) => {\n const current = getAttachments();\n const removed = current.find((a) => a.id === id);\n if (!removed) return;\n setAttachments(current.filter((a) => a.id !== id));\n announce(`Removed ${removed.name}.`);\n },\n [getAttachments, setAttachments, announce],\n );\n\n const submit = React.useCallback(\n (clear: boolean) => {\n const cfg = latest.current;\n if (cfg.disabled || cfg.readOnly) return false;\n const current = getAttachments();\n if (!hasText(cfg.value) && current.length === 0) return false;\n const payload = { value: cfg.value, attachments: current };\n // Hand preview URLs to the consumer only when they leave the chatbar; URLs still\n // rendered here stay owned so removing them later revokes them\n if (clear && cfg.onSubmit) {\n for (const att of current) if (att.url) ownedUrlsRef.current.delete(att.url);\n }\n cfg.onSubmit?.(payload);\n if (clear) {\n setValue('');\n setAttachments([]);\n }\n return true;\n },\n [getAttachments, setValue, setAttachments],\n );\n\n // Revoke owned object URLs that are no longer referenced by current attachments\n React.useEffect(() => {\n const owned = ownedUrlsRef.current;\n if (owned.size === 0) return;\n const current = new Set(attachments.map((a) => a.url));\n for (const url of Array.from(owned)) {\n if (!current.has(url)) {\n URL.revokeObjectURL(url);\n owned.delete(url);\n }\n }\n }, [attachments]);\n\n // On unmount, revoke URLs only when Chatbar owns the attachment list;\n // controlled attachments may still be rendered by the parent.\n React.useEffect(() => {\n const owned = ownedUrlsRef.current;\n return () => {\n if (latest.current.isAttachmentsControlled) return;\n for (const url of Array.from(owned)) URL.revokeObjectURL(url);\n owned.clear();\n };\n }, []);\n\n const openFilePicker = React.useCallback((options?: FilePickerOptions) => {\n const cfg = latest.current;\n const input = fileInputRef.current;\n // The picker guard takes over from the press guard\n clearTimeout(pressGuardTimerRef.current);\n pressGuardRef.current = false;\n if (!input || cfg.disabled || cfg.readOnly) return;\n const patterns = options?.accept != null ? toArray(options.accept) : cfg.accepts;\n const multiple = options?.multiple ?? cfg.multiple;\n pickerRef.current = { patterns, multiple };\n input.accept = patterns.join(',');\n input.multiple = multiple;\n pickerOpenRef.current = true;\n input.click();\n // Browsers block the dialog outside a user gesture; if the window kept focus,\n // no dialog opened and no focus/cancel/change event will clear the guard\n setTimeout(() => {\n if (document.hasFocus()) pickerOpenRef.current = false;\n }, 1000);\n }, []);\n\n const beginFilePickerPress = React.useCallback(() => {\n // On touch (notably iOS), the compatibility mousedown, blur and click arrive in later\n // tasks than pointerup, so hold the guard until the click or a timeout\n pressGuardRef.current = true;\n clearTimeout(pressGuardTimerRef.current);\n pressGuardTimerRef.current = setTimeout(() => {\n pressGuardRef.current = false;\n }, 800);\n }, []);\n\n React.useEffect(() => () => clearTimeout(pressGuardTimerRef.current), []);\n\n // Clear the picker guard when the dialog closes, whichever way it closes\n React.useEffect(() => {\n const input = fileInputRef.current;\n const reset = () => {\n pickerOpenRef.current = false;\n };\n window.addEventListener('focus', reset);\n input?.addEventListener('cancel', reset);\n return () => {\n window.removeEventListener('focus', reset);\n input?.removeEventListener('cancel', reset);\n };\n }, []);\n\n const handleFileInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const input = event.currentTarget;\n const files = Array.from(input.files ?? []);\n const picker = pickerRef.current;\n addFiles(files, picker?.patterns ?? latest.current.accepts, picker?.multiple);\n pickerOpenRef.current = false;\n pickerRef.current = null;\n // Reset so selecting the same file again still fires change\n input.value = '';\n },\n [addFiles],\n );\n\n const handleBlurCapture = React.useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n onBlurCapture?.(event);\n const cfg = latest.current;\n const rootEl = rootRef.current;\n if (!rootEl || cfg.expandOn === 'none') return;\n const nextTarget = event.relatedTarget as Node | null;\n if (nextTarget && rootEl.contains(nextTarget)) return;\n if (pickerOpenRef.current || pressGuardRef.current) return;\n if (!hasText(cfg.value) && getAttachments().length === 0) setOpen(false);\n },\n [onBlurCapture, setOpen, getAttachments],\n );\n\n const handleDrop = React.useCallback((files: File[]) => {\n appendFiles(files);\n }, [appendFiles]);\n\n // Validation happens in addFiles so drop, paste and picker share one rule set\n const { getRootProps, isDragActive } = useDropzone({\n onDrop: handleDrop,\n // Drop any earlier message so it is not re-announced when the drag hint goes away\n onDragEnter: () => announce(''),\n noClick: true,\n noKeyboard: true,\n // Textarea handles paste itself; letting the dropzone see it attaches twice\n noPaste: true,\n disabled: !dropzone || disabled || readOnly,\n });\n const dragActive = dropzone && isDragActive;\n\n React.useImperativeHandle(\n apiRef,\n () => ({\n focusTextarea: () => textareaRef.current?.focus({ preventScroll: true }),\n openFilePicker: () => openFilePicker(),\n }),\n [openFilePicker],\n );\n\n // Click-to-focus: focus textarea when clicking non-interactive areas inside the container\n const handleContainerPointerDown = React.useCallback(\n (event: React.PointerEvent) => {\n if (disabled) return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n const target = event.target;\n if (target instanceof Element && target.closest('button, [role=\"button\"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex=\"-1\"])')) return;\n event.preventDefault();\n textareaRef.current?.focus({ preventScroll: true });\n },\n [disabled],\n );\n\n const contextValue = React.useMemo<ChatbarContextValue>(\n () => ({\n open,\n setOpen,\n setValue,\n size,\n expandOn,\n minLines,\n maxLines,\n sendMode,\n disabled,\n readOnly,\n paste,\n clearOnSubmit,\n multiple,\n textareaRef,\n attachments,\n removeAttachment,\n submit,\n appendFiles,\n appendFilesFromPaste,\n openFilePicker,\n beginFilePickerPress,\n }),\n [\n open, setOpen, setValue, size, expandOn, minLines, maxLines, sendMode, disabled, readOnly, paste,\n clearOnSubmit, multiple, attachments, removeAttachment, submit, appendFiles, appendFilesFromPaste,\n openFilePicker, beginFilePickerPress,\n ],\n );\n\n return (\n <ChatbarContext.Provider value={contextValue}>\n <ChatbarValueContext.Provider value={value}>\n <LazyMotion features={domAnimation}>\n <MotionConfig reducedMotion=\"user\">\n <div\n {...divProps}\n ref={composedRootRef}\n className={classNames('rt-ChatbarRoot', `rt-r-size-${size}`, className)}\n style={{ position: 'relative', width, maxWidth, ...style }}\n data-state={open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n data-readonly={readOnly ? '' : undefined}\n data-drop-active={dragActive ? '' : undefined}\n data-accent-color={color}\n data-radius={radius}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n onBlurCapture={handleBlurCapture}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n tabIndex={-1}\n aria-hidden\n style={{ display: 'none' }}\n onChange={handleFileInputChange}\n />\n <div {...(dropzone ? getRootProps() : {})} style={{ width: '100%', height: '100%' }} onPointerDown={handleContainerPointerDown}>\n <m.div\n className={classNames('rt-ChatbarBox', `rt-variant-${variant ?? 'surface'}`)}\n style={{ position: 'relative' }}\n data-accent-color={color}\n data-radius={radius}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n layout\n transition={LAYOUT_TRANSITION}\n >\n <m.div className=\"rt-ChatbarGrid\" layout=\"position\" transition={LAYOUT_TRANSITION}>\n {children}\n </m.div>\n {dragActive && (\n <div className=\"rt-ChatbarDropOverlay\" aria-hidden>\n <div className=\"rt-ChatbarDropContent\">\n <Text emphasis=\"medium\" size={size} weight=\"medium\">\n Drop files here to attach\n </Text>\n </div>\n </div>\n )}\n </m.div>\n </div>\n <VisuallyHidden role=\"status\" aria-live=\"polite\">\n {dragActive ? 'Drop files here to attach.' : <span key={announcement.id}>{announcement.text}</span>}\n </VisuallyHidden>\n </div>\n </MotionConfig>\n </LazyMotion>\n </ChatbarValueContext.Provider>\n </ChatbarContext.Provider>\n );\n});\nRoot.displayName = 'Chatbar.Root';\n\n/**\n * Multi-line text input for Chatbar.\n * - Uses onChange to control value and avoid duplicate updates.\n * - Auto-resizes between minLines and maxLines.\n * - Expands on focus/overflow per `expandOn`.\n * - Paste-to-attach: when `paste` is enabled on Root, pasting files adds attachments.\n * - Provide `aria-label` or `aria-labelledby` for an accessible name.\n */\ninterface TextareaProps extends Omit<React.ComponentPropsWithoutRef<'textarea'>, 'size' | 'rows' | 'value' | 'defaultValue'> {\n asChild?: boolean;\n /**\n * When true, pressing Enter submits (Shift+Enter inserts a newline).\n * Works with every `sendMode`. Defaults to false.\n */\n submitOnEnter?: boolean;\n}\n\n/**\n * Chatbar multi-line text input.\n *\n * Behavior\n * - Controls the Chatbar value via React onChange.\n * - Auto-resizes between minLines and maxLines in a single layout effect, which\n * also opens the Chatbar when content overflows the compact height and\n * `expandOn` is `overflow` or `both`.\n * - Consumer handlers run first; calling `preventDefault` in `onKeyDown` or\n * `onPaste` skips the built-in submit or attach behavior.\n *\n * Accessibility\n * - Consumers should provide labeling via aria-label or aria-labelledby\n * on this component, as no implicit label is rendered.\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>((props, forwardedRef) => {\n const {\n className,\n style,\n asChild,\n onFocus,\n onChange,\n onPaste,\n onKeyDown,\n onCompositionStart,\n onCompositionEnd,\n submitOnEnter = false,\n ...textareaProps\n } = props;\n const ctx = useChatbarContext();\n const value = React.useContext(ChatbarValueContext);\n const { open, minLines, maxLines, expandOn, disabled, readOnly, setOpen, setValue, textareaRef, paste, appendFilesFromPaste, size, submit, clearOnSubmit } = ctx;\n const composedRef = useComposedRefs(forwardedRef, textareaRef);\n\n // Cached metrics to avoid repeated getComputedStyle calls\n const lineHeightRef = React.useRef(0);\n const paddingRef = React.useRef(0);\n const composingRef = React.useRef(false);\n\n const sizingRef = React.useRef({ open, minLines, maxLines });\n // Declared before the sizing effect so it runs first in the same commit\n useIsomorphicLayoutEffect(() => {\n sizingRef.current = { open, minLines, maxLines };\n }, [open, minLines, maxLines]);\n\n const recomputeMetrics = React.useCallback(() => {\n const el = textareaRef.current;\n if (!el) return;\n const computedStyle = window.getComputedStyle(el);\n lineHeightRef.current = parseFloat(computedStyle.lineHeight) || 20;\n paddingRef.current = (parseFloat(computedStyle.paddingTop) || 0) + (parseFloat(computedStyle.paddingBottom) || 0);\n }, [textareaRef]);\n\n // Sizes `el` for the given open state; caller must have set height to 'auto' first\n const applyHeight = React.useCallback((el: HTMLTextAreaElement, isOpen: boolean) => {\n const { minLines: min, maxLines: max } = sizingRef.current;\n const lineHeight = lineHeightRef.current;\n const padding = paddingRef.current;\n const minHeight = Math.ceil((isOpen ? min : 1) * lineHeight) + padding;\n const maxHeight = Math.ceil((isOpen ? max : 1) * lineHeight) + padding;\n const contentHeight = Math.max(el.scrollHeight, minHeight);\n el.style.height = `${Math.min(contentHeight, maxHeight)}px`;\n const overflowing = contentHeight > maxHeight;\n el.style.overflowY = overflowing ? 'auto' : 'hidden';\n el.style.maxHeight = overflowing ? `${maxHeight}px` : 'none';\n }, []);\n\n // Typography depends on size\n useIsomorphicLayoutEffect(() => {\n recomputeMetrics();\n }, [recomputeMetrics, size]);\n\n // Single place for sizing and overflow auto-open: one height reset, one scrollHeight read\n useIsomorphicLayoutEffect(() => {\n const el = textareaRef.current;\n if (!el) return;\n if (lineHeightRef.current === 0) recomputeMetrics();\n withoutPlaceholder(el, () => {\n el.style.height = 'auto';\n let isOpen = open;\n if (!open && (expandOn === 'overflow' || expandOn === 'both')) {\n const compactHeight = Math.ceil(lineHeightRef.current) + paddingRef.current;\n if (el.scrollHeight > compactHeight + 1) {\n isOpen = true;\n setOpen(true);\n }\n }\n applyHeight(el, isOpen);\n });\n }, [value, open, expandOn, minLines, maxLines, size, setOpen, textareaRef, recomputeMetrics, applyHeight]);\n\n // Width changes re-wrap text; re-measure only when the width actually changes\n React.useEffect(() => {\n const el = textareaRef.current;\n if (!el || typeof ResizeObserver === 'undefined') return;\n let prevWidth = -1;\n const ro = new ResizeObserver((entries) => {\n const width = entries[0]?.contentRect.width ?? 0;\n if (width === prevWidth) return;\n const first = prevWidth === -1;\n prevWidth = width;\n if (first) return;\n recomputeMetrics();\n withoutPlaceholder(el, () => {\n el.style.height = 'auto';\n applyHeight(el, sizingRef.current.open);\n });\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [textareaRef, recomputeMetrics, applyHeight]);\n\n // Dev-only warning if no accessible name is provided\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n const hasLabel = textareaProps['aria-label'] != null || textareaProps['aria-labelledby'] != null;\n if (!hasLabel) {\n console.warn('[Chatbar.Textarea] Provide aria-label or aria-labelledby to ensure the control has an accessible name.');\n }\n // warn only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleFocus = React.useCallback<React.FocusEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onFocus?.(event);\n if (disabled || readOnly) return;\n if ((expandOn === 'focus' || expandOn === 'both') && !open) setOpen(true);\n },\n [disabled, readOnly, expandOn, open, setOpen, onFocus],\n );\n\n const handleChange = React.useCallback<React.ChangeEventHandler<HTMLTextAreaElement>>(\n (event) => {\n setValue(event.currentTarget.value);\n onChange?.(event);\n },\n [setValue, onChange],\n );\n\n const handlePaste = React.useCallback<React.ClipboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onPaste?.(event);\n if (event.defaultPrevented || !paste || disabled || readOnly) return;\n const files = Array.from(event.clipboardData?.items ?? [])\n .filter((item) => item.kind === 'file')\n .map((item) => item.getAsFile())\n .filter((f): f is File => !!f);\n if (files.length === 0) return;\n // Suppress the filename/text representation only when a file was actually attached\n if (appendFilesFromPaste(files) > 0) event.preventDefault();\n },\n [paste, disabled, readOnly, onPaste, appendFilesFromPaste],\n );\n\n const handleCompositionStart = React.useCallback<React.CompositionEventHandler<HTMLTextAreaElement>>(\n (event) => {\n composingRef.current = true;\n onCompositionStart?.(event);\n },\n [onCompositionStart],\n );\n\n const handleCompositionEnd = React.useCallback<React.CompositionEventHandler<HTMLTextAreaElement>>(\n (event) => {\n composingRef.current = false;\n onCompositionEnd?.(event);\n },\n [onCompositionEnd],\n );\n\n const handleKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLTextAreaElement>>(\n (event) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || !submitOnEnter) return;\n if (event.key !== 'Enter' || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;\n // Safari fires the IME-confirming Enter after compositionend with keyCode 229\n if (composingRef.current || event.nativeEvent.isComposing || event.nativeEvent.keyCode === 229) return;\n // Plain Enter never inserts a newline when submitOnEnter is on, even with nothing to send\n event.preventDefault();\n submit(clearOnSubmit);\n },\n [submitOnEnter, onKeyDown, submit, clearOnSubmit],\n );\n\n const Comp = asChild ? Slot : 'textarea';\n return (\n <m.div className={classNames('rt-ChatbarField', 'rt-ChatbarTextarea', className)} layout=\"position\" transition={LAYOUT_TRANSITION}>\n <Comp\n {...textareaProps}\n ref={composedRef}\n className=\"rt-ChatbarInput\"\n value={value}\n onChange={handleChange}\n onFocus={handleFocus}\n onPaste={handlePaste}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n disabled={disabled}\n readOnly={readOnly}\n rows={open ? minLines : 1}\n spellCheck={textareaProps.spellCheck ?? true}\n autoCorrect={textareaProps.autoCorrect ?? 'on'}\n style={style}\n />\n </m.div>\n );\n});\nTextarea.displayName = 'Chatbar.Textarea';\n\ninterface InlineSlotProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst InlineStart = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineStart', className)}>\n {children}\n </Comp>\n );\n});\nInlineStart.displayName = 'Chatbar.InlineStart';\n\nconst InlineEnd = React.forwardRef<HTMLDivElement, InlineSlotProps>((props, forwardedRef) => {\n const { children, asChild, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarInlineEnd', className)}>\n {children}\n </Comp>\n );\n});\nInlineEnd.displayName = 'Chatbar.InlineEnd';\n\n/**\n * Renders a horizontally scrollable list of attachments above the inline row.\n * Hidden when empty unless `forceMount`. Override per-item with `renderAttachment`.\n */\ninterface AttachmentsRowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n forceMount?: boolean;\n /** If provided, custom-render a tile; otherwise default tile is used */\n renderAttachment?: (attachment: ChatbarAttachment) => React.ReactNode;\n}\n\nconst AttachmentsRow = React.forwardRef<HTMLDivElement, AttachmentsRowProps>((props, forwardedRef) => {\n const { asChild, forceMount, renderAttachment, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (ctx.attachments.length === 0 && !forceMount) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <m.div layout=\"position\" transition={LAYOUT_TRANSITION}>\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarAttachmentsRow', className)} role=\"list\" aria-label={divProps['aria-label'] ?? 'Attachments'}>\n <ScrollArea className=\"rt-ChatbarScrollArea\" scrollbars=\"horizontal\" size=\"1\">\n <Flex align=\"center\" gap=\"2\" minWidth=\"fit-content\">\n {ctx.attachments.map((att) => (\n <Attachment key={att.id} attachment={att} asChild={!!renderAttachment}>\n {renderAttachment?.(att)}\n </Attachment>\n ))}\n </Flex>\n </ScrollArea>\n </Comp>\n </m.div>\n );\n});\nAttachmentsRow.displayName = 'Chatbar.AttachmentsRow';\n\n/** Default tile renderer for a single attachment. */\ninterface AttachmentProps extends React.ComponentPropsWithoutRef<'div'> {\n attachment: ChatbarAttachment;\n asChild?: boolean;\n}\n\nconst STATUS_LABEL: Partial<Record<AttachmentStatus, string>> = { uploading: 'uploading', error: 'failed to upload' };\n\nconst Attachment = React.forwardRef<HTMLDivElement, AttachmentProps>((props, forwardedRef) => {\n const { attachment, asChild, className, children, ...divProps } = props;\n const ctx = useChatbarContext();\n const Comp = asChild ? Slot : 'div';\n const isImage = !!attachment.url && isImageLike(attachment.name, attachment.type);\n const sizeLabel = `${Math.ceil(attachment.size / 1024)} KB`;\n const statusLabel = attachment.status ? STATUS_LABEL[attachment.status] : undefined;\n const locked = ctx.disabled || ctx.readOnly;\n\n const handleRemove = (event: React.MouseEvent<HTMLButtonElement>) => {\n // Move focus before the tile unmounts so keyboard users are not dropped to <body>\n const tile = event.currentTarget.closest('[role=\"listitem\"]');\n const tiles = tile?.parentElement ? Array.from(tile.parentElement.children) : [];\n const index = tile ? tiles.indexOf(tile) : -1;\n const neighbour = tiles[index + 1] ?? tiles[index - 1];\n const nextButton = neighbour?.querySelector<HTMLButtonElement>('.rt-ChatbarAttachmentRemove');\n if (nextButton) nextButton.focus();\n else ctx.textareaRef.current?.focus({ preventScroll: true });\n ctx.removeAttachment(attachment.id);\n };\n\n return (\n <Comp\n {...divProps}\n ref={forwardedRef}\n className={classNames('rt-ChatbarAttachment', className)}\n role=\"listitem\"\n data-kind={isImage ? 'image' : 'file'}\n data-status={attachment.status}\n title={attachment.name}\n >\n {children ?? (\n <Flex align=\"center\" gap=\"2\" pr={!isImage ? '6' : undefined}>\n <div className=\"rt-ChatbarAttachmentPreview\" aria-hidden>\n {isImage ? <img className=\"rt-ChatbarAttachmentImage\" src={attachment.url} alt=\"\" /> : <FileTextIcon />}\n </div>\n {isImage ? (\n <VisuallyHidden>\n {attachment.name}, {sizeLabel}\n {statusLabel ? `, ${statusLabel}` : ''}\n </VisuallyHidden>\n ) : (\n <Flex direction=\"column\" gap=\"0\" minWidth=\"0\">\n <Text size={ctx.size} weight=\"medium\" truncate>\n {attachment.name}\n </Text>\n <Text\n size=\"1\"\n color={attachment.status === 'error' ? 'red' : undefined}\n emphasis={attachment.status === 'error' ? undefined : 'medium'}\n >\n {sizeLabel}\n {statusLabel ? ` \u00B7 ${statusLabel}` : ''}\n </Text>\n </Flex>\n )}\n {!locked && (\n <IconButton\n className=\"rt-ChatbarAttachmentRemove\"\n aria-label={`Remove ${attachment.name}`}\n size=\"1\"\n variant=\"classic\"\n color=\"gray\"\n onClick={handleRemove}\n >\n <CloseIcon />\n </IconButton>\n )}\n </Flex>\n )}\n </Comp>\n );\n});\nAttachment.displayName = 'Chatbar.Attachment';\n\ninterface AttachTriggerProps extends React.ComponentPropsWithoutRef<'button'> {\n asChild?: boolean;\n /** Overrides Root `accept` for files chosen through this trigger */\n accept?: string | string[];\n multiple?: boolean;\n}\n\nconst AttachTrigger = React.forwardRef<HTMLButtonElement, AttachTriggerProps>((props, forwardedRef) => {\n const { asChild, accept, multiple, disabled: disabledProp, onPointerDown, onClick, ...buttonProps } = props;\n const ctx = useChatbarContext();\n const disabled = disabledProp || ctx.disabled || ctx.readOnly;\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n {...buttonProps}\n ref={forwardedRef}\n className={classNames('rt-ChatbarAttachTrigger', buttonProps.className)}\n type={buttonProps.type ?? 'button'}\n aria-label={buttonProps['aria-label'] ?? 'Add attachments'}\n disabled={disabled}\n onPointerDown={(event: React.PointerEvent<HTMLButtonElement>) => {\n onPointerDown?.(event);\n if (!disabled && !event.defaultPrevented) ctx.beginFilePickerPress();\n }}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (disabled || event.defaultPrevented) return;\n ctx.openFilePicker({ accept, multiple });\n }}\n />\n );\n});\nAttachTrigger.displayName = 'Chatbar.AttachTrigger';\n\ninterface RowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> {\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\nconst Row = React.forwardRef<HTMLDivElement, RowProps>((props, forwardedRef) => {\n const { asChild, children, className, ...divProps } = props;\n const ctx = useChatbarContext();\n if (!ctx.open) return null;\n const Comp = asChild ? Slot : 'div';\n return (\n <m.div layout=\"position\" transition={LAYOUT_TRANSITION}>\n <Comp {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRow', className)}>\n <Flex align=\"center\" justify=\"between\" width=\"100%\">\n {children}\n </Flex>\n </Comp>\n </m.div>\n );\n});\nRow.displayName = 'Chatbar.Row';\n\ntype RowSlotProps = React.ComponentPropsWithoutRef<'div'>;\n\nconst RowStart = React.forwardRef<HTMLDivElement, RowSlotProps>((props, forwardedRef) => {\n const { className, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowStart', className)} />;\n});\nRowStart.displayName = 'Chatbar.RowStart';\n\nconst RowEnd = React.forwardRef<HTMLDivElement, RowSlotProps>((props, forwardedRef) => {\n const { className, ...divProps } = props;\n return <div {...divProps} ref={forwardedRef} className={classNames('rt-ChatbarRowEnd', className)} />;\n});\nRowEnd.displayName = 'Chatbar.RowEnd';\n\ntype SendProps = Omit<IconButtonProps, 'aria-label' | 'aria-labelledby'> & {\n /** Optional override for accessible name. Defaults to \"Send\". */\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n asChild?: boolean;\n /** Clear message and attachments after sending. Defaults to Root `clearOnSubmit`. */\n clearOnSend?: boolean;\n};\n\nconst Send = React.forwardRef<HTMLButtonElement, SendProps>((props, forwardedRef) => {\n const {\n asChild,\n clearOnSend,\n disabled,\n children,\n style,\n className,\n size: sizeProp,\n variant: variantProp,\n tabIndex,\n onClick,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n ...buttonProps\n } = props;\n const ctx = useChatbarContext();\n const value = React.useContext(ChatbarValueContext);\n\n if (ctx.sendMode === 'never') return null;\n\n const hasContent = hasText(value) || ctx.attachments.length > 0;\n const visible = ctx.sendMode === 'always' || hasContent;\n const inactive = disabled || ctx.disabled || ctx.readOnly || !hasContent;\n\n const labelProps: { 'aria-label': string } | { 'aria-labelledby': string } = ariaLabelledby\n ? { 'aria-labelledby': ariaLabelledby }\n : { 'aria-label': ariaLabel ?? 'Send' };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || inactive) return;\n const clear = clearOnSend ?? ctx.clearOnSubmit;\n // Clearing hides and disables this button; keep keyboard focus in the composer\n if (ctx.submit(clear) && clear) ctx.textareaRef.current?.focus({ preventScroll: true });\n };\n\n return (\n <IconButton\n {...buttonProps}\n ref={forwardedRef}\n size={sizeProp ?? ctx.size}\n variant={variantProp ?? (ctx.open ? 'solid' : 'ghost')}\n disabled={inactive}\n className={classNames('rt-ChatbarSend', className)}\n style={{ opacity: visible ? 1 : 0, pointerEvents: visible ? undefined : 'none', ...style }}\n // Hidden Send must not be reachable by keyboard or announced\n aria-hidden={visible ? undefined : true}\n tabIndex={visible ? tabIndex : -1}\n asChild={asChild}\n onClick={handleClick}\n {...labelProps}\n >\n {children ?? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden>\n <path d=\"M5 12h14\" />\n <path d=\"m12 5 7 7-7 7\" />\n </svg>\n )}\n </IconButton>\n );\n});\nSend.displayName = 'Chatbar.Send';\n\nexport { Root, Textarea, InlineStart, InlineEnd, AttachmentsRow, Attachment, AttachTrigger, Row, RowStart, RowEnd, Send };\nexport type {\n RootProps as ChatbarRootProps,\n TextareaProps as ChatbarTextareaProps,\n InlineSlotProps as ChatbarInlineSlotProps,\n AttachmentsRowProps as ChatbarAttachmentsRowProps,\n AttachmentProps as ChatbarAttachmentProps,\n AttachTriggerProps as ChatbarAttachTriggerProps,\n RowProps as ChatbarRowProps,\n RowSlotProps as ChatbarRowSlotProps,\n SendProps as ChatbarSendProps,\n ChatbarAttachment,\n ChatbarAttachmentRejection,\n ChatbarRejectReason,\n ChatbarSubmitPayload,\n AttachmentStatus as ChatbarAttachmentStatus,\n ExpandOn as ChatbarExpandOn,\n SendMode as ChatbarSendMode,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["chatbar_exports", "__export", "AttachTrigger", "Attachment", "AttachmentsRow", "InlineEnd", "InlineStart", "Root", "Row", "RowEnd", "RowStart", "Send", "Textarea", "React", "classNames", "LazyMotion", "MotionConfig", "domAnimation", "m", "useComposedRefs", "useDropzone", "useIsomorphicLayoutEffect", "withoutPlaceholder", "el", "measure", "placeholder", "LAYOUT_TRANSITION", "ChatbarContext", "ChatbarValueContext", "useChatbarContext", "ctx", "toArray", "val", "matchesAccept", "file", "patterns", "mime", "name", "patRaw", "pat", "type", "subtype", "fmType", "fmSubtype", "IMAGE_EXT_RE", "isImageLike", "hasText", "value", "plural", "word", "attachmentCounter", "createAttachmentId", "Root", "props", "forwardedRef", "className", "style", "children", "valueProp", "defaultValue", "onValueChange", "openProp", "defaultOpen", "onOpenChange", "expandOn", "minLines", "maxLines", "sendMode", "disabled", "readOnly", "onSubmit", "size", "variant", "color", "radius", "panelBackground", "material", "width", "maxWidth", "attachmentsProp", "defaultAttachments", "onAttachmentsChange", "accept", "multiple", "maxAttachments", "maxFileSize", "paste", "pasteAccept", "clearOnSubmit", "onAttachmentReject", "dropzone", "apiRef", "onBlurCapture", "divProps", "effectiveMaterial", "isValueControlled", "valueUncontrolled", "setValueUncontrolled", "isOpenControlled", "openUncontrolled", "setOpenUncontrolled", "open", "isAttachmentsControlled", "attachmentsUncontrolled", "setAttachmentsUncontrolled", "attachments", "announcement", "setAnnouncementState", "announce", "text", "prev", "rootRef", "composedRootRef", "useComposedRefs", "textareaRef", "fileInputRef", "pickerOpenRef", "pressGuardRef", "pressGuardTimerRef", "pickerRef", "acceptKey", "pasteAcceptKey", "accepts", "pasteAccepts", "snapshot", "latest", "pendingAttachmentsRef", "getAttachments", "setOpen", "next", "setValue", "setAttachments", "ownedUrlsRef", "addFiles", "files", "cfg", "current", "rejected", "remainingSlots", "perActionLimit", "url", "messages", "appendFiles", "appendFilesFromPaste", "removeAttachment", "id", "removed", "a", "submit", "clear", "payload", "att", "owned", "openFilePicker", "options", "input", "beginFilePickerPress", "reset", "handleFileInputChange", "event", "picker", "handleBlurCapture", "rootEl", "nextTarget", "handleDrop", "getRootProps", "isDragActive", "useDropzone", "dragActive", "handleContainerPointerDown", "target", "contextValue", "LazyMotion", "domAnimation", "MotionConfig", "classNames", "m", "Text", "VisuallyHidden", "Textarea", "asChild", "onFocus", "onChange", "onPaste", "onKeyDown", "onCompositionStart", "onCompositionEnd", "submitOnEnter", "textareaProps", "composedRef", "lineHeightRef", "paddingRef", "composingRef", "sizingRef", "recomputeMetrics", "computedStyle", "applyHeight", "isOpen", "min", "max", "lineHeight", "padding", "minHeight", "maxHeight", "contentHeight", "overflowing", "compactHeight", "prevWidth", "ro", "entries", "first", "handleFocus", "handleChange", "handlePaste", "item", "f", "handleCompositionStart", "handleCompositionEnd", "handleKeyDown", "Comp", "Slot", "InlineStart", "InlineEnd", "AttachmentsRow", "forceMount", "renderAttachment", "ScrollArea", "Flex", "Attachment", "STATUS_LABEL", "attachment", "isImage", "sizeLabel", "statusLabel", "locked", "handleRemove", "tile", "tiles", "index", "nextButton", "FileTextIcon", "IconButton", "CloseIcon", "AttachTrigger", "disabledProp", "onPointerDown", "onClick", "buttonProps", "Row", "RowStart", "RowEnd", "Send", "clearOnSend", "sizeProp", "variantProp", "tabIndex", "ariaLabel", "ariaLabelledby", "hasContent", "visible", "inactive", "labelProps", "handleClick"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as p}from"./chunk-YA5DF67M.js";import*as o from"react";var l=Object.entries(p),u=null,i=new Set,n=null;function c(){return u??(u=l.map(([t,e])=>[t,window.matchMedia(e)])),u}function s(){let t="initial";for(let[e,r]of c())r.matches&&(t=e);return t}function a(){let t=s();t!==n&&(n=t,i.forEach(e=>e()))}function f(t){if(typeof window>"u")return()=>{};if(i.size===0){n=s();for(let[,e]of c())typeof e.addEventListener=="function"?e.addEventListener("change",a):e.addListener?.(a)}return i.add(t),()=>{if(i.delete(t),!(i.size>0)){for(let[,e]of c())try{typeof e.removeEventListener=="function"?e.removeEventListener("change",a):e.removeListener?.(a)}catch{}n=null}}}function y(){return typeof window>"u"?"initial":(n??(n=s()),n)}function k(){return"initial"}function L(){return typeof window>"u"?"initial":s()}var m=()=>!0,B=()=>!1,d=()=>()=>{},S=()=>"initial";function E(t=!0){let e=o.useSyncExternalStore(t?f:d,t?y:S,k),r=o.useSyncExternalStore(t?f:d,m,B);return o.useMemo(()=>({breakpoint:e,ready:r}),[e,r])}export{L as a,E as b};
|
|
2
|
+
//# sourceMappingURL=chunk-3XSB7YIM.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/use-breakpoint.ts"],
|
|
4
|
-
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { _BREAKPOINTS, type Breakpoint } from '../components/shell.types.js';\n\nconst QUERIES = Object.entries(_BREAKPOINTS) as Array<[Breakpoint, string]>;\n\ntype Listener = () => void;\n\n/**\n * One set of `MediaQueryList`s and one set of listeners for the whole\n * application. Every component that asks for the breakpoint used to create and\n * subscribe to its own copy of all five queries.\n */\nlet mediaQueryLists: Array<[Breakpoint, MediaQueryList]> | null = null;\nconst listeners = new Set<Listener>();\nlet cachedBreakpoint: Breakpoint | null = null;\n\nfunction getMediaQueryLists() {\n mediaQueryLists ??= QUERIES.map(([name, query]) => [name, window.matchMedia(query)] as [Breakpoint, MediaQueryList]);\n return mediaQueryLists;\n}\n\nfunction computeBreakpoint(): Breakpoint {\n // The largest matching query wins; `_BREAKPOINTS` is ordered smallest first.\n let matched: Breakpoint = 'initial';\n for (const [name, mql] of getMediaQueryLists()) {\n if (mql.matches) matched = name;\n }\n return matched;\n}\n\nfunction handleChange() {\n const next = computeBreakpoint();\n if (next === cachedBreakpoint) return;\n cachedBreakpoint = next;\n listeners.forEach((listener) => listener());\n}\n\nfunction subscribe(listener: Listener) {\n if (typeof window === 'undefined') return () => {};\n\n if (listeners.size === 0) {\n cachedBreakpoint = computeBreakpoint();\n for (const [, mql] of getMediaQueryLists()) {\n // Safari below 14 only has the deprecated listener API.\n if (typeof mql.addEventListener === 'function') mql.addEventListener('change', handleChange);\n else mql.addListener?.(handleChange);\n }\n }\n\n listeners.add(listener);\n\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n\n for (const [, mql] of getMediaQueryLists()) {\n try {\n if (typeof mql.removeEventListener === 'function') mql.removeEventListener('change', handleChange);\n else mql.removeListener?.(handleChange);\n } catch (error) {\n // Removal can throw in edge cases, e.g. the list was already torn down.\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[useBreakpoint] MediaQueryList cleanup warning:', error);\n }\n }\n }\n cachedBreakpoint = null;\n };\n}\n\n/**\n * `getSnapshot` must return a referentially stable value between changes, so it\n * reads the cache that `handleChange` maintains rather than recomputing.\n */\nfunction getSnapshot(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n cachedBreakpoint ??= computeBreakpoint();\n return cachedBreakpoint;\n}\n\nfunction getServerSnapshot(): Breakpoint {\n return 'initial';\n}\n\nconst getReadySnapshot = () => true;\nconst getReadyServerSnapshot = () => false;\n\nconst noopSubscribe = () => () => {};\nconst getInitialSnapshot = (): Breakpoint => 'initial';\n\n/**\n * The current breakpoint, and whether it has been resolved against a real\n * viewport yet (`false` on the server and during hydration).\n *\n * Reads through `useSyncExternalStore` rather than settling into state from an\n * effect. On a client render the very first pass already has the real\n * breakpoint, instead of rendering the whole shell at `initial` and correcting\n * it after the browser has painted.\n *\n * Pass `enabled = false` to skip the subscription (the breakpoint then reads as\n * `initial`).\n */\nexport function useBreakpoint(enabled = true): { breakpoint: Breakpoint; ready: boolean } {\n // Callers with a non-responsive value pass `enabled = false` so they neither\n // subscribe to the media queries nor re-render when the viewport crosses one.\n const breakpoint = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n enabled ? getSnapshot : getInitialSnapshot,\n getServerSnapshot,\n );\n const ready = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n getReadySnapshot,\n getReadyServerSnapshot,\n );\n\n return React.useMemo(() => ({ breakpoint, ready }), [breakpoint, ready]);\n}\n"],
|
|
5
|
-
"mappings": "wCAEA,UAAYA,MAAW,QAGvB,IAAMC,EAAU,OAAO,QAAQC,CAAY,EASvCC,EAA8D,KAC5DC,EAAY,IAAI,IAClBC,EAAsC,KAE1C,SAASC,GAAqB,CAC5B,OAAAH,MAAoBF,EAAQ,IAAI,CAAC,CAACM,EAAMC,CAAK,IAAM,CAACD,EAAM,OAAO,WAAWC,CAAK,CAAC,CAAiC,GAC5GL,CACT,CAEA,SAASM,GAAgC,CAEvC,IAAIC,EAAsB,UAC1B,OAAW,CAACH,EAAMI,CAAG,IAAKL,EAAmB,EACvCK,EAAI,UAASD,EAAUH,GAE7B,OAAOG,CACT,CAEA,SAASE,GAAe,CACtB,IAAMC,EAAOJ,EAAkB,EAC3BI,IAASR,IACbA,EAAmBQ,EACnBT,EAAU,QAASU,GAAaA,EAAS,CAAC,EAC5C,CAEA,SAASC,EAAUD,EAAoB,CACrC,GAAI,OAAO,OAAW,IAAa,MAAO,IAAM,CAAC,EAEjD,GAAIV,EAAU,OAAS,EAAG,CACxBC,EAAmBI,EAAkB,EACrC,OAAW,CAAC,CAAEE,CAAG,IAAKL,EAAmB,EAEnC,OAAOK,EAAI,kBAAqB,WAAYA,EAAI,iBAAiB,SAAUC,CAAY,EACtFD,EAAI,cAAcC,CAAY,CAEvC,CAEA,OAAAR,EAAU,IAAIU,CAAQ,EAEf,IAAM,CAEX,GADAV,EAAU,OAAOU,CAAQ,EACrB,EAAAV,EAAU,KAAO,GAErB,QAAW,CAAC,CAAEO,CAAG,IAAKL,EAAmB,EACvC,GAAI,CACE,OAAOK,EAAI,qBAAwB,WAAYA,EAAI,oBAAoB,SAAUC,CAAY,EAC5FD,EAAI,iBAAiBC,CAAY,CACxC,MAAgB,CAKhB,CAEFP,EAAmB,KACrB,CACF,CAMA,SAASW,GAA0B,CACjC,OAAI,OAAO,OAAW,IAAoB,WAC1CX,MAAqBI,EAAkB,GAChCJ,EACT,CAEA,SAASY,GAAgC,CACvC,MAAO,SACT,CAEA,
|
|
6
|
-
"names": ["React", "QUERIES", "_BREAKPOINTS", "mediaQueryLists", "listeners", "cachedBreakpoint", "getMediaQueryLists", "name", "query", "computeBreakpoint", "matched", "mql", "handleChange", "next", "listener", "subscribe", "getSnapshot", "getServerSnapshot", "getReadySnapshot", "getReadyServerSnapshot", "noopSubscribe", "getInitialSnapshot", "useBreakpoint", "enabled", "breakpoint", "ready"]
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { _BREAKPOINTS, type Breakpoint } from '../components/shell.types.js';\n\nconst QUERIES = Object.entries(_BREAKPOINTS) as Array<[Breakpoint, string]>;\n\ntype Listener = () => void;\n\n/**\n * One set of `MediaQueryList`s and one set of listeners for the whole\n * application. Every component that asks for the breakpoint used to create and\n * subscribe to its own copy of all five queries.\n */\nlet mediaQueryLists: Array<[Breakpoint, MediaQueryList]> | null = null;\nconst listeners = new Set<Listener>();\nlet cachedBreakpoint: Breakpoint | null = null;\n\nfunction getMediaQueryLists() {\n mediaQueryLists ??= QUERIES.map(([name, query]) => [name, window.matchMedia(query)] as [Breakpoint, MediaQueryList]);\n return mediaQueryLists;\n}\n\nfunction computeBreakpoint(): Breakpoint {\n // The largest matching query wins; `_BREAKPOINTS` is ordered smallest first.\n let matched: Breakpoint = 'initial';\n for (const [name, mql] of getMediaQueryLists()) {\n if (mql.matches) matched = name;\n }\n return matched;\n}\n\nfunction handleChange() {\n const next = computeBreakpoint();\n if (next === cachedBreakpoint) return;\n cachedBreakpoint = next;\n listeners.forEach((listener) => listener());\n}\n\nfunction subscribe(listener: Listener) {\n if (typeof window === 'undefined') return () => {};\n\n if (listeners.size === 0) {\n cachedBreakpoint = computeBreakpoint();\n for (const [, mql] of getMediaQueryLists()) {\n // Safari below 14 only has the deprecated listener API.\n if (typeof mql.addEventListener === 'function') mql.addEventListener('change', handleChange);\n else mql.addListener?.(handleChange);\n }\n }\n\n listeners.add(listener);\n\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n\n for (const [, mql] of getMediaQueryLists()) {\n try {\n if (typeof mql.removeEventListener === 'function') mql.removeEventListener('change', handleChange);\n else mql.removeListener?.(handleChange);\n } catch (error) {\n // Removal can throw in edge cases, e.g. the list was already torn down.\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[useBreakpoint] MediaQueryList cleanup warning:', error);\n }\n }\n }\n cachedBreakpoint = null;\n };\n}\n\n/**\n * `getSnapshot` must return a referentially stable value between changes, so it\n * reads the cache that `handleChange` maintains rather than recomputing.\n */\nfunction getSnapshot(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n cachedBreakpoint ??= computeBreakpoint();\n return cachedBreakpoint;\n}\n\nfunction getServerSnapshot(): Breakpoint {\n return 'initial';\n}\n\n/**\n * The breakpoint right now, outside React's render. For an effect that needs\n * the answer at the moment it runs rather than the one its render saw.\n */\nexport function readBreakpoint(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n return computeBreakpoint();\n}\n\nconst getReadySnapshot = () => true;\nconst getReadyServerSnapshot = () => false;\n\nconst noopSubscribe = () => () => {};\nconst getInitialSnapshot = (): Breakpoint => 'initial';\n\n/**\n * The current breakpoint, and whether it has been resolved against a real\n * viewport yet (`false` on the server and during hydration).\n *\n * Reads through `useSyncExternalStore` rather than settling into state from an\n * effect. On a client render the very first pass already has the real\n * breakpoint, instead of rendering the whole shell at `initial` and correcting\n * it after the browser has painted.\n *\n * Pass `enabled = false` to skip the subscription (the breakpoint then reads as\n * `initial`).\n */\nexport function useBreakpoint(enabled = true): { breakpoint: Breakpoint; ready: boolean } {\n // Callers with a non-responsive value pass `enabled = false` so they neither\n // subscribe to the media queries nor re-render when the viewport crosses one.\n const breakpoint = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n enabled ? getSnapshot : getInitialSnapshot,\n getServerSnapshot,\n );\n const ready = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n getReadySnapshot,\n getReadyServerSnapshot,\n );\n\n return React.useMemo(() => ({ breakpoint, ready }), [breakpoint, ready]);\n}\n"],
|
|
5
|
+
"mappings": "wCAEA,UAAYA,MAAW,QAGvB,IAAMC,EAAU,OAAO,QAAQC,CAAY,EASvCC,EAA8D,KAC5DC,EAAY,IAAI,IAClBC,EAAsC,KAE1C,SAASC,GAAqB,CAC5B,OAAAH,MAAoBF,EAAQ,IAAI,CAAC,CAACM,EAAMC,CAAK,IAAM,CAACD,EAAM,OAAO,WAAWC,CAAK,CAAC,CAAiC,GAC5GL,CACT,CAEA,SAASM,GAAgC,CAEvC,IAAIC,EAAsB,UAC1B,OAAW,CAACH,EAAMI,CAAG,IAAKL,EAAmB,EACvCK,EAAI,UAASD,EAAUH,GAE7B,OAAOG,CACT,CAEA,SAASE,GAAe,CACtB,IAAMC,EAAOJ,EAAkB,EAC3BI,IAASR,IACbA,EAAmBQ,EACnBT,EAAU,QAASU,GAAaA,EAAS,CAAC,EAC5C,CAEA,SAASC,EAAUD,EAAoB,CACrC,GAAI,OAAO,OAAW,IAAa,MAAO,IAAM,CAAC,EAEjD,GAAIV,EAAU,OAAS,EAAG,CACxBC,EAAmBI,EAAkB,EACrC,OAAW,CAAC,CAAEE,CAAG,IAAKL,EAAmB,EAEnC,OAAOK,EAAI,kBAAqB,WAAYA,EAAI,iBAAiB,SAAUC,CAAY,EACtFD,EAAI,cAAcC,CAAY,CAEvC,CAEA,OAAAR,EAAU,IAAIU,CAAQ,EAEf,IAAM,CAEX,GADAV,EAAU,OAAOU,CAAQ,EACrB,EAAAV,EAAU,KAAO,GAErB,QAAW,CAAC,CAAEO,CAAG,IAAKL,EAAmB,EACvC,GAAI,CACE,OAAOK,EAAI,qBAAwB,WAAYA,EAAI,oBAAoB,SAAUC,CAAY,EAC5FD,EAAI,iBAAiBC,CAAY,CACxC,MAAgB,CAKhB,CAEFP,EAAmB,KACrB,CACF,CAMA,SAASW,GAA0B,CACjC,OAAI,OAAO,OAAW,IAAoB,WAC1CX,MAAqBI,EAAkB,GAChCJ,EACT,CAEA,SAASY,GAAgC,CACvC,MAAO,SACT,CAMO,SAASC,GAA6B,CAC3C,OAAI,OAAO,OAAW,IAAoB,UACnCT,EAAkB,CAC3B,CAEA,IAAMU,EAAmB,IAAM,GACzBC,EAAyB,IAAM,GAE/BC,EAAgB,IAAM,IAAM,CAAC,EAC7BC,EAAqB,IAAkB,UActC,SAASC,EAAcC,EAAU,GAAkD,CAGxF,IAAMC,EAAmB,uBACvBD,EAAUT,EAAYM,EACtBG,EAAUR,EAAcM,EACxBL,CACF,EACMS,EAAc,uBAClBF,EAAUT,EAAYM,EACtBF,EACAC,CACF,EAEA,OAAa,UAAQ,KAAO,CAAE,WAAAK,EAAY,MAAAC,CAAM,GAAI,CAACD,EAAYC,CAAK,CAAC,CACzE",
|
|
6
|
+
"names": ["React", "QUERIES", "_BREAKPOINTS", "mediaQueryLists", "listeners", "cachedBreakpoint", "getMediaQueryLists", "name", "query", "computeBreakpoint", "matched", "mql", "handleChange", "next", "listener", "subscribe", "getSnapshot", "getServerSnapshot", "readBreakpoint", "getReadySnapshot", "getReadyServerSnapshot", "noopSubscribe", "getInitialSnapshot", "useBreakpoint", "enabled", "breakpoint", "ready"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Q}from"./chunk-IBF5U4QW.js";import{a as X,b as q,c as J}from"./chunk-
|
|
1
|
+
import{a as Q}from"./chunk-IBF5U4QW.js";import{a as X,b as q,c as J}from"./chunk-7NYODT3Z.js";import{a as w}from"./chunk-ODCVOXEV.js";import{a as j}from"./chunk-KV4SZP3F.js";import{a as W}from"./chunk-OEEF6KJG.js";import{a as U}from"./chunk-4WU2WKUJ.js";import{a as R}from"./chunk-WJBOOAIO.js";import{a as T}from"./chunk-MM5IHQFM.js";import{a as D}from"./chunk-ERNM3KVF.js";import{a as F}from"./chunk-PYXMGEO7.js";import{a as v}from"./chunk-5TAHT6VC.js";import{b as V,c as x}from"./chunk-SEY4NA45.js";import{a as O}from"./chunk-F22ZRNWL.js";import{a as s}from"./chunk-XYVLQDGR.js";import{a as i}from"./chunk-ZJ33QP5N.js";import{a as G}from"./chunk-JDWCQ2XP.js";import*as e from"react";import{useCallbackRef as ie}from"radix-ui/internal";import{flushSync as re}from"react-dom";var Y=`
|
|
2
2
|
[contenteditable],
|
|
3
3
|
[role="combobox"],
|
|
4
4
|
[role="listbox"],
|
|
@@ -6,5 +6,5 @@ import{a as Q}from"./chunk-IBF5U4QW.js";import{a as X,b as q,c as J}from"./chunk
|
|
|
6
6
|
input:not([type="radio"], [type="checkbox"]),
|
|
7
7
|
select,
|
|
8
8
|
textarea
|
|
9
|
-
`,se=e.forwardRef(({defaultOpen:n=!0,...o},r)=>{let[u,d]=e.useState(n),h=e.useRef(null),l=e.useRef(null);return e.useEffect(()=>{function C(c){let k=c.altKey||c.ctrlKey||c.shiftKey||c.metaKey,g=document.activeElement?.closest(Y);if(c.key?.toUpperCase()==="T"&&!k&&!g){let f=!1;re(()=>{d(H=>(f=!H,f))}),f?(l.current=document.activeElement,h.current?.focus()):l.current?.focus()}}return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[]),e.createElement(_,{...o,ref:r,triggerRef:h,open:u,shortcut:e.createElement(R,{content:"Press T to show/hide the Theme Panel",side:"bottom",sideOffset:6},e.createElement(G,{asChild:!0,size:"3",tabIndex:0,className:"rt-ThemePanelShortcut"},e.createElement("button",{type:"button",onClick:()=>d(C=>!C),ref:h,"aria-label":"Toggle the Theme Panel"},"T")))})});se.displayName="ThemePanel";var _=e.forwardRef((n,o)=>{let{open:r,onAppearanceChange:u,shortcut:d,triggerRef:h,...l}=n,C=V();return e.createElement(x,{asChild:!0,radius:"medium",scaling:"100%"},e.createElement(i,{direction:"column",position:"fixed",top:"0",right:"0",mr:{initial:"2",sm:"4"},mt:{initial:"2",sm:"4"},width:{initial:"360px"},maxHeight:{initial:"calc(100svh - var(--space-2) - var(--space-2))",sm:"calc(100svh - var(--space-4) - var(--space-4))"},maxWidth:{initial:"calc(100svw - var(--space-2) - var(--space-2))",sm:"calc(100svw - var(--space-4) - var(--space-4))"},inert:r?void 0:Q,...l,ref:o,style:{zIndex:999999999,overflow:"hidden",borderRadius:"var(--radius-4)",backgroundColor:"var(--color-panel-solid)",transformOrigin:"top center",transitionProperty:"transform, box-shadow",transitionDuration:"200ms",transitionTimingFunction:r?"ease-out":"ease-in",transform:r?"none":"translateX(105%)",boxShadow:r?"var(--shadow-5)":"var(--shadow-2)",...n.style}},e.createElement(U,null,e.createElement(T,{flexGrow:"1",p:{initial:"4",xs:"5"},position:"relative"},!!d&&e.createElement(T,{position:"absolute",top:"0",right:"0",m:"2"},d),e.createElement(ee,{onAppearanceChange:u,context:C})))))});_.displayName="ThemePanelImpl";var ee=e.forwardRef((n,o)=>{let{onAppearanceChange:r,context:u,...d}=n,h=V(),{appearance:l,onAppearanceChange:C,accentColor:c,onAccentColorChange:k,grayColor:g,onGrayColorChange:K,panelBackground:f,onPanelBackgroundChange:H,radius:M,onRadiusChange:te,scaling:Z,onScalingChange:ae}=u??h,[E,S]=e.useState(l==="inherit"?null:l),N=r!==void 0,$=ie(r),A=e.useCallback(t=>{let a=ce();if(l!=="inherit"){C(t);return}N?$(t):(S(t),de(t)),a()},[l,C,N,$]),I=O(c),z=g==="auto"?I:g,[ne,B]=e.useState("idle");async function oe(){let t={appearance:l===s.appearance.default?void 0:l,accentColor:c===s.accentColor.default?void 0:c,grayColor:g===s.grayColor.default?void 0:g,panelBackground:f===s.panelBackground.default?void 0:f,radius:M===s.radius.default?void 0:M,scaling:Z===s.scaling.default?void 0:Z},a=Object.keys(t).filter(p=>t[p]!==void 0).map(p=>`${p}="${t[p]}"`).join(" "),y=a?`<Theme ${a}>`:"<Theme>";B("copying"),await navigator.clipboard.writeText(y),B("copied"),setTimeout(()=>B("idle"),2e3)}return e.useEffect(()=>{function t(a){let y=a.altKey||a.ctrlKey||a.shiftKey||a.metaKey,p=document.activeElement?.closest(Y);a.key?.toUpperCase()==="D"&&!y&&!p&&A(E==="light"?"dark":"light")}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[A,E]),e.useEffect(()=>{let t=document.documentElement,a=document.body;function y(){let L=t.classList.contains("dark")||t.classList.contains("dark-theme")||a.classList.contains("dark")||a.classList.contains("dark-theme");S(l==="inherit"?L?"dark":"light":l)}let p=new MutationObserver(function(L){L.forEach(function(le){le.attributeName==="class"&&y()})});return y(),l==="inherit"&&(p.observe(t,{attributes:!0}),p.observe(a,{attributes:!0})),()=>p.disconnect()},[l]),e.createElement(i,{direction:"column",gap:"5",...d,ref:o},e.createElement(F,{size:{initial:"3",sm:"5"},trim:"both",as:"h2"},"Theme"),e.createElement(i,{direction:"column",gap:"5"},e.createElement(P,null,e.createElement(b,{id:"accent-color-title"},"Accent color"),e.createElement(i,{wrap:"wrap",gap:"2",role:"group","aria-labelledby":"accent-color-title"},s.accentColor.values.map(t=>e.createElement(T,{asChild:!0,key:t},e.createElement("label",{className:"rt-ThemePanelSwatch","aria-label":m(t),style:{backgroundColor:`var(--${t}-9)`}},e.createElement(R,{content:`${m(t)}${c==="gray"&&z!=="gray"?` (${m(z)})`:""}`},e.createElement("input",{className:"rt-ThemePanelSwatchInput",type:"radio",name:"accentColor",value:t,checked:c===t,onChange:a=>k(a.target.value)}))))))),e.createElement(P,null,e.createElement(b,{id:"gray-color-title"},"Gray color"),e.createElement(i,{wrap:"wrap",gap:"2",role:"group","aria-labelledby":"gray-color-title"},s.grayColor.values.map(t=>e.createElement(i,{key:t,asChild:!0,align:"center",justify:"center"},e.createElement("label",{className:"rt-ThemePanelSwatch","aria-label":m(t),style:{backgroundColor:t==="auto"?`var(--${I}-9)`:t==="gray"?"var(--gray-9)":`var(--${t}-9)`,filter:t==="gray"?"saturate(0)":void 0}},e.createElement(R,{content:`${m(t)}${t==="auto"?` (${m(I)})`:""}`},e.createElement("input",{className:"rt-ThemePanelSwatchInput",type:"radio",name:"grayColor",value:t,checked:g===t,onChange:a=>K(a.target.value)}))))))),e.createElement(P,null,e.createElement(b,{id:"appearance-title"},"Appearance"),e.createElement(w,{columns:"2",gap:"2",role:"group","aria-labelledby":"appearance-title"},["light","dark"].map(t=>e.createElement("label",{key:t,className:"rt-ThemePanelRadioCard"},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"appearance",value:t,checked:E===t,onChange:a=>A(a.target.value)}),e.createElement(i,{align:"center",justify:"center",height:"32px",gap:"2"},t==="light"?e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -1px"}},e.createElement("path",{d:"M7.5 0C7.77614 0 8 0.223858 8 0.5V2.5C8 2.77614 7.77614 3 7.5 3C7.22386 3 7 2.77614 7 2.5V0.5C7 0.223858 7.22386 0 7.5 0ZM2.1967 2.1967C2.39196 2.00144 2.70854 2.00144 2.90381 2.1967L4.31802 3.61091C4.51328 3.80617 4.51328 4.12276 4.31802 4.31802C4.12276 4.51328 3.80617 4.51328 3.61091 4.31802L2.1967 2.90381C2.00144 2.70854 2.00144 2.39196 2.1967 2.1967ZM0.5 7C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H2.5C2.77614 8 3 7.77614 3 7.5C3 7.22386 2.77614 7 2.5 7H0.5ZM2.1967 12.8033C2.00144 12.608 2.00144 12.2915 2.1967 12.0962L3.61091 10.682C3.80617 10.4867 4.12276 10.4867 4.31802 10.682C4.51328 10.8772 4.51328 11.1938 4.31802 11.3891L2.90381 12.8033C2.70854 12.9986 2.39196 12.9986 2.1967 12.8033ZM12.5 7C12.2239 7 12 7.22386 12 7.5C12 7.77614 12.2239 8 12.5 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12.5ZM10.682 4.31802C10.4867 4.12276 10.4867 3.80617 10.682 3.61091L12.0962 2.1967C12.2915 2.00144 12.608 2.00144 12.8033 2.1967C12.9986 2.39196 12.9986 2.70854 12.8033 2.90381L11.3891 4.31802C11.1938 4.51328 10.8772 4.51328 10.682 4.31802ZM8 12.5C8 12.2239 7.77614 12 7.5 12C7.22386 12 7 12.2239 7 12.5V14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5V12.5ZM10.682 10.682C10.8772 10.4867 11.1938 10.4867 11.3891 10.682L12.8033 12.0962C12.9986 12.2915 12.9986 12.608 12.8033 12.8033C12.608 12.9986 12.2915 12.9986 12.0962 12.8033L10.682 11.3891C10.4867 11.1938 10.4867 10.8772 10.682 10.682ZM5.5 7.5C5.5 6.39543 6.39543 5.5 7.5 5.5C8.60457 5.5 9.5 6.39543 9.5 7.5C9.5 8.60457 8.60457 9.5 7.5 9.5C6.39543 9.5 5.5 8.60457 5.5 7.5ZM7.5 4.5C5.84315 4.5 4.5 5.84315 4.5 7.5C4.5 9.15685 5.84315 10.5 7.5 10.5C9.15685 10.5 10.5 9.15685 10.5 7.5C10.5 5.84315 9.15685 4.5 7.5 4.5Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})):e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -1px"}},e.createElement("path",{d:"M2.89998 0.499976C2.89998 0.279062 2.72089 0.0999756 2.49998 0.0999756C2.27906 0.0999756 2.09998 0.279062 2.09998 0.499976V1.09998H1.49998C1.27906 1.09998 1.09998 1.27906 1.09998 1.49998C1.09998 1.72089 1.27906 1.89998 1.49998 1.89998H2.09998V2.49998C2.09998 2.72089 2.27906 2.89998 2.49998 2.89998C2.72089 2.89998 2.89998 2.72089 2.89998 2.49998V1.89998H3.49998C3.72089 1.89998 3.89998 1.72089 3.89998 1.49998C3.89998 1.27906 3.72089 1.09998 3.49998 1.09998H2.89998V0.499976ZM5.89998 3.49998C5.89998 3.27906 5.72089 3.09998 5.49998 3.09998C5.27906 3.09998 5.09998 3.27906 5.09998 3.49998V4.09998H4.49998C4.27906 4.09998 4.09998 4.27906 4.09998 4.49998C4.09998 4.72089 4.27906 4.89998 4.49998 4.89998H5.09998V5.49998C5.09998 5.72089 5.27906 5.89998 5.49998 5.89998C5.72089 5.89998 5.89998 5.72089 5.89998 5.49998V4.89998H6.49998C6.72089 4.89998 6.89998 4.72089 6.89998 4.49998C6.89998 4.27906 6.72089 4.09998 6.49998 4.09998H5.89998V3.49998ZM1.89998 6.49998C1.89998 6.27906 1.72089 6.09998 1.49998 6.09998C1.27906 6.09998 1.09998 6.27906 1.09998 6.49998V7.09998H0.499976C0.279062 7.09998 0.0999756 7.27906 0.0999756 7.49998C0.0999756 7.72089 0.279062 7.89998 0.499976 7.89998H1.09998V8.49998C1.09998 8.72089 1.27906 8.89997 1.49998 8.89997C1.72089 8.89997 1.89998 8.72089 1.89998 8.49998V7.89998H2.49998C2.72089 7.89998 2.89998 7.72089 2.89998 7.49998C2.89998 7.27906 2.72089 7.09998 2.49998 7.09998H1.89998V6.49998ZM8.54406 0.98184L8.24618 0.941586C8.03275 0.917676 7.90692 1.1655 8.02936 1.34194C8.17013 1.54479 8.29981 1.75592 8.41754 1.97445C8.91878 2.90485 9.20322 3.96932 9.20322 5.10022C9.20322 8.37201 6.82247 11.0878 3.69887 11.6097C3.45736 11.65 3.20988 11.6772 2.96008 11.6906C2.74563 11.702 2.62729 11.9535 2.77721 12.1072C2.84551 12.1773 2.91535 12.2458 2.98667 12.3128L3.05883 12.3795L3.31883 12.6045L3.50684 12.7532L3.62796 12.8433L3.81491 12.9742L3.99079 13.089C4.11175 13.1651 4.23536 13.2375 4.36157 13.3059L4.62496 13.4412L4.88553 13.5607L5.18837 13.6828L5.43169 13.7686C5.56564 13.8128 5.70149 13.8529 5.83857 13.8885C5.94262 13.9155 6.04767 13.9401 6.15405 13.9622C6.27993 13.9883 6.40713 14.0109 6.53544 14.0298L6.85241 14.0685L7.11934 14.0892C7.24637 14.0965 7.37436 14.1002 7.50322 14.1002C11.1483 14.1002 14.1032 11.1453 14.1032 7.50023C14.1032 7.25044 14.0893 7.00389 14.0623 6.76131L14.0255 6.48407C13.991 6.26083 13.9453 6.04129 13.8891 5.82642C13.8213 5.56709 13.7382 5.31398 13.6409 5.06881L13.5279 4.80132L13.4507 4.63542L13.3766 4.48666C13.2178 4.17773 13.0353 3.88295 12.8312 3.60423L12.6782 3.40352L12.4793 3.16432L12.3157 2.98361L12.1961 2.85951L12.0355 2.70246L11.8134 2.50184L11.4925 2.24191L11.2483 2.06498L10.9562 1.87446L10.6346 1.68894L10.3073 1.52378L10.1938 1.47176L9.95488 1.3706L9.67791 1.2669L9.42566 1.1846L9.10075 1.09489L8.83599 1.03486L8.54406 0.98184ZM10.4032 5.30023C10.4032 4.27588 10.2002 3.29829 9.83244 2.40604C11.7623 3.28995 13.1032 5.23862 13.1032 7.50023C13.1032 10.593 10.596 13.1002 7.50322 13.1002C6.63646 13.1002 5.81597 12.9036 5.08355 12.5522C6.5419 12.0941 7.81081 11.2082 8.74322 10.0416C8.87963 10.2284 9.10028 10.3497 9.34928 10.3497C9.76349 10.3497 10.0993 10.0139 10.0993 9.59971C10.0993 9.24256 9.84965 8.94373 9.51535 8.86816C9.57741 8.75165 9.63653 8.63334 9.6926 8.51332C9.88358 8.63163 10.1088 8.69993 10.35 8.69993C11.0403 8.69993 11.6 8.14028 11.6 7.44993C11.6 6.75976 11.0406 6.20024 10.3505 6.19993C10.3853 5.90487 10.4032 5.60464 10.4032 5.30023Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})),e.createElement(v,{size:"1",weight:"medium"},m(t))))))),e.createElement(P,null,e.createElement(b,{id:"radius-title"},"Radius"),e.createElement(i,{gap:"2",role:"group","aria-labelledby":"radius-title",wrap:"wrap"},s.radius.values.map(t=>e.createElement(i,{key:t,direction:"column",align:"center"},e.createElement("label",{className:"rt-ThemePanelRadioCard"},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"radius",id:`theme-panel-radius-${t}`,value:t,checked:M===t,onChange:a=>te(a.target.value)}),e.createElement(x,{asChild:!0,radius:t},e.createElement(T,{m:"3",width:{initial:"24px",sm:"32px"},height:{initial:"24px",sm:"32px"},style:{borderTopLeftRadius:t==="full"?"80%":"var(--radius-5)",backgroundImage:"linear-gradient(to bottom right, var(--accent-3), var(--accent-4))",borderTop:"2px solid var(--accent-a8)",borderLeft:"2px solid var(--accent-a8)"}}))),e.createElement(T,{asChild:!0,pt:"2"},e.createElement(v,{asChild:!0,size:"1",color:"gray"},e.createElement("label",{htmlFor:`theme-panel-radius-${t}`},m(t)))))))),e.createElement(P,null,e.createElement(b,{id:"scaling-title"},"Scaling"),e.createElement(w,{columns:{initial:"repeat(3, 1fr)",sm:"5"},gap:"2",role:"group","aria-labelledby":"scaling-title"},s.scaling.values.map(t=>e.createElement("label",{key:t,className:"rt-ThemePanelRadioCard","aria-label":`Scaling ${t}`},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"scaling",value:t,checked:Z===t,onChange:a=>ae(a.target.value)}),e.createElement(i,{align:"center",justify:"center",height:"32px"},e.createElement(x,{asChild:!0,scaling:t},e.createElement(i,{align:"center",justify:"center"},e.createElement(v,{size:"1",weight:"medium"},m(t))))))))),e.createElement(P,null,e.createElement(i,{align:"center",gap:"2"},e.createElement(b,{id:"panel-background-title"},"Panel background"),e.createElement(X,null,e.createElement(q,null,e.createElement(W,{size:"1",variant:"ghost",color:"gray"},e.createElement(D,{label:"Learn more about panel background options"},e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z",fillRule:"evenodd",clipRule:"evenodd"}))))),e.createElement(J,{size:"1",width:"220px",maxWidth:"90svw",minWidth:"0",side:"top",align:"center"},e.createElement(v,{as:"p",size:"1"},"Whether Card and Table panels are translucent, showing some of the background behind them.")))),e.createElement(w,{columns:{initial:"1",sm:"2"},rows:{initial:"2",sm:"1"},gap:"2",role:"group","aria-labelledby":"panel-background-title"},s.panelBackground.values.map(t=>e.createElement("label",{key:t,className:"rt-ThemePanelRadioCard"},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"panelBackground",value:t,checked:f===t,onChange:a=>H(a.target.value)}),e.createElement(i,{align:"center",justify:"center",height:"32px",gap:"2"},t==="solid"?e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -2px"}},e.createElement("path",{d:"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})):e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -2px"}},e.createElement("path",{opacity:".05",d:"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".1",d:"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".15",d:"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".2",d:"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".25",d:"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".3",d:"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".35",d:"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".4",d:"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".45",d:"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".5",d:"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{d:"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})),e.createElement(v,{size:"1",weight:"medium"},m(t)))))))),e.createElement(j,{style:{width:"100%"},onClick:oe},ne==="copied"?"Copied":"Copy Theme"))});ee.displayName="ThemePanelContent";function P(n){return e.createElement(i,{direction:"column",gap:"3",asChild:!0,...n},e.createElement("section",null,n.children))}function b(n){return e.createElement(F,{as:"h3",size:{initial:"1",sm:"2"},...n})}function ce(){let n=document.createElement("style");return n.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(n),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(n)},1)}}function m(n){return n.charAt(0).toUpperCase()+n.slice(1)}function de(n){let o=document.documentElement,r=o.classList.contains("light-theme"),u=o.classList.contains("dark-theme"),d=o.classList.contains("light"),h=o.classList.contains("dark");(r||u)&&(o.classList.remove("light-theme","dark-theme"),o.style.colorScheme=n,o.classList.add(`${n}-theme`)),(d||h)&&(o.classList.remove("light","dark"),o.style.colorScheme=n,o.classList.add(n)),!r&&!u&&!d&&!h&&(o.style.colorScheme=n,o.classList.add(n))}export{se as a,ee as b};
|
|
10
|
-
//# sourceMappingURL=chunk-
|
|
9
|
+
`,se=e.forwardRef(({defaultOpen:n=!0,...o},r)=>{let[u,d]=e.useState(n),h=e.useRef(null),l=e.useRef(null);return e.useEffect(()=>{function C(c){let k=c.altKey||c.ctrlKey||c.shiftKey||c.metaKey,g=document.activeElement?.closest(Y);if(c.key?.toUpperCase()==="T"&&!k&&!g){let f=!1;re(()=>{d(H=>(f=!H,f))}),f?(l.current=document.activeElement,h.current?.focus()):l.current?.focus()}}return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[]),e.createElement(_,{...o,ref:r,triggerRef:h,open:u,shortcut:e.createElement(R,{content:"Press T to show/hide the Theme Panel",side:"bottom",sideOffset:6},e.createElement(G,{asChild:!0,size:"3",tabIndex:0,className:"rt-ThemePanelShortcut"},e.createElement("button",{type:"button",onClick:()=>d(C=>!C),ref:h,"aria-label":"Toggle the Theme Panel"},"T")))})});se.displayName="ThemePanel";var _=e.forwardRef((n,o)=>{let{open:r,onAppearanceChange:u,shortcut:d,triggerRef:h,...l}=n,C=V();return e.createElement(x,{asChild:!0,radius:"medium",scaling:"100%"},e.createElement(i,{direction:"column",position:"fixed",top:"0",right:"0",mr:{initial:"2",sm:"4"},mt:{initial:"2",sm:"4"},width:{initial:"360px"},maxHeight:{initial:"calc(100svh - var(--space-2) - var(--space-2))",sm:"calc(100svh - var(--space-4) - var(--space-4))"},maxWidth:{initial:"calc(100svw - var(--space-2) - var(--space-2))",sm:"calc(100svw - var(--space-4) - var(--space-4))"},inert:r?void 0:Q,...l,ref:o,style:{zIndex:999999999,overflow:"hidden",borderRadius:"var(--radius-4)",backgroundColor:"var(--color-panel-solid)",transformOrigin:"top center",transitionProperty:"transform, box-shadow",transitionDuration:"200ms",transitionTimingFunction:r?"ease-out":"ease-in",transform:r?"none":"translateX(105%)",boxShadow:r?"var(--shadow-5)":"var(--shadow-2)",...n.style}},e.createElement(U,null,e.createElement(T,{flexGrow:"1",p:{initial:"4",xs:"5"},position:"relative"},!!d&&e.createElement(T,{position:"absolute",top:"0",right:"0",m:"2"},d),e.createElement(ee,{onAppearanceChange:u,context:C})))))});_.displayName="ThemePanelImpl";var ee=e.forwardRef((n,o)=>{let{onAppearanceChange:r,context:u,...d}=n,h=V(),{appearance:l,onAppearanceChange:C,accentColor:c,onAccentColorChange:k,grayColor:g,onGrayColorChange:K,panelBackground:f,onPanelBackgroundChange:H,radius:M,onRadiusChange:te,scaling:Z,onScalingChange:ae}=u??h,[E,S]=e.useState(l==="inherit"?null:l),N=r!==void 0,$=ie(r),A=e.useCallback(t=>{let a=ce();if(l!=="inherit"){C(t);return}N?$(t):(S(t),de(t)),a()},[l,C,N,$]),I=O(c),z=g==="auto"?I:g,[ne,B]=e.useState("idle");async function oe(){let t={appearance:l===s.appearance.default?void 0:l,accentColor:c===s.accentColor.default?void 0:c,grayColor:g===s.grayColor.default?void 0:g,panelBackground:f===s.panelBackground.default?void 0:f,radius:M===s.radius.default?void 0:M,scaling:Z===s.scaling.default?void 0:Z},a=Object.keys(t).filter(p=>t[p]!==void 0).map(p=>`${p}="${t[p]}"`).join(" "),y=a?`<Theme ${a}>`:"<Theme>";B("copying"),await navigator.clipboard.writeText(y),B("copied"),setTimeout(()=>B("idle"),2e3)}return e.useEffect(()=>{function t(a){let y=a.altKey||a.ctrlKey||a.shiftKey||a.metaKey,p=document.activeElement?.closest(Y);a.key?.toUpperCase()==="D"&&!y&&!p&&A(E==="light"?"dark":"light")}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[A,E]),e.useEffect(()=>{let t=document.documentElement,a=document.body;function y(){let L=t.classList.contains("dark")||t.classList.contains("dark-theme")||a.classList.contains("dark")||a.classList.contains("dark-theme");S(l==="inherit"?L?"dark":"light":l)}let p=new MutationObserver(function(L){L.forEach(function(le){le.attributeName==="class"&&y()})});return y(),l==="inherit"&&(p.observe(t,{attributes:!0}),p.observe(a,{attributes:!0})),()=>p.disconnect()},[l]),e.createElement(i,{direction:"column",gap:"5",...d,ref:o},e.createElement(F,{size:{initial:"3",sm:"5"},trim:"both",as:"h2"},"Theme"),e.createElement(i,{direction:"column",gap:"5"},e.createElement(P,null,e.createElement(b,{id:"accent-color-title"},"Accent color"),e.createElement(i,{wrap:"wrap",gap:"2",role:"group","aria-labelledby":"accent-color-title"},s.accentColor.values.map(t=>e.createElement(T,{asChild:!0,key:t},e.createElement("label",{className:"rt-ThemePanelSwatch","aria-label":m(t),style:{backgroundColor:`var(--${t}-9)`}},e.createElement(R,{content:`${m(t)}${c==="gray"&&z!=="gray"?` (${m(z)})`:""}`},e.createElement("input",{className:"rt-ThemePanelSwatchInput",type:"radio",name:"accentColor",value:t,checked:c===t,onChange:a=>k(a.target.value)}))))))),e.createElement(P,null,e.createElement(b,{id:"gray-color-title"},"Gray color"),e.createElement(i,{wrap:"wrap",gap:"2",role:"group","aria-labelledby":"gray-color-title"},s.grayColor.values.map(t=>e.createElement(i,{key:t,asChild:!0,align:"center",justify:"center"},e.createElement("label",{className:"rt-ThemePanelSwatch","aria-label":m(t),style:{backgroundColor:t==="auto"?`var(--${I}-9)`:t==="gray"?"var(--gray-9)":`var(--${t}-9)`,filter:t==="gray"?"saturate(0)":void 0}},e.createElement(R,{content:`${m(t)}${t==="auto"?` (${m(I)})`:""}`},e.createElement("input",{className:"rt-ThemePanelSwatchInput",type:"radio",name:"grayColor",value:t,checked:g===t,onChange:a=>K(a.target.value)}))))))),e.createElement(P,null,e.createElement(b,{id:"appearance-title"},"Appearance"),e.createElement(w,{columns:"2",gap:"2",role:"group","aria-labelledby":"appearance-title"},["light","dark"].map(t=>e.createElement("label",{key:t,className:"rt-ThemePanelRadioCard"},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"appearance",value:t,checked:E===t,onChange:a=>A(a.target.value)}),e.createElement(i,{align:"center",justify:"center",height:"32px",gap:"2"},t==="light"?e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -1px"}},e.createElement("path",{d:"M7.5 0C7.77614 0 8 0.223858 8 0.5V2.5C8 2.77614 7.77614 3 7.5 3C7.22386 3 7 2.77614 7 2.5V0.5C7 0.223858 7.22386 0 7.5 0ZM2.1967 2.1967C2.39196 2.00144 2.70854 2.00144 2.90381 2.1967L4.31802 3.61091C4.51328 3.80617 4.51328 4.12276 4.31802 4.31802C4.12276 4.51328 3.80617 4.51328 3.61091 4.31802L2.1967 2.90381C2.00144 2.70854 2.00144 2.39196 2.1967 2.1967ZM0.5 7C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H2.5C2.77614 8 3 7.77614 3 7.5C3 7.22386 2.77614 7 2.5 7H0.5ZM2.1967 12.8033C2.00144 12.608 2.00144 12.2915 2.1967 12.0962L3.61091 10.682C3.80617 10.4867 4.12276 10.4867 4.31802 10.682C4.51328 10.8772 4.51328 11.1938 4.31802 11.3891L2.90381 12.8033C2.70854 12.9986 2.39196 12.9986 2.1967 12.8033ZM12.5 7C12.2239 7 12 7.22386 12 7.5C12 7.77614 12.2239 8 12.5 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12.5ZM10.682 4.31802C10.4867 4.12276 10.4867 3.80617 10.682 3.61091L12.0962 2.1967C12.2915 2.00144 12.608 2.00144 12.8033 2.1967C12.9986 2.39196 12.9986 2.70854 12.8033 2.90381L11.3891 4.31802C11.1938 4.51328 10.8772 4.51328 10.682 4.31802ZM8 12.5C8 12.2239 7.77614 12 7.5 12C7.22386 12 7 12.2239 7 12.5V14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5V12.5ZM10.682 10.682C10.8772 10.4867 11.1938 10.4867 11.3891 10.682L12.8033 12.0962C12.9986 12.2915 12.9986 12.608 12.8033 12.8033C12.608 12.9986 12.2915 12.9986 12.0962 12.8033L10.682 11.3891C10.4867 11.1938 10.4867 10.8772 10.682 10.682ZM5.5 7.5C5.5 6.39543 6.39543 5.5 7.5 5.5C8.60457 5.5 9.5 6.39543 9.5 7.5C9.5 8.60457 8.60457 9.5 7.5 9.5C6.39543 9.5 5.5 8.60457 5.5 7.5ZM7.5 4.5C5.84315 4.5 4.5 5.84315 4.5 7.5C4.5 9.15685 5.84315 10.5 7.5 10.5C9.15685 10.5 10.5 9.15685 10.5 7.5C10.5 5.84315 9.15685 4.5 7.5 4.5Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})):e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -1px"}},e.createElement("path",{d:"M2.89998 0.499976C2.89998 0.279062 2.72089 0.0999756 2.49998 0.0999756C2.27906 0.0999756 2.09998 0.279062 2.09998 0.499976V1.09998H1.49998C1.27906 1.09998 1.09998 1.27906 1.09998 1.49998C1.09998 1.72089 1.27906 1.89998 1.49998 1.89998H2.09998V2.49998C2.09998 2.72089 2.27906 2.89998 2.49998 2.89998C2.72089 2.89998 2.89998 2.72089 2.89998 2.49998V1.89998H3.49998C3.72089 1.89998 3.89998 1.72089 3.89998 1.49998C3.89998 1.27906 3.72089 1.09998 3.49998 1.09998H2.89998V0.499976ZM5.89998 3.49998C5.89998 3.27906 5.72089 3.09998 5.49998 3.09998C5.27906 3.09998 5.09998 3.27906 5.09998 3.49998V4.09998H4.49998C4.27906 4.09998 4.09998 4.27906 4.09998 4.49998C4.09998 4.72089 4.27906 4.89998 4.49998 4.89998H5.09998V5.49998C5.09998 5.72089 5.27906 5.89998 5.49998 5.89998C5.72089 5.89998 5.89998 5.72089 5.89998 5.49998V4.89998H6.49998C6.72089 4.89998 6.89998 4.72089 6.89998 4.49998C6.89998 4.27906 6.72089 4.09998 6.49998 4.09998H5.89998V3.49998ZM1.89998 6.49998C1.89998 6.27906 1.72089 6.09998 1.49998 6.09998C1.27906 6.09998 1.09998 6.27906 1.09998 6.49998V7.09998H0.499976C0.279062 7.09998 0.0999756 7.27906 0.0999756 7.49998C0.0999756 7.72089 0.279062 7.89998 0.499976 7.89998H1.09998V8.49998C1.09998 8.72089 1.27906 8.89997 1.49998 8.89997C1.72089 8.89997 1.89998 8.72089 1.89998 8.49998V7.89998H2.49998C2.72089 7.89998 2.89998 7.72089 2.89998 7.49998C2.89998 7.27906 2.72089 7.09998 2.49998 7.09998H1.89998V6.49998ZM8.54406 0.98184L8.24618 0.941586C8.03275 0.917676 7.90692 1.1655 8.02936 1.34194C8.17013 1.54479 8.29981 1.75592 8.41754 1.97445C8.91878 2.90485 9.20322 3.96932 9.20322 5.10022C9.20322 8.37201 6.82247 11.0878 3.69887 11.6097C3.45736 11.65 3.20988 11.6772 2.96008 11.6906C2.74563 11.702 2.62729 11.9535 2.77721 12.1072C2.84551 12.1773 2.91535 12.2458 2.98667 12.3128L3.05883 12.3795L3.31883 12.6045L3.50684 12.7532L3.62796 12.8433L3.81491 12.9742L3.99079 13.089C4.11175 13.1651 4.23536 13.2375 4.36157 13.3059L4.62496 13.4412L4.88553 13.5607L5.18837 13.6828L5.43169 13.7686C5.56564 13.8128 5.70149 13.8529 5.83857 13.8885C5.94262 13.9155 6.04767 13.9401 6.15405 13.9622C6.27993 13.9883 6.40713 14.0109 6.53544 14.0298L6.85241 14.0685L7.11934 14.0892C7.24637 14.0965 7.37436 14.1002 7.50322 14.1002C11.1483 14.1002 14.1032 11.1453 14.1032 7.50023C14.1032 7.25044 14.0893 7.00389 14.0623 6.76131L14.0255 6.48407C13.991 6.26083 13.9453 6.04129 13.8891 5.82642C13.8213 5.56709 13.7382 5.31398 13.6409 5.06881L13.5279 4.80132L13.4507 4.63542L13.3766 4.48666C13.2178 4.17773 13.0353 3.88295 12.8312 3.60423L12.6782 3.40352L12.4793 3.16432L12.3157 2.98361L12.1961 2.85951L12.0355 2.70246L11.8134 2.50184L11.4925 2.24191L11.2483 2.06498L10.9562 1.87446L10.6346 1.68894L10.3073 1.52378L10.1938 1.47176L9.95488 1.3706L9.67791 1.2669L9.42566 1.1846L9.10075 1.09489L8.83599 1.03486L8.54406 0.98184ZM10.4032 5.30023C10.4032 4.27588 10.2002 3.29829 9.83244 2.40604C11.7623 3.28995 13.1032 5.23862 13.1032 7.50023C13.1032 10.593 10.596 13.1002 7.50322 13.1002C6.63646 13.1002 5.81597 12.9036 5.08355 12.5522C6.5419 12.0941 7.81081 11.2082 8.74322 10.0416C8.87963 10.2284 9.10028 10.3497 9.34928 10.3497C9.76349 10.3497 10.0993 10.0139 10.0993 9.59971C10.0993 9.24256 9.84965 8.94373 9.51535 8.86816C9.57741 8.75165 9.63653 8.63334 9.6926 8.51332C9.88358 8.63163 10.1088 8.69993 10.35 8.69993C11.0403 8.69993 11.6 8.14028 11.6 7.44993C11.6 6.75976 11.0406 6.20024 10.3505 6.19993C10.3853 5.90487 10.4032 5.60464 10.4032 5.30023Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})),e.createElement(v,{size:"1",weight:"medium"},m(t))))))),e.createElement(P,null,e.createElement(b,{id:"radius-title"},"Radius"),e.createElement(i,{gap:"2",role:"group","aria-labelledby":"radius-title",wrap:"wrap"},s.radius.values.map(t=>e.createElement(i,{key:t,direction:"column",align:"center"},e.createElement("label",{className:"rt-ThemePanelRadioCard"},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"radius",id:`theme-panel-radius-${t}`,value:t,checked:M===t,onChange:a=>te(a.target.value)}),e.createElement(x,{asChild:!0,radius:t},e.createElement(T,{m:"3",width:{initial:"24px",sm:"32px"},height:{initial:"24px",sm:"32px"},style:{borderTopLeftRadius:t==="full"?"80%":"var(--radius-5)",backgroundImage:"linear-gradient(to bottom right, var(--accent-3), var(--accent-4))",borderTop:"2px solid var(--accent-a8)",borderLeft:"2px solid var(--accent-a8)"}}))),e.createElement(T,{asChild:!0,pt:"2"},e.createElement(v,{asChild:!0,size:"1",emphasis:"medium"},e.createElement("label",{htmlFor:`theme-panel-radius-${t}`},m(t)))))))),e.createElement(P,null,e.createElement(b,{id:"scaling-title"},"Scaling"),e.createElement(w,{columns:{initial:"repeat(3, 1fr)",sm:"5"},gap:"2",role:"group","aria-labelledby":"scaling-title"},s.scaling.values.map(t=>e.createElement("label",{key:t,className:"rt-ThemePanelRadioCard","aria-label":`Scaling ${t}`},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"scaling",value:t,checked:Z===t,onChange:a=>ae(a.target.value)}),e.createElement(i,{align:"center",justify:"center",height:"32px"},e.createElement(x,{asChild:!0,scaling:t},e.createElement(i,{align:"center",justify:"center"},e.createElement(v,{size:"1",weight:"medium"},m(t))))))))),e.createElement(P,null,e.createElement(i,{align:"center",gap:"2"},e.createElement(b,{id:"panel-background-title"},"Panel background"),e.createElement(X,null,e.createElement(q,null,e.createElement(W,{size:"1",variant:"ghost",color:"gray"},e.createElement(D,{label:"Learn more about panel background options"},e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z",fillRule:"evenodd",clipRule:"evenodd"}))))),e.createElement(J,{size:"1",width:"220px",maxWidth:"90svw",minWidth:"0",side:"top",align:"center"},e.createElement(v,{as:"p",size:"1"},"Whether Card and Table panels are translucent, showing some of the background behind them.")))),e.createElement(w,{columns:{initial:"1",sm:"2"},rows:{initial:"2",sm:"1"},gap:"2",role:"group","aria-labelledby":"panel-background-title"},s.panelBackground.values.map(t=>e.createElement("label",{key:t,className:"rt-ThemePanelRadioCard"},e.createElement("input",{className:"rt-ThemePanelRadioCardInput",type:"radio",name:"panelBackground",value:t,checked:f===t,onChange:a=>H(a.target.value)}),e.createElement(i,{align:"center",justify:"center",height:"32px",gap:"2"},t==="solid"?e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -2px"}},e.createElement("path",{d:"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})):e.createElement("svg",{width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{margin:"0 -2px"}},e.createElement("path",{opacity:".05",d:"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".1",d:"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".15",d:"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".2",d:"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".25",d:"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".3",d:"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".35",d:"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".4",d:"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".45",d:"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{opacity:".5",d:"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}),e.createElement("path",{d:"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"})),e.createElement(v,{size:"1",weight:"medium"},m(t)))))))),e.createElement(j,{style:{width:"100%"},onClick:oe},ne==="copied"?"Copied":"Copy Theme"))});ee.displayName="ThemePanelContent";function P(n){return e.createElement(i,{direction:"column",gap:"3",asChild:!0,...n},e.createElement("section",null,n.children))}function b(n){return e.createElement(F,{as:"h3",size:{initial:"1",sm:"2"},...n})}function ce(){let n=document.createElement("style");return n.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(n),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(n)},1)}}function m(n){return n.charAt(0).toUpperCase()+n.slice(1)}function de(n){let o=document.documentElement,r=o.classList.contains("light-theme"),u=o.classList.contains("dark-theme"),d=o.classList.contains("light"),h=o.classList.contains("dark");(r||u)&&(o.classList.remove("light-theme","dark-theme"),o.style.colorScheme=n,o.classList.add(`${n}-theme`)),(d||h)&&(o.classList.remove("light","dark"),o.style.colorScheme=n,o.classList.add(n)),!r&&!u&&!d&&!h&&(o.style.colorScheme=n,o.classList.add(n))}export{se as a,ee as b};
|
|
10
|
+
//# sourceMappingURL=chunk-44JZYS7A.js.map
|