@womp/kookie-ui 0.13.3 → 0.14.1
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 +1052 -302
- 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 +4 -2
- 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 +4 -2
- 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 +2 -2
- package/dist/cjs/components/_internal/base-menu.props.js +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js.map +2 -2
- package/dist/cjs/components/_internal/base-menu.utils.js +1 -1
- package/dist/cjs/components/_internal/base-menu.utils.js.map +4 -4
- package/dist/cjs/components/_internal/base-radio.props.d.ts +4 -2
- 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 +7 -1
- 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 +2 -2
- package/dist/cjs/components/_internal/menu-context.js +1 -1
- package/dist/cjs/components/_internal/menu-context.js.map +2 -2
- package/dist/cjs/components/_internal/pane-chrome.d.ts +47 -0
- package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -0
- package/dist/cjs/components/_internal/pane-chrome.js +2 -0
- package/dist/cjs/components/_internal/pane-chrome.js.map +7 -0
- package/dist/cjs/components/_internal/shell-sidebar.d.ts +2 -1
- 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/accordion.js +1 -1
- package/dist/cjs/components/accordion.js.map +4 -4
- package/dist/cjs/components/accordion.props.d.ts +5 -3
- 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 +2 -2
- package/dist/cjs/components/app-bar.d.ts +1 -0
- package/dist/cjs/components/app-bar.d.ts.map +1 -1
- package/dist/cjs/components/app-bar.js +1 -1
- package/dist/cjs/components/app-bar.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 +4 -2
- 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 +4 -2
- 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 +1 -1
- package/dist/cjs/components/blockquote.props.js +1 -1
- package/dist/cjs/components/blockquote.props.js.map +1 -1
- package/dist/cjs/components/button.d.ts +5 -0
- package/dist/cjs/components/button.d.ts.map +1 -1
- package/dist/cjs/components/button.js +4 -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.d.ts +1 -0
- package/dist/cjs/components/callout.d.ts.map +1 -1
- 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 +4 -2
- 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/card.js +1 -1
- package/dist/cjs/components/card.js.map +4 -4
- package/dist/cjs/components/card.props.d.ts +4 -2
- package/dist/cjs/components/card.props.d.ts.map +1 -1
- package/dist/cjs/components/card.props.js +1 -1
- package/dist/cjs/components/card.props.js.map +4 -4
- package/dist/cjs/components/chatbar.d.ts +2 -1
- 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 +10 -2
- 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.js +1 -1
- package/dist/cjs/components/checkbox-group.js.map +4 -4
- package/dist/cjs/components/checkbox-group.props.d.ts +3 -2
- 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 +3 -3
- package/dist/cjs/components/code.props.js +1 -1
- package/dist/cjs/components/code.props.js.map +3 -3
- package/dist/cjs/components/combobox.d.ts +0 -16
- 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 +6 -4
- 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 +2 -1
- 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 +2 -2
- package/dist/cjs/components/data-list.js +1 -1
- package/dist/cjs/components/data-list.js.map +1 -1
- package/dist/cjs/components/data-list.props.js +1 -1
- package/dist/cjs/components/data-list.props.js.map +1 -1
- package/dist/cjs/components/dialog.js +1 -1
- package/dist/cjs/components/dialog.js.map +2 -2
- package/dist/cjs/components/dropdown-menu.d.ts +2 -1
- 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 +2 -2
- package/dist/cjs/components/heading.js +1 -1
- package/dist/cjs/components/heading.js.map +1 -1
- package/dist/cjs/components/heading.props.js +1 -1
- package/dist/cjs/components/heading.props.js.map +1 -1
- package/dist/cjs/components/hover-card.js +1 -1
- package/dist/cjs/components/hover-card.js.map +2 -2
- package/dist/cjs/components/icon-button.d.ts +2 -1
- package/dist/cjs/components/icon-button.d.ts.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/kbd.js +1 -1
- package/dist/cjs/components/kbd.js.map +4 -4
- package/dist/cjs/components/kbd.props.d.ts +4 -2
- package/dist/cjs/components/kbd.props.d.ts.map +1 -1
- package/dist/cjs/components/kbd.props.js +1 -1
- package/dist/cjs/components/kbd.props.js.map +4 -4
- package/dist/cjs/components/link.js +1 -1
- package/dist/cjs/components/link.js.map +1 -1
- package/dist/cjs/components/link.props.js +1 -1
- package/dist/cjs/components/link.props.js.map +1 -1
- package/dist/cjs/components/message-scroller.js +2 -2
- package/dist/cjs/components/message-scroller.js.map +4 -4
- package/dist/cjs/components/navbar.js +1 -1
- package/dist/cjs/components/navbar.js.map +2 -2
- package/dist/cjs/components/navbar.props.d.ts +1 -1
- package/dist/cjs/components/navbar.props.js +1 -1
- package/dist/cjs/components/navbar.props.js.map +2 -2
- package/dist/cjs/components/notice.js +2 -2
- package/dist/cjs/components/notice.js.map +4 -4
- package/dist/cjs/components/popover.d.ts.map +1 -1
- package/dist/cjs/components/popover.js +1 -1
- package/dist/cjs/components/popover.js.map +4 -4
- package/dist/cjs/components/popover.props.d.ts +6 -0
- package/dist/cjs/components/popover.props.d.ts.map +1 -1
- package/dist/cjs/components/popover.props.js +1 -1
- package/dist/cjs/components/popover.props.js.map +2 -2
- package/dist/cjs/components/progress.js +1 -1
- package/dist/cjs/components/progress.js.map +1 -1
- package/dist/cjs/components/progress.props.js +1 -1
- package/dist/cjs/components/progress.props.js.map +1 -1
- package/dist/cjs/components/radio-cards.d.ts.map +1 -1
- 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 +10 -2
- 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.js +1 -1
- package/dist/cjs/components/radio-group.js.map +4 -4
- package/dist/cjs/components/radio-group.props.d.ts +4 -2
- 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 +2 -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 +2 -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 +2 -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 +2 -2
- package/dist/cjs/components/schemas/toggle-button.schema.d.ts +2 -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 +2 -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/segmented-control.d.ts.map +1 -1
- package/dist/cjs/components/segmented-control.js +1 -1
- package/dist/cjs/components/segmented-control.js.map +4 -4
- package/dist/cjs/components/segmented-control.props.d.ts +5 -1
- package/dist/cjs/components/segmented-control.props.d.ts.map +1 -1
- package/dist/cjs/components/segmented-control.props.js +1 -1
- package/dist/cjs/components/segmented-control.props.js.map +2 -2
- package/dist/cjs/components/select.d.ts.map +1 -1
- 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 +11 -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 +1 -1
- package/dist/cjs/components/separator.js.map +1 -1
- package/dist/cjs/components/separator.props.js +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 +2 -2
- package/dist/cjs/components/shell.d.ts +5 -1
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +4 -4
- package/dist/cjs/components/sidebar.d.ts +4 -0
- 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 +1 -0
- 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 +2 -2
- package/dist/cjs/components/slider.js +1 -1
- package/dist/cjs/components/slider.js.map +1 -1
- package/dist/cjs/components/slider.props.js +1 -1
- package/dist/cjs/components/slider.props.js.map +1 -1
- package/dist/cjs/components/switch.js +1 -1
- package/dist/cjs/components/switch.js.map +1 -1
- package/dist/cjs/components/switch.props.js +1 -1
- package/dist/cjs/components/switch.props.js.map +1 -1
- package/dist/cjs/components/tab-nav.d.ts.map +1 -1
- 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 +2 -2
- package/dist/cjs/components/tabs.d.ts.map +1 -1
- 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 +2 -2
- package/dist/cjs/components/text-area.d.ts.map +1 -1
- package/dist/cjs/components/text-area.js +1 -1
- package/dist/cjs/components/text-area.js.map +4 -4
- package/dist/cjs/components/text-area.props.d.ts +6 -4
- package/dist/cjs/components/text-area.props.d.ts.map +1 -1
- package/dist/cjs/components/text-area.props.js +1 -1
- package/dist/cjs/components/text-area.props.js.map +4 -4
- package/dist/cjs/components/text-field.d.ts.map +1 -1
- package/dist/cjs/components/text-field.js +2 -2
- package/dist/cjs/components/text-field.js.map +4 -4
- package/dist/cjs/components/text-field.props.d.ts +6 -4
- package/dist/cjs/components/text-field.props.d.ts.map +1 -1
- package/dist/cjs/components/text-field.props.js +1 -1
- package/dist/cjs/components/text-field.props.js.map +4 -4
- package/dist/cjs/components/text.js +1 -1
- package/dist/cjs/components/text.js.map +1 -1
- package/dist/cjs/components/text.props.js +1 -1
- package/dist/cjs/components/text.props.js.map +1 -1
- 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 +1 -1
- package/dist/cjs/components/theme.js.map +2 -2
- package/dist/cjs/components/theme.props.d.ts +4 -4
- package/dist/cjs/components/theme.props.js +1 -1
- package/dist/cjs/components/theme.props.js.map +2 -2
- package/dist/cjs/components/toggle-button.d.ts.map +1 -1
- package/dist/cjs/components/toggle-button.js +5 -2
- package/dist/cjs/components/toggle-button.js.map +4 -4
- package/dist/cjs/components/toggle-icon-button.d.ts +2 -1
- package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
- 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 +2 -2
- package/dist/cjs/components/toolbar.js.map +4 -4
- package/dist/cjs/components/tooltip.js +1 -1
- package/dist/cjs/components/tooltip.js.map +2 -2
- package/dist/cjs/components/user-card.d.ts +1 -0
- 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 +5 -3
- 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 +1 -1
- package/dist/cjs/components/virtual-menu.js.map +2 -2
- package/dist/cjs/helpers/parse-variant.d.ts +8 -0
- package/dist/cjs/helpers/parse-variant.d.ts.map +1 -0
- package/dist/cjs/helpers/parse-variant.js +2 -0
- package/dist/cjs/helpers/parse-variant.js.map +7 -0
- package/dist/cjs/helpers/warn-deprecated.d.ts +7 -0
- package/dist/cjs/helpers/warn-deprecated.d.ts.map +1 -0
- package/dist/cjs/helpers/warn-deprecated.js +2 -0
- package/dist/cjs/helpers/warn-deprecated.js.map +7 -0
- package/dist/cjs/index.js +7 -7
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/props/color.prop.d.ts +8 -1
- package/dist/cjs/props/color.prop.d.ts.map +1 -1
- package/dist/cjs/props/color.prop.js +1 -1
- package/dist/cjs/props/color.prop.js.map +3 -3
- package/dist/cjs/props/index.js +1 -1
- package/dist/cjs/props/index.js.map +4 -4
- package/dist/esm/chunk-27SCVCQY.js +2 -0
- package/dist/esm/chunk-27SCVCQY.js.map +7 -0
- package/dist/esm/chunk-2C5WLKEZ.js +2 -0
- package/dist/esm/chunk-2C5WLKEZ.js.map +7 -0
- package/dist/esm/chunk-2D5QJ6MX.js +2 -0
- package/dist/esm/chunk-2D5QJ6MX.js.map +7 -0
- package/dist/esm/chunk-2DKLJMUU.js +2 -0
- package/dist/esm/chunk-2DKLJMUU.js.map +7 -0
- package/dist/esm/chunk-2T74JEVN.js +2 -0
- package/dist/esm/chunk-2T74JEVN.js.map +7 -0
- package/dist/esm/{chunk-XVYTOZES.js → chunk-34UMKY2L.js} +2 -2
- package/dist/esm/chunk-3DEZMXFF.js +5 -0
- package/dist/esm/chunk-3DEZMXFF.js.map +7 -0
- package/dist/esm/{chunk-4XKK32M4.js → chunk-3HGHPAH4.js} +2 -2
- package/dist/esm/chunk-3M73GWN5.js +2 -0
- package/dist/esm/chunk-3M73GWN5.js.map +7 -0
- package/dist/esm/{chunk-C34HCTGS.js → chunk-3Q3EOUGJ.js} +2 -2
- package/dist/esm/chunk-3TIO3EMN.js +2 -0
- package/dist/esm/chunk-3TIO3EMN.js.map +7 -0
- package/dist/esm/{chunk-4ME6O27S.js → chunk-3UZHKW6I.js} +2 -2
- package/dist/esm/{chunk-AF6XKU3W.js → chunk-3WCSLQNH.js} +2 -2
- package/dist/esm/{chunk-DD6SJPOU.js → chunk-45AMHIBO.js} +2 -2
- package/dist/esm/chunk-47CEZJM2.js +2 -0
- package/dist/esm/chunk-47CEZJM2.js.map +7 -0
- package/dist/esm/chunk-4BPRLR6C.js +2 -0
- package/dist/esm/chunk-4BPRLR6C.js.map +7 -0
- package/dist/esm/{chunk-54JFIP5S.js → chunk-4D5LR4H6.js} +2 -2
- package/dist/esm/chunk-4D5LR4H6.js.map +7 -0
- package/dist/esm/{chunk-CIYF56YS.js → chunk-4JNHUPIM.js} +2 -2
- package/dist/esm/chunk-4WLDX7WZ.js +2 -0
- package/dist/esm/chunk-4WLDX7WZ.js.map +7 -0
- package/dist/esm/{chunk-OJU5GCDZ.js → chunk-5G4WWJ4Z.js} +2 -2
- package/dist/esm/chunk-5JS7ADWX.js +2 -0
- package/dist/esm/chunk-5JS7ADWX.js.map +7 -0
- package/dist/esm/{chunk-AGNIFHOE.js → chunk-62CJL5G7.js} +2 -2
- package/dist/esm/{chunk-Y5RCH23Z.js → chunk-6JP5PIOO.js} +2 -2
- package/dist/esm/{chunk-ZO7TTWJI.js → chunk-77TGP2LO.js} +2 -2
- package/dist/esm/chunk-7B6CIVAF.js +2 -0
- package/dist/esm/chunk-7B6CIVAF.js.map +7 -0
- package/dist/esm/chunk-7YIQV7VO.js +2 -0
- package/dist/esm/chunk-7YIQV7VO.js.map +7 -0
- package/dist/esm/chunk-7ZOGH5NT.js +2 -0
- package/dist/esm/chunk-7ZOGH5NT.js.map +7 -0
- package/dist/esm/chunk-AVFGMLL4.js +2 -0
- package/dist/esm/chunk-AVFGMLL4.js.map +7 -0
- package/dist/esm/{chunk-4LDVSTXI.js → chunk-BKES3M4Y.js} +2 -2
- package/dist/esm/chunk-BOFVKXUV.js +2 -0
- package/dist/esm/chunk-BOFVKXUV.js.map +7 -0
- package/dist/esm/{chunk-VX6ARMWP.js → chunk-C7UXUTUF.js} +2 -2
- package/dist/esm/{chunk-2I7QRVJ5.js → chunk-CIKDGYX3.js} +2 -2
- package/dist/esm/chunk-CL6P54QT.js +5 -0
- package/dist/esm/chunk-CL6P54QT.js.map +7 -0
- package/dist/esm/{chunk-5XV4QEP5.js → chunk-CMEKH4I5.js} +2 -2
- package/dist/esm/chunk-CSUEZWN5.js +2 -0
- package/dist/esm/chunk-CSUEZWN5.js.map +7 -0
- package/dist/esm/{chunk-JUJYMZ2F.js → chunk-DJA5MCJA.js} +2 -2
- package/dist/esm/chunk-DVSXWSAT.js +2 -0
- package/dist/esm/chunk-DVSXWSAT.js.map +7 -0
- package/dist/esm/chunk-E7LJHM3S.js +2 -0
- package/dist/esm/chunk-E7LJHM3S.js.map +7 -0
- package/dist/esm/{chunk-4YFJWXL2.js → chunk-EUSMN3K7.js} +2 -2
- package/dist/esm/{chunk-VICP2RNA.js → chunk-FISGGGPC.js} +2 -2
- package/dist/esm/chunk-FNB47XDO.js +2 -0
- package/dist/esm/chunk-FNB47XDO.js.map +7 -0
- package/dist/esm/{chunk-KFR3CK24.js → chunk-GLKN32J3.js} +2 -2
- package/dist/esm/{chunk-COWZAUZR.js → chunk-GONBMSRL.js} +2 -2
- package/dist/esm/chunk-GRRV4I2I.js +2 -0
- package/dist/esm/chunk-GRRV4I2I.js.map +7 -0
- package/dist/esm/chunk-H7LHGT44.js +2 -0
- package/dist/esm/chunk-H7LHGT44.js.map +7 -0
- package/dist/esm/{chunk-GO7OHBHW.js → chunk-HFVD7W6R.js} +2 -2
- package/dist/esm/{chunk-SAJY4H6J.js → chunk-HIBX2EXV.js} +2 -2
- package/dist/esm/{chunk-VZSQATP6.js → chunk-HJLBVNQE.js} +2 -2
- package/dist/esm/{chunk-JDGJSNWT.js → chunk-HNO4X33C.js} +2 -2
- package/dist/esm/chunk-IHRLGR6J.js +2 -0
- package/dist/esm/chunk-IHRLGR6J.js.map +7 -0
- package/dist/esm/{chunk-E67CIG6A.js → chunk-IPHKKZYE.js} +2 -2
- package/dist/esm/{chunk-7R73ISNJ.js → chunk-IQU6EELI.js} +3 -3
- package/dist/esm/{chunk-PZ7OYATT.js → chunk-IV4YJRVR.js} +2 -2
- package/dist/esm/{chunk-S5C5YRBS.js → chunk-IVBKTHDM.js} +2 -2
- package/dist/esm/chunk-IY3GKGDZ.js +2 -0
- package/dist/esm/chunk-IY3GKGDZ.js.map +7 -0
- package/dist/esm/chunk-JTN3KTAS.js +2 -0
- package/dist/esm/chunk-JTN3KTAS.js.map +7 -0
- package/dist/esm/{chunk-RNTCHVFI.js → chunk-JXVUTFQN.js} +2 -2
- package/dist/esm/{chunk-VR7ZAFYN.js → chunk-K7BWSYVP.js} +2 -2
- package/dist/esm/{chunk-2CMM7MEL.js → chunk-KJC32RWT.js} +2 -2
- package/dist/esm/{chunk-2CMM7MEL.js.map → chunk-KJC32RWT.js.map} +2 -2
- package/dist/esm/{chunk-5WRCK4R7.js → chunk-KJTEZVOF.js} +2 -2
- package/dist/esm/{chunk-OGXZHAQL.js → chunk-KXSMY4ZF.js} +2 -2
- package/dist/esm/{chunk-MS5J4MF6.js → chunk-LJXP6K5Y.js} +2 -2
- package/dist/esm/{chunk-CSKZZOI2.js → chunk-N6Q3L64W.js} +2 -2
- package/dist/esm/chunk-O2RISF37.js +2 -0
- package/dist/esm/chunk-O2RISF37.js.map +7 -0
- package/dist/esm/{chunk-YBSRX63K.js → chunk-O2WPAUQN.js} +2 -2
- package/dist/esm/{chunk-HJU4I34X.js → chunk-OB3MHLQL.js} +2 -2
- package/dist/esm/chunk-OJSDBLP7.js +2 -0
- package/dist/esm/chunk-OJSDBLP7.js.map +7 -0
- package/dist/esm/chunk-OUSDYZDE.js +2 -0
- package/dist/esm/chunk-OUSDYZDE.js.map +7 -0
- package/dist/esm/chunk-OVGPUFRI.js +2 -0
- package/dist/esm/chunk-OVGPUFRI.js.map +7 -0
- package/dist/esm/{chunk-NIIEIZKQ.js → chunk-OW4KAIWF.js} +2 -2
- package/dist/esm/{chunk-HF5WY5YE.js → chunk-PAEHH3WS.js} +2 -2
- package/dist/esm/chunk-PLTTQFRQ.js +2 -0
- package/dist/esm/chunk-PLTTQFRQ.js.map +7 -0
- package/dist/esm/{chunk-FHOCUZDR.js → chunk-PXUQEA77.js} +2 -2
- package/dist/esm/{chunk-7UHKEJ7Q.js → chunk-R2MQMCND.js} +2 -2
- package/dist/esm/{chunk-64PFYID5.js → chunk-RAVFUI7W.js} +2 -2
- package/dist/esm/chunk-ROGC7K5N.js +2 -0
- package/dist/esm/chunk-ROGC7K5N.js.map +7 -0
- package/dist/esm/chunk-RON6FXLO.js +2 -0
- package/dist/esm/chunk-RON6FXLO.js.map +7 -0
- package/dist/esm/{chunk-CDG5WH4U.js → chunk-RUOOCYK4.js} +2 -2
- package/dist/esm/{chunk-36A5BYCN.js → chunk-RUPET4E7.js} +2 -2
- package/dist/esm/chunk-RWN22S44.js +2 -0
- package/dist/esm/{chunk-7NVLCYCL.js → chunk-S3GZZXQ7.js} +2 -2
- package/dist/esm/{chunk-N4GTDLRD.js → chunk-SGUTNJUO.js} +2 -2
- package/dist/esm/chunk-SIBSXKFF.js +2 -0
- package/dist/esm/chunk-SIBSXKFF.js.map +7 -0
- package/dist/esm/{chunk-GL5QTWYI.js → chunk-SQ4BU4GH.js} +2 -2
- package/dist/esm/chunk-SQZ5O7QS.js +2 -0
- package/dist/esm/chunk-SQZ5O7QS.js.map +7 -0
- package/dist/esm/chunk-SURYYF7I.js +2 -0
- package/dist/esm/chunk-SURYYF7I.js.map +7 -0
- package/dist/esm/{chunk-KOFEFBB3.js → chunk-T6Z4JUH6.js} +2 -2
- package/dist/esm/{chunk-67MKPTZJ.js → chunk-TCEQ5VVE.js} +2 -2
- package/dist/esm/{chunk-ESPWYN5C.js → chunk-TZ5MZQUB.js} +2 -2
- package/dist/esm/{chunk-CRSHBENJ.js → chunk-UBWRIE4C.js} +2 -2
- package/dist/esm/chunk-UE2OBZIS.js +2 -0
- package/dist/esm/chunk-UE2OBZIS.js.map +7 -0
- package/dist/esm/{chunk-ZOY43B55.js → chunk-UK3BFTI2.js} +2 -2
- package/dist/esm/chunk-UTHTSYSL.js +2 -0
- package/dist/esm/chunk-UTHTSYSL.js.map +7 -0
- package/dist/esm/chunk-V3QVAXH3.js +2 -0
- package/dist/esm/chunk-V3QVAXH3.js.map +7 -0
- package/dist/esm/{chunk-KJUDZCYK.js → chunk-VBAXORVV.js} +2 -2
- package/dist/esm/chunk-VJUFYYKP.js +2 -0
- package/dist/esm/{chunk-FC2DBBJ3.js.map → chunk-VJUFYYKP.js.map} +2 -2
- package/dist/esm/{chunk-OTXCKEWT.js → chunk-VJXHEDCE.js} +2 -2
- package/dist/esm/{chunk-IHK3H2OM.js → chunk-VUKTURU4.js} +2 -2
- package/dist/esm/{chunk-NQ3D3UXZ.js → chunk-VV67KTKA.js} +2 -2
- package/dist/esm/chunk-WDNTAQ6G.js +2 -0
- package/dist/esm/chunk-WDNTAQ6G.js.map +7 -0
- package/dist/esm/chunk-WHAKQCNV.js +2 -0
- package/dist/esm/chunk-WHAKQCNV.js.map +7 -0
- package/dist/esm/chunk-WTXQB2EV.js +2 -0
- package/dist/esm/chunk-WTXQB2EV.js.map +7 -0
- package/dist/esm/chunk-WXBTPEFO.js +2 -0
- package/dist/esm/chunk-WXBTPEFO.js.map +7 -0
- package/dist/esm/chunk-XILM2OMC.js +2 -0
- package/dist/esm/chunk-XILM2OMC.js.map +7 -0
- package/dist/esm/chunk-YBS2IB7Z.js +2 -0
- package/dist/esm/chunk-YBS2IB7Z.js.map +7 -0
- package/dist/esm/chunk-YDPCJO5G.js +2 -0
- package/dist/esm/chunk-YDPCJO5G.js.map +7 -0
- package/dist/esm/chunk-YIK4ACXS.js +2 -0
- package/dist/esm/chunk-YIK4ACXS.js.map +7 -0
- package/dist/esm/chunk-YL62I5SI.js +2 -0
- package/dist/esm/{chunk-2OSGPH7E.js → chunk-YLLCCUC7.js} +2 -2
- package/dist/esm/{chunk-ZNK6AH2G.js → chunk-Z4DTHR2S.js} +2 -2
- package/dist/esm/{chunk-ZNK6AH2G.js.map → chunk-Z4DTHR2S.js.map} +3 -3
- package/dist/esm/{chunk-OMGZG52I.js → chunk-ZE2GWHPY.js} +2 -2
- package/dist/esm/{chunk-AGSSWWFI.js → chunk-ZK55O7TN.js} +2 -2
- package/dist/esm/{chunk-YAQBIO2B.js → chunk-ZQVYY7UT.js} +2 -2
- package/dist/esm/chunk-ZVIWTYHE.js +2 -0
- package/dist/esm/chunk-ZVIWTYHE.js.map +7 -0
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/base-button.props.d.ts +4 -2
- 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 +4 -2
- 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 +2 -2
- 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 +4 -2
- 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 +7 -1
- 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/pane-chrome.d.ts +47 -0
- package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -0
- package/dist/esm/components/_internal/pane-chrome.js +2 -0
- package/dist/esm/components/_internal/pane-chrome.js.map +7 -0
- package/dist/esm/components/_internal/shell-bottom.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.d.ts +2 -1
- 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/accordion.js +1 -1
- package/dist/esm/components/accordion.props.d.ts +5 -3
- 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/app-bar.d.ts +1 -0
- package/dist/esm/components/app-bar.d.ts.map +1 -1
- package/dist/esm/components/app-bar.js +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/avatar.props.d.ts +4 -2
- 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 +4 -2
- 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.js +1 -1
- package/dist/esm/components/box.js +1 -1
- package/dist/esm/components/button.d.ts +5 -0
- package/dist/esm/components/button.d.ts.map +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/button.props.js +1 -1
- package/dist/esm/components/callout.d.ts +1 -0
- package/dist/esm/components/callout.d.ts.map +1 -1
- package/dist/esm/components/callout.js +1 -1
- package/dist/esm/components/callout.props.d.ts +4 -2
- 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/card.props.d.ts +4 -2
- package/dist/esm/components/card.props.d.ts.map +1 -1
- package/dist/esm/components/card.props.js +1 -1
- package/dist/esm/components/chatbar.d.ts +2 -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 +10 -2
- 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.js +1 -1
- package/dist/esm/components/checkbox-group.props.d.ts +3 -2
- 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.js +1 -1
- package/dist/esm/components/combobox.d.ts +0 -16
- 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 +6 -4
- 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 +2 -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.js +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/dropdown-menu.d.ts +2 -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/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.js +1 -1
- package/dist/esm/components/hover-card.js +1 -1
- package/dist/esm/components/icon-button.d.ts +2 -1
- package/dist/esm/components/icon-button.d.ts.map +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/kbd.props.d.ts +4 -2
- package/dist/esm/components/kbd.props.d.ts.map +1 -1
- package/dist/esm/components/kbd.props.js +1 -1
- package/dist/esm/components/link.js +1 -1
- package/dist/esm/components/link.props.js +1 -1
- package/dist/esm/components/message-scroller.js +1 -1
- package/dist/esm/components/navbar.js +1 -1
- package/dist/esm/components/navbar.props.d.ts +1 -1
- package/dist/esm/components/navbar.props.js +1 -1
- package/dist/esm/components/notice.js +1 -1
- package/dist/esm/components/popover.d.ts.map +1 -1
- package/dist/esm/components/popover.js +1 -1
- package/dist/esm/components/popover.props.d.ts +6 -0
- package/dist/esm/components/popover.props.d.ts.map +1 -1
- package/dist/esm/components/popover.props.js +1 -1
- package/dist/esm/components/progress.js +1 -1
- package/dist/esm/components/progress.props.js +1 -1
- package/dist/esm/components/radio-cards.d.ts.map +1 -1
- package/dist/esm/components/radio-cards.js +1 -1
- package/dist/esm/components/radio-cards.props.d.ts +10 -2
- 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.js +1 -1
- package/dist/esm/components/radio-group.props.d.ts +4 -2
- 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 +2 -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 +2 -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 +2 -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/toggle-button.schema.d.ts +2 -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 +2 -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.d.ts.map +1 -1
- package/dist/esm/components/segmented-control.js +1 -1
- package/dist/esm/components/segmented-control.props.d.ts +5 -1
- package/dist/esm/components/segmented-control.props.d.ts.map +1 -1
- package/dist/esm/components/segmented-control.props.js +1 -1
- package/dist/esm/components/select.d.ts.map +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/select.props.d.ts +11 -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.d.ts +5 -1
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/sidebar.d.ts +4 -0
- 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 +1 -0
- 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.js +1 -1
- package/dist/esm/components/spinner.js +1 -1
- package/dist/esm/components/switch.js +1 -1
- package/dist/esm/components/switch.props.js +1 -1
- package/dist/esm/components/tab-nav.d.ts.map +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.d.ts.map +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.d.ts.map +1 -1
- package/dist/esm/components/text-area.js +1 -1
- package/dist/esm/components/text-area.props.d.ts +6 -4
- package/dist/esm/components/text-area.props.d.ts.map +1 -1
- package/dist/esm/components/text-area.props.js +1 -1
- package/dist/esm/components/text-field.d.ts.map +1 -1
- package/dist/esm/components/text-field.js +1 -1
- package/dist/esm/components/text-field.props.d.ts +6 -4
- package/dist/esm/components/text-field.props.d.ts.map +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.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.d.ts +4 -4
- package/dist/esm/components/theme.props.js +1 -1
- package/dist/esm/components/toggle-button.d.ts.map +1 -1
- package/dist/esm/components/toggle-button.js +1 -1
- package/dist/esm/components/toggle-icon-button.d.ts +2 -1
- package/dist/esm/components/toggle-icon-button.d.ts.map +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 +1 -0
- 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 +5 -3
- 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/index.js +1 -1
- package/dist/esm/helpers/parse-variant.d.ts +8 -0
- package/dist/esm/helpers/parse-variant.d.ts.map +1 -0
- package/dist/esm/helpers/parse-variant.js +2 -0
- package/dist/esm/helpers/parse-variant.js.map +7 -0
- package/dist/esm/helpers/warn-deprecated.d.ts +7 -0
- package/dist/esm/helpers/warn-deprecated.d.ts.map +1 -0
- package/dist/esm/helpers/warn-deprecated.js +2 -0
- package/dist/esm/helpers/warn-deprecated.js.map +7 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/props/color.prop.d.ts +8 -1
- package/dist/esm/props/color.prop.d.ts.map +1 -1
- package/dist/esm/props/color.prop.js +1 -1
- package/dist/esm/props/index.js +1 -1
- package/package.json +1 -1
- package/schemas/base-button.json +4 -3
- package/schemas/button.json +4 -3
- package/schemas/icon-button.json +4 -3
- package/schemas/index.json +20 -15
- package/schemas/toggle-button.json +4 -3
- package/schemas/toggle-icon-button.json +4 -3
- package/src/components/_internal/base-button.css +7 -7
- package/src/components/_internal/base-button.props.ts +4 -3
- package/src/components/_internal/base-card.css +2 -2
- package/src/components/_internal/base-checkbox.css +4 -4
- package/src/components/_internal/base-checkbox.props.ts +3 -2
- package/src/components/_internal/base-menu.css +33 -0
- package/src/components/_internal/base-menu.props.ts +1 -1
- package/src/components/_internal/base-radio.css +4 -4
- package/src/components/_internal/base-radio.props.ts +3 -2
- package/src/components/_internal/base-tab-list.css +42 -0
- package/src/components/_internal/base-tab-list.props.ts +4 -1
- package/src/components/_internal/pane-chrome.tsx +90 -0
- package/src/components/_internal/shell-sidebar.tsx +13 -2
- package/src/components/accordion.css +5 -5
- package/src/components/accordion.props.tsx +3 -2
- package/src/components/app-bar.tsx +5 -0
- package/src/components/avatar.css +7 -7
- package/src/components/avatar.props.tsx +5 -4
- package/src/components/badge.css +8 -8
- package/src/components/badge.props.tsx +5 -4
- package/src/components/button.css +1 -1
- package/src/components/button.tsx +37 -2
- package/src/components/callout.css +7 -7
- package/src/components/callout.props.tsx +5 -4
- package/src/components/callout.tsx +5 -0
- package/src/components/card.props.tsx +3 -2
- package/src/components/chatbar.css +4 -4
- package/src/components/chatbar.tsx +4 -2
- package/src/components/checkbox-cards.props.tsx +8 -2
- package/src/components/checkbox-cards.tsx +5 -1
- package/src/components/code.props.tsx +2 -2
- package/src/components/combobox.props.tsx +9 -6
- package/src/components/combobox.tsx +10 -2
- package/src/components/context-menu.tsx +4 -0
- package/src/components/dropdown-menu.tsx +4 -0
- package/src/components/heading.css +1 -1
- package/src/components/icon-button.tsx +4 -48
- package/src/components/kbd.css +24 -24
- package/src/components/kbd.props.tsx +4 -2
- package/src/components/navbar.css +4 -0
- package/src/components/navbar.props.tsx +1 -1
- package/src/components/popover.props.tsx +3 -0
- package/src/components/popover.tsx +5 -1
- package/src/components/radio-cards.props.tsx +8 -2
- package/src/components/radio-cards.tsx +5 -1
- package/src/components/radio-group.props.tsx +5 -2
- package/src/components/schemas/base-button.schema.ts +3 -3
- package/src/components/segmented-control.props.tsx +4 -5
- package/src/components/segmented-control.tsx +12 -0
- package/src/components/select.css +37 -4
- package/src/components/select.props.tsx +9 -9
- package/src/components/select.tsx +8 -2
- package/src/components/shell.css +6 -0
- package/src/components/shell.tsx +24 -3
- package/src/components/sidebar.css +185 -62
- package/src/components/sidebar.props.tsx +1 -0
- package/src/components/sidebar.tsx +19 -13
- package/src/components/tab-nav.tsx +6 -2
- package/src/components/tabs.tsx +6 -2
- package/src/components/text-area.css +18 -5
- package/src/components/text-area.props.tsx +6 -4
- package/src/components/text-area.tsx +5 -1
- package/src/components/text-field.css +36 -3
- package/src/components/text-field.props.tsx +6 -4
- package/src/components/text-field.tsx +5 -1
- package/src/components/theme.props.tsx +4 -4
- package/src/components/toggle-button.tsx +19 -4
- package/src/components/toggle-icon-button.tsx +6 -60
- package/src/components/user-card.props.tsx +8 -5
- package/src/components/user-card.tsx +5 -0
- package/src/helpers/parse-variant.ts +21 -0
- package/src/helpers/warn-deprecated.ts +13 -0
- package/src/props/color.prop.ts +13 -0
- package/src/styles/tokens/constants.css +46 -27
- package/src/styles/tokens/typography.css +2 -0
- package/styles.css +1086 -318
- package/tokens/base.css +1 -0
- package/tokens.css +34 -16
- package/dist/esm/chunk-3KSGRY6I.js +0 -2
- package/dist/esm/chunk-3KSGRY6I.js.map +0 -7
- package/dist/esm/chunk-3OELU3EO.js +0 -2
- package/dist/esm/chunk-3OELU3EO.js.map +0 -7
- package/dist/esm/chunk-4WVNMGI5.js +0 -2
- package/dist/esm/chunk-4WVNMGI5.js.map +0 -7
- package/dist/esm/chunk-54JFIP5S.js.map +0 -7
- package/dist/esm/chunk-5SNHUVDA.js +0 -2
- package/dist/esm/chunk-667BKCUG.js +0 -2
- package/dist/esm/chunk-667BKCUG.js.map +0 -7
- package/dist/esm/chunk-72AHPGPN.js +0 -2
- package/dist/esm/chunk-72AHPGPN.js.map +0 -7
- package/dist/esm/chunk-7E2BPXIP.js +0 -2
- package/dist/esm/chunk-7E2BPXIP.js.map +0 -7
- package/dist/esm/chunk-7FS2VDHO.js +0 -5
- package/dist/esm/chunk-7FS2VDHO.js.map +0 -7
- package/dist/esm/chunk-7RUVID3O.js +0 -2
- package/dist/esm/chunk-7RUVID3O.js.map +0 -7
- package/dist/esm/chunk-ALWNS44Q.js +0 -5
- package/dist/esm/chunk-ALWNS44Q.js.map +0 -7
- package/dist/esm/chunk-ARIV4AT5.js +0 -2
- package/dist/esm/chunk-ARIV4AT5.js.map +0 -7
- package/dist/esm/chunk-CET7V3FZ.js +0 -2
- package/dist/esm/chunk-CET7V3FZ.js.map +0 -7
- package/dist/esm/chunk-CFNESRYI.js +0 -2
- package/dist/esm/chunk-CFNESRYI.js.map +0 -7
- package/dist/esm/chunk-CKMMUHKE.js +0 -2
- package/dist/esm/chunk-CKMMUHKE.js.map +0 -7
- package/dist/esm/chunk-CLMOWP5T.js +0 -2
- package/dist/esm/chunk-CLMOWP5T.js.map +0 -7
- package/dist/esm/chunk-EBQZ3Z22.js +0 -2
- package/dist/esm/chunk-EBQZ3Z22.js.map +0 -7
- package/dist/esm/chunk-EDKQURDU.js +0 -2
- package/dist/esm/chunk-EDKQURDU.js.map +0 -7
- package/dist/esm/chunk-EPTYNVCU.js +0 -2
- package/dist/esm/chunk-EPTYNVCU.js.map +0 -7
- package/dist/esm/chunk-EPX34Y7S.js +0 -2
- package/dist/esm/chunk-EPX34Y7S.js.map +0 -7
- package/dist/esm/chunk-F6V7GBNQ.js +0 -2
- package/dist/esm/chunk-F6V7GBNQ.js.map +0 -7
- package/dist/esm/chunk-FC2DBBJ3.js +0 -2
- package/dist/esm/chunk-FG7XM7KJ.js +0 -2
- package/dist/esm/chunk-FG7XM7KJ.js.map +0 -7
- package/dist/esm/chunk-JFWMAYEH.js +0 -2
- package/dist/esm/chunk-JFWMAYEH.js.map +0 -7
- package/dist/esm/chunk-K3UAS7RW.js +0 -2
- package/dist/esm/chunk-K3UAS7RW.js.map +0 -7
- package/dist/esm/chunk-KZWNGWIM.js +0 -2
- package/dist/esm/chunk-KZWNGWIM.js.map +0 -7
- package/dist/esm/chunk-KZYFTDGO.js +0 -2
- package/dist/esm/chunk-KZYFTDGO.js.map +0 -7
- package/dist/esm/chunk-MJOXEUBT.js +0 -2
- package/dist/esm/chunk-MJOXEUBT.js.map +0 -7
- package/dist/esm/chunk-MN3XALXD.js +0 -2
- package/dist/esm/chunk-MN3XALXD.js.map +0 -7
- package/dist/esm/chunk-NJ7S43EK.js +0 -2
- package/dist/esm/chunk-NJ7S43EK.js.map +0 -7
- package/dist/esm/chunk-OGVKSYLL.js +0 -2
- package/dist/esm/chunk-OGVKSYLL.js.map +0 -7
- package/dist/esm/chunk-OO652UQW.js +0 -2
- package/dist/esm/chunk-OO652UQW.js.map +0 -7
- package/dist/esm/chunk-OWMA6GTG.js +0 -2
- package/dist/esm/chunk-OWMA6GTG.js.map +0 -7
- package/dist/esm/chunk-P2NZLSAD.js +0 -2
- package/dist/esm/chunk-P2NZLSAD.js.map +0 -7
- package/dist/esm/chunk-PHZNRO3D.js +0 -2
- package/dist/esm/chunk-PHZNRO3D.js.map +0 -7
- package/dist/esm/chunk-PLYOBXAF.js +0 -2
- package/dist/esm/chunk-PLYOBXAF.js.map +0 -7
- package/dist/esm/chunk-QFPHEY77.js +0 -2
- package/dist/esm/chunk-QFPHEY77.js.map +0 -7
- package/dist/esm/chunk-QQ62LO3X.js +0 -2
- package/dist/esm/chunk-QQ62LO3X.js.map +0 -7
- package/dist/esm/chunk-RDAMYQFF.js +0 -2
- package/dist/esm/chunk-RDAMYQFF.js.map +0 -7
- package/dist/esm/chunk-ROSWI2CL.js +0 -2
- package/dist/esm/chunk-ROSWI2CL.js.map +0 -7
- package/dist/esm/chunk-TIT3QMV7.js +0 -2
- package/dist/esm/chunk-TIT3QMV7.js.map +0 -7
- package/dist/esm/chunk-TVV6IHBN.js +0 -2
- package/dist/esm/chunk-TVV6IHBN.js.map +0 -7
- package/dist/esm/chunk-VDTB4JG3.js +0 -2
- package/dist/esm/chunk-VDTB4JG3.js.map +0 -7
- package/dist/esm/chunk-VLTXI4A7.js +0 -2
- package/dist/esm/chunk-VLTXI4A7.js.map +0 -7
- package/dist/esm/chunk-VNH7BJOA.js +0 -2
- package/dist/esm/chunk-VNH7BJOA.js.map +0 -7
- package/dist/esm/chunk-WBMCZ4Z3.js +0 -2
- package/dist/esm/chunk-WBMCZ4Z3.js.map +0 -7
- package/dist/esm/chunk-WGYUWEQV.js +0 -2
- package/dist/esm/chunk-WMGIFPI2.js +0 -2
- package/dist/esm/chunk-WMGIFPI2.js.map +0 -7
- package/dist/esm/chunk-XYVLQDGR.js +0 -2
- package/dist/esm/chunk-XYVLQDGR.js.map +0 -7
- package/dist/esm/chunk-Y3A6ZU24.js +0 -2
- package/dist/esm/chunk-Y3A6ZU24.js.map +0 -7
- /package/dist/esm/{chunk-XVYTOZES.js.map → chunk-34UMKY2L.js.map} +0 -0
- /package/dist/esm/{chunk-4XKK32M4.js.map → chunk-3HGHPAH4.js.map} +0 -0
- /package/dist/esm/{chunk-C34HCTGS.js.map → chunk-3Q3EOUGJ.js.map} +0 -0
- /package/dist/esm/{chunk-4ME6O27S.js.map → chunk-3UZHKW6I.js.map} +0 -0
- /package/dist/esm/{chunk-AF6XKU3W.js.map → chunk-3WCSLQNH.js.map} +0 -0
- /package/dist/esm/{chunk-DD6SJPOU.js.map → chunk-45AMHIBO.js.map} +0 -0
- /package/dist/esm/{chunk-CIYF56YS.js.map → chunk-4JNHUPIM.js.map} +0 -0
- /package/dist/esm/{chunk-OJU5GCDZ.js.map → chunk-5G4WWJ4Z.js.map} +0 -0
- /package/dist/esm/{chunk-AGNIFHOE.js.map → chunk-62CJL5G7.js.map} +0 -0
- /package/dist/esm/{chunk-Y5RCH23Z.js.map → chunk-6JP5PIOO.js.map} +0 -0
- /package/dist/esm/{chunk-ZO7TTWJI.js.map → chunk-77TGP2LO.js.map} +0 -0
- /package/dist/esm/{chunk-4LDVSTXI.js.map → chunk-BKES3M4Y.js.map} +0 -0
- /package/dist/esm/{chunk-VX6ARMWP.js.map → chunk-C7UXUTUF.js.map} +0 -0
- /package/dist/esm/{chunk-2I7QRVJ5.js.map → chunk-CIKDGYX3.js.map} +0 -0
- /package/dist/esm/{chunk-5XV4QEP5.js.map → chunk-CMEKH4I5.js.map} +0 -0
- /package/dist/esm/{chunk-JUJYMZ2F.js.map → chunk-DJA5MCJA.js.map} +0 -0
- /package/dist/esm/{chunk-4YFJWXL2.js.map → chunk-EUSMN3K7.js.map} +0 -0
- /package/dist/esm/{chunk-VICP2RNA.js.map → chunk-FISGGGPC.js.map} +0 -0
- /package/dist/esm/{chunk-KFR3CK24.js.map → chunk-GLKN32J3.js.map} +0 -0
- /package/dist/esm/{chunk-COWZAUZR.js.map → chunk-GONBMSRL.js.map} +0 -0
- /package/dist/esm/{chunk-GO7OHBHW.js.map → chunk-HFVD7W6R.js.map} +0 -0
- /package/dist/esm/{chunk-SAJY4H6J.js.map → chunk-HIBX2EXV.js.map} +0 -0
- /package/dist/esm/{chunk-VZSQATP6.js.map → chunk-HJLBVNQE.js.map} +0 -0
- /package/dist/esm/{chunk-JDGJSNWT.js.map → chunk-HNO4X33C.js.map} +0 -0
- /package/dist/esm/{chunk-E67CIG6A.js.map → chunk-IPHKKZYE.js.map} +0 -0
- /package/dist/esm/{chunk-7R73ISNJ.js.map → chunk-IQU6EELI.js.map} +0 -0
- /package/dist/esm/{chunk-PZ7OYATT.js.map → chunk-IV4YJRVR.js.map} +0 -0
- /package/dist/esm/{chunk-S5C5YRBS.js.map → chunk-IVBKTHDM.js.map} +0 -0
- /package/dist/esm/{chunk-RNTCHVFI.js.map → chunk-JXVUTFQN.js.map} +0 -0
- /package/dist/esm/{chunk-VR7ZAFYN.js.map → chunk-K7BWSYVP.js.map} +0 -0
- /package/dist/esm/{chunk-5WRCK4R7.js.map → chunk-KJTEZVOF.js.map} +0 -0
- /package/dist/esm/{chunk-OGXZHAQL.js.map → chunk-KXSMY4ZF.js.map} +0 -0
- /package/dist/esm/{chunk-MS5J4MF6.js.map → chunk-LJXP6K5Y.js.map} +0 -0
- /package/dist/esm/{chunk-CSKZZOI2.js.map → chunk-N6Q3L64W.js.map} +0 -0
- /package/dist/esm/{chunk-YBSRX63K.js.map → chunk-O2WPAUQN.js.map} +0 -0
- /package/dist/esm/{chunk-HJU4I34X.js.map → chunk-OB3MHLQL.js.map} +0 -0
- /package/dist/esm/{chunk-NIIEIZKQ.js.map → chunk-OW4KAIWF.js.map} +0 -0
- /package/dist/esm/{chunk-HF5WY5YE.js.map → chunk-PAEHH3WS.js.map} +0 -0
- /package/dist/esm/{chunk-FHOCUZDR.js.map → chunk-PXUQEA77.js.map} +0 -0
- /package/dist/esm/{chunk-7UHKEJ7Q.js.map → chunk-R2MQMCND.js.map} +0 -0
- /package/dist/esm/{chunk-64PFYID5.js.map → chunk-RAVFUI7W.js.map} +0 -0
- /package/dist/esm/{chunk-CDG5WH4U.js.map → chunk-RUOOCYK4.js.map} +0 -0
- /package/dist/esm/{chunk-36A5BYCN.js.map → chunk-RUPET4E7.js.map} +0 -0
- /package/dist/esm/{chunk-WGYUWEQV.js.map → chunk-RWN22S44.js.map} +0 -0
- /package/dist/esm/{chunk-7NVLCYCL.js.map → chunk-S3GZZXQ7.js.map} +0 -0
- /package/dist/esm/{chunk-N4GTDLRD.js.map → chunk-SGUTNJUO.js.map} +0 -0
- /package/dist/esm/{chunk-GL5QTWYI.js.map → chunk-SQ4BU4GH.js.map} +0 -0
- /package/dist/esm/{chunk-KOFEFBB3.js.map → chunk-T6Z4JUH6.js.map} +0 -0
- /package/dist/esm/{chunk-67MKPTZJ.js.map → chunk-TCEQ5VVE.js.map} +0 -0
- /package/dist/esm/{chunk-ESPWYN5C.js.map → chunk-TZ5MZQUB.js.map} +0 -0
- /package/dist/esm/{chunk-CRSHBENJ.js.map → chunk-UBWRIE4C.js.map} +0 -0
- /package/dist/esm/{chunk-ZOY43B55.js.map → chunk-UK3BFTI2.js.map} +0 -0
- /package/dist/esm/{chunk-KJUDZCYK.js.map → chunk-VBAXORVV.js.map} +0 -0
- /package/dist/esm/{chunk-OTXCKEWT.js.map → chunk-VJXHEDCE.js.map} +0 -0
- /package/dist/esm/{chunk-IHK3H2OM.js.map → chunk-VUKTURU4.js.map} +0 -0
- /package/dist/esm/{chunk-NQ3D3UXZ.js.map → chunk-VV67KTKA.js.map} +0 -0
- /package/dist/esm/{chunk-5SNHUVDA.js.map → chunk-YL62I5SI.js.map} +0 -0
- /package/dist/esm/{chunk-2OSGPH7E.js.map → chunk-YLLCCUC7.js.map} +0 -0
- /package/dist/esm/{chunk-OMGZG52I.js.map → chunk-ZE2GWHPY.js.map} +0 -0
- /package/dist/esm/{chunk-AGSSWWFI.js.map → chunk-ZK55O7TN.js.map} +0 -0
- /package/dist/esm/{chunk-YAQBIO2B.js.map → chunk-ZQVYY7UT.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/dropdown-menu.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport { warnDeprecated } from '../helpers/warn-deprecated.js';\nimport * as React from 'react';\nimport { VirtualMenu } from './virtual-menu.js';\nimport classNames from 'classnames';\nimport { DropdownMenu as DropdownMenuPrimitive, Slot } from 'radix-ui';\nimport { useCallbackRef } from 'radix-ui/internal';\n\nimport { ScrollArea } from './scroll-area.js';\nimport {\n dropdownMenuContentPropDefs,\n dropdownMenuSubContentPropDefs,\n dropdownMenuItemPropDefs,\n dropdownMenuCheckboxItemPropDefs,\n dropdownMenuRadioItemPropDefs,\n} from './dropdown-menu.props.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { ChevronDownIcon, ThickCheckIcon, ThickChevronLeftIcon, ThickChevronRightIcon, ThickDotIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport {\n DrillDownLevelContext,\n DrillDownRoot,\n SubContext,\n useCreateDrillDownStore,\n useDrillDownDirection,\n useDrillDownStore,\n usePanelPosition,\n useStackEntry,\n useSubContext,\n} from './_internal/dropdown-menu-drill-down.js';\nimport { MenuProvider } from './_internal/menu-context.js';\nimport {\n MenuShortcut,\n getMenuAlignOffset,\n resolveMenuMaterial,\n toAriaKeyShortcuts,\n useResolvedResponsiveValue,\n} from './_internal/base-menu.utils.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { useDeprecatedPanelBackgroundWarning } from '../helpers/use-deprecation-warning.js';\n\nimport type { SubmenuBehavior } from './_internal/dropdown-menu-drill-down.js';\nimport type { IconProps } from './icons.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes, Responsive } from '../props/prop-def.js';\n\n/**\n * Open state of the menu, mirrored from Root so Content can reset drill-down\n * navigation when a force-mounted menu opens again.\n */\nconst DropdownMenuOpenContext = React.createContext(false);\n\ninterface DropdownMenuRootProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> {}\nconst DropdownMenuRoot: React.FC<DropdownMenuRootProps> = (props) => {\n const { open: openProp, defaultOpen = false, onOpenChange } = props;\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const open = openProp ?? uncontrolledOpen;\n\n const handleOpenChangeProp = useCallbackRef(onOpenChange);\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n setUncontrolledOpen(next);\n handleOpenChangeProp(next);\n },\n [handleOpenChangeProp],\n );\n\n return (\n <DropdownMenuOpenContext.Provider value={open}>\n <DropdownMenuPrimitive.Root {...props} onOpenChange={handleOpenChange} />\n </DropdownMenuOpenContext.Provider>\n );\n};\nDropdownMenuRoot.displayName = 'DropdownMenu.Root';\n\ntype DropdownMenuTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.Trigger>;\ninterface DropdownMenuTriggerProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Trigger, RemovedProps> {}\nconst DropdownMenuTrigger = React.forwardRef<DropdownMenuTriggerElement, DropdownMenuTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </DropdownMenuPrimitive.Trigger>\n ),\n);\nDropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';\n\n/** Visual props shared by Content and SubContent. */\ntype DropdownMenuSurfaceProps = GetPropDefTypes<typeof dropdownMenuSubContentPropDefs>;\n\ntype DropdownMenuContentContextValue = {\n size?: DropdownMenuSurfaceProps['size'];\n variant?: DropdownMenuSurfaceProps['variant'];\n color?: DropdownMenuSurfaceProps['color'];\n material?: DropdownMenuSurfaceProps['material'];\n};\nconst DropdownMenuContentContext = React.createContext<DropdownMenuContentContextValue>({});\n\n/** Keys that navigate back one drill-down level, by writing direction. */\nconst BACK_KEYS = { ltr: 'ArrowLeft', rtl: 'ArrowRight' } as const;\nconst FORWARD_KEYS = { ltr: 'ArrowRight', rtl: 'ArrowLeft' } as const;\n\nfunction isTextEntryTarget(target: EventTarget | null) {\n return (\n target instanceof HTMLElement &&\n (target.isContentEditable || target.tagName === 'INPUT' || target.tagName === 'TEXTAREA')\n );\n}\n\nfunction getDirection(element: HTMLElement | null): 'ltr' | 'rtl' {\n return element?.closest('[dir]')?.getAttribute('dir') === 'rtl' ? 'rtl' : 'ltr';\n}\n\ntype DropdownMenuContentElement = React.ElementRef<typeof DropdownMenuPrimitive.Content>;\ninterface DropdownMenuContentProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Content, RemovedProps>,\n DropdownMenuSurfaceProps {\n container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n /**\n * Controls how submenus behave.\n * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)\n * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline\n * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`\n */\n submenuBehavior?: Responsive<SubmenuBehavior>;\n /**\n * When true, skips the ScrollArea wrapper to allow VirtualMenu to handle its own scrolling.\n * Use this when rendering virtualized lists inside the dropdown.\n */\n virtualized?: boolean;\n}\nconst DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(\n (props, forwardedRef) => {\n const themeContext = useThemeContext();\n\n useDeprecatedPanelBackgroundWarning(props.panelBackground);\n\n const material = resolveMenuMaterial(props.material, props.panelBackground, themeContext);\n const {\n size = dropdownMenuContentPropDefs.size.default,\n variant = dropdownMenuContentPropDefs.variant.default,\n } = props;\n const {\n className,\n children,\n color,\n container,\n forceMount,\n material: _material,\n panelBackground: _panelBackground,\n submenuBehavior,\n virtualized = false,\n onEscapeKeyDown,\n onKeyDown,\n ...contentProps\n } = extractProps(props, dropdownMenuContentPropDefs);\n\n if (props.variant !== undefined) warnDeprecated('The menu `variant` prop is deprecated and will be removed in 0.15.0. Menus highlight with a soft fill, and a solid one when the person asks for more contrast.');\n const resolvedColor = color || themeContext.accentColor;\n const behavior = useResolvedResponsiveValue<SubmenuBehavior>(submenuBehavior, 'cascade');\n const isDrillDown = behavior === 'drill-down';\n const open = React.useContext(DropdownMenuOpenContext);\n const drillDownStore = useCreateDrillDownStore();\n\n // Escape goes back one drill-down level before it closes the menu.\n const handleEscapeKeyDown = (event: KeyboardEvent) => {\n onEscapeKeyDown?.(event);\n if (event.defaultPrevented || !isDrillDown || drillDownStore.getDepth() === 0) return;\n event.preventDefault();\n drillDownStore.pop('keyboard');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || !isDrillDown || drillDownStore.getDepth() === 0) return;\n if (isTextEntryTarget(event.target)) return;\n if (event.key === BACK_KEYS[getDirection(event.currentTarget)]) {\n event.preventDefault();\n drillDownStore.pop('keyboard');\n }\n };\n\n const contextValue = React.useMemo(\n () => ({ size, variant, color: resolvedColor, material }),\n [size, variant, resolvedColor, material],\n );\n\n const contentBody = (\n <MenuProvider size={size}>\n <DropdownMenuContentContext.Provider value={contextValue}>\n <DrillDownRoot store={drillDownStore} behavior={behavior} open={open}>\n {children}\n </DrillDownRoot>\n </DropdownMenuContentContext.Provider>\n </MenuProvider>\n );\n\n return (\n <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DropdownMenuPrimitive.Content\n data-accent-color={resolvedColor}\n data-material={material}\n data-panel-background={material}\n align=\"start\"\n sideOffset={4}\n collisionPadding={10}\n {...contentProps}\n onEscapeKeyDown={handleEscapeKeyDown}\n onKeyDown={handleKeyDown}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-DropdownMenuContent',\n className,\n )}\n >\n {virtualized ? (\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport', 'rt-virtualized')}>\n {contentBody}\n </div>\n ) : (\n <ScrollArea type=\"auto\" scrollbars=\"vertical\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>\n {contentBody}\n </div>\n </ScrollArea>\n )}\n </DropdownMenuPrimitive.Content>\n </Theme>\n </DropdownMenuPrimitive.Portal>\n );\n },\n);\nDropdownMenuContent.displayName = 'DropdownMenu.Content';\n\ntype DropdownMenuLabelElement = React.ElementRef<typeof DropdownMenuPrimitive.Label>;\ninterface DropdownMenuLabelProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Label, RemovedProps> {}\nconst DropdownMenuLabel = React.forwardRef<DropdownMenuLabelElement, DropdownMenuLabelProps>(\n ({ className, ...props }, forwardedRef) => {\n if (!React.useContext(DrillDownLevelContext)) return null;\n return (\n <DropdownMenuPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuLabel', 'rt-DropdownMenuLabel', className)}\n />\n );\n },\n);\nDropdownMenuLabel.displayName = 'DropdownMenu.Label';\n\ntype DropdownMenuItemElement = React.ElementRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemOwnProps = GetPropDefTypes<typeof dropdownMenuItemPropDefs>;\ninterface DropdownMenuItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Item, RemovedProps>,\n DropdownMenuItemOwnProps {}\nconst DropdownMenuItem = React.forwardRef<DropdownMenuItemElement, DropdownMenuItemProps>(\n (props, forwardedRef) => {\n const {\n className,\n children,\n color = dropdownMenuItemPropDefs.color.default,\n shortcut,\n ...itemProps\n } = props;\n // In drill-down mode, items of levels that are not on screen do not mount.\n if (!React.useContext(DrillDownLevelContext)) return null;\n return (\n <DropdownMenuPrimitive.Item\n data-accent-color={color}\n aria-keyshortcuts={shortcut ? toAriaKeyShortcuts(shortcut) : undefined}\n {...itemProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-DropdownMenuItem', className)}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n {shortcut && <MenuShortcut shortcut={shortcut} className=\"rt-DropdownMenuShortcut\" />}\n </DropdownMenuPrimitive.Item>\n );\n },\n);\nDropdownMenuItem.displayName = 'DropdownMenu.Item';\n\ntype DropdownMenuGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.Group>;\ninterface DropdownMenuGroupProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Group, RemovedProps> {}\nconst DropdownMenuGroup = React.forwardRef<DropdownMenuGroupElement, DropdownMenuGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuGroup', 'rt-DropdownMenuGroup', className)}\n />\n ),\n);\nDropdownMenuGroup.displayName = 'DropdownMenu.Group';\n\ntype DropdownMenuRadioGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioGroup>;\ninterface DropdownMenuRadioGroupProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.RadioGroup, RemovedProps> {}\nconst DropdownMenuRadioGroup = React.forwardRef<\n DropdownMenuRadioGroupElement,\n DropdownMenuRadioGroupProps\n>(({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.RadioGroup\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuRadioGroup', 'rt-DropdownMenuRadioGroup', className)}\n />\n));\nDropdownMenuRadioGroup.displayName = 'DropdownMenu.RadioGroup';\n\ntype DropdownMenuRadioItemElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>;\ntype DropdownMenuRadioItemOwnProps = GetPropDefTypes<typeof dropdownMenuRadioItemPropDefs>;\ninterface DropdownMenuRadioItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.RadioItem, RemovedProps>,\n DropdownMenuRadioItemOwnProps {}\nconst DropdownMenuRadioItem = React.forwardRef<\n DropdownMenuRadioItemElement,\n DropdownMenuRadioItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n color = dropdownMenuRadioItemPropDefs.color.default,\n ...itemProps\n } = props;\n if (!React.useContext(DrillDownLevelContext)) return null;\n return (\n <DropdownMenuPrimitive.RadioItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuRadioItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuRadioItem',\n className,\n )}\n >\n {children}\n <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n <ThickDotIcon className=\"rt-BaseMenuItemIndicatorIcon rt-DropdownMenuItemIndicatorIcon\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </DropdownMenuPrimitive.RadioItem>\n );\n});\nDropdownMenuRadioItem.displayName = 'DropdownMenu.RadioItem';\n\ntype DropdownMenuCheckboxItemElement = React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>;\ntype DropdownMenuCheckboxItemOwnProps = GetPropDefTypes<typeof dropdownMenuCheckboxItemPropDefs>;\ninterface DropdownMenuCheckboxItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.CheckboxItem, RemovedProps>,\n DropdownMenuCheckboxItemOwnProps {}\nconst DropdownMenuCheckboxItem = React.forwardRef<\n DropdownMenuCheckboxItemElement,\n DropdownMenuCheckboxItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n shortcut,\n color = dropdownMenuCheckboxItemPropDefs.color.default,\n ...itemProps\n } = props;\n if (!React.useContext(DrillDownLevelContext)) return null;\n return (\n <DropdownMenuPrimitive.CheckboxItem\n aria-keyshortcuts={shortcut ? toAriaKeyShortcuts(shortcut) : undefined}\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuCheckboxItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuCheckboxItem',\n className,\n )}\n >\n {children}\n <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-DropdownMenuItemIndicatorIcon\" />\n </DropdownMenuPrimitive.ItemIndicator>\n {shortcut && <MenuShortcut shortcut={shortcut} className=\"rt-DropdownMenuShortcut\" />}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\nDropdownMenuCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\ninterface DropdownMenuSubProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Sub> {\n /**\n * Label displayed in the back button when using drill-down mode.\n * If not provided, defaults to \"Back\".\n */\n label?: React.ReactNode;\n}\nconst DropdownMenuSub: React.FC<DropdownMenuSubProps> = ({\n label = 'Back',\n open,\n defaultOpen,\n onOpenChange,\n children,\n}) => {\n const drillDownStore = useDrillDownStore();\n const id = React.useId();\n const subContextValue = React.useMemo(() => ({ id, label }), [id, label]);\n const isOpenInDrillDown = usePanelPosition(drillDownStore, id) !== 'closed';\n\n // Drill-down: `open` and `defaultOpen` drive the stack; the stack drives\n // `onOpenChange`. A controlled `open` is applied when it changes.\n React.useLayoutEffect(() => {\n if (!drillDownStore || open === undefined) return;\n if (open && !drillDownStore.isOpen(id)) drillDownStore.push(id, null);\n else if (!open && drillDownStore.isOpen(id)) drillDownStore.close(id);\n }, [drillDownStore, open, id]);\n\n const defaultOpenRef = React.useRef(defaultOpen);\n React.useLayoutEffect(() => {\n if (drillDownStore && defaultOpenRef.current && open === undefined) drillDownStore.push(id, null);\n // Only on mount, like an uncontrolled default.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleOpenChange = useCallbackRef(onOpenChange);\n const wasOpenRef = React.useRef(isOpenInDrillDown);\n React.useEffect(() => {\n if (!drillDownStore || wasOpenRef.current === isOpenInDrillDown) return;\n wasOpenRef.current = isOpenInDrillDown;\n handleOpenChange(isOpenInDrillDown);\n }, [drillDownStore, isOpenInDrillDown, handleOpenChange]);\n\n // Radix Sub stays mounted in both behaviors so switching behavior does not\n // remount the subtree. It only renders context; in drill-down its trigger\n // and content are never rendered, so it reports no open changes of its own.\n return (\n <SubContext.Provider value={subContextValue}>\n <DropdownMenuPrimitive.Sub\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={drillDownStore ? undefined : onOpenChange}\n >\n {children}\n </DropdownMenuPrimitive.Sub>\n </SubContext.Provider>\n );\n};\nDropdownMenuSub.displayName = 'DropdownMenu.Sub';\n\ntype DropdownMenuSubTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>;\ninterface DropdownMenuSubTriggerProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.SubTrigger, RemovedProps> {}\nconst DropdownMenuSubTrigger = React.forwardRef<\n DropdownMenuSubTriggerElement,\n DropdownMenuSubTriggerProps\n>((props, forwardedRef) => {\n const { className, children, onKeyDown, ...subTriggerProps } = props;\n const drillDownStore = useDrillDownStore();\n const subContext = useSubContext();\n const isLevelVisible = React.useContext(DrillDownLevelContext);\n\n if (drillDownStore && subContext) {\n if (!isLevelVisible) return null;\n\n const handleSelect = (event: Event) => {\n // Navigating does not close the menu.\n event.preventDefault();\n drillDownStore.push(subContext.id);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || subTriggerProps.disabled) return;\n if (event.key === FORWARD_KEYS[getDirection(event.currentTarget)]) {\n event.preventDefault();\n drillDownStore.push(subContext.id, 'keyboard');\n }\n };\n\n return (\n <DropdownMenuPrimitive.Item\n aria-haspopup=\"menu\"\n {...subTriggerProps}\n data-drill-down-trigger={subContext.id}\n data-drill-down-name={subTriggerProps.textValue}\n onSelect={handleSelect}\n onKeyDown={handleKeyDown}\n ref={forwardedRef}\n className={classNames(\n 'rt-reset',\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuSubTrigger',\n 'rt-DropdownMenuDrillDownSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubTriggerIcon\" />\n </div>\n </DropdownMenuPrimitive.Item>\n );\n }\n\n return (\n <DropdownMenuPrimitive.SubTrigger\n {...subTriggerProps}\n onKeyDown={onKeyDown}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubTriggerIcon\" />\n </div>\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\nDropdownMenuSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\ntype DropdownMenuSeparatorElement = React.ElementRef<typeof DropdownMenuPrimitive.Separator>;\ninterface DropdownMenuSeparatorProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Separator, RemovedProps> {}\nconst DropdownMenuSeparator = React.forwardRef<\n DropdownMenuSeparatorElement,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => {\n if (!React.useContext(DrillDownLevelContext)) return null;\n return (\n <DropdownMenuPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuSeparator', 'rt-DropdownMenuSeparator', className)}\n />\n );\n});\nDropdownMenuSeparator.displayName = 'DropdownMenu.Separator';\n\n/** The row at the top of a drill-down panel that returns to the parent level. */\nfunction DrillDownBackItem({ label, name }: { label: React.ReactNode; name: string }) {\n const drillDownStore = useDrillDownStore();\n\n const handleSelect = React.useCallback(\n (event: Event) => {\n // Navigating does not close the menu.\n event.preventDefault();\n drillDownStore?.pop();\n },\n [drillDownStore],\n );\n\n // The visible label is often the submenu title, so the accessible name says\n // what the row does while still containing the visible text.\n const labelText = typeof label === 'string' ? label : name;\n const ariaLabel = labelText && labelText !== 'Back' ? `Back from ${labelText}` : undefined;\n\n return (\n <DropdownMenuPrimitive.Item\n aria-label={ariaLabel}\n textValue={labelText || 'Back'}\n onSelect={handleSelect}\n className={classNames(\n 'rt-reset',\n 'rt-BaseMenuItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuDrillDownBackItem',\n )}\n >\n <ThickChevronLeftIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuDrillDownBackIcon\" />\n <span className=\"rt-DropdownMenuDrillDownBackLabel\">{label}</span>\n </DropdownMenuPrimitive.Item>\n );\n}\n\n/** Radix positioning and layer props that have no meaning for an inline drill-down panel. */\ntype PopperOnlyProps =\n | 'loop'\n | 'onEscapeKeyDown'\n | 'onPointerDownOutside'\n | 'onFocusOutside'\n | 'onInteractOutside'\n | 'sideOffset'\n | 'alignOffset'\n | 'avoidCollisions'\n | 'collisionBoundary'\n | 'collisionPadding'\n | 'arrowPadding'\n | 'sticky'\n | 'hideWhenDetached'\n | 'updatePositionStrategy';\n\nfunction omitPopperProps<T extends Record<string, unknown>>(props: T): Omit<T, PopperOnlyProps> {\n const {\n loop: _loop,\n onEscapeKeyDown: _onEscapeKeyDown,\n onPointerDownOutside: _onPointerDownOutside,\n onFocusOutside: _onFocusOutside,\n onInteractOutside: _onInteractOutside,\n sideOffset: _sideOffset,\n alignOffset: _alignOffset,\n avoidCollisions: _avoidCollisions,\n collisionBoundary: _collisionBoundary,\n collisionPadding: _collisionPadding,\n arrowPadding: _arrowPadding,\n sticky: _sticky,\n hideWhenDetached: _hideWhenDetached,\n updatePositionStrategy: _updatePositionStrategy,\n ...rest\n } = props;\n return rest;\n}\n\ntype DropdownMenuSubContentElement = React.ElementRef<typeof DropdownMenuPrimitive.SubContent>;\ninterface DropdownMenuSubContentProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.SubContent, RemovedProps>,\n DropdownMenuSurfaceProps {\n container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n /**\n * When true, skips the ScrollArea wrapper so a VirtualMenu can handle its own\n * scrolling. Applies to cascade submenus; a drill-down panel scrolls with the\n * root content.\n */\n virtualized?: boolean;\n}\nconst DropdownMenuSubContent = React.forwardRef<\n DropdownMenuSubContentElement,\n DropdownMenuSubContentProps\n>((props, forwardedRef) => {\n const drillDownStore = useDrillDownStore();\n const subContext = useSubContext();\n\n if (drillDownStore && subContext) {\n return (\n <DrillDownPanel {...props} ref={forwardedRef} store={drillDownStore} sub={subContext} />\n );\n }\n return <CascadeSubContent {...props} ref={forwardedRef} />;\n});\nDropdownMenuSubContent.displayName = 'DropdownMenu.SubContent';\n\nconst CascadeSubContent = React.forwardRef<DropdownMenuSubContentElement, DropdownMenuSubContentProps>(\n (props, forwardedRef) => {\n const parent = React.useContext(DropdownMenuContentContext);\n const themeContext = useThemeContext();\n\n useDeprecatedPanelBackgroundWarning(props.panelBackground);\n\n // A submenu inherits the parent surface, and its own props win.\n const size = props.size ?? parent.size;\n const variant = props.variant ?? parent.variant;\n const color = props.color ?? parent.color;\n const material =\n props.material ?? props.panelBackground ?? parent.material ?? resolveMenuMaterial(undefined, undefined, themeContext);\n\n const {\n className,\n children,\n container,\n forceMount,\n color: _color,\n material: _material,\n panelBackground: _panelBackground,\n virtualized = false,\n ...subContentProps\n } = extractProps({ ...props, size, variant }, dropdownMenuSubContentPropDefs);\n\n const scalarSize = useResolvedResponsiveValue(size, dropdownMenuSubContentPropDefs.size.default);\n\n const contextValue = React.useMemo(\n () => ({ size, variant, color, material }),\n [size, variant, color, material],\n );\n\n const body = (\n <MenuProvider size={size}>\n <DropdownMenuContentContext.Provider value={contextValue}>{children}</DropdownMenuContentContext.Provider>\n </MenuProvider>\n );\n\n return (\n <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DropdownMenuPrimitive.SubContent\n data-accent-color={color}\n data-material={material}\n data-panel-background={material}\n alignOffset={getMenuAlignOffset(scalarSize, themeContext.scaling)}\n // Side offset accounts for the outer solid box-shadow\n sideOffset={1}\n collisionPadding={10}\n {...subContentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-BaseMenuSubContent',\n 'rt-DropdownMenuContent',\n 'rt-DropdownMenuSubContent',\n className,\n )}\n >\n {virtualized ? (\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport', 'rt-virtualized')}>\n {body}\n </div>\n ) : (\n <ScrollArea type=\"auto\" scrollbars=\"vertical\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>{body}</div>\n </ScrollArea>\n )}\n </DropdownMenuPrimitive.SubContent>\n </Theme>\n </DropdownMenuPrimitive.Portal>\n );\n },\n);\nCascadeSubContent.displayName = 'DropdownMenu.CascadeSubContent';\n\ninterface DrillDownPanelProps extends DropdownMenuSubContentProps {\n store: NonNullable<ReturnType<typeof useDrillDownStore>>;\n sub: NonNullable<ReturnType<typeof useSubContext>>;\n}\n\n/**\n * A submenu rendered inline in drill-down mode. It mounts its children only\n * while it is on the navigation stack, and shows its own items only while it\n * is the top level; deeper panels inside it stay mounted.\n */\nconst DrillDownPanel = React.forwardRef<DropdownMenuSubContentElement, DrillDownPanelProps>(\n ({ store, sub, ...props }, forwardedRef) => {\n const position = usePanelPosition(store, sub.id);\n const entry = useStackEntry(store, sub.id);\n const direction = useDrillDownDirection(position === 'top' ? store : null);\n\n if (position === 'closed') return null;\n\n const {\n className,\n children,\n container: _container,\n forceMount: _forceMount,\n virtualized: _virtualized,\n size: _size,\n variant: _variant,\n color: _color,\n material: _material,\n panelBackground: _panelBackground,\n ...panelProps\n } = omitPopperProps(props);\n\n const isTop = position === 'top';\n const name = entry?.name || (typeof sub.label === 'string' ? sub.label : '');\n\n return (\n <div\n role=\"group\"\n aria-label={name || undefined}\n {...panelProps}\n ref={forwardedRef}\n data-drill-down-panel={sub.id}\n data-drill-down-active={isTop ? true : undefined}\n data-animation-direction={isTop ? (direction ?? undefined) : undefined}\n className={classNames('rt-DropdownMenuDrillDownPanel', className)}\n >\n {isTop && (\n <>\n <DrillDownBackItem label={sub.label} name={name} />\n <DropdownMenuPrimitive.Separator className=\"rt-BaseMenuSeparator rt-DropdownMenuSeparator\" />\n </>\n )}\n <DrillDownLevelContext.Provider value={isTop}>{children}</DrillDownLevelContext.Provider>\n </div>\n );\n },\n);\nDrillDownPanel.displayName = 'DropdownMenu.DrillDownPanel';\n\ntype DropdownMenuTriggerIconElement = React.ElementRef<'svg'>;\ninterface DropdownMenuTriggerIconProps extends IconProps {}\nconst DropdownMenuTriggerIcon = React.forwardRef<\n DropdownMenuTriggerIconElement,\n DropdownMenuTriggerIconProps\n>(({ className, ...props }, forwardedRef) => (\n <ChevronDownIcon\n {...props}\n ref={forwardedRef}\n className={classNames('rt-DropdownMenuTriggerIcon', className)}\n />\n));\nDropdownMenuTriggerIcon.displayName = 'DropdownMenu.TriggerIcon';\n\nexport {\n DropdownMenuRoot as Root,\n DropdownMenuTrigger as Trigger,\n DropdownMenuTriggerIcon as TriggerIcon,\n DropdownMenuContent as Content,\n DropdownMenuLabel as Label,\n DropdownMenuItem as Item,\n DropdownMenuGroup as Group,\n DropdownMenuRadioGroup as RadioGroup,\n DropdownMenuRadioItem as RadioItem,\n DropdownMenuCheckboxItem as CheckboxItem,\n DropdownMenuSub as Sub,\n DropdownMenuSubTrigger as SubTrigger,\n DropdownMenuSubContent as SubContent,\n DropdownMenuSeparator as Separator,\n VirtualMenu as Virtual,\n};\n\nexport type {\n DropdownMenuRootProps as RootProps,\n DropdownMenuTriggerProps as TriggerProps,\n DropdownMenuTriggerIconProps as TriggerIconProps,\n DropdownMenuContentProps as ContentProps,\n DropdownMenuLabelProps as LabelProps,\n DropdownMenuItemProps as ItemProps,\n DropdownMenuGroupProps as GroupProps,\n DropdownMenuRadioGroupProps as RadioGroupProps,\n DropdownMenuRadioItemProps as RadioItemProps,\n DropdownMenuCheckboxItemProps as CheckboxItemProps,\n DropdownMenuSubProps as SubProps,\n DropdownMenuSubTriggerProps as SubTriggerProps,\n DropdownMenuSubContentProps as SubContentProps,\n DropdownMenuSeparatorProps as SeparatorProps,\n SubmenuBehavior,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["dropdown_menu_exports", "__export", "DropdownMenuCheckboxItem", "DropdownMenuContent", "DropdownMenuGroup", "DropdownMenuItem", "DropdownMenuLabel", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "DropdownMenuRoot", "DropdownMenuSeparator", "DropdownMenuSub", "DropdownMenuSubContent", "DropdownMenuSubTrigger", "DropdownMenuTrigger", "DropdownMenuTriggerIcon", "VirtualMenu", "React", "classNames", "DropdownMenuPrimitive", "Slot", "useCallbackRef", "DropdownMenuOpenContext", "DropdownMenuRoot", "props", "openProp", "defaultOpen", "onOpenChange", "uncontrolledOpen", "setUncontrolledOpen", "open", "handleOpenChangeProp", "useCallbackRef", "handleOpenChange", "next", "DropdownMenuPrimitive", "DropdownMenuTrigger", "children", "forwardedRef", "requireReactElement", "DropdownMenuContentContext", "BACK_KEYS", "FORWARD_KEYS", "isTextEntryTarget", "target", "getDirection", "element", "DropdownMenuContent", "themeContext", "useThemeContext", "useDeprecatedPanelBackgroundWarning", "material", "resolveMenuMaterial", "size", "baseMenuContentPropDefs", "variant", "className", "color", "container", "forceMount", "_material", "_panelBackground", "submenuBehavior", "virtualized", "onEscapeKeyDown", "onKeyDown", "contentProps", "extractProps", "resolvedColor", "behavior", "useResolvedResponsiveValue", "isDrillDown", "drillDownStore", "useCreateDrillDownStore", "handleEscapeKeyDown", "event", "handleKeyDown", "contextValue", "contentBody", "MenuProvider", "DrillDownRoot", "Theme", "classNames", "ScrollArea", "DropdownMenuLabel", "DrillDownLevelContext", "DropdownMenuItem", "baseMenuItemPropDefs", "shortcut", "itemProps", "toAriaKeyShortcuts", "Slot", "MenuShortcut", "DropdownMenuGroup", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "baseMenuRadioItemPropDefs", "ThickDotIcon", "DropdownMenuCheckboxItem", "baseMenuCheckboxItemPropDefs", "ThickCheckIcon", "DropdownMenuSub", "label", "useDrillDownStore", "id", "subContextValue", "isOpenInDrillDown", "usePanelPosition", "defaultOpenRef", "wasOpenRef", "SubContext", "DropdownMenuSubTrigger", "subTriggerProps", "subContext", "useSubContext", "isLevelVisible", "handleSelect", "ThickChevronRightIcon", "DropdownMenuSeparator", "DrillDownBackItem", "name", "labelText", "ariaLabel", "ThickChevronLeftIcon", "omitPopperProps", "_loop", "_onEscapeKeyDown", "_onPointerDownOutside", "_onFocusOutside", "_onInteractOutside", "_sideOffset", "_alignOffset", "_avoidCollisions", "_collisionBoundary", "_collisionPadding", "_arrowPadding", "_sticky", "_hideWhenDetached", "_updatePositionStrategy", "rest", "DropdownMenuSubContent", "DrillDownPanel", "CascadeSubContent", "parent", "_color", "subContentProps", "baseMenuSubContentPropDefs", "scalarSize", "body", "getMenuAlignOffset", "store", "sub", "position", "entry", "useStackEntry", "direction", "useDrillDownDirection", "_container", "_forceMount", "_virtualized", "_size", "_variant", "panelProps", "isTop", "DropdownMenuTriggerIcon", "ChevronDownIcon"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as e}from"./chunk-KRJTW535.js";import{c as s}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{b as e}from"./chunk-KRJTW535.js";import{c as s}from"./chunk-Z4DTHR2S.js";var o=["1","2","3","4"],a=["surface","soft","outline"],p={size:{type:"enum",className:"rt-r-size",values:o,default:"2",responsive:!0},variant:{type:"enum",className:"rt-variant",values:a,default:"surface"},showTickLabels:{type:"boolean",className:"rt-show-tick-labels"},snapToTicks:{type:"boolean",className:"rt-snap-to-ticks"},...s,...e};export{p as a};
|
|
2
|
+
//# sourceMappingURL=chunk-5G4WWJ4Z.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as s}from"./chunk-O2RISF37.js";import{a as C}from"./chunk-KJTEZVOF.js";import{a as c,b as u}from"./chunk-5T6K7VPP.js";import{a as i}from"./chunk-6FLLFCBU.js";import{a as m}from"./chunk-GSTOGDAJ.js";import{a as h}from"./chunk-OS3FCYZY.js";var g={};h(g,{Icon:()=>R,Root:()=>P,Text:()=>d});import*as o from"react";import p from"classnames";import{Slot as z}from"radix-ui";var f=o.createContext({}),P=o.forwardRef((t,a)=>{let{size:e=s.size.default,live:r="polite",role:x="status",variant:n}=t,{asChild:v,children:y,className:T,color:l,panelBackground:w,material:I,...E}=i(t,s,m),N=v?z.Root:"div";return o.createElement(N,{"data-accent-color":l,"data-panel-background":w,"data-material":I,...E,...{role:x,"aria-live":r,"aria-atomic":!0},className:p("rt-CalloutRoot",T),ref:a},o.createElement(f.Provider,{value:o.useMemo(()=>({size:e,variant:n,color:l}),[e,n,l])},y))});P.displayName="Callout.Root";var R=o.forwardRef(({className:t,...a},e)=>o.createElement("div",{...a,className:p("rt-CalloutIcon",t),ref:e}));R.displayName="Callout.Icon";var d=o.forwardRef(({className:t,...a},e)=>{let{size:r}=o.useContext(f);return o.createElement(C,{as:"p",size:c(r,u),...a,asChild:!1,ref:e,className:p("rt-CalloutText",t)})});d.displayName="Callout.Text";export{P as a,R as b,d as c,g as d};
|
|
2
|
+
//# sourceMappingURL=chunk-5JS7ADWX.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/callout.tsx"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport { warnDeprecated } from '../helpers/warn-deprecated.js';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { Text } from './text.js';\nimport { calloutRootPropDefs } from './callout.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { mapResponsiveProp, mapCalloutSizeToTextSize } from '../helpers/map-prop-values.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type {\n ComponentPropsWithout,\n RemovedProps,\n ComponentPropsAs,\n} from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CalloutRootOwnProps = GetPropDefTypes<typeof calloutRootPropDefs>;\n\ntype CalloutContextValue = {\n size?: CalloutRootOwnProps['size'];\n variant?: CalloutRootOwnProps['variant'];\n color?: CalloutRootOwnProps['color'];\n};\nconst CalloutContext = React.createContext<CalloutContextValue>({});\n\ntype CalloutRootElement = React.ElementRef<'div'>;\ninterface CalloutRootProps\n extends ComponentPropsWithout<'div', RemovedProps>,\n MarginProps,\n CalloutRootOwnProps {\n /** Controls the ARIA live region behavior for screen readers */\n live?: 'off' | 'polite' | 'assertive';\n /** Semantic role for the callout */\n role?: 'alert' | 'status' | 'note';\n}\n/** @deprecated Removed in 0.15.0. Use `Notice` for a condition that is true now, or `Text` for an aside. */\nconst CalloutRoot = React.forwardRef<CalloutRootElement, CalloutRootProps>(\n (props, forwardedRef) => {\n warnDeprecated(\n 'Callout is deprecated and will be removed in 0.15.0. Use Notice for a condition that is true now, or Text for an aside.',\n );\n const {\n size = calloutRootPropDefs.size.default,\n live = 'polite',\n role = 'status',\n variant,\n } = props;\n const { asChild, children, className, color, panelBackground, material, ...rootProps } =\n extractProps(props, calloutRootPropDefs, marginPropDefs);\n const Comp = asChild ? Slot.Root : 'div';\n\n // Determine appropriate ARIA attributes based on role and live\n const ariaProps = {\n role,\n 'aria-live': live,\n 'aria-atomic': true,\n };\n\n return (\n <Comp\n data-accent-color={color}\n data-panel-background={panelBackground}\n data-material={material}\n {...rootProps}\n {...ariaProps}\n className={classNames('rt-CalloutRoot', className)}\n ref={forwardedRef}\n >\n <CalloutContext.Provider\n value={React.useMemo(() => ({ size, variant, color }), [size, variant, color])}\n >\n {children}\n </CalloutContext.Provider>\n </Comp>\n );\n },\n);\nCalloutRoot.displayName = 'Callout.Root';\n\ntype CalloutIconElement = React.ElementRef<'div'>;\ninterface CalloutIconProps extends ComponentPropsWithout<'div', RemovedProps> {}\nconst CalloutIcon = React.forwardRef<CalloutIconElement, CalloutIconProps>(\n ({ className, ...props }, forwardedRef) => {\n return (\n <div {...props} className={classNames('rt-CalloutIcon', className)} ref={forwardedRef} />\n );\n },\n);\nCalloutIcon.displayName = 'Callout.Icon';\n\ntype CalloutTextElement = React.ElementRef<'p'>;\ntype CalloutTextProps = ComponentPropsAs<typeof Text, 'p'>;\nconst CalloutText = React.forwardRef<CalloutTextElement, CalloutTextProps>(\n ({ className, ...props }, forwardedRef) => {\n const { size } = React.useContext(CalloutContext);\n return (\n <Text\n as=\"p\"\n size={mapResponsiveProp(size, mapCalloutSizeToTextSize)}\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-CalloutText', className)}\n />\n );\n },\n);\nCalloutText.displayName = 'Callout.Text';\n\nexport { CalloutRoot as Root, CalloutIcon as Icon, CalloutText as Text };\nexport type {\n CalloutRootProps as RootProps,\n CalloutIconProps as IconProps,\n CalloutTextProps as TextProps,\n};\n"],
|
|
5
|
+
"mappings": "uPAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,UAAAE,EAAA,SAAAC,EAAA,SAAAC,IAGA,UAAYC,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,QAAAC,MAAY,WAuBrB,IAAMC,EAAuB,gBAAmC,CAAC,CAAC,EAa5DC,EAAoB,aACxB,CAACC,EAAOC,IAAiB,CAIvB,GAAM,CACJ,KAAAC,EAAOC,EAAoB,KAAK,QAChC,KAAAC,EAAO,SACP,KAAAC,EAAO,SACP,QAAAC,CACF,EAAIN,EACE,CAAE,QAAAO,EAAS,SAAAC,EAAU,UAAAC,EAAW,MAAAC,EAAO,gBAAAC,EAAiB,SAAAC,EAAU,GAAGC,CAAU,EACnFC,EAAad,EAAOG,EAAqBY,CAAc,EACnDC,EAAOT,EAAUU,EAAK,KAAO,MASnC,OACE,gBAACD,EAAA,CACC,oBAAmBN,EACnB,wBAAuBC,EACvB,gBAAeC,EACd,GAAGC,EACH,GAZa,CAChB,KAAAR,EACA,YAAaD,EACb,cAAe,EACjB,EASI,UAAWc,EAAW,iBAAkBT,CAAS,EACjD,IAAKR,GAEL,gBAACH,EAAe,SAAf,CACC,MAAa,UAAQ,KAAO,CAAE,KAAAI,EAAM,QAAAI,EAAS,MAAAI,CAAM,GAAI,CAACR,EAAMI,EAASI,CAAK,CAAC,GAE5EF,CACH,CACF,CAEJ,CACF,EACAT,EAAY,YAAc,eAI1B,IAAMoB,EAAoB,aACxB,CAAC,CAAE,UAAAV,EAAW,GAAGT,CAAM,EAAGC,IAEtB,gBAAC,OAAK,GAAGD,EAAO,UAAWkB,EAAW,iBAAkBT,CAAS,EAAG,IAAKR,EAAc,CAG7F,EACAkB,EAAY,YAAc,eAI1B,IAAMC,EAAoB,aACxB,CAAC,CAAE,UAAAX,EAAW,GAAGT,CAAM,EAAGC,IAAiB,CACzC,GAAM,CAAE,KAAAC,CAAK,EAAU,aAAWJ,CAAc,EAChD,OACE,gBAACuB,EAAA,CACC,GAAG,IACH,KAAMC,EAAkBpB,EAAMqB,CAAwB,EACrD,GAAGvB,EACJ,QAAS,GACT,IAAKC,EACL,UAAWiB,EAAW,iBAAkBT,CAAS,EACnD,CAEJ,CACF,EACAW,EAAY,YAAc",
|
|
6
|
+
"names": ["callout_exports", "__export", "CalloutIcon", "CalloutRoot", "CalloutText", "React", "classNames", "Slot", "CalloutContext", "CalloutRoot", "props", "forwardedRef", "size", "calloutRootPropDefs", "live", "role", "variant", "asChild", "children", "className", "color", "panelBackground", "material", "rootProps", "extractProps", "marginPropDefs", "Comp", "Slot", "classNames", "CalloutIcon", "CalloutText", "Text", "mapResponsiveProp", "mapCalloutSizeToTextSize"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as g,d as i}from"./chunk-HCNO7PX6.js";import{a as S,b,c as R}from"./chunk-GMHA5CFH.js";import{o as C}from"./chunk-A2XVR7GL.js";import{a as v,b as y}from"./chunk-BZZXXZ3O.js";import{a as I}from"./chunk-HWQ3NTJP.js";import{a as
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as l,c as x,e as O,g as E}from"./chunk-3J6AUDID.js";import{a as g,d as i}from"./chunk-HCNO7PX6.js";import{a as S,b,c as R}from"./chunk-GMHA5CFH.js";import{o as C}from"./chunk-A2XVR7GL.js";import{a as v,b as y}from"./chunk-BZZXXZ3O.js";import{a as I}from"./chunk-HWQ3NTJP.js";import{a as h}from"./chunk-3XSB7YIM.js";import*as e from"react";import re from"classnames";import{useComposedRefs as ae}from"radix-ui/internal";var ie={controlled:"open",default:"defaultOpen"},le={initial:"overlay",sm:"fixed"},T=e.forwardRef((N,M)=>{let{className:w,presentation:H=le,defaultOpen:U,open:A,onOpenChange:B,expandedSize:o=320,minSize:p=200,maxSize:d=500,resizable:c=!1,collapsible:V=!0,onExpand:k,onCollapse:L,onResize:_,onResizeStart:D,onResizeEnd:$,snapPoints:t,snapTolerance:q,collapseThreshold:s,paneId:r,persistence:a,children:F,style:W,onSizeChange:j,sizeUpdate:G,sizeUpdateMs:K=50,size:J,defaultSize:Q,inset:m,id:X,...u}=N,{table:f,attributes:Y}=R(H,"fixed"),n=S({name:"inspector",label:"Inspector",propNames:ie,id:X,controlled:l(A),defaultValue:l(U),presentationTable:f,builtIn:x,onChange:(te,se)=>B?.(te!=="closed",{reason:se}),onExpand:k,onCollapse:L,size:o});C("inspector",m),e.useEffect(()=>{(t!==void 0||s!==void 0||r!==void 0||a!==void 0)&&void 0},[t,s,r,a]);let P=e.useRef(null),Z=ae(M,n.setElement,P),ee=v({name:"inspector",elementId:n.id,elementRef:P,cssVarName:"--inspector-size",orientation:"vertical",edge:"start",growth:O,expandedSize:o,minSize:p,maxSize:d,resizable:c,collapsible:V,size:J,defaultSize:Q,onSizeChange:j,sizeUpdate:G,sizeUpdateMs:K,onResize:_,onResizeStart:D,onResizeEnd:$,snapPoints:t,snapTolerance:q,collapseThreshold:s,paneId:r,persistence:a,overlaying:n.overlaying,overlayingNow:()=>f[h()]==="overlay",requestCollapse:()=>n.setValue("closed","toggle"),requestToggle:()=>n.toggle("toggle")}),{handles:z,content:ne}=y(F,i),oe=c&&n.shown!==!1&&!n.overlaying?e.createElement(I.Provider,{value:ee},z.length>0?z:e.createElement(g,null)):null;return e.createElement("div",{...E(u),id:n.id,ref:Z,className:re("rt-ShellPane","rt-ShellInspector",w),...b(n,Y),"data-inset":m||void 0,tabIndex:n.overlaying?-1:u.tabIndex,style:{...W,"--inspector-expanded-size":`${o}px`,"--inspector-min-size":`${p}px`,"--inspector-max-size":`${d}px`}},e.createElement("div",{className:"rt-ShellInspectorContent"},ne),oe)});T.displayName="Shell.Inspector";T.Handle=i;export{T as a};
|
|
2
|
+
//# sourceMappingURL=chunk-62CJL5G7.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as g,b as R,c as u,d as y,e as C}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as g,b as R,c as u,d as y,e as C}from"./chunk-2T74JEVN.js";import{a as f}from"./chunk-5TXQLK4G.js";import{a as i}from"./chunk-6FLLFCBU.js";import{a as D}from"./chunk-OS3FCYZY.js";var O={};D(O,{Content:()=>I,Header:()=>E,Item:()=>v,Root:()=>T,Trigger:()=>H});import*as o from"react";import p from"classnames";import{Accordion as m}from"radix-ui";var T=o.forwardRef((r,t)=>{let{className:e,panelBackground:c,material:a,flush:l,radius:s,color:N,...h}=i(r,g),n=h;f(r.panelBackground);let A=a??c;n.type==="single"&&n.collapsible===void 0&&(n.collapsible=!0);let w=o.useCallback(d=>{if(n.type==="multiple"){let P=d.currentTarget.querySelectorAll("[data-radix-accordion-item]");d.key==="Home"?(d.preventDefault(),P[0]?.querySelector("[data-radix-accordion-trigger]")?.focus()):d.key==="End"&&(d.preventDefault(),P[P.length-1]?.querySelector("[data-radix-accordion-trigger]")?.focus())}},[n.type]);return o.createElement(m.Root,{...n,ref:t,className:p("rt-AccordionRoot",e),"data-accent-color":N,"data-panel-background":A,"data-material":A,"data-flush":l||void 0,"data-radius":s,onKeyDown:w})});T.displayName="Accordion.Root";var v=o.forwardRef((r,t)=>{let{className:e,...c}=i(r,R);return o.createElement(m.Item,{...c,ref:t,className:p("rt-AccordionItem",e)})});v.displayName="Accordion.Item";var E=o.forwardRef((r,t)=>{let{className:e,...c}=i(r,u);return o.createElement(m.Header,{...c,ref:t,className:p("rt-AccordionHeader",e)})});E.displayName="Accordion.Header";var H=o.forwardRef(({children:r,...t},e)=>{let{className:c,...a}=i(t,y),l=o.useRef(null);return o.createElement(m.Trigger,{...a,ref:s=>{l.current=s,typeof e=="function"?e(s):e&&(e.current=s)},className:p("rt-AccordionTrigger",c)},r)});H.displayName="Accordion.Trigger";var I=o.forwardRef((r,t)=>{let{className:e,children:c,...a}=i(r,C);return o.createElement(m.Content,{...a,ref:t,className:p("rt-AccordionContent",e),"aria-live":"polite"},o.createElement("div",{className:"rt-AccordionContentInner"},c))});I.displayName="Accordion.Content";export{T as a,v as b,E as c,H as d,I as e,O as f};
|
|
2
|
+
//# sourceMappingURL=chunk-6JP5PIOO.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as t}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as t}from"./chunk-2D5QJ6MX.js";import{z as o}from"zod";var e=t.extend({tooltip:o.string().optional().describe("Content to display in the tooltip on hover/focus"),tooltipSide:o.enum(["top","right","bottom","left"]).optional().default("top").describe("Side of the button where the tooltip should appear"),tooltipAlign:o.enum(["start","center","end"]).optional().default("center").describe("Alignment of the tooltip relative to the button"),tooltipDelayDuration:o.number().optional().describe("Delay before showing the tooltip (in milliseconds)"),tooltipDisableHoverableContent:o.boolean().optional().default(!1).describe("Whether to disable hoverable content behavior"),overrideStyles:o.object({normal:o.object({color:o.string().optional(),background:o.string().optional(),backgroundColor:o.string().optional(),boxShadow:o.string().optional(),filter:o.string().optional(),outline:o.string().optional(),outlineOffset:o.string().optional(),opacity:o.union([o.string(),o.number()]).optional()}).optional(),hover:o.object({color:o.string().optional(),background:o.string().optional(),backgroundColor:o.string().optional(),boxShadow:o.string().optional(),filter:o.string().optional(),outline:o.string().optional(),outlineOffset:o.string().optional(),opacity:o.union([o.string(),o.number()]).optional()}).optional(),active:o.object({color:o.string().optional(),background:o.string().optional(),backgroundColor:o.string().optional(),boxShadow:o.string().optional(),filter:o.string().optional(),outline:o.string().optional(),outlineOffset:o.string().optional(),opacity:o.union([o.string(),o.number()]).optional()}).optional(),pressed:o.object({color:o.string().optional(),background:o.string().optional(),backgroundColor:o.string().optional(),boxShadow:o.string().optional(),filter:o.string().optional(),outline:o.string().optional(),outlineOffset:o.string().optional(),opacity:o.union([o.string(),o.number()]).optional()}).optional(),open:o.object({color:o.string().optional(),background:o.string().optional(),backgroundColor:o.string().optional(),boxShadow:o.string().optional(),filter:o.string().optional(),outline:o.string().optional(),outlineOffset:o.string().optional(),opacity:o.union([o.string(),o.number()]).optional()}).optional(),disabled:o.object({color:o.string().optional(),background:o.string().optional(),backgroundColor:o.string().optional(),boxShadow:o.string().optional(),filter:o.string().optional(),outline:o.string().optional(),outlineOffset:o.string().optional(),opacity:o.union([o.string(),o.number()]).optional()}).optional(),focus:o.object({outline:o.string().optional(),outlineOffset:o.string().optional()}).optional()}).optional().describe("Override styles for different interaction states")}).strict();function l(n){return n}export{e as a,l as b};
|
|
2
|
+
//# sourceMappingURL=chunk-77TGP2LO.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as ot}from"./chunk-RAVFUI7W.js";import{a as Ve}from"./chunk-BOFVKXUV.js";import{g as nt,j as rt}from"./chunk-IX5HIHVI.js";import{a as we}from"./chunk-KJTEZVOF.js";import{a as at}from"./chunk-GONBMSRL.js";import{a as Be}from"./chunk-PAEHH3WS.js";import{a as je}from"./chunk-AGAQC4HH.js";import{a as De}from"./chunk-PXUQEA77.js";import{b as U}from"./chunk-FWB47YCH.js";import{a as tt}from"./chunk-AVFGMLL4.js";import{a as zt}from"./chunk-OS3FCYZY.js";var Gt={};zt(Gt,{AttachTrigger:()=>gt,Attachment:()=>Ue,AttachmentsRow:()=>ft,InlineEnd:()=>ht,InlineStart:()=>pt,Item:()=>Ct,Root:()=>ut,Row:()=>vt,RowEnd:()=>xt,RowStart:()=>yt,Send:()=>Pt,Textarea:()=>mt});import*as e from"react";import E from"classnames";import{LazyMotion as Dt,MotionConfig as Bt,domAnimation as jt,m as me}from"motion/react";import{useComposedRefs as ct}from"radix-ui/internal";import{useDropzone as Vt}from"react-dropzone";var We=typeof window<"u"?e.useLayoutEffect:e.useEffect;function st(a,o){let{placeholder:n}=a;if(!n){o();return}a.placeholder="";try{o()}finally{a.placeholder=n}}var pe={layout:{type:"spring",visualDuration:.15,bounce:.1}},lt=e.createContext(null),Ke=e.createContext(""),H=()=>{let a=e.useContext(lt);if(!a)throw new Error("Chatbar context not found. Wrap parts in <Chatbar.Root>.");return a},ue=a=>Array.isArray(a)?a:typeof a=="string"?a.split(",").map(o=>o.trim()).filter(Boolean):[],Wt=(a,o)=>{if(o.length===0)return!0;let n=a.type.toLowerCase(),i=a.name.toLowerCase();for(let c of o){let l=c.toLowerCase();if(l.includes("/")){let[d,u]=l.split("/"),[f,b]=n.split("/");if(d==="*"||d===f&&(u==="*"||u===b))return!0}else if(l.startsWith(".")&&i.endsWith(l))return!0}return!1},$t=/\.(png|jpe?g|gif|webp|bmp|svg|avif)$/i,dt=(a,o)=>(o||"").toLowerCase().startsWith("image/")||$t.test(a),$e=a=>a.trim().length>0,it=(a,o)=>`${a} ${o}${a===1?"":"s"}`,Kt=0,Ut=()=>`chatbar-attachment-${Date.now()}-${++Kt}`,ut=e.forwardRef((a,o)=>{let{className:n,style:i,children:c,value:l,defaultValue:d="",onValueChange:u,open:f,defaultOpen:b=!1,onOpenChange:C,expandOn:v="both",minLines:m=3,maxLines:N=6,sendMode:I="whenDirty",disabled:R,readOnly:S,onSubmit:j,size:A="2",variant:F,color:L,radius:z,panelBackground:y,material:k,width:V,maxWidth:re,attachments:x,defaultAttachments:D,onAttachmentsChange:_,accept:he,multiple:O=!0,maxAttachments:G,maxFileSize:q,paste:B=!0,pasteAccept:M,clearOnSubmit:Y=!0,onAttachmentReject:Se,dropzone:oe=!0,apiRef:Ee,onBlurCapture:fe,notices:be,context:Re,...Te}=a,t=k||y,g=l!=null,[w,se]=e.useState(d),W=g?l:w,X=f!=null,[Le,ie]=e.useState(b),Q=X?f:Le,Z="attachments"in a,[_e,At]=e.useState(()=>D??[]),ce=e.useMemo(()=>Z?x??[]:_e,[Z,x,_e]),[Ge,wt]=e.useState({text:"",id:0}),le=e.useCallback(r=>wt(s=>({text:r,id:s.id+1})),[]),qe=e.useRef(null),St=ct(o,qe),ke=e.useRef(null),Me=e.useRef(null),de=e.useRef(!1),Ce=e.useRef(!1),ge=e.useRef(void 0),Ne=e.useRef(null),Ye=ue(he).join(","),Oe=ue(M).join(","),He=e.useMemo(()=>ue(Ye),[Ye]),Et=e.useMemo(()=>Oe?ue(Oe):He,[Oe,He]),Xe={value:W,attachments:ce,accepts:He,pasteAccepts:Et,multiple:O,maxAttachments:G,maxFileSize:q,disabled:R,readOnly:S,expandOn:v,isValueControlled:g,isOpenControlled:X,isAttachmentsControlled:Z,onValueChange:u,onOpenChange:C,onAttachmentsChange:_,onAttachmentReject:Se,onSubmit:j},P=e.useRef(Xe);P.current=Xe;let Ie=e.useRef(null),$=e.useCallback(()=>Ie.current??P.current.attachments,[]),ee=e.useCallback(r=>{P.current.isOpenControlled||ie(r),P.current.onOpenChange?.(r)},[]),ve=e.useCallback(r=>{P.current.isValueControlled||se(r),P.current.onValueChange?.(r)},[]),te=e.useCallback(r=>{Ie.current=r,queueMicrotask(()=>{Ie.current=null}),P.current.isAttachmentsControlled||At(r),P.current.onAttachmentsChange?.(r)},[]),ye=e.useRef(new Set),ae=e.useCallback((r,s,p=P.current.multiple)=>{let h=P.current;if(h.disabled||h.readOnly||r.length===0)return 0;let K=$(),J=[],ne=[],It=typeof h.maxAttachments=="number"?Math.max(h.maxAttachments-K.length,0):1/0,Ft=p?1/0:1;for(let T of r){if(J.length>=It||J.length>=Ft){ne.push({file:T,reason:"count"});continue}if(typeof h.maxFileSize=="number"&&T.size>h.maxFileSize){ne.push({file:T,reason:"size"});continue}if(!Wt(T,s)){ne.push({file:T,reason:"type"});continue}let ze=dt(T.name,T.type)?URL.createObjectURL(T):void 0;ze&&ye.current.add(ze),J.push({id:Ut(),name:T.name,size:T.size,type:T.type,file:T,url:ze,status:"idle"})}let Ae=[];return J.length>0&&(te(K.concat(J)),h.expandOn!=="none"&&ee(!0),Ae.push(`${it(J.length,"file")} attached.`)),ne.length>0&&(h.onAttachmentReject?.(ne),Ae.push(`${it(ne.length,"file")} could not be attached.`)),Ae.length>0&&le(Ae.join(" ")),J.length},[$,te,ee,le]),xe=e.useCallback(r=>ae(r,P.current.accepts),[ae]),Je=e.useCallback(r=>ae(r,P.current.pasteAccepts),[ae]),Qe=e.useCallback(r=>{let s=$(),p=s.find(h=>h.id===r);p&&(te(s.filter(h=>h.id!==r)),le(`Removed ${p.name}.`))},[$,te,le]),Ze=e.useCallback(r=>{let s=P.current;if(s.disabled||s.readOnly)return!1;let p=$();if(!$e(s.value)&&p.length===0)return!1;let h={value:s.value,attachments:p};if(r&&s.onSubmit)for(let K of p)K.url&&ye.current.delete(K.url);return s.onSubmit?.(h),r&&(ve(""),te([])),!0},[$,ve,te]);e.useEffect(()=>{let r=ye.current;if(r.size===0)return;let s=new Set(ce.map(p=>p.url));for(let p of Array.from(r))s.has(p)||(URL.revokeObjectURL(p),r.delete(p))},[ce]),e.useEffect(()=>{let r=ye.current;return()=>{if(!P.current.isAttachmentsControlled){for(let s of Array.from(r))URL.revokeObjectURL(s);r.clear()}}},[]);let Pe=e.useCallback(r=>{let s=P.current,p=Me.current;if(clearTimeout(ge.current),Ce.current=!1,!p||s.disabled||s.readOnly)return;let h=r?.accept!=null?ue(r.accept):s.accepts,K=r?.multiple??s.multiple;Ne.current={patterns:h,multiple:K},p.accept=h.join(","),p.multiple=K,de.current=!0,p.click(),setTimeout(()=>{document.hasFocus()&&(de.current=!1)},1e3)},[]),et=e.useCallback(()=>{Ce.current=!0,clearTimeout(ge.current),ge.current=setTimeout(()=>{Ce.current=!1},800)},[]);e.useEffect(()=>()=>clearTimeout(ge.current),[]),e.useEffect(()=>{let r=Me.current,s=()=>{de.current=!1};return window.addEventListener("focus",s),r?.addEventListener("cancel",s),()=>{window.removeEventListener("focus",s),r?.removeEventListener("cancel",s)}},[]);let Tt=e.useCallback(r=>{let s=r.currentTarget,p=Array.from(s.files??[]),h=Ne.current;ae(p,h?.patterns??P.current.accepts,h?.multiple),de.current=!1,Ne.current=null,s.value=""},[ae]),Lt=e.useCallback(r=>{fe?.(r);let s=P.current,p=qe.current;if(!p||s.expandOn==="none")return;let h=r.relatedTarget;h&&p.contains(h)||de.current||Ce.current||!$e(s.value)&&$().length===0&&ee(!1)},[fe,ee,$]),kt=e.useCallback(r=>{xe(r)},[xe]),{getRootProps:Mt,isDragActive:Nt}=Vt({onDrop:kt,onDragEnter:()=>le(""),noClick:!0,noKeyboard:!0,noPaste:!0,disabled:!oe||R||S}),Fe=oe&&Nt;e.useImperativeHandle(Ee,()=>({focusTextarea:()=>ke.current?.focus({preventScroll:!0}),openFilePicker:()=>Pe()}),[Pe]);let Ot=e.useCallback(r=>{if(R||r.pointerType==="mouse"&&r.button!==0)return;let s=r.target;s instanceof Element&&s.closest('button, [role="button"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex="-1"])')||(r.preventDefault(),ke.current?.focus({preventScroll:!0}))},[R]),Ht=e.useMemo(()=>({open:Q,setOpen:ee,setValue:ve,size:A,expandOn:v,minLines:m,maxLines:N,sendMode:I,disabled:R,readOnly:S,paste:B,clearOnSubmit:Y,multiple:O,textareaRef:ke,attachments:ce,removeAttachment:Qe,submit:Ze,appendFiles:xe,appendFilesFromPaste:Je,openFilePicker:Pe,beginFilePickerPress:et}),[Q,ee,ve,A,v,m,N,I,R,S,B,Y,O,ce,Qe,Ze,xe,Je,Pe,et]);return e.createElement(lt.Provider,{value:Ht},e.createElement(Ke.Provider,{value:W},e.createElement(Dt,{features:jt},e.createElement(Bt,{reducedMotion:"user"},e.createElement("div",{...Te,ref:St,className:E("rt-ChatbarRoot",`rt-r-size-${A}`,n),style:{position:"relative",width:V,maxWidth:re,...i},"data-state":Q?"open":"closed","data-disabled":R?"":void 0,"data-readonly":S?"":void 0,"data-drop-active":Fe?"":void 0,"data-accent-color":L,"data-radius":z,"data-panel-background":t,"data-material":t,onBlurCapture:Lt},e.createElement("input",{ref:Me,type:"file",tabIndex:-1,"aria-hidden":!0,style:{display:"none"},onChange:Tt}),be?e.createElement("div",{className:"rt-ChatbarNotices"},e.createElement(ot.Provider,{value:A},be)):null,e.createElement("div",{...oe?Mt():{},style:{width:"100%",flex:"1 1 auto",minHeight:0},onPointerDown:Ot},e.createElement(me.div,{className:E("rt-ChatbarBox",`rt-variant-${tt(F??"raised")}`),style:{position:"relative"},"data-accent-color":L,"data-radius":z,"data-panel-background":t,"data-material":t,layout:!0,transition:pe},e.createElement(me.div,{className:"rt-ChatbarGrid",layout:"position",transition:pe},c),Fe&&e.createElement("div",{className:"rt-ChatbarDropOverlay","aria-hidden":!0},e.createElement("div",{className:"rt-ChatbarDropContent"},e.createElement(we,{emphasis:"medium",size:A,weight:"medium"},"Drop files here to attach"))))),Re?e.createElement(we,{as:"div",size:A==="3"?"2":"1",emphasis:"medium",className:"rt-ChatbarContext"},Re):null,e.createElement(je,{role:"status","aria-live":"polite"},Fe?"Drop files here to attach.":e.createElement("span",{key:Ge.id},Ge.text)))))))});ut.displayName="Chatbar.Root";var mt=e.forwardRef((a,o)=>{let{className:n,style:i,asChild:c,onFocus:l,onChange:d,onPaste:u,onKeyDown:f,onCompositionStart:b,onCompositionEnd:C,submitOnEnter:v=!1,...m}=a,N=H(),I=e.useContext(Ke),{open:R,minLines:S,maxLines:j,expandOn:A,disabled:F,readOnly:L,setOpen:z,setValue:y,textareaRef:k,paste:V,appendFilesFromPaste:re,size:x,submit:D,clearOnSubmit:_}=N,he=ct(o,k),O=e.useRef(0),G=e.useRef(0),q=e.useRef(!1),B=e.useRef({open:R,minLines:S,maxLines:j});We(()=>{B.current={open:R,minLines:S,maxLines:j}},[R,S,j]);let M=e.useCallback(()=>{let t=k.current;if(!t)return;let g=window.getComputedStyle(t);O.current=parseFloat(g.lineHeight)||20,G.current=(parseFloat(g.paddingTop)||0)+(parseFloat(g.paddingBottom)||0)},[k]),Y=e.useCallback((t,g)=>{let{minLines:w,maxLines:se}=B.current,W=O.current,X=G.current,Le=Math.ceil((g?w:1)*W)+X,ie=Math.ceil((g?se:1)*W)+X,Q=Math.max(t.scrollHeight,Le);t.style.height=`${Math.min(Q,ie)}px`;let Z=Q>ie;t.style.overflowY=Z?"auto":"hidden",t.style.maxHeight=Z?`${ie}px`:"none"},[]);We(()=>{M()},[M,x]),We(()=>{let t=k.current;t&&(O.current===0&&M(),st(t,()=>{t.style.height="auto";let g=R;if(!R&&(A==="overflow"||A==="both")){let w=Math.ceil(O.current)+G.current;t.scrollHeight>w+1&&(g=!0,z(!0))}Y(t,g)}))},[I,R,A,S,j,x,z,k,M,Y]),e.useEffect(()=>{let t=k.current;if(!t||typeof ResizeObserver>"u")return;let g=-1,w=new ResizeObserver(se=>{let W=se[0]?.contentRect.width??0;if(W===g)return;let X=g===-1;g=W,!X&&(M(),st(t,()=>{t.style.height="auto",Y(t,B.current.open)}))});return w.observe(t),()=>w.disconnect()},[k,M,Y]),e.useEffect(()=>{},[]);let Se=e.useCallback(t=>{l?.(t),!(F||L)&&(A==="focus"||A==="both")&&!R&&z(!0)},[F,L,A,R,z,l]),oe=e.useCallback(t=>{y(t.currentTarget.value),d?.(t)},[y,d]),Ee=e.useCallback(t=>{if(u?.(t),t.defaultPrevented||!V||F||L)return;let g=Array.from(t.clipboardData?.items??[]).filter(w=>w.kind==="file").map(w=>w.getAsFile()).filter(w=>!!w);g.length!==0&&re(g)>0&&t.preventDefault()},[V,F,L,u,re]),fe=e.useCallback(t=>{q.current=!0,b?.(t)},[b]),be=e.useCallback(t=>{q.current=!1,C?.(t)},[C]),Re=e.useCallback(t=>{f?.(t),!(t.defaultPrevented||!v)&&(t.key!=="Enter"||t.shiftKey||t.altKey||t.ctrlKey||t.metaKey||q.current||t.nativeEvent.isComposing||t.nativeEvent.keyCode===229||(t.preventDefault(),D(_)))},[v,f,D,_]),Te=c?U:"textarea";return e.createElement(me.div,{className:E("rt-ChatbarField","rt-ChatbarTextarea",n),layout:"position",transition:pe},e.createElement(Te,{...m,ref:he,className:"rt-ChatbarInput",value:I,onChange:oe,onFocus:Se,onPaste:Ee,onKeyDown:Re,onCompositionStart:fe,onCompositionEnd:be,disabled:F,readOnly:L,rows:R?S:1,spellCheck:m.spellCheck??!0,autoCorrect:m.autoCorrect??"on",style:i}))});mt.displayName="Chatbar.Textarea";var pt=e.forwardRef((a,o)=>{let{children:n,asChild:i,className:c,...l}=a;return H().open?null:e.createElement(i?U:"div",{...l,ref:o,className:E("rt-ChatbarInlineStart",c)},n)});pt.displayName="Chatbar.InlineStart";var ht=e.forwardRef((a,o)=>{let{children:n,asChild:i,className:c,...l}=a;return H().open?null:e.createElement(i?U:"div",{...l,ref:o,className:E("rt-ChatbarInlineEnd",c)},n)});ht.displayName="Chatbar.InlineEnd";var ft=e.forwardRef((a,o)=>{let{asChild:n,forceMount:i,renderAttachment:c,className:l,children:d,...u}=a,f=H(),b=e.Children.toArray(d).length>0;if(f.attachments.length===0&&!b&&!i)return null;let C=n?U:"div";return e.createElement(me.div,{layout:"position",transition:pe},e.createElement(C,{...u,ref:o,className:E("rt-ChatbarAttachmentsRow",l),role:"list","aria-label":u["aria-label"]??"Attachments"},e.createElement(at,{className:"rt-ChatbarScrollArea",scrollbars:"horizontal",size:"1"},e.createElement(De,{align:"center",gap:"2",minWidth:"fit-content"},f.attachments.map(v=>e.createElement(Ue,{key:v.id,attachment:v,asChild:!!c},c?.(v))),d))))});ft.displayName="Chatbar.AttachmentsRow";function bt(a,o){let n=a.closest('[role="listitem"]'),i=n?.parentElement?Array.from(n.parentElement.children):[],c=n?i.indexOf(n):-1,d=(i[c+1]??i[c-1])?.querySelector(".rt-ChatbarItemRemove");d?d.focus():o.current?.focus({preventScroll:!0})}var Rt=({lead:a,leadKind:o,label:n,detail:i,removeLabel:c,onRemove:l})=>{let d=H();return e.createElement(e.Fragment,null,e.createElement("span",{className:"rt-ChatbarItemLead","data-kind":o,"aria-hidden":!0},a),e.createElement(we,{className:"rt-ChatbarItemLabel",size:d.size,truncate:!0},n,i?e.createElement(je,null,", ",i):null),l&&e.createElement(Ve,{className:"rt-ChatbarItemRemove","aria-label":c,size:"1",variant:"ghost",color:"gray",onClick:l},e.createElement(nt,null)))},_t={uploading:"uploading",error:"failed to upload"},Ue=e.forwardRef((a,o)=>{let{attachment:n,asChild:i,className:c,children:l,...d}=a,u=H(),f=i?U:"div",b=!!n.url&&dt(n.name,n.type),C=`${Math.ceil(n.size/1024)} KB`,v=n.status?_t[n.status]:void 0,m=u.disabled||u.readOnly,N=R=>{bt(R.currentTarget,u.textareaRef),u.removeAttachment(n.id)},I=n.status==="uploading"?e.createElement(Be,{size:"1"}):b?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:n.url,alt:""}):e.createElement(rt,null);return e.createElement(f,{...d,ref:o,className:E(l?"rt-ChatbarAttachment":"rt-ChatbarAttachment rt-ChatbarItem",c),role:"listitem","data-kind":b?"image":"file","data-status":n.status,title:n.name},l??e.createElement(Rt,{lead:I,leadKind:b&&n.status!=="uploading"?"image":"icon",label:n.name,detail:v?`${C}, ${v}`:C,removeLabel:`Remove ${n.name}`,onRemove:m?void 0:N}))});Ue.displayName="Chatbar.Attachment";var Ct=e.forwardRef((a,o)=>{let{children:n,icon:i,image:c,color:l,onRemove:d,removeLabel:u,className:f,...b}=a,C=H(),v=C.disabled||C.readOnly,m=d?N=>{bt(N.currentTarget,C.textareaRef),d()}:void 0;return e.createElement("div",{...b,ref:o,className:E("rt-ChatbarItem",f),role:"listitem","data-accent-color":c?void 0:l??"gray",title:n},e.createElement(Rt,{lead:c?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:c,alt:""}):i,leadKind:c?"image":"icon",label:n,removeLabel:u??`Remove ${n}`,onRemove:v?void 0:m}))});Ct.displayName="Chatbar.Item";var gt=e.forwardRef((a,o)=>{let{asChild:n,accept:i,multiple:c,disabled:l,onPointerDown:d,onClick:u,...f}=a,b=H(),C=l||b.disabled||b.readOnly;return e.createElement(n?U:"button",{...f,ref:o,className:E("rt-ChatbarAttachTrigger",f.className),type:f.type??"button","aria-label":f["aria-label"]??"Add attachments",disabled:C,onPointerDown:m=>{d?.(m),!C&&!m.defaultPrevented&&b.beginFilePickerPress()},onClick:m=>{u?.(m),!(C||m.defaultPrevented)&&b.openFilePicker({accept:i,multiple:c})}})});gt.displayName="Chatbar.AttachTrigger";var vt=e.forwardRef((a,o)=>{let{asChild:n,children:i,className:c,...l}=a;if(!H().open)return null;let u=n?U:"div";return e.createElement(me.div,{layout:"position",transition:pe},e.createElement(u,{...l,ref:o,className:E("rt-ChatbarRow",c)},e.createElement(De,{align:"center",justify:"between",width:"100%"},i)))});vt.displayName="Chatbar.Row";var yt=e.forwardRef((a,o)=>{let{className:n,...i}=a;return e.createElement("div",{...i,ref:o,className:E("rt-ChatbarRowStart",n)})});yt.displayName="Chatbar.RowStart";var xt=e.forwardRef((a,o)=>{let{className:n,...i}=a;return e.createElement("div",{...i,ref:o,className:E("rt-ChatbarRowEnd",n)})});xt.displayName="Chatbar.RowEnd";var Pt=e.forwardRef((a,o)=>{let{asChild:n,clearOnSend:i,disabled:c,children:l,style:d,className:u,size:f,variant:b,tabIndex:C,onClick:v,status:m="ready",onStop:N,onRetry:I,stopLabel:R="Stop",retryLabel:S="Retry",stopIcon:j,retryIcon:A,"aria-label":F,"aria-labelledby":L,...z}=a,y=H(),k=e.useContext(Ke),V=$e(k)||y.attachments.length>0,x=V?"send":m==="submitted"||m==="streaming"?"stop":m==="error"?"retry":"send";if(y.sendMode==="never"&&x==="send")return null;let D=x!=="send"||y.sendMode==="always"||V,_=x==="send"?c||y.disabled||y.readOnly||!V:c||y.disabled,O=x==="stop"?{"aria-label":R}:x==="retry"?{"aria-label":S}:L?{"aria-labelledby":L}:{"aria-label":F??"Send"},G=B=>{if(v?.(B),B.defaultPrevented||_)return;if(x==="stop"){N?.();return}if(x==="retry"){I?.();return}let M=i??y.clearOnSubmit;y.submit(M)&&M&&y.textareaRef.current?.focus({preventScroll:!0})},q=x==="stop"?j??(m==="submitted"?e.createElement(Be,{size:y.size}):e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":!0},e.createElement("rect",{x:"7",y:"7",width:"10",height:"10",rx:"2"}))):x==="retry"?A??e.createElement("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":!0},e.createElement("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),e.createElement("path",{d:"M3 3v5h5"})):l??e.createElement("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":!0},e.createElement("path",{d:"M5 12h14"}),e.createElement("path",{d:"m12 5 7 7-7 7"}));return e.createElement(Ve,{...z,ref:o,size:f??y.size,variant:b??(y.open||x!=="send"?"solid":"ghost"),disabled:_,className:E("rt-ChatbarSend",u),style:{opacity:D?1:0,pointerEvents:D?void 0:"none",...d},"aria-hidden":D?void 0:!0,tabIndex:D?C:-1,asChild:n,onClick:G,"data-status":m,"data-mode":x,...O},q)});Pt.displayName="Chatbar.Send";export{ut as a,mt as b,pt as c,ht as d,ft as e,Ue as f,Ct as g,gt as h,vt as i,yt as j,xt as k,Pt as l,Gt as m};
|
|
2
|
+
//# sourceMappingURL=chunk-7B6CIVAF.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/chatbar.tsx"],
|
|
4
|
+
"sourcesContent": ["import { parseVariant } from '../helpers/parse-variant.js';\nimport * 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 { NoticeSizeContext } from './notice.js';\nimport { Spinner } from './spinner.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 /** `classic` is a deprecated alias of `raised`, removed in 0.15.0. */\n variant?: 'raised' | 'surface' | 'outline' | 'ghost' | 'soft' | 'classic';\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 /**\n * Messages that need an answer before the next message, such as `Notice` and `Confirmation`.\n * They stack in a column above the chatbar, in the order given, so put the one the next\n * message answers last, nearest the text. They sit outside the box: a button in a notice never\n * submits the message, and pressing one never collapses the chatbar.\n */\n notices?: React.ReactNode;\n /**\n * Short facts that stay true about the conversation, such as the model or the context left.\n * They sit below the chatbar, inset from its sides.\n */\n context?: React.ReactNode;\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 notices,\n context,\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 {notices ? (\n <div className=\"rt-ChatbarNotices\">\n <NoticeSizeContext.Provider value={size}>{notices}</NoticeSizeContext.Provider>\n </div>\n ) : null}\n <div {...(dropzone ? getRootProps() : {})} style={{ width: '100%', flex: '1 1 auto', minHeight: 0 }} onPointerDown={handleContainerPointerDown}>\n <m.div\n className={classNames('rt-ChatbarBox', `rt-variant-${parseVariant(variant ?? 'raised')}`)}\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 {context ? (\n <Text as=\"div\" size={size === '3' ? '2' : '1'} emphasis=\"medium\" className=\"rt-ChatbarContext\">\n {context}\n </Text>\n ) : null}\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 * `Chatbar.Item`s passed as children follow the attachments in the same row.\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 /** `Chatbar.Item`s: things the message refers to that are not files. */\n children?: React.ReactNode;\n}\n\nconst AttachmentsRow = React.forwardRef<HTMLDivElement, AttachmentsRowProps>((props, forwardedRef) => {\n const { asChild, forceMount, renderAttachment, className, children, ...divProps } = props;\n const ctx = useChatbarContext();\n const hasItems = React.Children.toArray(children).length > 0;\n if (ctx.attachments.length === 0 && !hasItems && !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 {children}\n </Flex>\n </ScrollArea>\n </Comp>\n </m.div>\n );\n});\nAttachmentsRow.displayName = 'Chatbar.AttachmentsRow';\n\n/**\n * Moves focus off a pill that is about to unmount, to the next pill's remove\n * button, the previous one's, or the text, so keyboard users are not dropped\n * to <body>.\n */\nfunction moveFocusOffPill(button: HTMLButtonElement, textareaRef: React.RefObject<HTMLTextAreaElement | null>) {\n const pill = button.closest('[role=\"listitem\"]');\n const pills = pill?.parentElement ? Array.from(pill.parentElement.children) : [];\n const index = pill ? pills.indexOf(pill) : -1;\n const neighbour = pills[index + 1] ?? pills[index - 1];\n const nextButton = neighbour?.querySelector<HTMLButtonElement>('.rt-ChatbarItemRemove');\n if (nextButton) nextButton.focus();\n else textareaRef.current?.focus({ preventScroll: true });\n}\n\n/** The pill an attachment and an item share: a lead tile, a label and \u00D7. */\nconst Pill: React.FC<{\n lead: React.ReactNode;\n leadKind: 'image' | 'icon';\n label: React.ReactNode;\n /** Read after the label by screen readers only, e.g. a file's size. */\n detail?: string;\n removeLabel: string;\n onRemove?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}> = ({ lead, leadKind, label, detail, removeLabel, onRemove }) => {\n const ctx = useChatbarContext();\n return (\n <>\n <span className=\"rt-ChatbarItemLead\" data-kind={leadKind} aria-hidden>\n {lead}\n </span>\n <Text className=\"rt-ChatbarItemLabel\" size={ctx.size} truncate>\n {label}\n {detail ? <VisuallyHidden>, {detail}</VisuallyHidden> : null}\n </Text>\n {onRemove && (\n <IconButton className=\"rt-ChatbarItemRemove\" aria-label={removeLabel} size=\"1\" variant=\"ghost\" color=\"gray\" onClick={onRemove}>\n <CloseIcon />\n </IconButton>\n )}\n </>\n );\n};\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 moveFocusOffPill(event.currentTarget, ctx.textareaRef);\n ctx.removeAttachment(attachment.id);\n };\n\n const lead =\n attachment.status === 'uploading' ? (\n <Spinner size=\"1\" />\n ) : isImage ? (\n <img className=\"rt-ChatbarAttachmentImage\" src={attachment.url} alt=\"\" />\n ) : (\n <FileTextIcon />\n );\n\n return (\n <Comp\n {...divProps}\n ref={forwardedRef}\n className={classNames(children ? 'rt-ChatbarAttachment' : 'rt-ChatbarAttachment rt-ChatbarItem', className)}\n role=\"listitem\"\n data-kind={isImage ? 'image' : 'file'}\n data-status={attachment.status}\n title={attachment.name}\n >\n {children ?? (\n <Pill\n lead={lead}\n leadKind={isImage && attachment.status !== 'uploading' ? 'image' : 'icon'}\n label={attachment.name}\n detail={statusLabel ? `${sizeLabel}, ${statusLabel}` : sizeLabel}\n removeLabel={`Remove ${attachment.name}`}\n onRemove={locked ? undefined : handleRemove}\n />\n )}\n </Comp>\n );\n});\nAttachment.displayName = 'Chatbar.Attachment';\n\n/**\n * Something the message refers to that is not a file: a scene object, a\n * picked mode, a selection. The same pill as an attachment, placed in\n * `Chatbar.AttachmentsRow` as a child. The app owns the list, so removing one\n * calls `onRemove` and nothing else; leave it out for a pill that cannot be\n * removed.\n */\ninterface ItemProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children' | 'color'> {\n /** The label. Also names the remove button: \"Remove {label}\". */\n children: string;\n /** Drawn in the lead tile, tinted with `color`. */\n icon?: React.ReactNode;\n /** A thumbnail for the lead tile, in place of the icon. */\n image?: string;\n /** Tint of the icon tile. Defaults to gray. */\n color?: (typeof accentColors)[number];\n onRemove?: () => void;\n /** Overrides the remove button's label. */\n removeLabel?: string;\n}\n\nconst Item = React.forwardRef<HTMLDivElement, ItemProps>((props, forwardedRef) => {\n const { children, icon, image, color, onRemove, removeLabel, className, ...divProps } = props;\n const ctx = useChatbarContext();\n const locked = ctx.disabled || ctx.readOnly;\n\n const handleRemove = onRemove\n ? (event: React.MouseEvent<HTMLButtonElement>) => {\n moveFocusOffPill(event.currentTarget, ctx.textareaRef);\n onRemove();\n }\n : undefined;\n\n return (\n <div\n {...divProps}\n ref={forwardedRef}\n className={classNames('rt-ChatbarItem', className)}\n role=\"listitem\"\n data-accent-color={image ? undefined : (color ?? 'gray')}\n title={children}\n >\n <Pill\n lead={image ? <img className=\"rt-ChatbarAttachmentImage\" src={image} alt=\"\" /> : icon}\n leadKind={image ? 'image' : 'icon'}\n label={children}\n removeLabel={removeLabel ?? `Remove ${children}`}\n onRemove={locked ? undefined : handleRemove}\n />\n </div>\n );\n});\nItem.displayName = 'Chatbar.Item';\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 SendStatus = 'ready' | 'submitted' | 'streaming' | 'error';\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 * What the button means. `ready` sends. While a reply is `submitted` or `streaming` and the\n * box is empty, the button STOPS the reply (`onStop`); with a draft in the box it still sends,\n * and the app decides whether sending interrupts the reply. After an `error`, an empty box\n * makes it RETRY (`onRetry`). Default `ready`.\n */\n status?: SendStatus;\n /** Called when the button is pressed to stop a reply. */\n onStop?: () => void;\n /** Called when the button is pressed to retry after an error. */\n onRetry?: () => void;\n /** Accessible name while it stops. Default \"Stop\". */\n stopLabel?: string;\n /** Accessible name while it retries. Default \"Retry\". */\n retryLabel?: string;\n /** Glyph while it stops. Defaults to a square, or a spinner while `submitted`. */\n stopIcon?: React.ReactNode;\n /** Glyph while it retries. */\n retryIcon?: React.ReactNode;\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 status = 'ready',\n onStop,\n onRetry,\n stopLabel = 'Stop',\n retryLabel = 'Retry',\n stopIcon,\n retryIcon,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n ...buttonProps\n } = props;\n const ctx = useChatbarContext();\n const value = React.useContext(ChatbarValueContext);\n\n const hasContent = hasText(value) || ctx.attachments.length > 0;\n const running = status === 'submitted' || status === 'streaming';\n const mode: 'send' | 'stop' | 'retry' = hasContent ? 'send' : running ? 'stop' : status === 'error' ? 'retry' : 'send';\n\n if (ctx.sendMode === 'never' && mode === 'send') return null;\n\n const visible = mode !== 'send' || ctx.sendMode === 'always' || hasContent;\n const inactive = mode === 'send' ? disabled || ctx.disabled || ctx.readOnly || !hasContent : disabled || ctx.disabled;\n\n const sendName = ariaLabel ?? 'Send';\n const labelProps: { 'aria-label': string } | { 'aria-labelledby': string } =\n mode === 'stop' ? { 'aria-label': stopLabel } : mode === 'retry' ? { 'aria-label': retryLabel } : ariaLabelledby ? { 'aria-labelledby': ariaLabelledby } : { 'aria-label': sendName };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || inactive) return;\n if (mode === 'stop') {\n onStop?.();\n return;\n }\n if (mode === 'retry') {\n onRetry?.();\n return;\n }\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 const glyph =\n mode === 'stop' ? (\n stopIcon ?? (status === 'submitted' ? <Spinner size={ctx.size} /> : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden>\n <rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\" />\n </svg>\n ))\n ) : mode === 'retry' ? (\n retryIcon ?? (\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=\"M3 12a9 9 0 1 0 3-6.7L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n )\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 );\n\n return (\n <IconButton\n {...buttonProps}\n ref={forwardedRef}\n size={sizeProp ?? ctx.size}\n variant={variantProp ?? (ctx.open || mode !== 'send' ? '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 data-status={status}\n data-mode={mode}\n {...labelProps}\n >\n {glyph}\n </IconButton>\n );\n});\nSend.displayName = 'Chatbar.Send';\n\nexport { Root, Textarea, InlineStart, InlineEnd, AttachmentsRow, Attachment, Item, 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 ItemProps as ChatbarItemProps,\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 SendStatus as ChatbarSendStatus,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["chatbar_exports", "__export", "AttachTrigger", "Attachment", "AttachmentsRow", "InlineEnd", "InlineStart", "Item", "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", "s", "matchesAccept", "file", "patterns", "mime", "name", "patRaw", "pat", "type", "subtype", "fmType", "fmSubtype", "IMAGE_EXT_RE", "isImageLike", "hasText", "value", "plural", "n", "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", "notices", "context", "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", "NoticeSizeContext", "m", "parseVariant", "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", "hasItems", "ScrollArea", "Flex", "Attachment", "moveFocusOffPill", "button", "pill", "pills", "index", "nextButton", "Pill", "lead", "leadKind", "label", "detail", "removeLabel", "onRemove", "IconButton", "CloseIcon", "STATUS_LABEL", "attachment", "isImage", "sizeLabel", "statusLabel", "locked", "handleRemove", "Spinner", "FileTextIcon", "Item", "icon", "image", "AttachTrigger", "disabledProp", "onPointerDown", "onClick", "buttonProps", "Row", "RowStart", "RowEnd", "Send", "clearOnSend", "sizeProp", "variantProp", "tabIndex", "status", "onStop", "onRetry", "stopLabel", "retryLabel", "stopIcon", "retryIcon", "ariaLabel", "ariaLabelledby", "hasContent", "mode", "visible", "inactive", "labelProps", "handleClick", "glyph"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as r}from"./chunk-KRJTW535.js";import{a as e}from"./chunk-NZJGC6ZW.js";import{a,b as o}from"./chunk-Z4DTHR2S.js";var n=["inherit","light","dark"],s=["solid","translucent"],p=["solid","translucent"],l=["90%","95%","100%","105%","110%"],t=["sans","mono","serif"],m={...e,hasBackground:{type:"boolean",default:!0},appearance:{type:"enum",values:n,default:"inherit"},accentColor:{type:"enum",values:a,default:"gray"},grayColor:{type:"enum",values:o,default:"gray"},material:{type:"enum",values:p,default:"solid"},panelBackground:{type:"enum",values:s,default:"solid"},radius:{type:"enum",values:r,default:"full"},scaling:{type:"enum",values:l,default:"100%"},fontFamily:{type:"enum",values:t,default:"sans"},headingFontFamily:{type:"enum",values:t}};export{m as a};
|
|
2
|
+
//# sourceMappingURL=chunk-7YIQV7VO.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/theme.props.tsx"],
|
|
4
|
+
"sourcesContent": ["import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColors, grayColors } from '../props/color.prop.js';\nimport { radii } from '../props/radius.prop.js';\n\nimport type { GetPropDefTypes, PropDef } from '../props/prop-def.js';\n\nconst appearances = ['inherit', 'light', 'dark'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst materials = ['solid', 'translucent'] as const;\nconst scalings = ['90%', '95%', '100%', '105%', '110%'] as const;\nconst fontFamilies = ['sans', 'mono', 'serif'] as const;\n\nconst themePropDefs = {\n ...asChildPropDef,\n /**\n * Whether to apply background color to the Theme element.\n *\n * Defaults to true for the root Theme and for Theme elements that\n * have an explicit light or dark appearance prop.\n */\n hasBackground: { type: 'boolean', default: true },\n /**\n * Sets the color scheme of the theme, typcially referred to as light and dark mode.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/dark-mode\n */\n appearance: { type: 'enum', values: appearances, default: 'inherit' },\n /**\n * Selects one of the accent color options to use in the Theme.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/color\n */\n accentColor: { type: 'enum', values: accentColors, default: 'gray' },\n /**\n * Selects one of the gray color options to use in the Theme.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/color\n */\n grayColor: { type: 'enum', values: grayColors, default: 'gray' },\n /**\n * Controls whether to use a solid or translucent background color on panelled\n * elements such as Card or Table is solid or translucent.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/visual-style\n */\n material: { type: 'enum', values: materials, default: 'solid' },\n /**\n * Controls whether to use a solid or translucent background color on panelled\n * elements such as Card or Table is solid or translucent.\n *\n * @deprecated Use `material` prop instead. This prop will be removed in a future version.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/visual-style\n */\n panelBackground: { type: 'enum', values: panelBackgrounds, default: 'solid' },\n /**\n * Sets the default radius of the components.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/visual-style\n */\n radius: { type: 'enum', values: radii, default: 'full' },\n /**\n * Sets a scaling multiplier for values like spacing, font sizes, line heights, etc. are scaled.\n *\n * @link\n * https://www.radix-ui.com/themes/docs/theme/layout\n */\n scaling: { type: 'enum', values: scalings, default: '100%' },\n /**\n * Sets the font family used for body text in the theme.\n *\n * Headings follow this unless `headingFontFamily` (or the `--font-heading`\n * token) says otherwise.\n *\n * @default 'sans'\n */\n fontFamily: { type: 'enum', values: fontFamilies, default: 'sans' },\n /**\n * Sets the font family used for `Heading`, independently of body text.\n *\n * Deliberately has no default: when it is left unset no attribute is\n * emitted and `--font-heading` keeps following `--font-body`, so a\n * `--font-heading` override in your own CSS survives a `fontFamily` switch.\n */\n headingFontFamily: { type: 'enum', values: fontFamilies },\n} satisfies {\n hasBackground: PropDef<boolean>;\n appearance: PropDef<(typeof appearances)[number]>;\n accentColor: PropDef<(typeof accentColors)[number]>;\n grayColor: PropDef<(typeof grayColors)[number]>;\n material: PropDef<(typeof materials)[number]>;\n panelBackground: PropDef<(typeof panelBackgrounds)[number]>;\n radius: PropDef<(typeof radii)[number]>;\n scaling: PropDef<(typeof scalings)[number]>;\n fontFamily: PropDef<(typeof fontFamilies)[number]>;\n headingFontFamily: PropDef<(typeof fontFamilies)[number]>;\n};\n\ntype ThemeOwnProps = GetPropDefTypes<typeof themePropDefs & typeof asChildPropDef>;\n\nexport { themePropDefs };\nexport type { ThemeOwnProps };\n"],
|
|
5
|
+
"mappings": "0HAMA,IAAMA,EAAc,CAAC,UAAW,QAAS,MAAM,EACzCC,EAAmB,CAAC,QAAS,aAAa,EAC1CC,EAAY,CAAC,QAAS,aAAa,EACnCC,EAAW,CAAC,MAAO,MAAO,OAAQ,OAAQ,MAAM,EAChDC,EAAe,CAAC,OAAQ,OAAQ,OAAO,EAEvCC,EAAgB,CACpB,GAAGC,EAOH,cAAe,CAAE,KAAM,UAAW,QAAS,EAAK,EAOhD,WAAY,CAAE,KAAM,OAAQ,OAAQN,EAAa,QAAS,SAAU,EAOpE,YAAa,CAAE,KAAM,OAAQ,OAAQO,EAAc,QAAS,MAAO,EAOnE,UAAW,CAAE,KAAM,OAAQ,OAAQC,EAAY,QAAS,MAAO,EAQ/D,SAAU,CAAE,KAAM,OAAQ,OAAQN,EAAW,QAAS,OAAQ,EAU9D,gBAAiB,CAAE,KAAM,OAAQ,OAAQD,EAAkB,QAAS,OAAQ,EAO5E,OAAQ,CAAE,KAAM,OAAQ,OAAQQ,EAAO,QAAS,MAAO,EAOvD,QAAS,CAAE,KAAM,OAAQ,OAAQN,EAAU,QAAS,MAAO,EAS3D,WAAY,CAAE,KAAM,OAAQ,OAAQC,EAAc,QAAS,MAAO,EAQlE,kBAAmB,CAAE,KAAM,OAAQ,OAAQA,CAAa,CAC1D",
|
|
6
|
+
"names": ["appearances", "panelBackgrounds", "materials", "scalings", "fontFamilies", "themePropDefs", "asChildPropDef", "accentColors", "grayColors", "radii"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/navbar.props.tsx"],
|
|
4
|
+
"sourcesContent": ["import type { PropDef } from '../props/prop-def.js';\n\nconst positions = ['static', 'fixed', 'sticky'] as const;\nconst sizes = ['1', '2', '3', '4'] as const;\n\nconst navbarRootPropDefs = {\n position: {\n type: 'enum',\n values: positions,\n default: 'fixed',\n },\n size: {\n type: 'enum',\n values: sizes,\n default: '2',\n },\n} satisfies {\n position: PropDef<(typeof positions)[number]>;\n size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { navbarRootPropDefs };\n"],
|
|
5
|
+
"mappings": "AAEA,IAAMA,EAAY,CAAC,SAAU,QAAS,QAAQ,EACxCC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAE3BC,EAAqB,CACzB,SAAU,CACR,KAAM,OACN,OAAQF,EACR,QAAS,OACX,EACA,KAAM,CACJ,KAAM,OACN,OAAQC,EACR,QAAS,GACX,CACF",
|
|
6
|
+
"names": ["positions", "sizes", "navbarRootPropDefs"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/helpers/parse-variant.ts"],
|
|
4
|
+
"sourcesContent": ["import { warnDeprecated } from './warn-deprecated.js';\n\n/**\n * `classic` was renamed `raised` in 0.14.0. The old name still renders, as `raised`, with a\n * one-time warning in development. Button's `override` is not a look but a way out of the\n * styles, so it warns too. Both are removed in 0.15.0.\n */\nfunction parseVariant(value: string): string {\n if (value === 'classic') {\n warnDeprecated('`variant=\"classic\"` is deprecated and will be removed in 0.15.0. Use `variant=\"raised\"`.');\n return 'raised';\n }\n if (value === 'override') {\n warnDeprecated(\n '`variant=\"override\"` is deprecated and will be removed in 0.15.0. Style the component with `className`, `style` or its CSS variables instead.',\n );\n }\n return value;\n}\n\nexport { parseVariant };\n"],
|
|
5
|
+
"mappings": "AAOA,SAASA,EAAaC,EAAuB,CAC3C,OAAIA,IAAU,UAEL,UAELA,IAAU,YACZ,OAIKA,EACT",
|
|
6
|
+
"names": ["parseVariant", "value"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as f}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as f}from"./chunk-PAEHH3WS.js";import{a as B}from"./chunk-AGAQC4HH.js";import{a as b,c as P}from"./chunk-5T6K7VPP.js";import{a as c}from"./chunk-PXUQEA77.js";import{a as y}from"./chunk-5TXQLK4G.js";import{a as i}from"./chunk-E7LJHM3S.js";import{a as u}from"./chunk-6FLLFCBU.js";import{a as m}from"./chunk-GSTOGDAJ.js";import*as e from"react";import S from"classnames";import{Slot as j}from"radix-ui";var I=e.forwardRef((o,g)=>{let{size:h=i.size.default}=o,{className:R,children:t,asChild:n,as:a,color:x,radius:C,material:k,panelBackground:w,flush:D,disabled:p=o.loading,...d}=u(o,i,m);y(o.panelBackground);let l=k??w,E=n?j.Root:a||"button",T=n||!a||["button","input","textarea","select"].includes(a),v=!n&&(!a||a==="button"),M="type"in d,z=e.useId(),s=o.loading?`${z}-loading`:void 0,r=e.useMemo(()=>typeof t=="string"?t:e.isValidElement(t)&&typeof t.props?.children=="string"?t.props.children:"button",[t]),N=e.useMemo(()=>o.loading?{"aria-busy":!0,"aria-disabled":!0,"aria-describedby":s,"aria-label":`${r} (loading)`}:{},[o.loading,s,r]);return e.createElement(E,{"data-disabled":p||void 0,"data-accent-color":x,"data-radius":C,"data-material":l,"data-panel-background":l,"data-flush":D?"true":void 0,...d,...N,ref:g,className:S("rt-reset","rt-BaseButton",R),...T&&{disabled:p},...v&&!M?{type:"button"}:{}},o.loading?e.createElement(e.Fragment,null,e.createElement("span",{style:{display:"contents",visibility:"hidden"},"aria-hidden":!0},t),e.createElement(B,null,e.createElement("span",{id:s},r," is loading, please wait..."),t),e.createElement(c,{asChild:!0,align:"center",justify:"center",position:"absolute",inset:"0"},e.createElement("span",null,e.createElement(f,{size:b(h,P),"aria-hidden":"true"})))):t)});I.displayName="BaseButton";export{I as a};
|
|
2
|
+
//# sourceMappingURL=chunk-BKES3M4Y.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/icon-button.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\n\nimport { BaseButton } from './_internal/base-button.js';\nimport { Button } from './button.js';\nimport type { BaseButtonProps } from './_internal/base-button.js';\n\ntype IconButtonElement = React.ElementRef<typeof BaseButton>;\n\n/**\n * Required accessibility props for icon buttons\n * Icon buttons must have an accessible name to meet WCAG guidelines\n *\n * Three ways to provide accessibility:\n * 1. aria-label: Direct descriptive text\n * 2. aria-labelledby: Reference to a label element\n * 3. children: Visible text content (fallback)\n */\ntype AccessibilityProps =\n | { 'aria-label': string; 'aria-labelledby'?: never }\n | { 'aria-label'?: never; 'aria-labelledby': string }\n | { 'aria-label'?: never; 'aria-labelledby'?: never; children: React.ReactNode };\n\n/**\n * Tooltip configuration props that can be passed to IconButton\n * These props are forwarded to the underlying Tooltip component\n */\ninterface IconButtonTooltipProps {\n /** Content to display in the tooltip on hover/focus */\n tooltip?: React.ReactNode;\n /** Side of the button where the tooltip should appear */\n tooltipSide?: 'top' | 'right' | 'bottom' | 'left';\n /** Alignment of the tooltip relative to the button */\n tooltipAlign?: 'start' | 'center' | 'end';\n /** Delay before showing the tooltip (in milliseconds) */\n tooltipDelayDuration?: number;\n /** Whether to disable hoverable content behavior */\n tooltipDisableHoverableContent?: boolean;\n}\n\n/**\n * Core IconButton props excluding the 'as' prop for polymorphic behavior\n * Combines BaseButton props with accessibility requirements and tooltip functionality\n */\ntype IconButtonOwnProps = Omit<BaseButtonProps, 'as'> & AccessibilityProps & IconButtonTooltipProps;\n\n/**\n * Polymorphic IconButton props that support rendering as different HTML elements\n * @template C - The element type to render as (defaults to 'button')\n */\ntype IconButtonProps<C extends React.ElementType = 'button'> = IconButtonOwnProps & {\n /** Element type to render as (e.g., 'a', 'span', etc.) */\n as?: C;\n} & Omit<React.ComponentPropsWithoutRef<C>, keyof IconButtonOwnProps>;\n\n/**\n * IconButton component type that supports polymorphic rendering\n * @template C - The element type to render as\n */\ntype IconButtonComponent = <C extends React.ElementType = 'button'>(props: IconButtonProps<C> & { ref?: React.ForwardedRef<IconButtonElement> }) => React.ReactElement | null;\n\n/**\n * IconButton component for compact, accessible icon-only interactions. It is `Button` with\n * `iconOnly` set, kept as its own name for its stricter type: an accessible name is required.\n *\n * The IconButton component extends Button with specialized behavior for visual symbols.\n * It enforces accessibility requirements, provides automatic square sizing, and includes\n * built-in tooltip integration. Icon buttons are essential for space-efficient interfaces\n * while maintaining accessibility compliance.\n *\n * Key features:\n * - Enforced accessibility requirements (aria-label, aria-labelledby, or children)\n * - Automatic square aspect ratios for consistent visual alignment\n * - Built-in tooltip support for context and guidance\n * - Same variant and size system as Button for consistency\n * - Runtime validation for accessibility compliance\n *\n * @example\n * ```tsx\n * // Basic icon button with aria-label\n * <IconButton aria-label=\"Settings\">\n * <Settings />\n * </IconButton>\n *\n * // Icon button with tooltip\n * <IconButton aria-label=\"Save\" tooltip=\"Save your progress\">\n * <Save />\n * </IconButton>\n *\n * // Icon button with aria-labelledby\n * <IconButton aria-labelledby=\"settings-label\">\n * <Settings />\n * </IconButton>\n * <span id=\"settings-label\">Open settings panel</span>\n *\n * // Icon button with visible text (fallback)\n * <IconButton>\n * <Settings />\n * Settings\n * </IconButton>\n * ```\n */\nconst IconButton = React.forwardRef(\n (props: IconButtonProps, forwardedRef: React.ForwardedRef<IconButtonElement>) => <Button {...props} iconOnly ref={forwardedRef} />,\n) as IconButtonComponent & { displayName?: string };\n\nIconButton.displayName = 'IconButton';\n\nexport { IconButton };\nexport type { IconButtonProps };\n"],
|
|
5
|
+
"mappings": "wCAAA,UAAYA,MAAW,QAqGvB,IAAMC,EAAmB,aACvB,CAACC,EAAwBC,IAAwD,gBAACC,EAAA,CAAQ,GAAGF,EAAO,SAAQ,GAAC,IAAKC,EAAc,CAClI,EAEAF,EAAW,YAAc",
|
|
6
|
+
"names": ["React", "IconButton", "props", "forwardedRef", "Button"]
|
|
7
|
+
}
|