@womp/kookie-ui 0.23.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/components.css +13017 -12024
- package/dist/cjs/components/_internal/base-button.d.ts +11 -1
- package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.js +2 -1
- package/dist/cjs/components/_internal/base-button.js.map +4 -4
- package/dist/cjs/components/_internal/base-button.props.js +1 -0
- package/dist/cjs/components/_internal/base-button.props.js.map +2 -2
- package/dist/cjs/components/_internal/base-checkbox.props.js +1 -0
- package/dist/cjs/components/_internal/base-checkbox.props.js.map +1 -1
- package/dist/cjs/components/_internal/base-menu.props.js +1 -0
- package/dist/cjs/components/_internal/base-menu.props.js.map +1 -1
- package/dist/cjs/components/_internal/base-menu.utils.js +1 -0
- package/dist/cjs/components/_internal/base-menu.utils.js.map +1 -1
- package/dist/cjs/components/_internal/base-radio.props.js +1 -0
- package/dist/cjs/components/_internal/base-radio.props.js.map +1 -1
- package/dist/cjs/components/_internal/base-tab-list.props.js +1 -0
- package/dist/cjs/components/_internal/base-tab-list.props.js.map +1 -1
- package/dist/cjs/components/_internal/dropdown-menu-drill-down.d.ts +19 -7
- package/dist/cjs/components/_internal/dropdown-menu-drill-down.d.ts.map +1 -1
- package/dist/cjs/components/_internal/dropdown-menu-drill-down.js +2 -1
- package/dist/cjs/components/_internal/dropdown-menu-drill-down.js.map +3 -3
- package/dist/cjs/components/_internal/menu-context.d.ts +12 -0
- package/dist/cjs/components/_internal/menu-context.d.ts.map +1 -1
- package/dist/cjs/components/_internal/menu-context.js +2 -1
- package/dist/cjs/components/_internal/menu-context.js.map +3 -3
- package/dist/cjs/components/_internal/pane-chrome.d.ts +19 -2
- package/dist/cjs/components/_internal/pane-chrome.d.ts.map +1 -1
- package/dist/cjs/components/_internal/pane-chrome.js +2 -1
- package/dist/cjs/components/_internal/pane-chrome.js.map +4 -4
- package/dist/cjs/components/_internal/shell-bottom.d.ts +1 -1
- package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js +2 -1
- package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
- package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-handles.js +2 -1
- package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
- package/dist/cjs/components/_internal/shell-inspector.d.ts +1 -1
- package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js +2 -1
- package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
- package/dist/cjs/components/_internal/shell-pane.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-pane.js +2 -1
- package/dist/cjs/components/_internal/shell-pane.js.map +3 -3
- package/dist/cjs/components/_internal/shell-resizable.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-resizable.js +2 -1
- package/dist/cjs/components/_internal/shell-resizable.js.map +3 -3
- package/dist/cjs/components/_internal/shell-resize.js +1 -0
- package/dist/cjs/components/_internal/shell-resize.js.map +1 -1
- package/dist/cjs/components/_internal/shell-rest.js +1 -0
- package/dist/cjs/components/_internal/shell-rest.js.map +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.d.ts +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js +2 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
- package/dist/cjs/components/_internal/shell-store.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-store.js +2 -1
- package/dist/cjs/components/_internal/shell-store.js.map +3 -3
- package/dist/cjs/components/accessible-icon.js +1 -0
- package/dist/cjs/components/accessible-icon.js.map +1 -1
- package/dist/cjs/components/accordion.d.ts +2 -2
- package/dist/cjs/components/accordion.d.ts.map +1 -1
- package/dist/cjs/components/accordion.js +2 -1
- package/dist/cjs/components/accordion.js.map +4 -4
- package/dist/cjs/components/accordion.props.js +1 -0
- package/dist/cjs/components/accordion.props.js.map +1 -1
- package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
- package/dist/cjs/components/alert-dialog.js +2 -1
- package/dist/cjs/components/alert-dialog.js.map +4 -4
- package/dist/cjs/components/alert-dialog.props.js +1 -0
- package/dist/cjs/components/alert-dialog.props.js.map +1 -1
- package/dist/cjs/components/avatar.d.ts +1 -1
- package/dist/cjs/components/avatar.d.ts.map +1 -1
- package/dist/cjs/components/avatar.js +2 -1
- package/dist/cjs/components/avatar.js.map +3 -3
- package/dist/cjs/components/avatar.props.d.ts +8 -0
- package/dist/cjs/components/avatar.props.d.ts.map +1 -1
- package/dist/cjs/components/avatar.props.js +2 -1
- package/dist/cjs/components/avatar.props.js.map +2 -2
- package/dist/cjs/components/blockquote.d.ts +1 -1
- package/dist/cjs/components/blockquote.d.ts.map +1 -1
- package/dist/cjs/components/blockquote.js +2 -1
- package/dist/cjs/components/blockquote.js.map +4 -4
- package/dist/cjs/components/blockquote.props.js +1 -0
- package/dist/cjs/components/blockquote.props.js.map +1 -1
- package/dist/cjs/components/box.js +1 -0
- package/dist/cjs/components/box.js.map +1 -1
- package/dist/cjs/components/box.props.js +1 -0
- package/dist/cjs/components/box.props.js.map +1 -1
- package/dist/cjs/components/button.d.ts.map +1 -1
- package/dist/cjs/components/button.js +2 -1
- package/dist/cjs/components/button.js.map +4 -4
- package/dist/cjs/components/button.props.js +1 -0
- package/dist/cjs/components/button.props.js.map +2 -2
- package/dist/cjs/components/card.js +1 -0
- package/dist/cjs/components/card.js.map +1 -1
- package/dist/cjs/components/card.props.js +1 -0
- package/dist/cjs/components/card.props.js.map +1 -1
- package/dist/cjs/components/chatbar.d.ts.map +1 -1
- package/dist/cjs/components/chatbar.js +2 -1
- package/dist/cjs/components/chatbar.js.map +4 -4
- package/dist/cjs/components/checkbox-group.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-group.js +2 -1
- package/dist/cjs/components/checkbox-group.js.map +3 -3
- package/dist/cjs/components/checkbox-group.primitive.d.ts +12 -5
- package/dist/cjs/components/checkbox-group.primitive.d.ts.map +1 -1
- package/dist/cjs/components/checkbox-group.primitive.js +2 -1
- package/dist/cjs/components/checkbox-group.primitive.js.map +3 -3
- package/dist/cjs/components/checkbox-group.props.js +1 -0
- package/dist/cjs/components/checkbox-group.props.js.map +1 -1
- package/dist/cjs/components/checkbox.js +2 -1
- package/dist/cjs/components/checkbox.js.map +3 -3
- package/dist/cjs/components/checkbox.props.js +1 -0
- package/dist/cjs/components/checkbox.props.js.map +1 -1
- package/dist/cjs/components/chip.d.ts.map +1 -1
- package/dist/cjs/components/chip.js +2 -1
- package/dist/cjs/components/chip.js.map +3 -3
- package/dist/cjs/components/chip.props.js +1 -0
- package/dist/cjs/components/chip.props.js.map +1 -1
- package/dist/cjs/components/code.d.ts.map +1 -1
- package/dist/cjs/components/code.js +2 -1
- package/dist/cjs/components/code.js.map +2 -2
- package/dist/cjs/components/code.props.js +1 -0
- package/dist/cjs/components/code.props.js.map +1 -1
- package/dist/cjs/components/combobox.d.ts.map +1 -1
- package/dist/cjs/components/combobox.js +2 -1
- package/dist/cjs/components/combobox.js.map +4 -4
- package/dist/cjs/components/combobox.props.js +1 -0
- package/dist/cjs/components/combobox.props.js.map +1 -1
- package/dist/cjs/components/context-menu.d.ts +1 -2
- package/dist/cjs/components/context-menu.d.ts.map +1 -1
- package/dist/cjs/components/context-menu.js +2 -1
- package/dist/cjs/components/context-menu.js.map +4 -4
- package/dist/cjs/components/context-menu.props.js +1 -0
- package/dist/cjs/components/context-menu.props.js.map +1 -1
- package/dist/cjs/components/dialog.d.ts +1 -1
- package/dist/cjs/components/dialog.d.ts.map +1 -1
- package/dist/cjs/components/dialog.js +2 -1
- package/dist/cjs/components/dialog.js.map +3 -3
- package/dist/cjs/components/dialog.props.js +1 -0
- package/dist/cjs/components/dialog.props.js.map +1 -1
- package/dist/cjs/components/dropdown-menu.d.ts +1 -2
- package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
- package/dist/cjs/components/dropdown-menu.js +2 -1
- package/dist/cjs/components/dropdown-menu.js.map +4 -4
- package/dist/cjs/components/dropdown-menu.props.js +1 -0
- package/dist/cjs/components/dropdown-menu.props.js.map +1 -1
- package/dist/cjs/components/flex.js +1 -0
- package/dist/cjs/components/flex.js.map +2 -2
- package/dist/cjs/components/flex.props.js +1 -0
- package/dist/cjs/components/flex.props.js.map +2 -2
- package/dist/cjs/components/grid.js +1 -0
- package/dist/cjs/components/grid.js.map +2 -2
- package/dist/cjs/components/grid.props.js +1 -0
- package/dist/cjs/components/grid.props.js.map +2 -2
- package/dist/cjs/components/heading.d.ts +2 -2
- package/dist/cjs/components/heading.d.ts.map +1 -1
- package/dist/cjs/components/heading.js +2 -1
- package/dist/cjs/components/heading.js.map +2 -2
- package/dist/cjs/components/heading.props.d.ts +1 -1
- package/dist/cjs/components/heading.props.js +2 -1
- package/dist/cjs/components/heading.props.js.map +2 -2
- package/dist/cjs/components/icons.d.ts +3 -1
- package/dist/cjs/components/icons.d.ts.map +1 -1
- package/dist/cjs/components/icons.js +2 -1
- package/dist/cjs/components/icons.js.map +3 -3
- package/dist/cjs/components/image.d.ts +9 -2
- package/dist/cjs/components/image.d.ts.map +1 -1
- package/dist/cjs/components/image.js +2 -1
- package/dist/cjs/components/image.js.map +3 -3
- package/dist/cjs/components/image.props.js +1 -0
- package/dist/cjs/components/image.props.js.map +1 -1
- package/dist/cjs/components/index.d.ts +2 -2
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +3 -10
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/components/kbd.js +1 -0
- package/dist/cjs/components/kbd.js.map +1 -1
- package/dist/cjs/components/kbd.props.js +1 -0
- package/dist/cjs/components/kbd.props.js.map +1 -1
- package/dist/cjs/components/link.js +1 -0
- package/dist/cjs/components/link.js.map +1 -1
- package/dist/cjs/components/link.props.js +1 -0
- package/dist/cjs/components/link.props.js.map +1 -1
- package/dist/cjs/components/message-scroller.d.ts +2 -2
- package/dist/cjs/components/message-scroller.d.ts.map +1 -1
- package/dist/cjs/components/message-scroller.js +2 -1
- package/dist/cjs/components/message-scroller.js.map +4 -4
- package/dist/cjs/components/navbar.d.ts.map +1 -1
- package/dist/cjs/components/navbar.js +2 -1
- package/dist/cjs/components/navbar.js.map +3 -3
- package/dist/cjs/components/navbar.props.js +1 -0
- package/dist/cjs/components/navbar.props.js.map +1 -1
- package/dist/cjs/components/notice.d.ts +4 -1
- package/dist/cjs/components/notice.d.ts.map +1 -1
- package/dist/cjs/components/notice.js +2 -1
- package/dist/cjs/components/notice.js.map +4 -4
- package/dist/cjs/components/popover.d.ts +3 -1
- package/dist/cjs/components/popover.d.ts.map +1 -1
- package/dist/cjs/components/popover.js +2 -1
- package/dist/cjs/components/popover.js.map +3 -3
- package/dist/cjs/components/popover.props.js +1 -0
- package/dist/cjs/components/popover.props.js.map +1 -1
- package/dist/cjs/components/portal.js +1 -0
- package/dist/cjs/components/portal.js.map +1 -1
- package/dist/cjs/components/progress.d.ts.map +1 -1
- package/dist/cjs/components/progress.js +2 -1
- package/dist/cjs/components/progress.js.map +3 -3
- package/dist/cjs/components/progress.props.js +1 -0
- package/dist/cjs/components/progress.props.js.map +1 -1
- package/dist/cjs/components/radio-group.js +1 -0
- package/dist/cjs/components/radio-group.js.map +1 -1
- package/dist/cjs/components/radio-group.props.js +1 -0
- package/dist/cjs/components/radio-group.props.js.map +1 -1
- package/dist/cjs/components/radio.js +1 -0
- package/dist/cjs/components/radio.js.map +1 -1
- package/dist/cjs/components/radio.props.js +1 -0
- package/dist/cjs/components/radio.props.js.map +1 -1
- package/dist/cjs/components/reset.js +1 -0
- package/dist/cjs/components/reset.js.map +1 -1
- package/dist/cjs/components/schemas/base-button.schema.js +1 -0
- package/dist/cjs/components/schemas/base-button.schema.js.map +1 -1
- package/dist/cjs/components/schemas/button.schema.d.ts +2 -2
- package/dist/cjs/components/schemas/button.schema.js +1 -0
- package/dist/cjs/components/schemas/button.schema.js.map +1 -1
- package/dist/cjs/components/schemas/index.js +1 -0
- package/dist/cjs/components/schemas/index.js.map +1 -1
- package/dist/cjs/components/schemas/shell.schema.js +1 -0
- package/dist/cjs/components/schemas/shell.schema.js.map +1 -1
- package/dist/cjs/components/schemas/toggle.schema.d.ts +1 -1
- package/dist/cjs/components/schemas/toggle.schema.js +1 -0
- package/dist/cjs/components/schemas/toggle.schema.js.map +1 -1
- package/dist/cjs/components/scroll-area.d.ts +3 -1
- package/dist/cjs/components/scroll-area.d.ts.map +1 -1
- package/dist/cjs/components/scroll-area.js +2 -1
- package/dist/cjs/components/scroll-area.js.map +4 -4
- package/dist/cjs/components/scroll-area.props.js +1 -0
- package/dist/cjs/components/scroll-area.props.js.map +1 -1
- package/dist/cjs/components/segmented-control.d.ts +3 -1
- package/dist/cjs/components/segmented-control.d.ts.map +1 -1
- package/dist/cjs/components/segmented-control.js +2 -1
- package/dist/cjs/components/segmented-control.js.map +3 -3
- package/dist/cjs/components/segmented-control.props.d.ts +0 -1
- package/dist/cjs/components/segmented-control.props.d.ts.map +1 -1
- package/dist/cjs/components/segmented-control.props.js +2 -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 +2 -1
- package/dist/cjs/components/select.js.map +4 -4
- package/dist/cjs/components/select.props.js +1 -0
- package/dist/cjs/components/select.props.js.map +1 -1
- package/dist/cjs/components/separator.d.ts.map +1 -1
- package/dist/cjs/components/separator.js +2 -1
- package/dist/cjs/components/separator.js.map +4 -4
- package/dist/cjs/components/separator.props.d.ts +1 -1
- package/dist/cjs/components/separator.props.js +2 -1
- package/dist/cjs/components/separator.props.js.map +2 -2
- package/dist/cjs/components/sheet.d.ts +2 -1
- package/dist/cjs/components/sheet.d.ts.map +1 -1
- package/dist/cjs/components/sheet.js +2 -1
- package/dist/cjs/components/sheet.js.map +3 -3
- package/dist/cjs/components/shell.context.js +2 -1
- package/dist/cjs/components/shell.context.js.map +3 -3
- package/dist/cjs/components/shell.d.ts +17 -3
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.hooks.js +2 -1
- package/dist/cjs/components/shell.hooks.js.map +3 -3
- package/dist/cjs/components/shell.js +2 -1
- package/dist/cjs/components/shell.js.map +4 -4
- package/dist/cjs/components/shell.types.js +1 -0
- package/dist/cjs/components/shell.types.js.map +1 -1
- package/dist/cjs/components/sidebar.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.js +2 -1
- package/dist/cjs/components/sidebar.js.map +4 -4
- package/dist/cjs/components/slider.d.ts.map +1 -1
- package/dist/cjs/components/slider.js +2 -1
- package/dist/cjs/components/slider.js.map +3 -3
- package/dist/cjs/components/slider.props.d.ts +0 -2
- package/dist/cjs/components/slider.props.d.ts.map +1 -1
- package/dist/cjs/components/slider.props.js +2 -1
- package/dist/cjs/components/slider.props.js.map +2 -2
- package/dist/cjs/components/slot.js +1 -0
- package/dist/cjs/components/slot.js.map +1 -1
- package/dist/cjs/components/spinner.d.ts.map +1 -1
- package/dist/cjs/components/spinner.js +2 -1
- package/dist/cjs/components/spinner.js.map +3 -3
- package/dist/cjs/components/spinner.props.js +1 -0
- package/dist/cjs/components/spinner.props.js.map +1 -1
- package/dist/cjs/components/switch.js +1 -0
- package/dist/cjs/components/switch.js.map +1 -1
- package/dist/cjs/components/switch.props.js +1 -0
- package/dist/cjs/components/switch.props.js.map +1 -1
- package/dist/cjs/components/table.d.ts.map +1 -1
- package/dist/cjs/components/table.js +2 -1
- package/dist/cjs/components/table.js.map +4 -4
- package/dist/cjs/components/table.props.d.ts +0 -2
- package/dist/cjs/components/table.props.d.ts.map +1 -1
- package/dist/cjs/components/table.props.js +2 -1
- package/dist/cjs/components/table.props.js.map +3 -3
- package/dist/cjs/components/tabs.d.ts.map +1 -1
- package/dist/cjs/components/tabs.js +2 -1
- package/dist/cjs/components/tabs.js.map +3 -3
- package/dist/cjs/components/tabs.props.js +1 -0
- package/dist/cjs/components/tabs.props.js.map +1 -1
- package/dist/cjs/components/text-area.d.ts.map +1 -1
- package/dist/cjs/components/text-area.js +2 -1
- package/dist/cjs/components/text-area.js.map +2 -2
- package/dist/cjs/components/text-area.props.js +1 -0
- package/dist/cjs/components/text-area.props.js.map +1 -1
- package/dist/cjs/components/text-field.d.ts.map +1 -1
- package/dist/cjs/components/text-field.js +3 -2
- package/dist/cjs/components/text-field.js.map +3 -3
- package/dist/cjs/components/text-field.props.js +1 -0
- package/dist/cjs/components/text-field.props.js.map +2 -2
- package/dist/cjs/components/text.js +1 -0
- package/dist/cjs/components/text.js.map +1 -1
- package/dist/cjs/components/text.props.js +1 -0
- package/dist/cjs/components/text.props.js.map +1 -1
- package/dist/cjs/components/theme.d.ts.map +1 -1
- package/dist/cjs/components/theme.js +2 -1
- package/dist/cjs/components/theme.js.map +3 -3
- package/dist/cjs/components/theme.props.js +1 -0
- package/dist/cjs/components/theme.props.js.map +1 -1
- package/dist/cjs/components/toggle.d.ts +3 -2
- package/dist/cjs/components/toggle.d.ts.map +1 -1
- package/dist/cjs/components/toggle.js +2 -9
- package/dist/cjs/components/toggle.js.map +4 -4
- package/dist/cjs/components/toolbar.d.ts +83 -8
- package/dist/cjs/components/toolbar.d.ts.map +1 -1
- package/dist/cjs/components/toolbar.js +2 -1
- package/dist/cjs/components/toolbar.js.map +4 -4
- package/dist/cjs/components/toolbar.props.js +1 -0
- package/dist/cjs/components/toolbar.props.js.map +1 -1
- package/dist/cjs/components/tooltip.d.ts +13 -2
- package/dist/cjs/components/tooltip.d.ts.map +1 -1
- package/dist/cjs/components/tooltip.js +2 -1
- package/dist/cjs/components/tooltip.js.map +3 -3
- package/dist/cjs/components/tooltip.props.js +1 -0
- package/dist/cjs/components/tooltip.props.js.map +1 -1
- package/dist/cjs/components/virtual-menu.d.ts +22 -17
- package/dist/cjs/components/virtual-menu.d.ts.map +1 -1
- package/dist/cjs/components/virtual-menu.js +2 -1
- package/dist/cjs/components/virtual-menu.js.map +3 -3
- package/dist/cjs/components/visually-hidden.js +1 -0
- package/dist/cjs/components/visually-hidden.js.map +1 -1
- package/dist/cjs/helpers/extract-margin-props.d.ts +7 -7
- package/dist/cjs/helpers/get-margin-styles.d.ts.map +1 -1
- package/dist/cjs/helpers/get-margin-styles.js +1 -1
- package/dist/cjs/helpers/get-margin-styles.js.map +3 -3
- package/dist/cjs/helpers/index.js +4 -4
- package/dist/cjs/helpers/index.js.map +3 -3
- package/dist/cjs/hooks/index.js +5 -4
- package/dist/cjs/hooks/index.js.map +3 -3
- package/dist/cjs/hooks/use-appearance.d.ts.map +1 -1
- package/dist/cjs/hooks/use-appearance.js +4 -3
- package/dist/cjs/hooks/use-appearance.js.map +3 -3
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts +1 -1
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.js +2 -1
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.js.map +3 -3
- package/dist/cjs/hooks/use-breakpoint.js +1 -0
- package/dist/cjs/hooks/use-breakpoint.js.map +1 -1
- package/dist/cjs/hooks/use-live-announcer.js +1 -0
- package/dist/cjs/hooks/use-live-announcer.js.map +1 -1
- package/dist/cjs/hooks/use-prop-synced-state.js +1 -0
- package/dist/cjs/hooks/use-prop-synced-state.js.map +1 -1
- package/dist/cjs/hooks/use-scroll-edges.d.ts +4 -2
- package/dist/cjs/hooks/use-scroll-edges.d.ts.map +1 -1
- package/dist/cjs/hooks/use-scroll-edges.js +2 -1
- package/dist/cjs/hooks/use-scroll-edges.js.map +3 -3
- package/dist/cjs/hooks/use-thumb-sync.js +1 -0
- package/dist/cjs/hooks/use-thumb-sync.js.map +1 -1
- package/dist/cjs/hooks/use-toggle-state.js +1 -0
- package/dist/cjs/hooks/use-toggle-state.js.map +1 -1
- package/dist/cjs/hooks/use-tooltip-wrapper.js +1 -0
- package/dist/cjs/hooks/use-tooltip-wrapper.js.map +1 -1
- package/dist/cjs/index.js +6 -5
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/props/gap.props.d.ts +4 -4
- package/dist/cjs/props/gap.props.js.map +1 -1
- package/dist/cjs/props/index.js +1 -1
- package/dist/cjs/props/index.js.map +3 -3
- package/dist/esm/chunk-2EXOL2BR.js +3 -0
- package/dist/esm/chunk-2EXOL2BR.js.map +7 -0
- package/dist/esm/chunk-2IU5XPR2.js +3 -0
- package/dist/esm/chunk-2IU5XPR2.js.map +7 -0
- package/dist/esm/chunk-2IUGM657.js +3 -0
- package/dist/esm/chunk-2IUGM657.js.map +7 -0
- package/dist/esm/chunk-2VSRZ4IT.js +3 -0
- package/dist/esm/chunk-2VSRZ4IT.js.map +7 -0
- package/dist/esm/chunk-2XZ7477Y.js +3 -0
- package/dist/esm/{chunk-HKPXDQ2B.js.map → chunk-2XZ7477Y.js.map} +1 -1
- package/dist/esm/{chunk-GNTNGLYR.js → chunk-2Z2I27ZS.js} +3 -2
- package/dist/esm/{chunk-GNTNGLYR.js.map → chunk-2Z2I27ZS.js.map} +1 -1
- package/dist/esm/chunk-3223MHQK.js +3 -0
- package/dist/esm/{chunk-DSPYHO3L.js.map → chunk-3223MHQK.js.map} +2 -2
- package/dist/esm/{chunk-MPTTUBFU.js → chunk-3H23GRNQ.js} +3 -2
- package/dist/esm/{chunk-MPTTUBFU.js.map → chunk-3H23GRNQ.js.map} +2 -2
- package/dist/esm/chunk-3LIF53YY.js +13 -0
- package/dist/esm/chunk-3LIF53YY.js.map +7 -0
- package/dist/esm/chunk-3QWGSRYC.js +3 -0
- package/dist/esm/chunk-3QWGSRYC.js.map +7 -0
- package/dist/esm/chunk-3WZLXGUE.js +3 -0
- package/dist/esm/chunk-3WZLXGUE.js.map +7 -0
- package/dist/esm/chunk-45O3JZWQ.js +6 -0
- package/dist/esm/chunk-45O3JZWQ.js.map +7 -0
- package/dist/esm/chunk-4ABQ6CDI.js +3 -0
- package/dist/esm/chunk-4ABQ6CDI.js.map +7 -0
- package/dist/esm/{chunk-IAEAXIBI.js → chunk-4J7QDLKI.js} +3 -2
- package/dist/esm/{chunk-IAEAXIBI.js.map → chunk-4J7QDLKI.js.map} +1 -1
- package/dist/esm/chunk-4Q5PUIDJ.js +3 -0
- package/dist/esm/chunk-4Q5PUIDJ.js.map +7 -0
- package/dist/esm/chunk-54HUG34P.js +3 -0
- package/dist/esm/chunk-54HUG34P.js.map +7 -0
- package/dist/esm/chunk-5EP3UTM7.js +3 -0
- package/dist/esm/{chunk-Q4IA622Q.js.map → chunk-5EP3UTM7.js.map} +1 -1
- package/dist/esm/chunk-5JYSYTHA.js +3 -0
- package/dist/esm/chunk-5JYSYTHA.js.map +7 -0
- package/dist/esm/{chunk-FWB47YCH.js → chunk-5KMEUZWN.js} +2 -1
- package/dist/esm/{chunk-FWB47YCH.js.map → chunk-5KMEUZWN.js.map} +1 -1
- package/dist/esm/{chunk-7MC7N4BC.js → chunk-5KQCG7AV.js} +2 -1
- package/dist/esm/{chunk-7MC7N4BC.js.map → chunk-5KQCG7AV.js.map} +1 -1
- package/dist/esm/chunk-5RFDCAKC.js +3 -0
- package/dist/esm/{chunk-SKOYHBIE.js.map → chunk-5RFDCAKC.js.map} +1 -1
- package/dist/esm/{chunk-BIITGC3Z.js → chunk-5WTSKXAE.js} +3 -2
- package/dist/esm/{chunk-BIITGC3Z.js.map → chunk-5WTSKXAE.js.map} +1 -1
- package/dist/esm/{chunk-OSSNMF5U.js → chunk-647DRBXQ.js} +3 -2
- package/dist/esm/{chunk-OSSNMF5U.js.map → chunk-647DRBXQ.js.map} +1 -1
- package/dist/esm/{chunk-KKMOGHIY.js → chunk-64EFWPHI.js} +3 -2
- package/dist/esm/{chunk-KKMOGHIY.js.map → chunk-64EFWPHI.js.map} +1 -1
- package/dist/esm/{chunk-BWLCTTTN.js → chunk-65KD6WS6.js} +3 -2
- package/dist/esm/{chunk-BWLCTTTN.js.map → chunk-65KD6WS6.js.map} +2 -2
- package/dist/esm/{chunk-RWTSGUVJ.js → chunk-6AMWYEM7.js} +3 -2
- package/dist/esm/{chunk-RWTSGUVJ.js.map → chunk-6AMWYEM7.js.map} +1 -1
- package/dist/esm/{chunk-ELAW7ZUG.js → chunk-6FLLFCBU.js} +2 -2
- package/dist/esm/{chunk-4P6TKZCA.js → chunk-6UZT3ZLO.js} +3 -2
- package/dist/esm/{chunk-4P6TKZCA.js.map → chunk-6UZT3ZLO.js.map} +1 -1
- package/dist/esm/chunk-7IHBNDCE.js +3 -0
- package/dist/esm/{chunk-XKSU3NLG.js.map → chunk-7IHBNDCE.js.map} +2 -2
- package/dist/esm/chunk-7J7RPEPB.js +3 -0
- package/dist/esm/chunk-7J7RPEPB.js.map +7 -0
- package/dist/esm/chunk-7N2Q5WOM.js +3 -0
- package/dist/esm/chunk-7N2Q5WOM.js.map +7 -0
- package/dist/esm/{chunk-25FNCKUM.js → chunk-7ROKZHH2.js} +3 -2
- package/dist/esm/{chunk-25FNCKUM.js.map → chunk-7ROKZHH2.js.map} +1 -1
- package/dist/esm/chunk-7VJF6EXN.js +3 -0
- package/dist/esm/chunk-7VJF6EXN.js.map +7 -0
- package/dist/esm/chunk-A2OMWZI7.js +2 -0
- package/dist/esm/chunk-A7QRPXXB.js +3 -0
- package/dist/esm/chunk-A7QRPXXB.js.map +7 -0
- package/dist/esm/chunk-AG2YETE6.js +3 -0
- package/dist/esm/chunk-AG2YETE6.js.map +7 -0
- package/dist/esm/{chunk-4BU4R7UM.js → chunk-AOBY2OUZ.js} +3 -2
- package/dist/esm/{chunk-4BU4R7UM.js.map → chunk-AOBY2OUZ.js.map} +1 -1
- package/dist/esm/{chunk-XEZXKPLE.js → chunk-AXODGYRY.js} +2 -1
- package/dist/esm/{chunk-XEZXKPLE.js.map → chunk-AXODGYRY.js.map} +1 -1
- package/dist/esm/chunk-AYKOOEZR.js +2 -0
- package/dist/esm/{chunk-YHYPIJCR.js → chunk-AZHSPPBV.js} +3 -2
- package/dist/esm/{chunk-YHYPIJCR.js.map → chunk-AZHSPPBV.js.map} +1 -1
- package/dist/esm/{chunk-ERNM3KVF.js → chunk-B6YGNB3V.js} +2 -1
- package/dist/esm/{chunk-ERNM3KVF.js.map → chunk-B6YGNB3V.js.map} +1 -1
- package/dist/esm/chunk-BMKUGZ4I.js +3 -0
- package/dist/esm/{chunk-VPSMETY2.js.map → chunk-BMKUGZ4I.js.map} +1 -1
- package/dist/esm/chunk-BOLSK63X.js +3 -0
- package/dist/esm/{chunk-X4A3XRBY.js.map → chunk-BOLSK63X.js.map} +1 -1
- package/dist/esm/chunk-BUZGRMDD.js +3 -0
- package/dist/esm/chunk-BUZGRMDD.js.map +7 -0
- package/dist/esm/{chunk-IDOZJVO6.js → chunk-CAAEEHGQ.js} +3 -2
- package/dist/esm/{chunk-IDOZJVO6.js.map → chunk-CAAEEHGQ.js.map} +1 -1
- package/dist/esm/{chunk-3QZBWH2A.js → chunk-CKJXTEVO.js} +3 -2
- package/dist/esm/chunk-CKJXTEVO.js.map +7 -0
- package/dist/esm/chunk-CLJ6SEGP.js +3 -0
- package/dist/esm/chunk-CLJ6SEGP.js.map +7 -0
- package/dist/esm/chunk-CR65RYGM.js +3 -0
- package/dist/esm/chunk-CR65RYGM.js.map +7 -0
- package/dist/esm/chunk-CRCYUJMK.js +3 -0
- package/dist/esm/chunk-CRCYUJMK.js.map +7 -0
- package/dist/esm/chunk-CV7QQTI3.js +3 -0
- package/dist/esm/chunk-CV7QQTI3.js.map +7 -0
- package/dist/esm/chunk-CYTPMHSJ.js +3 -0
- package/dist/esm/chunk-CYTPMHSJ.js.map +7 -0
- package/dist/esm/chunk-D4P7332M.js +3 -0
- package/dist/esm/chunk-D4P7332M.js.map +7 -0
- package/dist/esm/chunk-DI7RUMLO.js +3 -0
- package/dist/esm/chunk-DI7RUMLO.js.map +7 -0
- package/dist/esm/{chunk-OY5NT7VT.js → chunk-DVXDFCCV.js} +3 -2
- package/dist/esm/{chunk-OY5NT7VT.js.map → chunk-DVXDFCCV.js.map} +1 -1
- package/dist/esm/chunk-E4EMG3RC.js +3 -0
- package/dist/esm/chunk-E4EMG3RC.js.map +7 -0
- package/dist/esm/chunk-EAIQIW23.js +3 -0
- package/dist/esm/chunk-EAIQIW23.js.map +7 -0
- package/dist/esm/chunk-ENAW44VE.js +3 -0
- package/dist/esm/chunk-ENAW44VE.js.map +7 -0
- package/dist/esm/chunk-EVCQ6TG5.js +3 -0
- package/dist/esm/{chunk-JBHRV364.js.map → chunk-EVCQ6TG5.js.map} +2 -2
- package/dist/esm/{chunk-RAVZ7F5L.js → chunk-EY6TCYGG.js} +3 -2
- package/dist/esm/{chunk-RAVZ7F5L.js.map → chunk-EY6TCYGG.js.map} +1 -1
- package/dist/esm/chunk-FFJE25TJ.js +3 -0
- package/dist/esm/chunk-FFJE25TJ.js.map +7 -0
- package/dist/esm/chunk-FI32HA4X.js +3 -0
- package/dist/esm/{chunk-YXLDRDHW.js.map → chunk-FI32HA4X.js.map} +3 -3
- package/dist/esm/{chunk-NA237RHQ.js → chunk-FJLYSZV3.js} +1 -1
- package/dist/esm/{chunk-NA237RHQ.js.map → chunk-FJLYSZV3.js.map} +1 -1
- package/dist/esm/{chunk-DNOQ6E3W.js → chunk-FM3GBCX5.js} +3 -2
- package/dist/esm/{chunk-DNOQ6E3W.js.map → chunk-FM3GBCX5.js.map} +1 -1
- package/dist/esm/chunk-G32GSPNO.js +3 -0
- package/dist/esm/chunk-G32GSPNO.js.map +7 -0
- package/dist/esm/{chunk-TBZO22XK.js → chunk-G66WDIIV.js} +3 -2
- package/dist/esm/{chunk-TBZO22XK.js.map → chunk-G66WDIIV.js.map} +1 -1
- package/dist/esm/{chunk-PN3RQFSU.js → chunk-GHUAUFG7.js} +2 -1
- package/dist/esm/{chunk-PN3RQFSU.js.map → chunk-GHUAUFG7.js.map} +1 -1
- package/dist/esm/chunk-GHWEXMF6.js +3 -0
- package/dist/esm/chunk-GHWEXMF6.js.map +7 -0
- package/dist/esm/{chunk-IX5HIHVI.js → chunk-GKDGNPBD.js} +3 -2
- package/dist/esm/{chunk-IX5HIHVI.js.map → chunk-GKDGNPBD.js.map} +3 -3
- package/dist/esm/chunk-GNPTPIL7.js +3 -0
- package/dist/esm/{chunk-ZNDCZM5A.js.map → chunk-GNPTPIL7.js.map} +2 -2
- package/dist/esm/chunk-GPQSC6GL.js +3 -0
- package/dist/esm/chunk-GPQSC6GL.js.map +7 -0
- package/dist/esm/{chunk-THUBY6L2.js → chunk-GZ333J7L.js} +3 -2
- package/dist/esm/{chunk-THUBY6L2.js.map → chunk-GZ333J7L.js.map} +1 -1
- package/dist/esm/chunk-HBWBPBSA.js +3 -0
- package/dist/esm/chunk-HBWBPBSA.js.map +7 -0
- package/dist/esm/chunk-I3SRUPUP.js +3 -0
- package/dist/esm/chunk-I3SRUPUP.js.map +7 -0
- package/dist/esm/{chunk-3XHTJZNP.js → chunk-I6SMGWS5.js} +3 -2
- package/dist/esm/{chunk-3XHTJZNP.js.map → chunk-I6SMGWS5.js.map} +1 -1
- package/dist/esm/chunk-ILWS2JUE.js +3 -0
- package/dist/esm/chunk-ILWS2JUE.js.map +7 -0
- package/dist/esm/{chunk-QWDCLL6R.js → chunk-IN2WND4B.js} +3 -2
- package/dist/esm/{chunk-QWDCLL6R.js.map → chunk-IN2WND4B.js.map} +1 -1
- package/dist/esm/chunk-IO43RGNR.js +3 -0
- package/dist/esm/chunk-IO43RGNR.js.map +7 -0
- package/dist/esm/{chunk-OJQNLROL.js → chunk-IQ2RMFOM.js} +3 -2
- package/dist/esm/{chunk-OJQNLROL.js.map → chunk-IQ2RMFOM.js.map} +2 -2
- package/dist/esm/{chunk-DCNHG6VN.js → chunk-IZIDRDQW.js} +3 -2
- package/dist/esm/{chunk-DCNHG6VN.js.map → chunk-IZIDRDQW.js.map} +1 -1
- package/dist/esm/{chunk-7FTUTUMD.js → chunk-IZXML75Y.js} +2 -2
- package/dist/esm/chunk-J3QIUJ6F.js +2 -0
- package/dist/esm/chunk-JIF77MRB.js +3 -0
- package/dist/esm/chunk-JIF77MRB.js.map +7 -0
- package/dist/esm/{chunk-PBFSBHBS.js → chunk-JUY7CBSL.js} +2 -2
- package/dist/esm/chunk-JZ5Z53MN.js +2 -0
- package/dist/esm/{chunk-YEHM3FZN.js → chunk-JZVLP2VF.js} +3 -2
- package/dist/esm/{chunk-YEHM3FZN.js.map → chunk-JZVLP2VF.js.map} +1 -1
- package/dist/esm/chunk-KNBSG2WA.js +3 -0
- package/dist/esm/chunk-KNBSG2WA.js.map +7 -0
- package/dist/esm/{chunk-IWCFJJBI.js → chunk-KOAWATCI.js} +2 -1
- package/dist/esm/{chunk-IWCFJJBI.js.map → chunk-KOAWATCI.js.map} +1 -1
- package/dist/esm/chunk-KRFXTPEW.js +3 -0
- package/dist/esm/{chunk-63PQNLFJ.js.map → chunk-KRFXTPEW.js.map} +1 -1
- package/dist/esm/chunk-KSYHZCLD.js +3 -0
- package/dist/esm/{chunk-EZYXYLR2.js.map → chunk-KSYHZCLD.js.map} +1 -1
- package/dist/esm/{chunk-VW46DG7H.js → chunk-L4NF3Q2T.js} +3 -2
- package/dist/esm/{chunk-VW46DG7H.js.map → chunk-L4NF3Q2T.js.map} +1 -1
- package/dist/esm/chunk-L54FWKJE.js +3 -0
- package/dist/esm/chunk-L54FWKJE.js.map +7 -0
- package/dist/esm/{chunk-XTDXXQTB.js → chunk-L66IUPDW.js} +3 -2
- package/dist/esm/{chunk-XTDXXQTB.js.map → chunk-L66IUPDW.js.map} +1 -1
- package/dist/esm/chunk-LB2HB4NG.js +3 -0
- package/dist/esm/{chunk-NNZTSXKH.js.map → chunk-LB2HB4NG.js.map} +2 -2
- package/dist/esm/{chunk-VVWYAVHM.js → chunk-LCG3JZ3C.js} +3 -2
- package/dist/esm/{chunk-VVWYAVHM.js.map → chunk-LCG3JZ3C.js.map} +1 -1
- package/dist/esm/chunk-LPLW7OWA.js +3 -0
- package/dist/esm/chunk-LPLW7OWA.js.map +7 -0
- package/dist/esm/chunk-M37GE2TE.js +3 -0
- package/dist/esm/{chunk-UONSKZQT.js.map → chunk-M37GE2TE.js.map} +1 -1
- package/dist/esm/{chunk-5YLKKQFK.js → chunk-MAA6LEE2.js} +2 -1
- package/dist/esm/{chunk-5YLKKQFK.js.map → chunk-MAA6LEE2.js.map} +1 -1
- package/dist/esm/chunk-MXIVYALY.js +3 -0
- package/dist/esm/chunk-MXIVYALY.js.map +7 -0
- package/dist/esm/chunk-N53NJCEM.js +3 -0
- package/dist/esm/chunk-N53NJCEM.js.map +7 -0
- package/dist/esm/{chunk-LXTGEI62.js → chunk-NBVCQQSY.js} +3 -2
- package/dist/esm/{chunk-LXTGEI62.js.map → chunk-NBVCQQSY.js.map} +1 -1
- package/dist/esm/chunk-NG54K6FL.js +2 -0
- package/dist/esm/chunk-NMQGDBLD.js +3 -0
- package/dist/esm/chunk-NMQGDBLD.js.map +7 -0
- package/dist/esm/chunk-OAJ5DARR.js +3 -0
- package/dist/esm/chunk-OAJ5DARR.js.map +7 -0
- package/dist/esm/chunk-OKQAVYW4.js +3 -0
- package/dist/esm/chunk-OKQAVYW4.js.map +7 -0
- package/dist/esm/chunk-PF67GJ5D.js +3 -0
- package/dist/esm/chunk-PF67GJ5D.js.map +7 -0
- package/dist/esm/chunk-PHWT772P.js +3 -0
- package/dist/esm/{chunk-XZQSSRTG.js.map → chunk-PHWT772P.js.map} +1 -1
- package/dist/esm/chunk-PPQ7URZL.js +3 -0
- package/dist/esm/chunk-PPQ7URZL.js.map +7 -0
- package/dist/esm/{chunk-FNAE6HUI.js → chunk-PT45Q47V.js} +3 -2
- package/dist/esm/{chunk-FNAE6HUI.js.map → chunk-PT45Q47V.js.map} +1 -1
- package/dist/esm/{chunk-HCBR74BW.js → chunk-PT4KBXXP.js} +3 -2
- package/dist/esm/{chunk-HCBR74BW.js.map → chunk-PT4KBXXP.js.map} +1 -1
- package/dist/esm/chunk-PZ6Z7WTR.js +3 -0
- package/dist/esm/chunk-PZ6Z7WTR.js.map +7 -0
- package/dist/esm/{chunk-PSPENFPH.js → chunk-PZCQDZVJ.js} +3 -2
- package/dist/esm/{chunk-PSPENFPH.js.map → chunk-PZCQDZVJ.js.map} +1 -1
- package/dist/esm/{chunk-I53SGTKV.js → chunk-QH64BDXO.js} +3 -2
- package/dist/esm/{chunk-I53SGTKV.js.map → chunk-QH64BDXO.js.map} +1 -1
- package/dist/esm/{chunk-LUNWI377.js → chunk-QQY4WFJL.js} +3 -2
- package/dist/esm/{chunk-LUNWI377.js.map → chunk-QQY4WFJL.js.map} +1 -1
- package/dist/esm/{chunk-BE7LMBBC.js → chunk-RIHTVZVJ.js} +3 -2
- package/dist/esm/{chunk-BE7LMBBC.js.map → chunk-RIHTVZVJ.js.map} +1 -1
- package/dist/esm/chunk-RVPLXLRA.js +3 -0
- package/dist/esm/chunk-RVPLXLRA.js.map +7 -0
- package/dist/esm/{chunk-GS2QSZUR.js → chunk-SCIFT27R.js} +2 -1
- package/dist/esm/{chunk-GS2QSZUR.js.map → chunk-SCIFT27R.js.map} +1 -1
- package/dist/esm/chunk-SGJKXIWG.js +3 -0
- package/dist/esm/{chunk-DFGY2NZB.js.map → chunk-SGJKXIWG.js.map} +1 -1
- package/dist/esm/chunk-SHLERRO3.js +3 -0
- package/dist/esm/chunk-SHLERRO3.js.map +7 -0
- package/dist/esm/chunk-SV3CYQY5.js +3 -0
- package/dist/esm/{chunk-LVCUY2OS.js.map → chunk-SV3CYQY5.js.map} +2 -2
- package/dist/esm/chunk-TDT2CNES.js +2 -0
- package/dist/esm/chunk-TDT2CNES.js.map +7 -0
- package/dist/esm/chunk-TGRHRMQI.js +3 -0
- package/dist/esm/chunk-TGRHRMQI.js.map +7 -0
- package/dist/esm/{chunk-HIEGLLY7.js → chunk-TGUWRU7N.js} +2 -1
- package/dist/esm/{chunk-HIEGLLY7.js.map → chunk-TGUWRU7N.js.map} +1 -1
- package/dist/esm/{chunk-7ZOGH5NT.js → chunk-U5GQ3IFS.js} +2 -1
- package/dist/esm/{chunk-7ZOGH5NT.js.map → chunk-U5GQ3IFS.js.map} +1 -1
- package/dist/esm/chunk-UFJGZUKK.js +3 -0
- package/dist/esm/chunk-UFJGZUKK.js.map +7 -0
- package/dist/esm/chunk-UUQGOQ5H.js +3 -0
- package/dist/esm/{chunk-23KT3D2Z.js.map → chunk-UUQGOQ5H.js.map} +3 -3
- package/dist/esm/chunk-UZAS4PYM.js +3 -0
- package/dist/esm/chunk-UZAS4PYM.js.map +7 -0
- package/dist/esm/{chunk-OS3FCYZY.js → chunk-VQPANPMI.js} +2 -1
- package/dist/esm/chunk-VVBSYWUA.js +3 -0
- package/dist/esm/chunk-VVBSYWUA.js.map +7 -0
- package/dist/esm/chunk-WCGQ4IDE.js +3 -0
- package/dist/esm/{chunk-H3IAGAEL.js.map → chunk-WCGQ4IDE.js.map} +1 -1
- package/dist/esm/{chunk-HWQ3NTJP.js → chunk-WEBNIUEX.js} +2 -1
- package/dist/esm/{chunk-HWQ3NTJP.js.map → chunk-WEBNIUEX.js.map} +1 -1
- package/dist/esm/chunk-WH7PQSSG.js +2 -0
- package/dist/esm/{chunk-KL73COYX.js → chunk-WMZLMZHB.js} +2 -1
- package/dist/esm/{chunk-KL73COYX.js.map → chunk-WMZLMZHB.js.map} +1 -1
- package/dist/esm/{chunk-GBQZ4Z2H.js → chunk-WN3WMFAM.js} +3 -2
- package/dist/esm/{chunk-GBQZ4Z2H.js.map → chunk-WN3WMFAM.js.map} +1 -1
- package/dist/esm/{chunk-ETQNRMHU.js → chunk-WT2SYGTU.js} +3 -2
- package/dist/esm/{chunk-ETQNRMHU.js.map → chunk-WT2SYGTU.js.map} +1 -1
- package/dist/esm/{chunk-SUPFDIJL.js → chunk-WTP2KIK3.js} +2 -1
- package/dist/esm/{chunk-SUPFDIJL.js.map → chunk-WTP2KIK3.js.map} +1 -1
- package/dist/esm/{chunk-AGAQC4HH.js → chunk-WUCBFB25.js} +2 -1
- package/dist/esm/{chunk-AGAQC4HH.js.map → chunk-WUCBFB25.js.map} +1 -1
- package/dist/esm/chunk-WZKSLTBH.js +3 -0
- package/dist/esm/{chunk-BJUCBOGU.js.map → chunk-WZKSLTBH.js.map} +1 -1
- package/dist/esm/chunk-X272YV2E.js +3 -0
- package/dist/esm/chunk-X272YV2E.js.map +7 -0
- package/dist/esm/chunk-XH2CRCXR.js +3 -0
- package/dist/esm/chunk-XH2CRCXR.js.map +7 -0
- package/dist/esm/{chunk-KZEZDBE7.js → chunk-XL5OHW6Z.js} +3 -2
- package/dist/esm/{chunk-KZEZDBE7.js.map → chunk-XL5OHW6Z.js.map} +1 -1
- package/dist/esm/chunk-XMHNOIPB.js +3 -0
- package/dist/esm/{chunk-3BUQ7ADW.js.map → chunk-XMHNOIPB.js.map} +1 -1
- package/dist/esm/chunk-XU74PNM2.js +3 -0
- package/dist/esm/chunk-XU74PNM2.js.map +7 -0
- package/dist/esm/{chunk-3J6AUDID.js → chunk-XUCR7L4G.js} +2 -1
- package/dist/esm/{chunk-3J6AUDID.js.map → chunk-XUCR7L4G.js.map} +1 -1
- package/dist/esm/chunk-XVDT6DQZ.js +3 -0
- package/dist/esm/{chunk-TZTUPQYK.js.map → chunk-XVDT6DQZ.js.map} +1 -1
- package/dist/esm/{chunk-2N2AQNJH.js → chunk-Y2DBXOLT.js} +2 -1
- package/dist/esm/{chunk-2N2AQNJH.js.map → chunk-Y2DBXOLT.js.map} +1 -1
- package/dist/esm/chunk-YD2D73LF.js +3 -0
- package/dist/esm/chunk-YD2D73LF.js.map +7 -0
- package/dist/esm/chunk-YIKLO2XL.js +3 -0
- package/dist/esm/chunk-YIKLO2XL.js.map +7 -0
- package/dist/esm/chunk-YNCI5PY6.js +3 -0
- package/dist/esm/chunk-YNCI5PY6.js.map +7 -0
- package/dist/esm/chunk-YOSLXJI5.js +3 -0
- package/dist/esm/chunk-YOSLXJI5.js.map +7 -0
- package/dist/esm/chunk-YVZTQA2L.js +3 -0
- package/dist/esm/chunk-YVZTQA2L.js.map +7 -0
- package/dist/esm/chunk-YWG476GC.js +3 -0
- package/dist/esm/{chunk-MGQ4A2FI.js.map → chunk-YWG476GC.js.map} +1 -1
- package/dist/esm/chunk-YZZMQ457.js +3 -0
- package/dist/esm/{chunk-S6GWR6EZ.js.map → chunk-YZZMQ457.js.map} +1 -1
- package/dist/esm/chunk-Z27REN6T.js +3 -0
- package/dist/esm/chunk-Z27REN6T.js.map +7 -0
- package/dist/esm/{chunk-FVY44PTM.js → chunk-ZFDHZEWN.js} +3 -2
- package/dist/esm/{chunk-FVY44PTM.js.map → chunk-ZFDHZEWN.js.map} +1 -1
- package/dist/esm/chunk-ZPWKWESI.js +3 -0
- package/dist/esm/chunk-ZPWKWESI.js.map +7 -0
- package/dist/esm/components/_internal/base-button.d.ts +11 -1
- package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.js +2 -1
- package/dist/esm/components/_internal/base-button.props.js +2 -1
- package/dist/esm/components/_internal/base-checkbox.props.js +2 -1
- package/dist/esm/components/_internal/base-menu.props.js +2 -1
- package/dist/esm/components/_internal/base-menu.utils.js +2 -1
- package/dist/esm/components/_internal/base-radio.props.js +2 -1
- package/dist/esm/components/_internal/base-tab-list.props.js +2 -1
- package/dist/esm/components/_internal/dropdown-menu-drill-down.d.ts +19 -7
- package/dist/esm/components/_internal/dropdown-menu-drill-down.d.ts.map +1 -1
- package/dist/esm/components/_internal/dropdown-menu-drill-down.js +2 -1
- package/dist/esm/components/_internal/menu-context.d.ts +12 -0
- package/dist/esm/components/_internal/menu-context.d.ts.map +1 -1
- package/dist/esm/components/_internal/menu-context.js +2 -1
- package/dist/esm/components/_internal/pane-chrome.d.ts +19 -2
- package/dist/esm/components/_internal/pane-chrome.d.ts.map +1 -1
- package/dist/esm/components/_internal/pane-chrome.js +2 -1
- package/dist/esm/components/_internal/shell-bottom.d.ts +1 -1
- package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-bottom.js +2 -1
- package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-handles.js +2 -1
- package/dist/esm/components/_internal/shell-inspector.d.ts +1 -1
- package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +2 -1
- package/dist/esm/components/_internal/shell-pane.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-pane.js +2 -1
- package/dist/esm/components/_internal/shell-resizable.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-resizable.js +2 -1
- package/dist/esm/components/_internal/shell-resize.js +2 -1
- package/dist/esm/components/_internal/shell-rest.js +2 -1
- package/dist/esm/components/_internal/shell-sidebar.d.ts +1 -1
- package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +2 -1
- package/dist/esm/components/_internal/shell-store.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-store.js +2 -1
- package/dist/esm/components/accessible-icon.js +2 -1
- package/dist/esm/components/accordion.d.ts +2 -2
- package/dist/esm/components/accordion.d.ts.map +1 -1
- package/dist/esm/components/accordion.js +2 -1
- package/dist/esm/components/accordion.props.js +2 -1
- package/dist/esm/components/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/alert-dialog.js +2 -1
- package/dist/esm/components/alert-dialog.props.js +2 -1
- package/dist/esm/components/avatar.d.ts +1 -1
- package/dist/esm/components/avatar.d.ts.map +1 -1
- package/dist/esm/components/avatar.js +2 -1
- package/dist/esm/components/avatar.props.d.ts +8 -0
- package/dist/esm/components/avatar.props.d.ts.map +1 -1
- package/dist/esm/components/avatar.props.js +2 -1
- package/dist/esm/components/blockquote.d.ts +1 -1
- package/dist/esm/components/blockquote.d.ts.map +1 -1
- package/dist/esm/components/blockquote.js +2 -1
- package/dist/esm/components/blockquote.props.js +2 -1
- package/dist/esm/components/box.js +2 -1
- package/dist/esm/components/box.props.js +2 -1
- package/dist/esm/components/button.d.ts.map +1 -1
- package/dist/esm/components/button.js +2 -1
- package/dist/esm/components/button.props.js +2 -1
- package/dist/esm/components/card.js +2 -1
- package/dist/esm/components/card.props.js +2 -1
- package/dist/esm/components/chatbar.d.ts.map +1 -1
- package/dist/esm/components/chatbar.js +2 -1
- package/dist/esm/components/checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/checkbox-group.js +2 -1
- package/dist/esm/components/checkbox-group.primitive.d.ts +12 -5
- package/dist/esm/components/checkbox-group.primitive.d.ts.map +1 -1
- package/dist/esm/components/checkbox-group.primitive.js +2 -1
- package/dist/esm/components/checkbox-group.props.js +2 -1
- package/dist/esm/components/checkbox.js +2 -1
- package/dist/esm/components/checkbox.props.js +2 -1
- package/dist/esm/components/chip.d.ts.map +1 -1
- package/dist/esm/components/chip.js +2 -1
- package/dist/esm/components/chip.props.js +2 -1
- package/dist/esm/components/code.d.ts.map +1 -1
- package/dist/esm/components/code.js +2 -1
- package/dist/esm/components/code.props.js +2 -1
- package/dist/esm/components/combobox.d.ts.map +1 -1
- package/dist/esm/components/combobox.js +2 -1
- package/dist/esm/components/combobox.props.js +2 -1
- package/dist/esm/components/context-menu.d.ts +1 -2
- package/dist/esm/components/context-menu.d.ts.map +1 -1
- package/dist/esm/components/context-menu.js +2 -1
- package/dist/esm/components/context-menu.props.js +2 -1
- package/dist/esm/components/dialog.d.ts +1 -1
- package/dist/esm/components/dialog.d.ts.map +1 -1
- package/dist/esm/components/dialog.js +2 -1
- package/dist/esm/components/dialog.props.js +2 -1
- package/dist/esm/components/dropdown-menu.d.ts +1 -2
- package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/dropdown-menu.js +2 -1
- package/dist/esm/components/dropdown-menu.props.js +2 -1
- package/dist/esm/components/flex.js +2 -1
- package/dist/esm/components/flex.props.js +2 -1
- package/dist/esm/components/grid.js +2 -1
- package/dist/esm/components/grid.props.js +2 -1
- package/dist/esm/components/heading.d.ts +2 -2
- package/dist/esm/components/heading.d.ts.map +1 -1
- package/dist/esm/components/heading.js +2 -1
- package/dist/esm/components/heading.props.d.ts +1 -1
- package/dist/esm/components/heading.props.js +2 -1
- package/dist/esm/components/icons.d.ts +3 -1
- package/dist/esm/components/icons.d.ts.map +1 -1
- package/dist/esm/components/icons.js +2 -1
- package/dist/esm/components/image.d.ts +9 -2
- package/dist/esm/components/image.d.ts.map +1 -1
- package/dist/esm/components/image.js +2 -1
- package/dist/esm/components/image.props.js +2 -1
- package/dist/esm/components/index.d.ts +2 -2
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +2 -1
- package/dist/esm/components/kbd.js +2 -1
- package/dist/esm/components/kbd.props.js +2 -1
- package/dist/esm/components/link.js +2 -1
- package/dist/esm/components/link.props.js +2 -1
- package/dist/esm/components/message-scroller.d.ts +2 -2
- package/dist/esm/components/message-scroller.d.ts.map +1 -1
- package/dist/esm/components/message-scroller.js +2 -1
- package/dist/esm/components/navbar.d.ts.map +1 -1
- package/dist/esm/components/navbar.js +2 -1
- package/dist/esm/components/navbar.props.js +2 -1
- package/dist/esm/components/notice.d.ts +4 -1
- package/dist/esm/components/notice.d.ts.map +1 -1
- package/dist/esm/components/notice.js +2 -1
- package/dist/esm/components/popover.d.ts +3 -1
- package/dist/esm/components/popover.d.ts.map +1 -1
- package/dist/esm/components/popover.js +2 -1
- package/dist/esm/components/popover.props.js +2 -1
- package/dist/esm/components/portal.js +2 -1
- package/dist/esm/components/progress.d.ts.map +1 -1
- package/dist/esm/components/progress.js +2 -1
- package/dist/esm/components/progress.props.js +2 -1
- package/dist/esm/components/radio-group.js +2 -1
- package/dist/esm/components/radio-group.props.js +2 -1
- package/dist/esm/components/radio.js +2 -1
- package/dist/esm/components/radio.props.js +2 -1
- package/dist/esm/components/reset.js +2 -1
- package/dist/esm/components/schemas/base-button.schema.js +2 -1
- package/dist/esm/components/schemas/button.schema.d.ts +2 -2
- package/dist/esm/components/schemas/button.schema.js +2 -1
- package/dist/esm/components/schemas/index.js +2 -1
- package/dist/esm/components/schemas/index.js.map +1 -1
- package/dist/esm/components/schemas/shell.schema.js +2 -1
- package/dist/esm/components/schemas/toggle.schema.d.ts +1 -1
- package/dist/esm/components/schemas/toggle.schema.js +2 -1
- package/dist/esm/components/scroll-area.d.ts +3 -1
- package/dist/esm/components/scroll-area.d.ts.map +1 -1
- package/dist/esm/components/scroll-area.js +2 -1
- package/dist/esm/components/scroll-area.props.js +2 -1
- package/dist/esm/components/segmented-control.d.ts +3 -1
- package/dist/esm/components/segmented-control.d.ts.map +1 -1
- package/dist/esm/components/segmented-control.js +2 -1
- package/dist/esm/components/segmented-control.props.d.ts +0 -1
- package/dist/esm/components/segmented-control.props.d.ts.map +1 -1
- package/dist/esm/components/segmented-control.props.js +2 -1
- package/dist/esm/components/select.d.ts.map +1 -1
- package/dist/esm/components/select.js +2 -1
- package/dist/esm/components/select.props.js +2 -1
- package/dist/esm/components/separator.d.ts.map +1 -1
- package/dist/esm/components/separator.js +2 -1
- package/dist/esm/components/separator.props.d.ts +1 -1
- package/dist/esm/components/separator.props.js +2 -1
- package/dist/esm/components/sheet.d.ts +2 -1
- package/dist/esm/components/sheet.d.ts.map +1 -1
- package/dist/esm/components/sheet.js +2 -1
- package/dist/esm/components/shell.context.js +2 -1
- package/dist/esm/components/shell.d.ts +17 -3
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.hooks.js +2 -1
- package/dist/esm/components/shell.js +2 -1
- package/dist/esm/components/shell.types.js +2 -1
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +2 -1
- package/dist/esm/components/slider.d.ts.map +1 -1
- package/dist/esm/components/slider.js +2 -1
- package/dist/esm/components/slider.props.d.ts +0 -2
- package/dist/esm/components/slider.props.d.ts.map +1 -1
- package/dist/esm/components/slider.props.js +2 -1
- package/dist/esm/components/slot.js +2 -1
- package/dist/esm/components/spinner.d.ts.map +1 -1
- package/dist/esm/components/spinner.js +2 -1
- package/dist/esm/components/spinner.props.js +2 -1
- package/dist/esm/components/switch.js +2 -1
- package/dist/esm/components/switch.props.js +2 -1
- package/dist/esm/components/table.d.ts.map +1 -1
- package/dist/esm/components/table.js +2 -1
- package/dist/esm/components/table.props.d.ts +0 -2
- package/dist/esm/components/table.props.d.ts.map +1 -1
- package/dist/esm/components/table.props.js +2 -1
- package/dist/esm/components/tabs.d.ts.map +1 -1
- package/dist/esm/components/tabs.js +2 -1
- package/dist/esm/components/tabs.props.js +2 -1
- package/dist/esm/components/text-area.d.ts.map +1 -1
- package/dist/esm/components/text-area.js +2 -1
- package/dist/esm/components/text-area.props.js +2 -1
- package/dist/esm/components/text-field.d.ts.map +1 -1
- package/dist/esm/components/text-field.js +2 -1
- package/dist/esm/components/text-field.props.js +2 -1
- package/dist/esm/components/text.js +2 -1
- package/dist/esm/components/text.props.js +2 -1
- package/dist/esm/components/theme.d.ts.map +1 -1
- package/dist/esm/components/theme.js +2 -1
- package/dist/esm/components/theme.props.js +2 -1
- package/dist/esm/components/toggle.d.ts +3 -2
- package/dist/esm/components/toggle.d.ts.map +1 -1
- package/dist/esm/components/toggle.js +2 -1
- package/dist/esm/components/toolbar.d.ts +83 -8
- package/dist/esm/components/toolbar.d.ts.map +1 -1
- package/dist/esm/components/toolbar.js +2 -1
- package/dist/esm/components/toolbar.props.js +2 -1
- package/dist/esm/components/tooltip.d.ts +13 -2
- package/dist/esm/components/tooltip.d.ts.map +1 -1
- package/dist/esm/components/tooltip.js +2 -1
- package/dist/esm/components/tooltip.props.js +2 -1
- package/dist/esm/components/virtual-menu.d.ts +22 -17
- package/dist/esm/components/virtual-menu.d.ts.map +1 -1
- package/dist/esm/components/virtual-menu.js +2 -1
- package/dist/esm/components/visually-hidden.js +2 -1
- package/dist/esm/helpers/compile-prop-defs.js +1 -1
- package/dist/esm/helpers/extract-margin-props.d.ts +7 -7
- package/dist/esm/helpers/extract-margin-props.js +1 -1
- package/dist/esm/helpers/extract-props.js +1 -1
- package/dist/esm/helpers/font-config.js +1 -1
- package/dist/esm/helpers/get-margin-styles.d.ts.map +1 -1
- package/dist/esm/helpers/get-margin-styles.js +1 -1
- package/dist/esm/helpers/get-matching-gray-color.js +1 -1
- package/dist/esm/helpers/get-responsive-styles.js +1 -1
- package/dist/esm/helpers/get-subtree.js +1 -1
- package/dist/esm/helpers/has-own-property.js +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/inert.js +1 -1
- package/dist/esm/helpers/inert.js.map +1 -1
- package/dist/esm/helpers/is-responsive-object.js +1 -1
- package/dist/esm/helpers/map-prop-values.js +1 -1
- package/dist/esm/helpers/merge-styles.js +1 -1
- package/dist/esm/helpers/normalize-to-px.js +1 -1
- package/dist/esm/helpers/require-react-element.js +1 -1
- package/dist/esm/helpers/theme-size.js +1 -1
- package/dist/esm/helpers/warn-deprecated.js +1 -1
- package/dist/esm/helpers/warn-deprecated.js.map +4 -4
- package/dist/esm/hooks/appearance-script.js +11 -1
- package/dist/esm/hooks/appearance-script.js.map +4 -4
- package/dist/esm/hooks/index.js +2 -1
- package/dist/esm/hooks/use-appearance.d.ts.map +1 -1
- package/dist/esm/hooks/use-appearance.js +2 -1
- package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts +1 -1
- package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
- package/dist/esm/hooks/use-body-pointer-events-cleanup.js +2 -1
- package/dist/esm/hooks/use-breakpoint.js +2 -1
- package/dist/esm/hooks/use-live-announcer.js +2 -1
- package/dist/esm/hooks/use-prop-synced-state.js +2 -1
- package/dist/esm/hooks/use-scroll-edges.d.ts +4 -2
- package/dist/esm/hooks/use-scroll-edges.d.ts.map +1 -1
- package/dist/esm/hooks/use-scroll-edges.js +2 -1
- package/dist/esm/hooks/use-thumb-sync.js +2 -1
- package/dist/esm/hooks/use-toggle-state.js +2 -1
- package/dist/esm/hooks/use-tooltip-wrapper.js +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/props/as-child.prop.js +1 -1
- package/dist/esm/props/color.prop.js +1 -1
- package/dist/esm/props/emphasis.prop.js +1 -1
- package/dist/esm/props/font-family.prop.js +1 -1
- package/dist/esm/props/gap.props.d.ts +4 -4
- package/dist/esm/props/gap.props.js +1 -1
- package/dist/esm/props/height.props.js +1 -1
- package/dist/esm/props/index.js +1 -1
- package/dist/esm/props/index.js.map +4 -4
- package/dist/esm/props/layout.props.js +1 -1
- package/dist/esm/props/leading-trim.prop.js +1 -1
- package/dist/esm/props/margin.props.js +1 -1
- package/dist/esm/props/padding.props.js +1 -1
- package/dist/esm/props/prop-def.js +1 -1
- package/dist/esm/props/radius.prop.js +1 -1
- package/dist/esm/props/shadow.props.js +1 -1
- package/dist/esm/props/text-align.prop.js +1 -1
- package/dist/esm/props/text-wrap.prop.js +1 -1
- package/dist/esm/props/truncate.prop.js +1 -1
- package/dist/esm/props/weight.prop.js +1 -1
- package/dist/esm/props/width.props.js +1 -1
- package/layout/utilities.css +2 -2
- package/layout.css +2 -2
- package/package.json +3 -7
- package/src/components/_internal/base-button.css +24 -6
- package/src/components/_internal/base-button.props.ts +1 -1
- package/src/components/_internal/base-button.tsx +127 -43
- package/src/components/_internal/base-checkbox.css +23 -0
- package/src/components/_internal/base-menu.css +9 -3
- package/src/components/_internal/base-radio.css +22 -0
- package/src/components/_internal/base-sidebar-menu.css +8 -0
- package/src/components/_internal/base-tab-list.css +5 -0
- package/src/components/_internal/dropdown-menu-drill-down.tsx +45 -26
- package/src/components/_internal/menu-context.tsx +47 -1
- package/src/components/_internal/pane-chrome.tsx +50 -11
- package/src/components/_internal/shell-bottom.tsx +2 -0
- package/src/components/_internal/shell-handles.tsx +10 -1
- package/src/components/_internal/shell-inspector.tsx +3 -0
- package/src/components/_internal/shell-pane.tsx +5 -4
- package/src/components/_internal/shell-resizable.tsx +17 -8
- package/src/components/_internal/shell-sidebar.tsx +3 -0
- package/src/components/_internal/shell-store.tsx +2 -1
- package/src/components/accordion.css +76 -58
- package/src/components/accordion.tsx +12 -42
- package/src/components/alert-dialog.tsx +63 -161
- package/src/components/avatar.css +6 -2
- package/src/components/avatar.props.tsx +6 -0
- package/src/components/avatar.tsx +79 -60
- package/src/components/blockquote.css +2 -2
- package/src/components/blockquote.tsx +8 -9
- package/src/components/button.tsx +12 -5
- package/src/components/card.css +14 -3
- package/src/components/chatbar.css +20 -3
- package/src/components/chatbar.tsx +41 -31
- package/src/components/checkbox-group.css +1 -5
- package/src/components/checkbox-group.primitive.tsx +40 -51
- package/src/components/checkbox-group.tsx +1 -9
- package/src/components/checkbox.css +1 -5
- package/src/components/chip.css +18 -23
- package/src/components/chip.tsx +3 -4
- package/src/components/code.tsx +3 -2
- package/src/components/combobox.tsx +25 -26
- package/src/components/context-menu.tsx +69 -31
- package/src/components/dialog.tsx +59 -160
- package/src/components/dropdown-menu.css +0 -6
- package/src/components/dropdown-menu.tsx +78 -38
- package/src/components/heading.props.tsx +1 -1
- package/src/components/heading.tsx +4 -4
- package/src/components/icons.tsx +11 -1
- package/src/components/image.css +5 -0
- package/src/components/image.tsx +29 -3
- package/src/components/index.tsx +8 -1
- package/src/components/kbd.css +6 -5
- package/src/components/link.css +1 -5
- package/src/components/message-scroller.tsx +56 -45
- package/src/components/navbar.css +9 -1
- package/src/components/navbar.tsx +34 -69
- package/src/components/notice.tsx +6 -3
- package/src/components/popover.css +14 -10
- package/src/components/popover.tsx +13 -11
- package/src/components/progress.css +33 -6
- package/src/components/progress.tsx +8 -3
- package/src/components/scroll-area.css +62 -6
- package/src/components/scroll-area.tsx +49 -3
- package/src/components/segmented-control.css +181 -273
- package/src/components/segmented-control.props.tsx +1 -1
- package/src/components/segmented-control.tsx +98 -42
- package/src/components/select.css +16 -29
- package/src/components/select.tsx +27 -18
- package/src/components/separator.css +8 -1
- package/src/components/separator.props.tsx +1 -1
- package/src/components/separator.tsx +31 -1
- package/src/components/sheet.css +11 -11
- package/src/components/sheet.tsx +76 -141
- package/src/components/shell.css +162 -21
- package/src/components/shell.tsx +47 -9
- package/src/components/sidebar.css +1 -135
- package/src/components/sidebar.tsx +202 -173
- package/src/components/slider.css +90 -21
- package/src/components/slider.props.tsx +2 -2
- package/src/components/slider.tsx +120 -114
- package/src/components/spinner.css +10 -2
- package/src/components/spinner.tsx +15 -3
- package/src/components/switch.css +40 -8
- package/src/components/table.css +5 -1
- package/src/components/table.props.tsx +0 -9
- package/src/components/table.tsx +20 -6
- package/src/components/tabs.css +34 -0
- package/src/components/tabs.tsx +10 -5
- package/src/components/text-area.css +19 -3
- package/src/components/text-area.tsx +20 -16
- package/src/components/text-field.css +51 -36
- package/src/components/text-field.tsx +100 -49
- package/src/components/theme.tsx +14 -44
- package/src/components/toggle.tsx +21 -39
- package/src/components/toolbar.css +34 -0
- package/src/components/toolbar.tsx +459 -23
- package/src/components/tooltip.css +8 -1
- package/src/components/tooltip.tsx +30 -3
- package/src/components/virtual-menu.css +80 -0
- package/src/components/virtual-menu.tsx +209 -95
- package/src/helpers/get-margin-styles.ts +8 -10
- package/src/hooks/use-appearance.ts +32 -19
- package/src/hooks/use-body-pointer-events-cleanup.ts +123 -124
- package/src/hooks/use-scroll-edges.ts +11 -2
- package/src/props/gap.props.ts +4 -4
- package/src/styles/utilities/margin.css +2 -2
- package/src/styles/utilities/text-align.css +8 -0
- package/src/styles/utilities/truncate.css +10 -0
- package/styles.css +2024 -990
- package/utilities.css +43 -2
- package/dist/esm/chunk-23KT3D2Z.js +0 -2
- package/dist/esm/chunk-2E4P5XQL.js +0 -2
- package/dist/esm/chunk-2E4P5XQL.js.map +0 -7
- package/dist/esm/chunk-2KZ4NI3X.js +0 -1
- package/dist/esm/chunk-3BUQ7ADW.js +0 -2
- package/dist/esm/chunk-3JA7SJDT.js +0 -2
- package/dist/esm/chunk-3JA7SJDT.js.map +0 -7
- package/dist/esm/chunk-3KQE2PSJ.js +0 -2
- package/dist/esm/chunk-3KQE2PSJ.js.map +0 -7
- package/dist/esm/chunk-3PTKPDSA.js +0 -2
- package/dist/esm/chunk-3PTKPDSA.js.map +0 -7
- package/dist/esm/chunk-3QZBWH2A.js.map +0 -7
- package/dist/esm/chunk-5BWLY27A.js +0 -2
- package/dist/esm/chunk-5BWLY27A.js.map +0 -7
- package/dist/esm/chunk-5ROQAZ7J.js +0 -2
- package/dist/esm/chunk-5ROQAZ7J.js.map +0 -7
- package/dist/esm/chunk-63PQNLFJ.js +0 -2
- package/dist/esm/chunk-6CK7UTNH.js +0 -2
- package/dist/esm/chunk-6CK7UTNH.js.map +0 -7
- package/dist/esm/chunk-6DDOR73D.js +0 -2
- package/dist/esm/chunk-6DDOR73D.js.map +0 -7
- package/dist/esm/chunk-6DWDNKLS.js +0 -1
- package/dist/esm/chunk-6RK26HIY.js +0 -2
- package/dist/esm/chunk-6RK26HIY.js.map +0 -7
- package/dist/esm/chunk-7CUQMU3T.js +0 -2
- package/dist/esm/chunk-7CUQMU3T.js.map +0 -7
- package/dist/esm/chunk-7ESWH773.js +0 -2
- package/dist/esm/chunk-7ESWH773.js.map +0 -7
- package/dist/esm/chunk-7SS4UUJH.js +0 -2
- package/dist/esm/chunk-7SS4UUJH.js.map +0 -7
- package/dist/esm/chunk-AB3QCCUM.js +0 -2
- package/dist/esm/chunk-AB3QCCUM.js.map +0 -7
- package/dist/esm/chunk-BEP4AH5V.js +0 -2
- package/dist/esm/chunk-BEP4AH5V.js.map +0 -7
- package/dist/esm/chunk-BJUCBOGU.js +0 -2
- package/dist/esm/chunk-BOL3VVSN.js +0 -2
- package/dist/esm/chunk-BOL3VVSN.js.map +0 -7
- package/dist/esm/chunk-CLZW2IDD.js +0 -2
- package/dist/esm/chunk-CLZW2IDD.js.map +0 -7
- package/dist/esm/chunk-DBROSD2J.js +0 -2
- package/dist/esm/chunk-DBROSD2J.js.map +0 -7
- package/dist/esm/chunk-DFGY2NZB.js +0 -2
- package/dist/esm/chunk-DSPYHO3L.js +0 -2
- package/dist/esm/chunk-E2D2VWUI.js +0 -2
- package/dist/esm/chunk-E2D2VWUI.js.map +0 -7
- package/dist/esm/chunk-EMNSA65L.js +0 -2
- package/dist/esm/chunk-EMNSA65L.js.map +0 -7
- package/dist/esm/chunk-EZYXYLR2.js +0 -2
- package/dist/esm/chunk-FDHWAC6W.js +0 -2
- package/dist/esm/chunk-FDHWAC6W.js.map +0 -7
- package/dist/esm/chunk-FFG32ERA.js +0 -5
- package/dist/esm/chunk-FFG32ERA.js.map +0 -7
- package/dist/esm/chunk-FHPHEIYJ.js +0 -2
- package/dist/esm/chunk-FHPHEIYJ.js.map +0 -7
- package/dist/esm/chunk-FJFBM7HW.js +0 -2
- package/dist/esm/chunk-FJFBM7HW.js.map +0 -7
- package/dist/esm/chunk-FYT7TYGS.js +0 -2
- package/dist/esm/chunk-FYT7TYGS.js.map +0 -7
- package/dist/esm/chunk-GLV7VGBH.js +0 -2
- package/dist/esm/chunk-GLV7VGBH.js.map +0 -7
- package/dist/esm/chunk-H3IAGAEL.js +0 -2
- package/dist/esm/chunk-HIKMKGPT.js +0 -2
- package/dist/esm/chunk-HIKMKGPT.js.map +0 -7
- package/dist/esm/chunk-HKPXDQ2B.js +0 -2
- package/dist/esm/chunk-HT7RFHLW.js +0 -2
- package/dist/esm/chunk-HT7RFHLW.js.map +0 -7
- package/dist/esm/chunk-IUER6BNH.js +0 -12
- package/dist/esm/chunk-IUER6BNH.js.map +0 -7
- package/dist/esm/chunk-IVQHRM33.js +0 -2
- package/dist/esm/chunk-IVQHRM33.js.map +0 -7
- package/dist/esm/chunk-JBHRV364.js +0 -2
- package/dist/esm/chunk-KS4U4VPH.js +0 -2
- package/dist/esm/chunk-KS4U4VPH.js.map +0 -7
- package/dist/esm/chunk-KT2CMUS5.js +0 -2
- package/dist/esm/chunk-KT2CMUS5.js.map +0 -7
- package/dist/esm/chunk-L2R62BOB.js +0 -2
- package/dist/esm/chunk-L2R62BOB.js.map +0 -7
- package/dist/esm/chunk-LHIS3UKQ.js +0 -2
- package/dist/esm/chunk-LHIS3UKQ.js.map +0 -7
- package/dist/esm/chunk-LVCUY2OS.js +0 -2
- package/dist/esm/chunk-M7I6ISPL.js +0 -2
- package/dist/esm/chunk-M7I6ISPL.js.map +0 -7
- package/dist/esm/chunk-MGQ4A2FI.js +0 -2
- package/dist/esm/chunk-MHANZINI.js +0 -2
- package/dist/esm/chunk-MHANZINI.js.map +0 -7
- package/dist/esm/chunk-MYYXOFU5.js +0 -1
- package/dist/esm/chunk-NNZTSXKH.js +0 -2
- package/dist/esm/chunk-NQDMTOGB.js +0 -2
- package/dist/esm/chunk-NQDMTOGB.js.map +0 -7
- package/dist/esm/chunk-OA7C34MJ.js +0 -1
- package/dist/esm/chunk-PJR6GRZC.js +0 -2
- package/dist/esm/chunk-PJR6GRZC.js.map +0 -7
- package/dist/esm/chunk-PPZY7PJA.js +0 -2
- package/dist/esm/chunk-PPZY7PJA.js.map +0 -7
- package/dist/esm/chunk-Q4IA622Q.js +0 -2
- package/dist/esm/chunk-Q6MFPATL.js +0 -2
- package/dist/esm/chunk-Q6MFPATL.js.map +0 -7
- package/dist/esm/chunk-QGCXTULQ.js +0 -2
- package/dist/esm/chunk-QGCXTULQ.js.map +0 -7
- package/dist/esm/chunk-QOHJIF25.js +0 -2
- package/dist/esm/chunk-QOHJIF25.js.map +0 -7
- package/dist/esm/chunk-R4XJNQX5.js +0 -2
- package/dist/esm/chunk-R4XJNQX5.js.map +0 -7
- package/dist/esm/chunk-S6GWR6EZ.js +0 -2
- package/dist/esm/chunk-SKOYHBIE.js +0 -2
- package/dist/esm/chunk-STPMPY3X.js +0 -1
- package/dist/esm/chunk-TZTUPQYK.js +0 -2
- package/dist/esm/chunk-UE3HATOA.js +0 -2
- package/dist/esm/chunk-UE3HATOA.js.map +0 -7
- package/dist/esm/chunk-UICSVJ3B.js +0 -1
- package/dist/esm/chunk-UONSKZQT.js +0 -2
- package/dist/esm/chunk-V32EP3S7.js +0 -2
- package/dist/esm/chunk-V32EP3S7.js.map +0 -7
- package/dist/esm/chunk-VPSMETY2.js +0 -2
- package/dist/esm/chunk-VXQQ6KXI.js +0 -2
- package/dist/esm/chunk-VXQQ6KXI.js.map +0 -7
- package/dist/esm/chunk-WOR3JCLX.js +0 -1
- package/dist/esm/chunk-WOR3JCLX.js.map +0 -7
- package/dist/esm/chunk-X4A3XRBY.js +0 -2
- package/dist/esm/chunk-XKSU3NLG.js +0 -2
- package/dist/esm/chunk-XRCMPBAY.js +0 -2
- package/dist/esm/chunk-XRCMPBAY.js.map +0 -7
- package/dist/esm/chunk-XZQSSRTG.js +0 -2
- package/dist/esm/chunk-Y3JYEEFB.js +0 -2
- package/dist/esm/chunk-Y3JYEEFB.js.map +0 -7
- package/dist/esm/chunk-YIK4ACXS.js +0 -2
- package/dist/esm/chunk-YIK4ACXS.js.map +0 -7
- package/dist/esm/chunk-YXLDRDHW.js +0 -2
- package/dist/esm/chunk-YZM54IJE.js +0 -2
- package/dist/esm/chunk-YZM54IJE.js.map +0 -7
- package/dist/esm/chunk-ZEX2DECM.js +0 -2
- package/dist/esm/chunk-ZEX2DECM.js.map +0 -7
- package/dist/esm/chunk-ZJI2IK7C.js +0 -2
- package/dist/esm/chunk-ZJI2IK7C.js.map +0 -7
- package/dist/esm/chunk-ZNDCZM5A.js +0 -2
- /package/dist/esm/{chunk-ELAW7ZUG.js.map → chunk-6FLLFCBU.js.map} +0 -0
- /package/dist/esm/{chunk-2KZ4NI3X.js.map → chunk-A2OMWZI7.js.map} +0 -0
- /package/dist/esm/{chunk-6DWDNKLS.js.map → chunk-AYKOOEZR.js.map} +0 -0
- /package/dist/esm/{chunk-7FTUTUMD.js.map → chunk-IZXML75Y.js.map} +0 -0
- /package/dist/esm/{chunk-MYYXOFU5.js.map → chunk-J3QIUJ6F.js.map} +0 -0
- /package/dist/esm/{chunk-PBFSBHBS.js.map → chunk-JUY7CBSL.js.map} +0 -0
- /package/dist/esm/{chunk-OA7C34MJ.js.map → chunk-JZ5Z53MN.js.map} +0 -0
- /package/dist/esm/{chunk-OS3FCYZY.js.map → chunk-NG54K6FL.js.map} +0 -0
- /package/dist/esm/{chunk-STPMPY3X.js.map → chunk-VQPANPMI.js.map} +0 -0
- /package/dist/esm/{chunk-UICSVJ3B.js.map → chunk-WH7PQSSG.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/_internal/shell-pane.tsx", "../../../../src/hooks/use-breakpoint.ts", "../../../../src/components/shell.types.ts", "../../../../src/components/_internal/shell-store.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { readBreakpoint, useBreakpoint } from '../../hooks/use-breakpoint.js';\nimport type { Breakpoint, PaneName, PresentationValue } from '../shell.types.js';\nimport {\n constantOf,\n notifyShellStore,\n tableAttributes,\n tableOf,\n usePeeking,\n useShellStore,\n useStableKey,\n warnOnce,\n type OpenChangeReason,\n type PaneEntry,\n type PaneValue,\n type Table,\n} from './shell-store.js';\n\ntype ResponsiveValue = PaneValue | Partial<Record<Breakpoint, PaneValue>>;\n\nexport type UsePaneOptions = {\n name: PaneName;\n /** The component's display name, for warnings: `Inspector`, `Sidebar`, \u2026 */\n label: string;\n /** The prop names a warning should use: `open`/`defaultOpen`, or `state`/`defaultState`. */\n propNames: { controlled: string; default: string };\n id: string | undefined;\n /** The controlled value. A responsive object is deprecated: it is resolved against the current breakpoint. */\n controlled: ResponsiveValue | undefined;\n /**\n * The uncontrolled default. A single value fixes where the pane starts. A\n * responsive object leaves the pane untouched (`auto`), with that object as\n * what it shows at each breakpoint.\n */\n defaultValue: ResponsiveValue | undefined;\n /** The pane's presentation at every breakpoint. Pass a memoised table. */\n presentationTable: Table<PresentationValue>;\n /** What an untouched pane shows where no default says otherwise. Pass a module-level function. */\n builtIn: (presentation: PresentationValue) => PaneValue;\n /** Reports a change a user made. Never called on mount or on a resize. */\n onChange: ((value: PaneValue, reason: OpenChangeReason) => void) | undefined;\n /** The value a toggle moves to. Defaults to open and closed in turn. */\n toggleNext?: (current: PaneValue, defaultHere: PaneValue | undefined) => PaneValue;\n onExpand: (() => void) | undefined;\n onCollapse: (() => void) | undefined;\n /** The pane's designed open width, published for the panes beside it. */\n size: number;\n};\n\nexport type PaneController = ReturnType<typeof usePane>;\n\nconst isMap = (value: ResponsiveValue | undefined): value is Partial<Record<Breakpoint, PaneValue>> => typeof value === 'object' && value !== null;\n\n/** The first value a responsive object states, smallest breakpoint first. */\nfunction firstStated(map: Partial<Record<Breakpoint, PaneValue>>): PaneValue {\n for (const bp of ['initial', 'xs', 'sm', 'md', 'lg', 'xl'] as const) {\n const value = map[bp];\n if (value !== undefined) return value;\n }\n return 'closed';\n}\n\n/** Everything the togglable panes share: their state, their registry entry and their callbacks. */\nexport function usePane(options: UsePaneOptions) {\n const { name, label, propNames, presentationTable, builtIn } = options;\n const store = useShellStore(`Shell.${label}`);\n const generatedId = React.useId();\n const id = options.id ?? `shell-${name}${generatedId}`;\n\n const controlled = options.controlled !== undefined;\n const controlledIsMap = isMap(options.controlled);\n if (controlledIsMap) {\n warnOnce(\n `Shell.${label}: a responsive \\`${propNames.controlled}\\` is deprecated and is removed in 1.0. ` +\n `Pass a boolean and decide it from your own state, or use \\`${propNames.default}\\` with a responsive object.`,\n );\n }\n\n // A responsive controlled value is resolved the way a responsive default\n // is: it becomes the table an untouched pane follows, so the stylesheet\n // answers it at each breakpoint (right in the server HTML, with no\n // callback on a crossing) and the app's prop is still the only writer.\n const controlledMap = controlledIsMap ? (options.controlled as Partial<Record<Breakpoint, PaneValue>>) : undefined;\n const autoSource = controlledMap ?? (isMap(options.defaultValue) ? options.defaultValue : undefined);\n const autoKey = useStableKey(autoSource);\n const [inner, setInner] = React.useState<'auto' | PaneValue>(() => (typeof options.defaultValue === 'string' ? options.defaultValue : 'auto'));\n\n // What an untouched pane shows at each breakpoint: a responsive default\n // where it states one, the pane's own default where it does not.\n const autoTable = React.useMemo(\n () => (controlledMap ? tableOf<PaneValue>(controlledMap, () => firstStated(controlledMap)) : tableOf<PaneValue>(autoSource, (bp) => builtIn(presentationTable[bp]))),\n // `autoKey` stands for the responsive object, which is usually a new literal each render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [autoKey, controlledIsMap, presentationTable, builtIn],\n );\n\n let state: 'auto' | PaneValue = inner;\n if (controlled) state = controlledMap ? 'auto' : (options.controlled as PaneValue);\n\n // Only a pane whose answer depends on the window subscribes to it, so a\n // pane with one presentation and one default never re-renders on a resize.\n const needsBreakpoint = constantOf(presentationTable) === undefined || (state === 'auto' && constantOf(autoTable) === undefined);\n const { breakpoint, ready } = useBreakpoint(needsBreakpoint);\n\n /** A table's value now: known without the window when it holds one value, else once the breakpoint is known. */\n const now = <T,>(table: Table<T>): T | undefined => {\n const constant = constantOf(table);\n if (constant !== undefined) return constant;\n return ready ? table[breakpoint] : undefined;\n };\n\n const value: PaneValue | undefined = state === 'auto' ? now(autoTable) : state;\n const presentation = now(presentationTable);\n const overlaying = presentation === 'overlay';\n const shown = value === undefined ? undefined : value !== 'closed';\n const overlayLive = shown === true && overlaying;\n\n // Stable actions over the latest values, so the registry entry changes only\n // when a fact it carries changes.\n const defaultValue = options.defaultValue;\n const latest = React.useRef({ state, value, autoTable, defaultValue, controlled, onChange: options.onChange, toggleNext: options.toggleNext });\n React.useLayoutEffect(() => {\n latest.current = { state, value, autoTable, defaultValue, controlled, onChange: options.onChange, toggleNext: options.toggleNext };\n });\n\n /**\n * What the pane shows, and its default, at the window's breakpoint right\n * now. Asked at the moment of an action rather than taken from the last\n * render: a touched pane no longer follows the window, and a click can land\n * before the mirror has resolved after hydration.\n */\n const valueNow = React.useCallback((): PaneValue | undefined => {\n const current = latest.current;\n if (current.value !== undefined) return current.value;\n return current.state === 'auto' ? current.autoTable[readBreakpoint()] : undefined;\n }, []);\n const defaultHereNow = React.useCallback((): PaneValue | undefined => {\n const current = latest.current;\n if (typeof current.defaultValue === 'string') return current.defaultValue;\n return isMap(current.defaultValue) ? current.autoTable[readBreakpoint()] : undefined;\n }, []);\n\n const setValue = React.useCallback(\n (next: PaneValue, reason: OpenChangeReason) => {\n const current = latest.current;\n if (valueNow() === next) return;\n current.onChange?.(next, reason);\n if (!current.controlled) setInner(next);\n },\n [valueNow],\n );\n\n const toggle = React.useCallback(\n (reason: OpenChangeReason) => {\n const current = latest.current;\n const from = valueNow() ?? 'closed';\n const next = current.toggleNext ? current.toggleNext(from, defaultHereNow()) : from === 'closed' ? 'open' : 'closed';\n setValue(next, reason);\n },\n [setValue, valueNow, defaultHereNow],\n );\n\n // The pane's element, for the Root's containment and focus.\n const elementRef = React.useRef<HTMLElement | null>(null);\n const setElement = React.useCallback((node: HTMLElement | null) => {\n elementRef.current = node;\n }, []);\n\n // Registration. A layout effect so a Trigger's aria attributes and the\n // Root's containment are right before the browser paints.\n React.useLayoutEffect(() => {\n const entry: PaneEntry = {\n name,\n id,\n el: elementRef.current,\n value,\n presentation,\n presentationTable,\n overlayLive,\n size: options.size,\n setValue,\n toggle,\n };\n store.entries.set(name, entry);\n notifyShellStore(store);\n return () => {\n if (store.entries.get(name) === entry) {\n store.entries.delete(name);\n notifyShellStore(store);\n }\n };\n }, [store, name, id, value, presentation, presentationTable, overlayLive, options.size, setValue, toggle]);\n\n // onExpand/onCollapse fire when the pane's state changes and that changes\n // whether it is shown: a user's toggle, or a controlled prop. Never on\n // mount, and never because the window crossed a breakpoint.\n const callbacks = React.useRef({ onExpand: options.onExpand, onCollapse: options.onCollapse });\n React.useLayoutEffect(() => {\n callbacks.current = { onExpand: options.onExpand, onCollapse: options.onCollapse };\n });\n const previous = React.useRef({ state, shown });\n React.useEffect(() => {\n const before = previous.current;\n if (before.state !== state && before.shown !== undefined && shown !== undefined && before.shown !== shown) {\n if (shown) callbacks.current.onExpand?.();\n else callbacks.current.onCollapse?.();\n }\n previous.current = { state, shown };\n }, [state, shown]);\n\n // Development guards. Once per mount, not once per render.\n React.useLayoutEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n if (options.controlled !== undefined && options.defaultValue !== undefined) {\n console.error(`Shell.${label}: Do not pass both \\`${propNames.controlled}\\` and \\`${propNames.default}\\`. Choose one.`);\n }\n // Mount only: this is the once-per-mount guard.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const wasControlled = React.useRef(controlled);\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n if (wasControlled.current !== controlled) {\n console.warn(`Shell.${label}: Switching between controlled and uncontrolled \\`${propNames.controlled}\\` is not supported.`);\n wasControlled.current = controlled;\n }\n }, [controlled, label, propNames.controlled]);\n\n const peeking = usePeeking(store, name) && shown === false && !overlaying;\n\n return {\n store,\n id,\n state,\n value,\n shown,\n presentation,\n overlaying,\n overlayLive,\n peeking,\n ready,\n breakpoint,\n autoTable,\n setValue,\n toggle,\n defaultHereNow,\n setElement,\n };\n}\n\n/** The data attributes every togglable pane renders. */\nexport function paneAttributes(pane: PaneController, presentationAttributes: Record<string, string>) {\n const { state, value, presentation, shown } = pane;\n return {\n ...presentationAttributes,\n 'data-state': state,\n ...(state === 'auto' ? tableAttributes('auto', pane.autoTable) : {}),\n 'data-presentation': presentation,\n 'data-mode': value === undefined ? undefined : value === 'closed' ? 'collapsed' : 'expanded',\n // Kept for stylesheets written against 0.7: set while a stacked pane is open.\n 'data-open': presentation === 'stacked' && shown ? '' : undefined,\n 'data-peek': pane.peeking ? '' : undefined,\n } as const;\n}\n\n/** A pane's own presentation, as a table and as the attributes the stylesheet reads. */\nexport function usePresentationTable(presentation: Parameters<typeof tableOf<PresentationValue>>[0], fallback: PresentationValue) {\n const key = useStableKey(presentation);\n const table = React.useMemo(\n () => tableOf<PresentationValue>(presentation, () => fallback),\n // `key` stands for `presentation`, which is usually a new literal each render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [key, fallback],\n );\n // One value is the plain `data-presentation` the pane renders anyway; several\n // are written per breakpoint, so the stylesheet can place the pane before\n // any script runs.\n const attributes = React.useMemo(() => (constantOf(table) === undefined ? tableAttributes('presentation', table) : ({} as Record<string, string>)), [table]);\n return { table, attributes };\n}\n", "'use client';\n\nimport * as React from 'react';\nimport { _BREAKPOINTS, type Breakpoint } from '../components/shell.types.js';\n\nconst QUERIES = Object.entries(_BREAKPOINTS) as Array<[Breakpoint, string]>;\n\ntype Listener = () => void;\n\n/**\n * One set of `MediaQueryList`s and one set of listeners for the whole\n * application. Every component that asks for the breakpoint used to create and\n * subscribe to its own copy of all five queries.\n */\nlet mediaQueryLists: Array<[Breakpoint, MediaQueryList]> | null = null;\nconst listeners = new Set<Listener>();\nlet cachedBreakpoint: Breakpoint | null = null;\n\nfunction getMediaQueryLists() {\n mediaQueryLists ??= QUERIES.map(([name, query]) => [name, window.matchMedia(query)] as [Breakpoint, MediaQueryList]);\n return mediaQueryLists;\n}\n\nfunction computeBreakpoint(): Breakpoint {\n // The largest matching query wins; `_BREAKPOINTS` is ordered smallest first.\n let matched: Breakpoint = 'initial';\n for (const [name, mql] of getMediaQueryLists()) {\n if (mql.matches) matched = name;\n }\n return matched;\n}\n\nfunction handleChange() {\n const next = computeBreakpoint();\n if (next === cachedBreakpoint) return;\n cachedBreakpoint = next;\n listeners.forEach((listener) => listener());\n}\n\nfunction subscribe(listener: Listener) {\n if (typeof window === 'undefined') return () => {};\n\n if (listeners.size === 0) {\n cachedBreakpoint = computeBreakpoint();\n for (const [, mql] of getMediaQueryLists()) {\n // Safari below 14 only has the deprecated listener API.\n if (typeof mql.addEventListener === 'function') mql.addEventListener('change', handleChange);\n else mql.addListener?.(handleChange);\n }\n }\n\n listeners.add(listener);\n\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n\n for (const [, mql] of getMediaQueryLists()) {\n try {\n if (typeof mql.removeEventListener === 'function') mql.removeEventListener('change', handleChange);\n else mql.removeListener?.(handleChange);\n } catch (error) {\n // Removal can throw in edge cases, e.g. the list was already torn down.\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[useBreakpoint] MediaQueryList cleanup warning:', error);\n }\n }\n }\n cachedBreakpoint = null;\n };\n}\n\n/**\n * `getSnapshot` must return a referentially stable value between changes, so it\n * reads the cache that `handleChange` maintains rather than recomputing.\n */\nfunction getSnapshot(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n cachedBreakpoint ??= computeBreakpoint();\n return cachedBreakpoint;\n}\n\nfunction getServerSnapshot(): Breakpoint {\n return 'initial';\n}\n\n/**\n * The breakpoint right now, outside React's render. For an effect that needs\n * the answer at the moment it runs rather than the one its render saw.\n */\nexport function readBreakpoint(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n return computeBreakpoint();\n}\n\nconst getReadySnapshot = () => true;\nconst getReadyServerSnapshot = () => false;\n\nconst noopSubscribe = () => () => {};\nconst getInitialSnapshot = (): Breakpoint => 'initial';\n\n/**\n * The current breakpoint, and whether it has been resolved against a real\n * viewport yet (`false` on the server and during hydration).\n *\n * Reads through `useSyncExternalStore` rather than settling into state from an\n * effect. On a client render the very first pass already has the real\n * breakpoint, instead of rendering the whole shell at `initial` and correcting\n * it after the browser has painted.\n *\n * Pass `enabled = false` to skip the subscription (the breakpoint then reads as\n * `initial`).\n */\nexport function useBreakpoint(enabled = true): { breakpoint: Breakpoint; ready: boolean } {\n // Callers with a non-responsive value pass `enabled = false` so they neither\n // subscribe to the media queries nor re-render when the viewport crosses one.\n const breakpoint = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n enabled ? getSnapshot : getInitialSnapshot,\n getServerSnapshot,\n );\n const ready = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n getReadySnapshot,\n getReadyServerSnapshot,\n );\n\n return React.useMemo(() => ({ breakpoint, ready }), [breakpoint, ready]);\n}\n", "import type * as React from 'react';\n\nexport type PresentationValue = 'fixed' | 'overlay' | 'stacked';\n\nexport type ResponsivePresentation = PresentationValue | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PresentationValue>>;\n\nexport type PaneMode = 'expanded' | 'collapsed';\nexport type SidebarMode = 'collapsed' | 'expanded';\n\nexport type ResponsiveMode = PaneMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PaneMode>>;\n\nexport type ResponsiveSidebarMode = SidebarMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', SidebarMode>>;\n\nexport type Responsive<T> = T | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', T>>;\n\nexport type PaneSizePersistence = {\n load?: () => number | Promise<number | undefined> | undefined;\n save?: (size: number) => void | Promise<void>;\n};\n\n/**\n * Why a pane's open state changed. Since 0.8.0 only a user action is reported:\n * `toggle` for a Trigger, a handle double-click or a drag past\n * `collapseThreshold`, and `dismiss` for Escape or a press on the scrim.\n * `init`, `responsive`, `panel` and `left` are kept in the types for\n * compatibility and are never sent.\n */\nexport type PaneOpenChangeReason = 'toggle' | 'dismiss' | 'init' | 'responsive';\n\nexport interface PaneBaseProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n resizable?: boolean;\n collapsible?: boolean;\n /** @deprecated Use `onOpenChange`. Still called when a user's toggle or a controlled prop changes whether the pane is shown; never on mount or when the window crosses a breakpoint. */\n onExpand?: () => void;\n /** @deprecated Use `onOpenChange`. Still called when a user's toggle or a controlled prop changes whether the pane is shown; never on mount or when the window crosses a breakpoint. */\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n /** @deprecated Removed in 1.0. Snap in your own `onSizeChange` and pass `size`. */\n snapPoints?: number[];\n /** @deprecated Removed in 1.0, with `snapPoints`. */\n snapTolerance?: number;\n /** @deprecated Removed in 1.0. Close the pane from your own `onResizeEnd`. */\n collapseThreshold?: number;\n /** @deprecated Removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`. */\n paneId?: string;\n /** @deprecated Removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`. */\n persistence?: PaneSizePersistence;\n}\n\nexport const _BREAKPOINTS = {\n xs: '(min-width: 520px)',\n sm: '(min-width: 768px)',\n md: '(min-width: 1024px)',\n lg: '(min-width: 1280px)',\n xl: '(min-width: 1640px)',\n} as const;\n\nexport type Breakpoint = 'initial' | keyof typeof _BREAKPOINTS;\n\n/** Every breakpoint, smallest first. The stylesheet's @media blocks follow this order. */\nexport const SHELL_BREAKPOINTS: readonly Breakpoint[] = ['initial', 'xs', 'sm', 'md', 'lg', 'xl'];\n\nexport type PaneTarget = 'left' | 'rail' | 'panel' | 'sidebar' | 'inspector' | 'bottom';\n\n/** The panes a Trigger can drive. `left` is the deprecated name for `rail`. */\nexport type PaneName = Exclude<PaneTarget, 'left'>;\n\n/**\n * CSS custom property key type for type-safe style objects.\n * Allows any string prefixed with '--'.\n */\nexport type CSSCustomProperty = `--${string}`;\n\n/**\n * Style object that supports CSS custom properties.\n */\nexport type CSSPropertiesWithVars = React.CSSProperties & {\n [key: CSSCustomProperty]: string | number | undefined;\n};\n", "'use client';\n\n/**\n * The Shell's state model (0.8.0), ported from kookie-ui-v2's Shell.\n *\n * - State lives on the pane. Each pane holds `auto | open | closed`.\n * `auto` means untouched: the stylesheet decides what\n * it shows at each breakpoint, so first paint is right with no script, the\n * server and the client render the same markup, and no open-state callback\n * can fire on mount or on a resize.\n * - The one thing that crosses the Shell is a registry keyed by pane name.\n * Each pane registers what it is and how to drive it; a Trigger looks its\n * pane up, and the Root reads the set of live overlays. Nothing scans\n * children and nothing checks `displayName`.\n * - The responsive props are resolved into a table with one value per\n * breakpoint, from the props alone, with no window. The table is written to\n * the DOM as data attributes for the stylesheet, and read again in JS by the\n * mirror that sets `aria-expanded`. One table, two readers, so they agree by\n * construction.\n */\nimport * as React from 'react';\nimport { SHELL_BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneName, PresentationValue } from '../shell.types.js';\n\n/* \u2500\u2500 Breakpoint tables \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nexport type Table<T> = Record<Breakpoint, T>;\n\n/** What a pane shows: open or closed. */\nexport type PaneValue = 'open' | 'closed';\n\ntype ResponsiveInput<T> = T | Partial<Record<Breakpoint, T>> | undefined;\n\nfunction isMap<T>(value: ResponsiveInput<T>): value is Partial<Record<Breakpoint, T>> {\n return typeof value === 'object' && value !== null;\n}\n\n/**\n * A responsive value at every breakpoint. A breakpoint takes the largest key\n * at or below it, the same fallback `useResponsiveValue` used; a breakpoint\n * below every key takes `fallback`.\n */\nexport function tableOf<T>(value: ResponsiveInput<T>, fallback: (bp: Breakpoint) => T): Table<T> {\n const table = {} as Table<T>;\n let carried: { value: T } | null = null;\n for (const bp of SHELL_BREAKPOINTS) {\n if (value !== undefined && !isMap(value)) {\n table[bp] = value;\n continue;\n }\n const entry = isMap(value) ? value[bp] : undefined;\n if (entry !== undefined) carried = { value: entry };\n table[bp] = carried ? carried.value : fallback(bp);\n }\n return table;\n}\n\n/** The table's one value, when it has only one. */\nexport function constantOf<T>(table: Table<T>): T | undefined {\n const first = table.initial;\n return SHELL_BREAKPOINTS.every((bp) => table[bp] === first) ? first : undefined;\n}\n\n/**\n * The table as data attributes: `data-<name>` when it holds one value, one\n * `data-<name>-<bp>` per breakpoint when it holds several. The stylesheet has\n * a rule for each spelling.\n */\nexport function tableAttributes(name: string, table: Table<string>): Record<string, string> {\n const constant = constantOf(table);\n if (constant !== undefined) return { [`data-${name}`]: constant };\n const attributes: Record<string, string> = {};\n for (const bp of SHELL_BREAKPOINTS) attributes[`data-${name}-${bp}`] = table[bp];\n return attributes;\n}\n\n/**\n * A responsive prop object is usually an inline literal, a new identity every\n * render. Keying memoisation on its contents keeps the tables, and so the\n * registry entries, stable across renders that change nothing.\n */\nexport function useStableKey(value: unknown): string {\n return typeof value === 'object' && value !== null ? JSON.stringify(value) : String(value);\n}\n\nexport const FIXED_TABLE: Table<PresentationValue> = tableOf<PresentationValue>('fixed', () => 'fixed');\n\n/* \u2500\u2500 The registry \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nexport type OpenChangeReason = 'toggle' | 'dismiss';\n\nexport type PaneEntry = {\n name: PaneName;\n id: string;\n el: HTMLElement | null;\n /** What the pane shows now; `undefined` while an untouched pane cannot know (before the breakpoint is known). */\n value: PaneValue | undefined;\n /** How the pane is presented now, when known. */\n presentation: PresentationValue | undefined;\n /** The pane's own presentation at every breakpoint. A Panel with none of its own follows the Rail's. */\n presentationTable: Table<PresentationValue>;\n /** Open and presented as an overlay: what the scrim and Escape close, and what containment exempts. */\n overlayLive: boolean;\n /** The pane's designed open width, for panes that sit beside it when floating. */\n size: number;\n setValue: (value: PaneValue, reason: OpenChangeReason) => void;\n toggle: (reason: OpenChangeReason) => void;\n};\n\nexport type ShellStore = {\n entries: Map<PaneName, PaneEntry>;\n listeners: Set<() => void>;\n /**\n * What a subscriber reads. useSyncExternalStore needs a value that is stable\n * between notifications, and a number is; the Map, or anything derived from\n * it, would be a new identity on every read.\n */\n version: number;\n /** The pane a hovered Trigger is previewing, if any. Layout only. */\n peek: PaneName | null;\n};\n\nexport function createShellStore(): ShellStore {\n return { entries: new Map(), listeners: new Set(), version: 0, peek: null };\n}\n\nexport function notifyShellStore(store: ShellStore) {\n store.version += 1;\n for (const listener of store.listeners) listener();\n}\n\nexport function subscribeShellStore(store: ShellStore, listener: () => void) {\n store.listeners.add(listener);\n return () => {\n store.listeners.delete(listener);\n };\n}\n\nexport function setShellPeek(store: ShellStore, peek: PaneName | null) {\n if (store.peek === peek) return;\n store.peek = peek;\n notifyShellStore(store);\n}\n\nexport const ShellStoreContext = React.createContext<ShellStore | null>(null);\n\nexport function useShellStore(part: string): ShellStore {\n const store = React.useContext(ShellStoreContext);\n if (!store) throw new Error(`${part} must be used within <Shell.Root>`);\n return store;\n}\n\n/** One pane's registry entry. Re-renders only when that entry is replaced. */\nexport function usePaneEntry(store: ShellStore, name: PaneName): PaneEntry | undefined {\n const subscribe = React.useCallback((listener: () => void) => subscribeShellStore(store, listener), [store]);\n const getSnapshot = React.useCallback(() => store.entries.get(name), [store, name]);\n return React.useSyncExternalStore(subscribe, getSnapshot, () => undefined);\n}\n\n/**\n * Whether this pane is the one being previewed. A boolean per pane rather than\n * the peek target itself, so hovering one Trigger re-renders one pane, not all.\n */\nexport function usePeeking(store: ShellStore, name: PaneName): boolean {\n const subscribe = React.useCallback((listener: () => void) => subscribeShellStore(store, listener), [store]);\n return React.useSyncExternalStore(\n subscribe,\n () => store.peek === name,\n () => false,\n );\n}\n\n/* \u2500\u2500 Inset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nexport type InsetPaneId = 'rail' | 'panel' | 'sidebar' | 'content' | 'inspector' | 'bottom';\n\nexport const ShellInsetContext = React.createContext<{\n registerInset: (id: InsetPaneId) => void;\n unregisterInset: (id: InsetPaneId) => void;\n} | null>(null);\n\n/** Registers a pane's `inset` with the Root, which paints the backdrop while any pane is inset. */\nexport function useInsetRegistration(id: InsetPaneId, inset: boolean | undefined) {\n const ctx = React.useContext(ShellInsetContext);\n if (!ctx) throw new Error('Shell panes must be used within <Shell.Root>');\n const { registerInset, unregisterInset } = ctx;\n React.useLayoutEffect(() => {\n if (!inset) return;\n registerInset(id);\n return () => unregisterInset(id);\n }, [id, inset, registerInset, unregisterInset]);\n}\n\n/* \u2500\u2500 Development warnings \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nconst warned = new Set<string>();\n\n/** A deprecation warning, once per message per page load. Development only. */\nexport function warnOnce(message: string) {\n if (process.env.NODE_ENV === 'production') return;\n if (warned.has(message)) return;\n warned.add(message);\n console.warn(`[kookie-ui] ${message}`);\n}\n"],
|
|
5
|
-
"mappings": "slBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,oBAAAE,GAAA,YAAAC,GAAA,yBAAAC,KAAA,eAAAC,GAAAL,IAEA,IAAAM,EAAuB,
|
|
6
|
-
"names": ["shell_pane_exports", "__export", "paneAttributes", "usePane", "usePresentationTable", "__toCommonJS", "React", "React", "_BREAKPOINTS", "SHELL_BREAKPOINTS", "QUERIES", "_BREAKPOINTS", "mediaQueryLists", "listeners", "cachedBreakpoint", "getMediaQueryLists", "name", "query", "computeBreakpoint", "matched", "mql", "handleChange", "next", "listener", "subscribe", "getSnapshot", "getServerSnapshot", "readBreakpoint", "getReadySnapshot", "getReadyServerSnapshot", "noopSubscribe", "getInitialSnapshot", "useBreakpoint", "enabled", "breakpoint", "ready", "React", "isMap", "value", "tableOf", "fallback", "table", "carried", "bp", "SHELL_BREAKPOINTS", "entry", "constantOf", "first", "tableAttributes", "name", "constant", "attributes", "useStableKey", "FIXED_TABLE", "notifyShellStore", "store", "listener", "subscribeShellStore", "ShellStoreContext", "useShellStore", "part", "store", "usePeeking", "store", "name", "subscribe", "listener", "subscribeShellStore", "ShellInsetContext", "isMap", "value", "firstStated", "map", "bp", "usePane", "options", "name", "label", "propNames", "presentationTable", "builtIn", "store", "useShellStore", "generatedId", "id", "controlled", "controlledIsMap", "controlledMap", "autoSource", "autoKey", "useStableKey", "inner", "setInner", "autoTable", "tableOf", "state", "needsBreakpoint", "constantOf", "breakpoint", "ready", "useBreakpoint", "now", "table", "constant", "presentation", "overlaying", "shown", "overlayLive", "defaultValue", "latest", "valueNow", "current", "readBreakpoint", "defaultHereNow", "setValue", "next", "reason", "toggle", "from", "elementRef", "setElement", "node", "entry", "notifyShellStore", "callbacks", "previous", "before", "wasControlled", "peeking", "usePeeking", "paneAttributes", "pane", "presentationAttributes", "tableAttributes", "usePresentationTable", "fallback", "key", "attributes"]
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { useLayoutEffect } from 'radix-ui/internal';\nimport { readBreakpoint, useBreakpoint } from '../../hooks/use-breakpoint.js';\nimport type { Breakpoint, PaneName, PresentationValue } from '../shell.types.js';\nimport {\n constantOf,\n notifyShellStore,\n tableAttributes,\n tableOf,\n usePeeking,\n useShellStore,\n useStableKey,\n warnOnce,\n type OpenChangeReason,\n type PaneEntry,\n type PaneValue,\n type Table,\n} from './shell-store.js';\n\ntype ResponsiveValue = PaneValue | Partial<Record<Breakpoint, PaneValue>>;\n\nexport type UsePaneOptions = {\n name: PaneName;\n /** The component's display name, for warnings: `Inspector`, `Sidebar`, \u2026 */\n label: string;\n /** The prop names a warning should use: `open`/`defaultOpen`, or `state`/`defaultState`. */\n propNames: { controlled: string; default: string };\n id: string | undefined;\n /** The controlled value. A responsive object is deprecated: it is resolved against the current breakpoint. */\n controlled: ResponsiveValue | undefined;\n /**\n * The uncontrolled default. A single value fixes where the pane starts. A\n * responsive object leaves the pane untouched (`auto`), with that object as\n * what it shows at each breakpoint.\n */\n defaultValue: ResponsiveValue | undefined;\n /** The pane's presentation at every breakpoint. Pass a memoised table. */\n presentationTable: Table<PresentationValue>;\n /** What an untouched pane shows where no default says otherwise. Pass a module-level function. */\n builtIn: (presentation: PresentationValue) => PaneValue;\n /** Reports a change a user made. Never called on mount or on a resize. */\n onChange: ((value: PaneValue, reason: OpenChangeReason) => void) | undefined;\n /** The value a toggle moves to. Defaults to open and closed in turn. */\n toggleNext?: (current: PaneValue, defaultHere: PaneValue | undefined) => PaneValue;\n onExpand: (() => void) | undefined;\n onCollapse: (() => void) | undefined;\n /** The pane's designed open width, published for the panes beside it. */\n size: number;\n};\n\nexport type PaneController = ReturnType<typeof usePane>;\n\nconst isMap = (value: ResponsiveValue | undefined): value is Partial<Record<Breakpoint, PaneValue>> => typeof value === 'object' && value !== null;\n\n/** The first value a responsive object states, smallest breakpoint first. */\nfunction firstStated(map: Partial<Record<Breakpoint, PaneValue>>): PaneValue {\n for (const bp of ['initial', 'xs', 'sm', 'md', 'lg', 'xl'] as const) {\n const value = map[bp];\n if (value !== undefined) return value;\n }\n return 'closed';\n}\n\n/** Everything the togglable panes share: their state, their registry entry and their callbacks. */\nexport function usePane(options: UsePaneOptions) {\n const { name, label, propNames, presentationTable, builtIn } = options;\n const store = useShellStore(`Shell.${label}`);\n const generatedId = React.useId();\n const id = options.id ?? `shell-${name}${generatedId}`;\n\n const controlled = options.controlled !== undefined;\n const controlledIsMap = isMap(options.controlled);\n if (controlledIsMap) {\n warnOnce(\n `Shell.${label}: a responsive \\`${propNames.controlled}\\` is deprecated and is removed in 1.0. ` +\n `Pass a boolean and decide it from your own state, or use \\`${propNames.default}\\` with a responsive object.`,\n );\n }\n\n // A responsive controlled value is resolved the way a responsive default\n // is: it becomes the table an untouched pane follows, so the stylesheet\n // answers it at each breakpoint (right in the server HTML, with no\n // callback on a crossing) and the app's prop is still the only writer.\n const controlledMap = controlledIsMap ? (options.controlled as Partial<Record<Breakpoint, PaneValue>>) : undefined;\n const autoSource = controlledMap ?? (isMap(options.defaultValue) ? options.defaultValue : undefined);\n const autoKey = useStableKey(autoSource);\n const [inner, setInner] = React.useState<'auto' | PaneValue>(() => (typeof options.defaultValue === 'string' ? options.defaultValue : 'auto'));\n\n // What an untouched pane shows at each breakpoint: a responsive default\n // where it states one, the pane's own default where it does not.\n const autoTable = React.useMemo(\n () => (controlledMap ? tableOf<PaneValue>(controlledMap, () => firstStated(controlledMap)) : tableOf<PaneValue>(autoSource, (bp) => builtIn(presentationTable[bp]))),\n // `autoKey` stands for the responsive object, which is usually a new literal each render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [autoKey, controlledIsMap, presentationTable, builtIn],\n );\n\n let state: 'auto' | PaneValue = inner;\n if (controlled) state = controlledMap ? 'auto' : (options.controlled as PaneValue);\n\n // Only a pane whose answer depends on the window subscribes to it, so a\n // pane with one presentation and one default never re-renders on a resize.\n const needsBreakpoint = constantOf(presentationTable) === undefined || (state === 'auto' && constantOf(autoTable) === undefined);\n const { breakpoint, ready } = useBreakpoint(needsBreakpoint);\n\n /** A table's value now: known without the window when it holds one value, else once the breakpoint is known. */\n const now = <T,>(table: Table<T>): T | undefined => {\n const constant = constantOf(table);\n if (constant !== undefined) return constant;\n return ready ? table[breakpoint] : undefined;\n };\n\n const value: PaneValue | undefined = state === 'auto' ? now(autoTable) : state;\n const presentation = now(presentationTable);\n const overlaying = presentation === 'overlay';\n const shown = value === undefined ? undefined : value !== 'closed';\n const overlayLive = shown === true && overlaying;\n\n // Stable actions over the latest values, so the registry entry changes only\n // when a fact it carries changes.\n const defaultValue = options.defaultValue;\n const latest = React.useRef({ state, value, autoTable, defaultValue, controlled, onChange: options.onChange, toggleNext: options.toggleNext });\n useLayoutEffect(() => {\n latest.current = { state, value, autoTable, defaultValue, controlled, onChange: options.onChange, toggleNext: options.toggleNext };\n });\n\n /**\n * What the pane shows, and its default, at the window's breakpoint right\n * now. Asked at the moment of an action rather than taken from the last\n * render: a touched pane no longer follows the window, and a click can land\n * before the mirror has resolved after hydration.\n */\n const valueNow = React.useCallback((): PaneValue | undefined => {\n const current = latest.current;\n if (current.value !== undefined) return current.value;\n return current.state === 'auto' ? current.autoTable[readBreakpoint()] : undefined;\n }, []);\n const defaultHereNow = React.useCallback((): PaneValue | undefined => {\n const current = latest.current;\n if (typeof current.defaultValue === 'string') return current.defaultValue;\n return isMap(current.defaultValue) ? current.autoTable[readBreakpoint()] : undefined;\n }, []);\n\n const setValue = React.useCallback(\n (next: PaneValue, reason: OpenChangeReason) => {\n const current = latest.current;\n if (valueNow() === next) return;\n current.onChange?.(next, reason);\n if (!current.controlled) setInner(next);\n },\n [valueNow],\n );\n\n const toggle = React.useCallback(\n (reason: OpenChangeReason) => {\n const current = latest.current;\n const from = valueNow() ?? 'closed';\n const next = current.toggleNext ? current.toggleNext(from, defaultHereNow()) : from === 'closed' ? 'open' : 'closed';\n setValue(next, reason);\n },\n [setValue, valueNow, defaultHereNow],\n );\n\n // The pane's element, for the Root's containment and focus.\n const elementRef = React.useRef<HTMLElement | null>(null);\n const setElement = React.useCallback((node: HTMLElement | null) => {\n elementRef.current = node;\n }, []);\n\n // Registration. A layout effect so a Trigger's aria attributes and the\n // Root's containment are right before the browser paints.\n useLayoutEffect(() => {\n const entry: PaneEntry = {\n name,\n id,\n el: elementRef.current,\n value,\n presentation,\n presentationTable,\n overlayLive,\n size: options.size,\n setValue,\n toggle,\n };\n store.entries.set(name, entry);\n notifyShellStore(store);\n return () => {\n if (store.entries.get(name) === entry) {\n store.entries.delete(name);\n notifyShellStore(store);\n }\n };\n }, [store, name, id, value, presentation, presentationTable, overlayLive, options.size, setValue, toggle]);\n\n // onExpand/onCollapse fire when the pane's state changes and that changes\n // whether it is shown: a user's toggle, or a controlled prop. Never on\n // mount, and never because the window crossed a breakpoint.\n const callbacks = React.useRef({ onExpand: options.onExpand, onCollapse: options.onCollapse });\n useLayoutEffect(() => {\n callbacks.current = { onExpand: options.onExpand, onCollapse: options.onCollapse };\n });\n const previous = React.useRef({ state, shown });\n React.useEffect(() => {\n const before = previous.current;\n if (before.state !== state && before.shown !== undefined && shown !== undefined && before.shown !== shown) {\n if (shown) callbacks.current.onExpand?.();\n else callbacks.current.onCollapse?.();\n }\n previous.current = { state, shown };\n }, [state, shown]);\n\n // Development guards. Once per mount, not once per render.\n useLayoutEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n if (options.controlled !== undefined && options.defaultValue !== undefined) {\n console.error(`Shell.${label}: Do not pass both \\`${propNames.controlled}\\` and \\`${propNames.default}\\`. Choose one.`);\n }\n // Mount only: this is the once-per-mount guard.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const wasControlled = React.useRef(controlled);\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'production') return;\n if (wasControlled.current !== controlled) {\n console.warn(`Shell.${label}: Switching between controlled and uncontrolled \\`${propNames.controlled}\\` is not supported.`);\n wasControlled.current = controlled;\n }\n }, [controlled, label, propNames.controlled]);\n\n const peeking = usePeeking(store, name) && shown === false && !overlaying;\n\n return {\n store,\n id,\n state,\n value,\n shown,\n presentation,\n overlaying,\n overlayLive,\n peeking,\n ready,\n breakpoint,\n autoTable,\n setValue,\n toggle,\n defaultHereNow,\n setElement,\n };\n}\n\n/** The data attributes every togglable pane renders. */\nexport function paneAttributes(pane: PaneController, presentationAttributes: Record<string, string>) {\n const { state, value, presentation, shown } = pane;\n return {\n ...presentationAttributes,\n 'data-state': state,\n ...(state === 'auto' ? tableAttributes('auto', pane.autoTable) : {}),\n 'data-presentation': presentation,\n 'data-mode': value === undefined ? undefined : value === 'closed' ? 'collapsed' : 'expanded',\n // Kept for stylesheets written against 0.7: set while a stacked pane is open.\n 'data-open': presentation === 'stacked' && shown ? '' : undefined,\n 'data-peek': pane.peeking ? '' : undefined,\n } as const;\n}\n\n/** A pane's own presentation, as a table and as the attributes the stylesheet reads. */\nexport function usePresentationTable(presentation: Parameters<typeof tableOf<PresentationValue>>[0], fallback: PresentationValue) {\n const key = useStableKey(presentation);\n const table = React.useMemo(\n () => tableOf<PresentationValue>(presentation, () => fallback),\n // `key` stands for `presentation`, which is usually a new literal each render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [key, fallback],\n );\n // One value is the plain `data-presentation` the pane renders anyway; several\n // are written per breakpoint, so the stylesheet can place the pane before\n // any script runs.\n const attributes = React.useMemo(() => (constantOf(table) === undefined ? tableAttributes('presentation', table) : ({} as Record<string, string>)), [table]);\n return { table, attributes };\n}\n", "'use client';\n\nimport * as React from 'react';\nimport { _BREAKPOINTS, type Breakpoint } from '../components/shell.types.js';\n\nconst QUERIES = Object.entries(_BREAKPOINTS) as Array<[Breakpoint, string]>;\n\ntype Listener = () => void;\n\n/**\n * One set of `MediaQueryList`s and one set of listeners for the whole\n * application. Every component that asks for the breakpoint used to create and\n * subscribe to its own copy of all five queries.\n */\nlet mediaQueryLists: Array<[Breakpoint, MediaQueryList]> | null = null;\nconst listeners = new Set<Listener>();\nlet cachedBreakpoint: Breakpoint | null = null;\n\nfunction getMediaQueryLists() {\n mediaQueryLists ??= QUERIES.map(([name, query]) => [name, window.matchMedia(query)] as [Breakpoint, MediaQueryList]);\n return mediaQueryLists;\n}\n\nfunction computeBreakpoint(): Breakpoint {\n // The largest matching query wins; `_BREAKPOINTS` is ordered smallest first.\n let matched: Breakpoint = 'initial';\n for (const [name, mql] of getMediaQueryLists()) {\n if (mql.matches) matched = name;\n }\n return matched;\n}\n\nfunction handleChange() {\n const next = computeBreakpoint();\n if (next === cachedBreakpoint) return;\n cachedBreakpoint = next;\n listeners.forEach((listener) => listener());\n}\n\nfunction subscribe(listener: Listener) {\n if (typeof window === 'undefined') return () => {};\n\n if (listeners.size === 0) {\n cachedBreakpoint = computeBreakpoint();\n for (const [, mql] of getMediaQueryLists()) {\n // Safari below 14 only has the deprecated listener API.\n if (typeof mql.addEventListener === 'function') mql.addEventListener('change', handleChange);\n else mql.addListener?.(handleChange);\n }\n }\n\n listeners.add(listener);\n\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n\n for (const [, mql] of getMediaQueryLists()) {\n try {\n if (typeof mql.removeEventListener === 'function') mql.removeEventListener('change', handleChange);\n else mql.removeListener?.(handleChange);\n } catch (error) {\n // Removal can throw in edge cases, e.g. the list was already torn down.\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[useBreakpoint] MediaQueryList cleanup warning:', error);\n }\n }\n }\n cachedBreakpoint = null;\n };\n}\n\n/**\n * `getSnapshot` must return a referentially stable value between changes, so it\n * reads the cache that `handleChange` maintains rather than recomputing.\n */\nfunction getSnapshot(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n cachedBreakpoint ??= computeBreakpoint();\n return cachedBreakpoint;\n}\n\nfunction getServerSnapshot(): Breakpoint {\n return 'initial';\n}\n\n/**\n * The breakpoint right now, outside React's render. For an effect that needs\n * the answer at the moment it runs rather than the one its render saw.\n */\nexport function readBreakpoint(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n return computeBreakpoint();\n}\n\nconst getReadySnapshot = () => true;\nconst getReadyServerSnapshot = () => false;\n\nconst noopSubscribe = () => () => {};\nconst getInitialSnapshot = (): Breakpoint => 'initial';\n\n/**\n * The current breakpoint, and whether it has been resolved against a real\n * viewport yet (`false` on the server and during hydration).\n *\n * Reads through `useSyncExternalStore` rather than settling into state from an\n * effect. On a client render the very first pass already has the real\n * breakpoint, instead of rendering the whole shell at `initial` and correcting\n * it after the browser has painted.\n *\n * Pass `enabled = false` to skip the subscription (the breakpoint then reads as\n * `initial`).\n */\nexport function useBreakpoint(enabled = true): { breakpoint: Breakpoint; ready: boolean } {\n // Callers with a non-responsive value pass `enabled = false` so they neither\n // subscribe to the media queries nor re-render when the viewport crosses one.\n const breakpoint = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n enabled ? getSnapshot : getInitialSnapshot,\n getServerSnapshot,\n );\n const ready = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n getReadySnapshot,\n getReadyServerSnapshot,\n );\n\n return React.useMemo(() => ({ breakpoint, ready }), [breakpoint, ready]);\n}\n", "import type * as React from 'react';\n\nexport type PresentationValue = 'fixed' | 'overlay' | 'stacked';\n\nexport type ResponsivePresentation = PresentationValue | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PresentationValue>>;\n\nexport type PaneMode = 'expanded' | 'collapsed';\nexport type SidebarMode = 'collapsed' | 'expanded';\n\nexport type ResponsiveMode = PaneMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', PaneMode>>;\n\nexport type ResponsiveSidebarMode = SidebarMode | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', SidebarMode>>;\n\nexport type Responsive<T> = T | Partial<Record<'initial' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', T>>;\n\nexport type PaneSizePersistence = {\n load?: () => number | Promise<number | undefined> | undefined;\n save?: (size: number) => void | Promise<void>;\n};\n\n/**\n * Why a pane's open state changed. Since 0.8.0 only a user action is reported:\n * `toggle` for a Trigger, a handle double-click or a drag past\n * `collapseThreshold`, and `dismiss` for Escape or a press on the scrim.\n * `init`, `responsive`, `panel` and `left` are kept in the types for\n * compatibility and are never sent.\n */\nexport type PaneOpenChangeReason = 'toggle' | 'dismiss' | 'init' | 'responsive';\n\nexport interface PaneBaseProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n resizable?: boolean;\n collapsible?: boolean;\n /** @deprecated Use `onOpenChange`. Still called when a user's toggle or a controlled prop changes whether the pane is shown; never on mount or when the window crosses a breakpoint. */\n onExpand?: () => void;\n /** @deprecated Use `onOpenChange`. Still called when a user's toggle or a controlled prop changes whether the pane is shown; never on mount or when the window crosses a breakpoint. */\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n /** @deprecated Removed in 1.0. Snap in your own `onSizeChange` and pass `size`. */\n snapPoints?: number[];\n /** @deprecated Removed in 1.0, with `snapPoints`. */\n snapTolerance?: number;\n /** @deprecated Removed in 1.0. Close the pane from your own `onResizeEnd`. */\n collapseThreshold?: number;\n /** @deprecated Removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`. */\n paneId?: string;\n /** @deprecated Removed in 1.0. Keep the size in your own state with `size`/`onSizeChange`. */\n persistence?: PaneSizePersistence;\n}\n\nexport const _BREAKPOINTS = {\n xs: '(min-width: 520px)',\n sm: '(min-width: 768px)',\n md: '(min-width: 1024px)',\n lg: '(min-width: 1280px)',\n xl: '(min-width: 1640px)',\n} as const;\n\nexport type Breakpoint = 'initial' | keyof typeof _BREAKPOINTS;\n\n/** Every breakpoint, smallest first. The stylesheet's @media blocks follow this order. */\nexport const SHELL_BREAKPOINTS: readonly Breakpoint[] = ['initial', 'xs', 'sm', 'md', 'lg', 'xl'];\n\nexport type PaneTarget = 'left' | 'rail' | 'panel' | 'sidebar' | 'inspector' | 'bottom';\n\n/** The panes a Trigger can drive. `left` is the deprecated name for `rail`. */\nexport type PaneName = Exclude<PaneTarget, 'left'>;\n\n/**\n * CSS custom property key type for type-safe style objects.\n * Allows any string prefixed with '--'.\n */\nexport type CSSCustomProperty = `--${string}`;\n\n/**\n * Style object that supports CSS custom properties.\n */\nexport type CSSPropertiesWithVars = React.CSSProperties & {\n [key: CSSCustomProperty]: string | number | undefined;\n};\n", "'use client';\n\n/**\n * The Shell's state model (0.8.0), ported from kookie-ui-v2's Shell.\n *\n * - State lives on the pane. Each pane holds `auto | open | closed`.\n * `auto` means untouched: the stylesheet decides what\n * it shows at each breakpoint, so first paint is right with no script, the\n * server and the client render the same markup, and no open-state callback\n * can fire on mount or on a resize.\n * - The one thing that crosses the Shell is a registry keyed by pane name.\n * Each pane registers what it is and how to drive it; a Trigger looks its\n * pane up, and the Root reads the set of live overlays. Nothing scans\n * children and nothing checks `displayName`.\n * - The responsive props are resolved into a table with one value per\n * breakpoint, from the props alone, with no window. The table is written to\n * the DOM as data attributes for the stylesheet, and read again in JS by the\n * mirror that sets `aria-expanded`. One table, two readers, so they agree by\n * construction.\n */\nimport * as React from 'react';\nimport { useLayoutEffect } from 'radix-ui/internal';\nimport { SHELL_BREAKPOINTS } from '../shell.types.js';\nimport type { Breakpoint, PaneName, PresentationValue } from '../shell.types.js';\n\n/* \u2500\u2500 Breakpoint tables \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nexport type Table<T> = Record<Breakpoint, T>;\n\n/** What a pane shows: open or closed. */\nexport type PaneValue = 'open' | 'closed';\n\ntype ResponsiveInput<T> = T | Partial<Record<Breakpoint, T>> | undefined;\n\nfunction isMap<T>(value: ResponsiveInput<T>): value is Partial<Record<Breakpoint, T>> {\n return typeof value === 'object' && value !== null;\n}\n\n/**\n * A responsive value at every breakpoint. A breakpoint takes the largest key\n * at or below it, the same fallback `useResponsiveValue` used; a breakpoint\n * below every key takes `fallback`.\n */\nexport function tableOf<T>(value: ResponsiveInput<T>, fallback: (bp: Breakpoint) => T): Table<T> {\n const table = {} as Table<T>;\n let carried: { value: T } | null = null;\n for (const bp of SHELL_BREAKPOINTS) {\n if (value !== undefined && !isMap(value)) {\n table[bp] = value;\n continue;\n }\n const entry = isMap(value) ? value[bp] : undefined;\n if (entry !== undefined) carried = { value: entry };\n table[bp] = carried ? carried.value : fallback(bp);\n }\n return table;\n}\n\n/** The table's one value, when it has only one. */\nexport function constantOf<T>(table: Table<T>): T | undefined {\n const first = table.initial;\n return SHELL_BREAKPOINTS.every((bp) => table[bp] === first) ? first : undefined;\n}\n\n/**\n * The table as data attributes: `data-<name>` when it holds one value, one\n * `data-<name>-<bp>` per breakpoint when it holds several. The stylesheet has\n * a rule for each spelling.\n */\nexport function tableAttributes(name: string, table: Table<string>): Record<string, string> {\n const constant = constantOf(table);\n if (constant !== undefined) return { [`data-${name}`]: constant };\n const attributes: Record<string, string> = {};\n for (const bp of SHELL_BREAKPOINTS) attributes[`data-${name}-${bp}`] = table[bp];\n return attributes;\n}\n\n/**\n * A responsive prop object is usually an inline literal, a new identity every\n * render. Keying memoisation on its contents keeps the tables, and so the\n * registry entries, stable across renders that change nothing.\n */\nexport function useStableKey(value: unknown): string {\n return typeof value === 'object' && value !== null ? JSON.stringify(value) : String(value);\n}\n\nexport const FIXED_TABLE: Table<PresentationValue> = tableOf<PresentationValue>('fixed', () => 'fixed');\n\n/* \u2500\u2500 The registry \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nexport type OpenChangeReason = 'toggle' | 'dismiss';\n\nexport type PaneEntry = {\n name: PaneName;\n id: string;\n el: HTMLElement | null;\n /** What the pane shows now; `undefined` while an untouched pane cannot know (before the breakpoint is known). */\n value: PaneValue | undefined;\n /** How the pane is presented now, when known. */\n presentation: PresentationValue | undefined;\n /** The pane's own presentation at every breakpoint. A Panel with none of its own follows the Rail's. */\n presentationTable: Table<PresentationValue>;\n /** Open and presented as an overlay: what the scrim and Escape close, and what containment exempts. */\n overlayLive: boolean;\n /** The pane's designed open width, for panes that sit beside it when floating. */\n size: number;\n setValue: (value: PaneValue, reason: OpenChangeReason) => void;\n toggle: (reason: OpenChangeReason) => void;\n};\n\nexport type ShellStore = {\n entries: Map<PaneName, PaneEntry>;\n listeners: Set<() => void>;\n /**\n * What a subscriber reads. useSyncExternalStore needs a value that is stable\n * between notifications, and a number is; the Map, or anything derived from\n * it, would be a new identity on every read.\n */\n version: number;\n /** The pane a hovered Trigger is previewing, if any. Layout only. */\n peek: PaneName | null;\n};\n\nexport function createShellStore(): ShellStore {\n return { entries: new Map(), listeners: new Set(), version: 0, peek: null };\n}\n\nexport function notifyShellStore(store: ShellStore) {\n store.version += 1;\n for (const listener of store.listeners) listener();\n}\n\nexport function subscribeShellStore(store: ShellStore, listener: () => void) {\n store.listeners.add(listener);\n return () => {\n store.listeners.delete(listener);\n };\n}\n\nexport function setShellPeek(store: ShellStore, peek: PaneName | null) {\n if (store.peek === peek) return;\n store.peek = peek;\n notifyShellStore(store);\n}\n\nexport const ShellStoreContext = React.createContext<ShellStore | null>(null);\n\nexport function useShellStore(part: string): ShellStore {\n const store = React.useContext(ShellStoreContext);\n if (!store) throw new Error(`${part} must be used within <Shell.Root>`);\n return store;\n}\n\n/** One pane's registry entry. Re-renders only when that entry is replaced. */\nexport function usePaneEntry(store: ShellStore, name: PaneName): PaneEntry | undefined {\n const subscribe = React.useCallback((listener: () => void) => subscribeShellStore(store, listener), [store]);\n const getSnapshot = React.useCallback(() => store.entries.get(name), [store, name]);\n return React.useSyncExternalStore(subscribe, getSnapshot, () => undefined);\n}\n\n/**\n * Whether this pane is the one being previewed. A boolean per pane rather than\n * the peek target itself, so hovering one Trigger re-renders one pane, not all.\n */\nexport function usePeeking(store: ShellStore, name: PaneName): boolean {\n const subscribe = React.useCallback((listener: () => void) => subscribeShellStore(store, listener), [store]);\n return React.useSyncExternalStore(\n subscribe,\n () => store.peek === name,\n () => false,\n );\n}\n\n/* \u2500\u2500 Inset \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nexport type InsetPaneId = 'rail' | 'panel' | 'sidebar' | 'content' | 'inspector' | 'bottom';\n\nexport const ShellInsetContext = React.createContext<{\n registerInset: (id: InsetPaneId) => void;\n unregisterInset: (id: InsetPaneId) => void;\n} | null>(null);\n\n/** Registers a pane's `inset` with the Root, which paints the backdrop while any pane is inset. */\nexport function useInsetRegistration(id: InsetPaneId, inset: boolean | undefined) {\n const ctx = React.useContext(ShellInsetContext);\n if (!ctx) throw new Error('Shell panes must be used within <Shell.Root>');\n const { registerInset, unregisterInset } = ctx;\n useLayoutEffect(() => {\n if (!inset) return;\n registerInset(id);\n return () => unregisterInset(id);\n }, [id, inset, registerInset, unregisterInset]);\n}\n\n/* \u2500\u2500 Development warnings \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\nconst warned = new Set<string>();\n\n/** A deprecation warning, once per message per page load. Development only. */\nexport function warnOnce(message: string) {\n if (process.env.NODE_ENV === 'production') return;\n if (warned.has(message)) return;\n warned.add(message);\n console.warn(`[kookie-ui] ${message}`);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["shell_pane_exports", "__export", "paneAttributes", "usePane", "usePresentationTable", "__toCommonJS", "React", "import_internal", "React", "_BREAKPOINTS", "SHELL_BREAKPOINTS", "QUERIES", "_BREAKPOINTS", "mediaQueryLists", "listeners", "cachedBreakpoint", "getMediaQueryLists", "name", "query", "computeBreakpoint", "matched", "mql", "handleChange", "next", "listener", "subscribe", "getSnapshot", "getServerSnapshot", "readBreakpoint", "getReadySnapshot", "getReadyServerSnapshot", "noopSubscribe", "getInitialSnapshot", "useBreakpoint", "enabled", "breakpoint", "ready", "React", "import_internal", "isMap", "value", "tableOf", "fallback", "table", "carried", "bp", "SHELL_BREAKPOINTS", "entry", "constantOf", "first", "tableAttributes", "name", "constant", "attributes", "useStableKey", "FIXED_TABLE", "notifyShellStore", "store", "listener", "subscribeShellStore", "ShellStoreContext", "useShellStore", "part", "store", "usePeeking", "store", "name", "subscribe", "listener", "subscribeShellStore", "ShellInsetContext", "isMap", "value", "firstStated", "map", "bp", "usePane", "options", "name", "label", "propNames", "presentationTable", "builtIn", "store", "useShellStore", "generatedId", "id", "controlled", "controlledIsMap", "controlledMap", "autoSource", "autoKey", "useStableKey", "inner", "setInner", "autoTable", "tableOf", "state", "needsBreakpoint", "constantOf", "breakpoint", "ready", "useBreakpoint", "now", "table", "constant", "presentation", "overlaying", "shown", "overlayLive", "defaultValue", "latest", "valueNow", "current", "readBreakpoint", "defaultHereNow", "setValue", "next", "reason", "toggle", "from", "elementRef", "setElement", "node", "entry", "notifyShellStore", "callbacks", "previous", "before", "wasControlled", "peeking", "usePeeking", "paneAttributes", "pane", "presentationAttributes", "tableAttributes", "usePresentationTable", "fallback", "key", "attributes"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-resizable.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-resizable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"shell-resizable.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-resizable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAA;CAAE,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,GAAG,YAAY,CAAC;IACvC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACzE,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC/C,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACpD,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC7C,sHAAsH;IACtH,UAAU,EAAE,OAAO,CAAC;IACpB,8GAA8G;IAC9G,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AASF,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,CAkNlF;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW;;;EAKpF"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
"use
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";"use client";var W=Object.create;var S=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var A=(e,r)=>{for(var t in r)S(e,t,{get:r[t],enumerable:!0})},I=(e,r,t,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of H(r))!j.call(e,o)&&o!==t&&S(e,o,{get:()=>r[o],enumerable:!(l=D(r,o))||l.enumerable});return e};var _=(e,r,t)=>(t=e!=null?W(U(e)):{},I(r||!e||!e.__esModule?S(t,"default",{value:e,enumerable:!0}):t,e)),L=e=>I(S({},"__esModule",{value:!0}),e);var J={};A(J,{splitHandles:()=>G,useResizablePane:()=>B});module.exports=L(J);var i=_(require("react")),p=require("radix-ui/internal");function O(e,r="horizontal"){if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;let t=String(e).trim();if(!t)return;if(t.endsWith("px"))return Number.parseFloat(t);if(t.endsWith("rem")){let o=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(t)*o}if(t.endsWith("%")){let o=Number.parseFloat(t),s=r==="horizontal"?document.documentElement.clientWidth||window.innerWidth||0:document.documentElement.clientHeight||window.innerHeight||0;return o/100*s}let l=Number.parseFloat(t);return Number.isFinite(l)?l:void 0}var x=(e,r,t)=>Math.max(r??e,Math.min(t??e,e));function B(e){let{name:r,elementRef:t,cssVarName:l,orientation:o,minSize:s,maxSize:f,resizable:C,size:g,defaultSize:P,paneId:y,persistence:$}=e,u=i.useRef(e);(0,p.useLayoutEffect)(()=>{u.current=e});let b=i.useRef(null),T=i.useRef(0);i.useEffect(()=>()=>{b.current&&clearTimeout(b.current)},[]);let z=i.useCallback((n,a)=>{let{onSizeChange:c,sizeUpdate:d,sizeUpdateMs:h}=u.current;if(c){if(d==="debounce"){b.current&&clearTimeout(b.current),b.current=setTimeout(()=>{b.current=null,u.current.onSizeChange?.(n,a)},h);return}if(d==="throttle"){let q=Date.now();if(q-T.current<h)return;T.current=q}c(n,a)}},[]),w=i.useCallback(n=>O(n,o==="vertical"?"horizontal":"vertical"),[o]),N=i.useRef(!1),m=i.useCallback((n,a)=>{let c=t.current;if(c){c.style.setProperty(l,`${n}px`);for(let d of c.querySelectorAll(":scope > .kui-ShellResizer"))d.setAttribute("aria-valuenow",String(Math.round(n)));a&&(N.current=!0)}},[t,l]);(0,p.useLayoutEffect)(()=>{N.current||m(e.expandedSize,!1)},[e.expandedSize,m]),(0,p.useLayoutEffect)(()=>{if(g!==void 0||P===void 0)return;let n=w(P);if(typeof n!="number"||!Number.isFinite(n))return;let a=x(n,s,f);m(a,!0),z(a,{reason:"init"})},[]),(0,p.useLayoutEffect)(()=>{if(g===void 0||u.current.overlayingNow())return;let n=w(g);if(typeof n!="number"||!Number.isFinite(n))return;let a=x(n,s,f);m(a,!0),z(a,{reason:"controlled"})},[g,s,f,e.overlaying,w,m,z]);let E=$!==void 0,R=i.useMemo(()=>{if(E)return{load:()=>u.current.persistence?.load?.(),save:a=>u.current.persistence?.save?.(a)};if(!y)return;let n=`kookie-ui:shell:${r}:${y}`;return{load:()=>{if(!(typeof window>"u"))try{let a=window.localStorage.getItem(n);return a?Number(a):void 0}catch{return}},save:a=>{if(!(typeof window>"u"))try{window.localStorage.setItem(n,String(a))}catch{}}}},[r,y,E]);(0,p.useLayoutEffect)(()=>{if(!C||!R?.load||u.current.overlayingNow())return;let n=!0,a=d=>{if(!n||typeof d!="number"||!Number.isFinite(d))return;let h=x(d,s,f);m(h,!0),u.current.onResize?.(h)},c=R.load();return c instanceof Promise?c.then(a).catch(d=>{}):a(c),()=>{n=!1}},[C,R,e.overlaying,m,s,f,r]);let v=i.useCallback(n=>u.current.onResize?.(n),[]),k=i.useCallback(n=>{N.current=!0,u.current.onResizeStart?.(n)},[]),M=i.useCallback(n=>{u.current.onResizeEnd?.(n),z(n,{reason:"resize"}),R?.save?.(n)},[z,R]),F=i.useCallback(()=>u.current.requestCollapse(),[]),V=i.useCallback(()=>u.current.requestToggle(),[]);return i.useMemo(()=>({containerRef:t,controls:e.elementId,cssVarName:l,minSize:s,maxSize:f,defaultSize:e.expandedSize,orientation:o,edge:e.edge,growth:e.growth,onResize:v,onResizeStart:k,onResizeEnd:M,target:r,collapsible:e.collapsible,snapPoints:e.snapPoints,snapTolerance:e.snapTolerance??8,collapseThreshold:e.collapseThreshold,requestCollapse:F,requestToggle:V}),[t,e.elementId,l,s,f,e.expandedSize,o,e.edge,e.growth,v,k,M,r,e.collapsible,e.snapPoints,e.snapTolerance,e.collapseThreshold,F,V])}function G(e,r){let t=i.Children.toArray(e),l=t.filter(s=>i.isValidElement(s)&&s.type===r),o=t.filter(s=>!(i.isValidElement(s)&&s.type===r));return{handles:l,content:o}}
|
|
2
3
|
//# sourceMappingURL=shell-resizable.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/_internal/shell-resizable.tsx", "../../../../src/helpers/normalize-to-px.ts"],
|
|
4
|
-
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\nimport type { PaneName, PaneSizePersistence } from '../shell.types.js';\nimport type { PaneResizeContextValue } from './shell-resize.js';\n\nexport type SizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\n\nexport type ResizableOptions = {\n name: PaneName;\n /** The pane's element id, which the handle names in `aria-controls`. */\n elementId: string;\n elementRef: React.RefObject<HTMLElement | null>;\n cssVarName: string;\n orientation: 'vertical' | 'horizontal';\n edge: 'start' | 'end';\n growth: (isRtl: boolean) => 1 | -1;\n expandedSize: number;\n minSize: number;\n maxSize: number;\n resizable: boolean;\n collapsible: boolean;\n size: number | string | undefined;\n defaultSize: number | string | undefined;\n onSizeChange: ((size: number, meta: SizeChangeMeta) => void) | undefined;\n sizeUpdate: 'throttle' | 'debounce' | undefined;\n sizeUpdateMs: number;\n onResize: ((size: number) => void) | undefined;\n onResizeStart: ((size: number) => void) | undefined;\n onResizeEnd: ((size: number) => void) | undefined;\n snapPoints: number[] | undefined;\n snapTolerance: number | undefined;\n collapseThreshold: number | undefined;\n paneId: string | undefined;\n persistence: PaneSizePersistence | undefined;\n /** Whether the pane is presented as an overlay right now. An overlay keeps its designed size and persists nothing. */\n overlaying: boolean;\n /** The same question asked at effect time, for a pane whose presentation is learnt after its first render. */\n overlayingNow: () => boolean;\n requestCollapse: () => void;\n requestToggle: () => void;\n};\n\n/**\n * Clamps to [min, max]. When the two cross (an app passing a maximum computed\n * from a narrow window below its fixed minimum), the minimum wins, as it did\n * in 0.7.\n */\nconst clampTo = (value: number, min: number | undefined, max: number | undefined) => Math.max(min ?? value, Math.min(max ?? value, value));\n\n/** Everything a resizable pane shares: size props, persistence, and the handle's context. */\nexport function useResizablePane(options: ResizableOptions): PaneResizeContextValue {\n const { name, elementRef, cssVarName, orientation, minSize, maxSize, resizable, size, defaultSize, paneId, persistence } = options;\n\n // The latest callbacks, so the size emitter does not change identity when a\n // consumer passes an inline function. A controlled `size` is reported again\n // only when the size, the minimum or the maximum changes.\n const latest = React.useRef(options);\n React.useLayoutEffect(() => {\n latest.current = options;\n });\n\n const debounceRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const throttleRef = React.useRef(0);\n React.useEffect(\n () => () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n },\n [],\n );\n const emitSizeChange = React.useCallback((value: number, meta: SizeChangeMeta) => {\n const { onSizeChange, sizeUpdate, sizeUpdateMs } = latest.current;\n if (!onSizeChange) return;\n if (sizeUpdate === 'debounce') {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n debounceRef.current = null;\n latest.current.onSizeChange?.(value, meta);\n }, sizeUpdateMs);\n return;\n }\n if (sizeUpdate === 'throttle') {\n const now = Date.now();\n if (now - throttleRef.current < sizeUpdateMs) return;\n throttleRef.current = now;\n }\n onSizeChange(value, meta);\n }, []);\n\n const toPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, orientation === 'vertical' ? 'horizontal' : 'vertical'), [orientation]);\n\n /**\n * The one way a size reaches the pane: the size variable, and the value\n * every handle of this pane announces. Once anything but `expandedSize` has\n * written a size (a default, a controlled value, a persisted value or a\n * resize), the pane owns that size and a new `expandedSize` leaves it alone.\n */\n const ownedRef = React.useRef(false);\n const writeSize = React.useCallback(\n (value: number, own: boolean) => {\n const el = elementRef.current;\n if (!el) return;\n el.style.setProperty(cssVarName, `${value}px`);\n for (const handle of el.querySelectorAll(':scope > .kui-ShellResizer')) handle.setAttribute('aria-valuenow', String(Math.round(value)));\n if (own) ownedRef.current = true;\n },\n [elementRef, cssVarName],\n );\n\n // expandedSize: the size until something else sets one. Declared first, so\n // the effects below win on mount.\n React.useLayoutEffect(() => {\n if (!ownedRef.current) writeSize(options.expandedSize, false);\n }, [options.expandedSize, writeSize]);\n\n // defaultSize: applied once, on mount.\n React.useLayoutEffect(() => {\n if (size !== undefined || defaultSize === undefined) return;\n const px = toPx(defaultSize);\n if (typeof px !== 'number' || !Number.isFinite(px)) return;\n const clamped = clampTo(px, minSize, maxSize);\n writeSize(clamped, true);\n emitSizeChange(clamped, { reason: 'init' });\n // An uncontrolled initial value: applied on mount and never re-applied.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size. A drag stands until the app passes a different value.\n // Not while the pane is an overlay: an overlay keeps its designed size, and\n // an app's frame-sized limits (a maximum taken from the window) would\n // otherwise squeeze the drawer and report the squeezed size back. The size\n // is applied again when the pane returns to the frame.\n React.useLayoutEffect(() => {\n if (size === undefined || latest.current.overlayingNow()) return;\n const px = toPx(size);\n if (typeof px !== 'number' || !Number.isFinite(px)) return;\n const clamped = clampTo(px, minSize, maxSize);\n writeSize(clamped, true);\n emitSizeChange(clamped, { reason: 'controlled' });\n }, [size, minSize, maxSize, options.overlaying, toPx, writeSize, emitSizeChange]);\n\n // A persistence adapter from `paneId` when none is given.\n const adapter = React.useMemo<PaneSizePersistence | undefined>(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:${name}:${paneId}`;\n return {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const stored = window.localStorage.getItem(key);\n return stored ? Number(stored) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') console.warn(`Shell.${name}: failed to load persisted size`, err);\n return undefined;\n }\n },\n save: (value: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(value));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') console.warn(`Shell.${name}: failed to save persisted size`, err);\n }\n },\n };\n }, [name, paneId, persistence]);\n\n // Persisted size, loaded in a layout effect and clamped, so a reload does\n // not paint the default and then jump. Only where the pane is in the frame:\n // an overlay keeps its designed size.\n React.useLayoutEffect(() => {\n if (!resizable || !adapter?.load || latest.current.overlayingNow()) return undefined;\n let mounted = true;\n const apply = (value: number | undefined) => {\n if (!mounted || typeof value !== 'number' || !Number.isFinite(value)) return;\n const clamped = clampTo(value, minSize, maxSize);\n writeSize(clamped, true);\n latest.current.onResize?.(clamped);\n };\n const loaded = adapter.load();\n if (loaded instanceof Promise) {\n loaded.then(apply).catch((err) => {\n if (process.env.NODE_ENV !== 'production') console.warn(`Shell.${name}: failed to load persisted size`, err);\n });\n } else {\n apply(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, adapter, options.overlaying, writeSize, minSize, maxSize, name]);\n\n const onResize = React.useCallback((value: number) => latest.current.onResize?.(value), []);\n const onResizeStart = React.useCallback((value: number) => {\n // A resize makes the size the user's: a new expandedSize no longer moves it.\n ownedRef.current = true;\n latest.current.onResizeStart?.(value);\n }, []);\n const onResizeEnd = React.useCallback(\n (value: number) => {\n latest.current.onResizeEnd?.(value);\n emitSizeChange(value, { reason: 'resize' });\n adapter?.save?.(value);\n },\n [emitSizeChange, adapter],\n );\n const requestCollapse = React.useCallback(() => latest.current.requestCollapse(), []);\n const requestToggle = React.useCallback(() => latest.current.requestToggle(), []);\n\n return React.useMemo(\n () => ({\n containerRef: elementRef,\n controls: options.elementId,\n cssVarName,\n minSize,\n maxSize,\n defaultSize: options.expandedSize,\n orientation,\n edge: options.edge,\n growth: options.growth,\n onResize,\n onResizeStart,\n onResizeEnd,\n target: name,\n collapsible: options.collapsible,\n snapPoints: options.snapPoints,\n snapTolerance: options.snapTolerance ?? 8,\n collapseThreshold: options.collapseThreshold,\n requestCollapse,\n requestToggle,\n }),\n [\n elementRef,\n options.elementId,\n cssVarName,\n minSize,\n maxSize,\n options.expandedSize,\n orientation,\n options.edge,\n options.growth,\n onResize,\n onResizeStart,\n onResizeEnd,\n name,\n options.collapsible,\n options.snapPoints,\n options.snapTolerance,\n options.collapseThreshold,\n requestCollapse,\n requestToggle,\n ],\n );\n}\n\n/** Splits a pane's children into its handles and the rest. */\nexport function splitHandles(children: React.ReactNode, handleType: React.ElementType) {\n const all = React.Children.toArray(children);\n const handles = all.filter((el) => React.isValidElement(el) && el.type === handleType) as React.ReactElement[];\n const content = all.filter((el) => !(React.isValidElement(el) && el.type === handleType));\n return { handles, content };\n}\n", "/**\n * Normalize CSS length values to pixels.\n * Supports: px, rem, %, and bare numbers.\n *\n * @param value - The value to normalize (number, string, or undefined)\n * @param orientation - 'horizontal' for width-based % or 'vertical' for height-based %\n * @returns The value in pixels, or undefined if invalid\n */\nexport function normalizeToPx(\n value: number | string | undefined,\n orientation: 'horizontal' | 'vertical' = 'horizontal',\n): number | undefined {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n\n const str = String(value).trim();\n if (!str) return undefined;\n\n // px: direct parse\n if (str.endsWith('px')) return Number.parseFloat(str);\n\n // rem: multiply by root font size\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n\n // %: calculate based on viewport dimension\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base =\n orientation === 'horizontal'\n ? document.documentElement.clientWidth || window.innerWidth || 0\n : document.documentElement.clientHeight || window.innerHeight || 0;\n return (pct / 100) * base;\n }\n\n // Bare number-like string\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n}\n\n"],
|
|
5
|
-
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,qBAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAuB,
|
|
6
|
-
"names": ["shell_resizable_exports", "__export", "splitHandles", "useResizablePane", "__toCommonJS", "React", "normalizeToPx", "value", "orientation", "str", "rem", "pct", "base", "n", "clampTo", "value", "min", "max", "useResizablePane", "options", "name", "elementRef", "cssVarName", "orientation", "minSize", "maxSize", "resizable", "size", "defaultSize", "paneId", "persistence", "latest", "debounceRef", "throttleRef", "emitSizeChange", "meta", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "now", "toPx", "normalizeToPx", "ownedRef", "writeSize", "own", "el", "handle", "px", "clamped", "adapter", "key", "stored", "mounted", "apply", "loaded", "err", "onResize", "onResizeStart", "onResizeEnd", "requestCollapse", "requestToggle", "splitHandles", "children", "handleType", "all", "handles", "content"]
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { useLayoutEffect } from 'radix-ui/internal';\nimport { normalizeToPx } from '../../helpers/normalize-to-px.js';\nimport type { PaneName, PaneSizePersistence } from '../shell.types.js';\nimport type { PaneResizeContextValue } from './shell-resize.js';\n\nexport type SizeChangeMeta = { reason: 'init' | 'resize' | 'controlled' };\n\nexport type ResizableOptions = {\n name: PaneName;\n /** The pane's element id, which the handle names in `aria-controls`. */\n elementId: string;\n elementRef: React.RefObject<HTMLElement | null>;\n cssVarName: string;\n orientation: 'vertical' | 'horizontal';\n edge: 'start' | 'end';\n growth: (isRtl: boolean) => 1 | -1;\n expandedSize: number;\n minSize: number;\n maxSize: number;\n resizable: boolean;\n collapsible: boolean;\n size: number | string | undefined;\n defaultSize: number | string | undefined;\n onSizeChange: ((size: number, meta: SizeChangeMeta) => void) | undefined;\n sizeUpdate: 'throttle' | 'debounce' | undefined;\n sizeUpdateMs: number;\n onResize: ((size: number) => void) | undefined;\n onResizeStart: ((size: number) => void) | undefined;\n onResizeEnd: ((size: number) => void) | undefined;\n snapPoints: number[] | undefined;\n snapTolerance: number | undefined;\n collapseThreshold: number | undefined;\n paneId: string | undefined;\n persistence: PaneSizePersistence | undefined;\n /** Whether the pane is presented as an overlay right now. An overlay keeps its designed size and persists nothing. */\n overlaying: boolean;\n /** The same question asked at effect time, for a pane whose presentation is learnt after its first render. */\n overlayingNow: () => boolean;\n requestCollapse: () => void;\n requestToggle: () => void;\n};\n\n/**\n * Clamps to [min, max]. When the two cross (an app passing a maximum computed\n * from a narrow window below its fixed minimum), the minimum wins, as it did\n * in 0.7.\n */\nconst clampTo = (value: number, min: number | undefined, max: number | undefined) => Math.max(min ?? value, Math.min(max ?? value, value));\n\n/** Everything a resizable pane shares: size props, persistence, and the handle's context. */\nexport function useResizablePane(options: ResizableOptions): PaneResizeContextValue {\n const { name, elementRef, cssVarName, orientation, minSize, maxSize, resizable, size, defaultSize, paneId, persistence } = options;\n\n // The latest callbacks, so the size emitter does not change identity when a\n // consumer passes an inline function. A controlled `size` is reported again\n // only when the size, the minimum or the maximum changes.\n const latest = React.useRef(options);\n useLayoutEffect(() => {\n latest.current = options;\n });\n\n const debounceRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const throttleRef = React.useRef(0);\n React.useEffect(\n () => () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n },\n [],\n );\n const emitSizeChange = React.useCallback((value: number, meta: SizeChangeMeta) => {\n const { onSizeChange, sizeUpdate, sizeUpdateMs } = latest.current;\n if (!onSizeChange) return;\n if (sizeUpdate === 'debounce') {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n debounceRef.current = null;\n latest.current.onSizeChange?.(value, meta);\n }, sizeUpdateMs);\n return;\n }\n if (sizeUpdate === 'throttle') {\n const now = Date.now();\n if (now - throttleRef.current < sizeUpdateMs) return;\n throttleRef.current = now;\n }\n onSizeChange(value, meta);\n }, []);\n\n const toPx = React.useCallback((value: number | string | undefined) => normalizeToPx(value, orientation === 'vertical' ? 'horizontal' : 'vertical'), [orientation]);\n\n /**\n * The one way a size reaches the pane: the size variable, and the value\n * every handle of this pane announces. Once anything but `expandedSize` has\n * written a size (a default, a controlled value, a persisted value or a\n * resize), the pane owns that size and a new `expandedSize` leaves it alone.\n */\n const ownedRef = React.useRef(false);\n const writeSize = React.useCallback(\n (value: number, own: boolean) => {\n const el = elementRef.current;\n if (!el) return;\n el.style.setProperty(cssVarName, `${value}px`);\n for (const handle of el.querySelectorAll(':scope > .kui-ShellResizer')) handle.setAttribute('aria-valuenow', String(Math.round(value)));\n if (own) ownedRef.current = true;\n },\n [elementRef, cssVarName],\n );\n\n // expandedSize: the size until something else sets one. Declared first, so\n // the effects below win on mount.\n useLayoutEffect(() => {\n if (!ownedRef.current) writeSize(options.expandedSize, false);\n }, [options.expandedSize, writeSize]);\n\n // defaultSize: applied once, on mount.\n useLayoutEffect(() => {\n if (size !== undefined || defaultSize === undefined) return;\n const px = toPx(defaultSize);\n if (typeof px !== 'number' || !Number.isFinite(px)) return;\n const clamped = clampTo(px, minSize, maxSize);\n writeSize(clamped, true);\n emitSizeChange(clamped, { reason: 'init' });\n // An uncontrolled initial value: applied on mount and never re-applied.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size. A drag stands until the app passes a different value.\n // Not while the pane is an overlay: an overlay keeps its designed size, and\n // an app's frame-sized limits (a maximum taken from the window) would\n // otherwise squeeze the drawer and report the squeezed size back. The size\n // is applied again when the pane returns to the frame.\n useLayoutEffect(() => {\n if (size === undefined || latest.current.overlayingNow()) return;\n const px = toPx(size);\n if (typeof px !== 'number' || !Number.isFinite(px)) return;\n const clamped = clampTo(px, minSize, maxSize);\n writeSize(clamped, true);\n emitSizeChange(clamped, { reason: 'controlled' });\n }, [size, minSize, maxSize, options.overlaying, toPx, writeSize, emitSizeChange]);\n\n // A persistence adapter from `paneId` when none is given. A given one is read through\n // `latest`, so an inline object (the documented shape) does not reload the size every render.\n const hasPersistence = persistence !== undefined;\n const adapter = React.useMemo<PaneSizePersistence | undefined>(() => {\n if (hasPersistence) {\n return {\n load: () => latest.current.persistence?.load?.(),\n save: (value: number) => latest.current.persistence?.save?.(value),\n };\n }\n if (!paneId) return undefined;\n const key = `kookie-ui:shell:${name}:${paneId}`;\n return {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const stored = window.localStorage.getItem(key);\n return stored ? Number(stored) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') console.warn(`Shell.${name}: failed to load persisted size`, err);\n return undefined;\n }\n },\n save: (value: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(value));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') console.warn(`Shell.${name}: failed to save persisted size`, err);\n }\n },\n };\n }, [name, paneId, hasPersistence]);\n\n // Persisted size, loaded in a layout effect and clamped, so a reload does\n // not paint the default and then jump. Only where the pane is in the frame:\n // an overlay keeps its designed size.\n useLayoutEffect(() => {\n if (!resizable || !adapter?.load || latest.current.overlayingNow()) return undefined;\n let mounted = true;\n const apply = (value: number | undefined) => {\n if (!mounted || typeof value !== 'number' || !Number.isFinite(value)) return;\n const clamped = clampTo(value, minSize, maxSize);\n writeSize(clamped, true);\n latest.current.onResize?.(clamped);\n };\n const loaded = adapter.load();\n if (loaded instanceof Promise) {\n loaded.then(apply).catch((err) => {\n if (process.env.NODE_ENV !== 'production') console.warn(`Shell.${name}: failed to load persisted size`, err);\n });\n } else {\n apply(loaded);\n }\n return () => {\n mounted = false;\n };\n }, [resizable, adapter, options.overlaying, writeSize, minSize, maxSize, name]);\n\n const onResize = React.useCallback((value: number) => latest.current.onResize?.(value), []);\n const onResizeStart = React.useCallback((value: number) => {\n // A resize makes the size the user's: a new expandedSize no longer moves it.\n ownedRef.current = true;\n latest.current.onResizeStart?.(value);\n }, []);\n const onResizeEnd = React.useCallback(\n (value: number) => {\n latest.current.onResizeEnd?.(value);\n emitSizeChange(value, { reason: 'resize' });\n adapter?.save?.(value);\n },\n [emitSizeChange, adapter],\n );\n const requestCollapse = React.useCallback(() => latest.current.requestCollapse(), []);\n const requestToggle = React.useCallback(() => latest.current.requestToggle(), []);\n\n return React.useMemo(\n () => ({\n containerRef: elementRef,\n controls: options.elementId,\n cssVarName,\n minSize,\n maxSize,\n defaultSize: options.expandedSize,\n orientation,\n edge: options.edge,\n growth: options.growth,\n onResize,\n onResizeStart,\n onResizeEnd,\n target: name,\n collapsible: options.collapsible,\n snapPoints: options.snapPoints,\n snapTolerance: options.snapTolerance ?? 8,\n collapseThreshold: options.collapseThreshold,\n requestCollapse,\n requestToggle,\n }),\n [\n elementRef,\n options.elementId,\n cssVarName,\n minSize,\n maxSize,\n options.expandedSize,\n orientation,\n options.edge,\n options.growth,\n onResize,\n onResizeStart,\n onResizeEnd,\n name,\n options.collapsible,\n options.snapPoints,\n options.snapTolerance,\n options.collapseThreshold,\n requestCollapse,\n requestToggle,\n ],\n );\n}\n\n/** Splits a pane's children into its handles and the rest. */\nexport function splitHandles(children: React.ReactNode, handleType: React.ElementType) {\n const all = React.Children.toArray(children);\n const handles = all.filter((el) => React.isValidElement(el) && el.type === handleType) as React.ReactElement[];\n const content = all.filter((el) => !(React.isValidElement(el) && el.type === handleType));\n return { handles, content };\n}\n", "/**\n * Normalize CSS length values to pixels.\n * Supports: px, rem, %, and bare numbers.\n *\n * @param value - The value to normalize (number, string, or undefined)\n * @param orientation - 'horizontal' for width-based % or 'vertical' for height-based %\n * @returns The value in pixels, or undefined if invalid\n */\nexport function normalizeToPx(\n value: number | string | undefined,\n orientation: 'horizontal' | 'vertical' = 'horizontal',\n): number | undefined {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n\n const str = String(value).trim();\n if (!str) return undefined;\n\n // px: direct parse\n if (str.endsWith('px')) return Number.parseFloat(str);\n\n // rem: multiply by root font size\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n\n // %: calculate based on viewport dimension\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base =\n orientation === 'horizontal'\n ? document.documentElement.clientWidth || window.innerWidth || 0\n : document.documentElement.clientHeight || window.innerHeight || 0;\n return (pct / 100) * base;\n }\n\n // Bare number-like string\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n}\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["shell_resizable_exports", "__export", "splitHandles", "useResizablePane", "__toCommonJS", "React", "import_internal", "normalizeToPx", "value", "orientation", "str", "rem", "pct", "base", "n", "clampTo", "value", "min", "max", "useResizablePane", "options", "name", "elementRef", "cssVarName", "orientation", "minSize", "maxSize", "resizable", "size", "defaultSize", "paneId", "persistence", "latest", "debounceRef", "throttleRef", "emitSizeChange", "meta", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "now", "toPx", "normalizeToPx", "ownedRef", "writeSize", "own", "el", "handle", "px", "clamped", "hasPersistence", "adapter", "key", "stored", "mounted", "apply", "loaded", "err", "onResize", "onResizeStart", "onResizeEnd", "requestCollapse", "requestToggle", "splitHandles", "children", "handleType", "all", "handles", "content"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var u=Object.create;var r=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var R=(e,n)=>{for(var t in n)r(e,t,{get:n[t],enumerable:!0})},s=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of c(n))!z.call(e,o)&&o!==t&&r(e,o,{get:()=>n[o],enumerable:!(i=m(n,o))||i.enumerable});return e};var p=(e,n,t)=>(t=e!=null?u(b(e)):{},s(n||!e||!e.__esModule?r(t,"default",{value:e,enumerable:!0}):t,e)),d=e=>s(r({},"__esModule",{value:!0}),e);var f={};R(f,{PaneResizeContext:()=>l,usePaneResize:()=>x});module.exports=d(f);var a=p(require("react")),l=a.createContext(null);function x(){let e=a.useContext(l);if(!e)throw new Error("Shell.Handle must be used within a resizable pane");return e}
|
|
2
3
|
//# sourceMappingURL=shell-resize.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/_internal/shell-resize.tsx"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\nimport type { PaneName } from '../shell.types.js';\n\nexport interface PaneResizeContextValue {\n containerRef: React.RefObject<HTMLElement | null>;\n /** The pane the handle resizes, for `aria-controls`. */\n controls: string;\n cssVarName: string;\n minSize: number;\n maxSize: number;\n defaultSize: number;\n orientation: 'vertical' | 'horizontal';\n edge: 'start' | 'end';\n /**\n * +1 when moving the pointer toward the end of its axis grows the pane, -1\n * when it shrinks it. Read once when a drag starts, with the pane's\n * resolved direction, so no move pays for a style read.\n */\n growth: (isRtl: boolean) => 1 | -1;\n onResize?: (size: number) => void;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n target: PaneName;\n collapsible: boolean;\n snapPoints?: number[];\n snapTolerance: number;\n collapseThreshold?: number;\n requestCollapse?: () => void;\n requestToggle?: () => void;\n}\n\nexport const PaneResizeContext = React.createContext<PaneResizeContextValue | null>(null);\n\nexport function usePaneResize() {\n const ctx = React.useContext(PaneResizeContext);\n if (!ctx) throw new Error('Shell.Handle must be used within a resizable pane');\n return ctx;\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAuB,oBA+BVH,EAA0B,gBAA6C,IAAI,EAEjF,SAASC,GAAgB,CAC9B,IAAMG,EAAY,aAAWJ,CAAiB,EAC9C,GAAI,CAACI,EAAK,MAAM,IAAI,MAAM,mDAAmD,EAC7E,OAAOA,CACT",
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAuB,oBA+BVH,EAA0B,gBAA6C,IAAI,EAEjF,SAASC,GAAgB,CAC9B,IAAMG,EAAY,aAAWJ,CAAiB,EAC9C,GAAI,CAACI,EAAK,MAAM,IAAI,MAAM,mDAAmD,EAC7E,OAAOA,CACT",
|
|
6
6
|
"names": ["shell_resize_exports", "__export", "PaneResizeContext", "usePaneResize", "__toCommonJS", "React", "ctx"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(e,o)=>{for(var n in o)a(e,n,{get:o[n],enumerable:!0})},p=(e,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of s(o))!l.call(e,r)&&r!==n&&a(e,r,{get:()=>o[r],enumerable:!(t=i(o,r))||t.enumerable});return e};var c=e=>p(a({},"__esModule",{value:!0}),e);var y={};d(y,{bottomAnchoredGrowth:()=>V,detailRest:()=>h,endAnchoredGrowth:()=>b,navigationRest:()=>f,startAnchoredGrowth:()=>P,toPaneValue:()=>u,withoutRemovedPaneProps:()=>x});module.exports=c(y);function u(e){if(e===void 0)return;if(typeof e=="boolean")return e?"open":"closed";let o={};for(let[n,t]of Object.entries(e))typeof t=="boolean"&&(o[n]=t?"open":"closed");return o}var f=e=>e==="overlay"?"closed":"open",h=()=>"closed",P=e=>e?-1:1,b=e=>e?1:-1,V=()=>-1;function x(e){if(!("height"in e)&&!("resizer"in e))return e;let{height:o,resizer:n,...t}=e;return t}
|
|
2
3
|
//# sourceMappingURL=shell-rest.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/components/_internal/shell-rest.ts"],
|
|
4
4
|
"sourcesContent": ["import type { Breakpoint, PresentationValue } from '../shell.types.js';\nimport type { PaneValue } from './shell-store.js';\n\ntype ResponsiveBoolean = boolean | Partial<Record<Breakpoint, boolean>>;\n\n/** `open`/`defaultOpen` as the pane's own value type. */\nexport function toPaneValue(value: ResponsiveBoolean | undefined): PaneValue | Partial<Record<Breakpoint, PaneValue>> | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'boolean') return value ? 'open' : 'closed';\n const map: Partial<Record<Breakpoint, PaneValue>> = {};\n for (const [bp, open] of Object.entries(value) as Array<[Breakpoint, boolean | undefined]>) {\n if (typeof open === 'boolean') map[bp] = open ? 'open' : 'closed';\n }\n return map;\n}\n\n/**\n * Where an untouched navigation column rests: open in the frame or stacked\n * over it, closed where it would be an overlay. An overlay is summoned,\n * never ambient.\n */\nexport const navigationRest = (presentation: PresentationValue): PaneValue => (presentation === 'overlay' ? 'closed' : 'open');\n\n/** Where an untouched detail pane rests: closed. Detail is asked for. */\nexport const detailRest = (): PaneValue => 'closed';\n\n/** A pane anchored at the inline start grows as its end edge moves toward the inline end. */\nexport const startAnchoredGrowth = (isRtl: boolean): 1 | -1 => (isRtl ? -1 : 1);\n\n/** A pane anchored at the inline end grows as its start edge moves toward the inline start. */\nexport const endAnchoredGrowth = (isRtl: boolean): 1 | -1 => (isRtl ? 1 : -1);\n\n/** A pane anchored at the block end grows as its top edge moves up. */\nexport const bottomAnchoredGrowth = (): 1 | -1 => -1;\n\n/**\n * `height` and `resizer` left PaneBaseProps in 0.8.0: no pane ever read them.\n * A call site written against 0.7 can still pass them, so they are dropped\n * here rather than reaching the DOM as invalid attributes.\n */\nexport function withoutRemovedPaneProps<T extends object>(props: T): T {\n if (!('height' in props) && !('resizer' in props)) return props;\n const { height: _height, resizer: _resizer, ...rest } = props as T & { height?: unknown; resizer?: unknown };\n return rest as T;\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,eAAAC,EAAA,sBAAAC,EAAA,mBAAAC,EAAA,wBAAAC,EAAA,gBAAAC,EAAA,4BAAAC,IAAA,eAAAC,EAAAT,GAMO,SAASO,EAAYG,EAAsG,CAChI,GAAIA,IAAU,OAAW,OACzB,GAAI,OAAOA,GAAU,UAAW,OAAOA,EAAQ,OAAS,SACxD,IAAMC,EAA8C,CAAC,EACrD,OAAW,CAACC,EAAIC,CAAI,IAAK,OAAO,QAAQH,CAAK,EACvC,OAAOG,GAAS,YAAWF,EAAIC,CAAE,EAAIC,EAAO,OAAS,UAE3D,OAAOF,CACT,CAOO,IAAMN,EAAkBS,GAAgDA,IAAiB,UAAY,SAAW,OAG1GX,EAAa,IAAiB,SAG9BG,EAAuBS,GAA4BA,EAAQ,GAAK,EAGhEX,EAAqBW,GAA4BA,EAAQ,EAAI,GAG7Db,EAAuB,IAAc,GAO3C,SAASM,EAA0CQ,EAAa,CACrE,GAAI,EAAE,WAAYA,IAAU,EAAE,YAAaA,GAAQ,OAAOA,EAC1D,GAAM,CAAE,OAAQC,EAAS,QAASC,EAAU,GAAGC,CAAK,EAAIH,EACxD,OAAOG,CACT",
|
|
5
|
+
"mappings": ";yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,eAAAC,EAAA,sBAAAC,EAAA,mBAAAC,EAAA,wBAAAC,EAAA,gBAAAC,EAAA,4BAAAC,IAAA,eAAAC,EAAAT,GAMO,SAASO,EAAYG,EAAsG,CAChI,GAAIA,IAAU,OAAW,OACzB,GAAI,OAAOA,GAAU,UAAW,OAAOA,EAAQ,OAAS,SACxD,IAAMC,EAA8C,CAAC,EACrD,OAAW,CAACC,EAAIC,CAAI,IAAK,OAAO,QAAQH,CAAK,EACvC,OAAOG,GAAS,YAAWF,EAAIC,CAAE,EAAIC,EAAO,OAAS,UAE3D,OAAOF,CACT,CAOO,IAAMN,EAAkBS,GAAgDA,IAAiB,UAAY,SAAW,OAG1GX,EAAa,IAAiB,SAG9BG,EAAuBS,GAA4BA,EAAQ,GAAK,EAGhEX,EAAqBW,GAA4BA,EAAQ,EAAI,GAG7Db,EAAuB,IAAc,GAO3C,SAASM,EAA0CQ,EAAa,CACrE,GAAI,EAAE,WAAYA,IAAU,EAAE,YAAaA,GAAQ,OAAOA,EAC1D,GAAM,CAAE,OAAQC,EAAS,QAASC,EAAU,GAAGC,CAAK,EAAIH,EACxD,OAAOG,CACT",
|
|
6
6
|
"names": ["shell_rest_exports", "__export", "bottomAnchoredGrowth", "detailRest", "endAnchoredGrowth", "navigationRest", "startAnchoredGrowth", "toPaneValue", "withoutRemovedPaneProps", "__toCommonJS", "value", "map", "bp", "open", "presentation", "isRtl", "props", "_height", "_resizer", "rest"]
|
|
7
7
|
}
|
|
@@ -28,5 +28,5 @@ type SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & Rea
|
|
|
28
28
|
Handle: typeof SidebarHandle;
|
|
29
29
|
};
|
|
30
30
|
export declare const Sidebar: SidebarComponent;
|
|
31
|
-
export {};
|
|
31
|
+
export type { SidebarPublicProps };
|
|
32
32
|
//# sourceMappingURL=shell-sidebar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3F,OAAO,KAAK,EAAE,UAAU,EAAyB,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnH,KAAK,sBAAsB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAA;CAAE,CAAC;AACvF,KAAK,sBAAsB,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACnK,KAAK,wBAAwB,GAAG;IAAE,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACrM,KAAK,kBAAkB,GAAG,aAAa,GAAG;IACxC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5D,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,CAAC,sBAAsB,GAAG,wBAAwB,CAAC,CAAC;AAExD,KAAK,gBAAgB,GAAG,KAAK,CAAC,yBAAyB,CAAC,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,aAAa,CAAA;CAAE,CAAC;AAqBrJ,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"shell-sidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/_internal/shell-sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3F,OAAO,KAAK,EAAE,UAAU,EAAyB,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnH,KAAK,sBAAsB,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAA;CAAE,CAAC;AACvF,KAAK,sBAAsB,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACnK,KAAK,wBAAwB,GAAG;IAAE,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACrM,KAAK,kBAAkB,GAAG,aAAa,GAAG;IACxC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5D,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,CAAC,sBAAsB,GAAG,wBAAwB,CAAC,CAAC;AAExD,KAAK,gBAAgB,GAAG,KAAK,CAAC,yBAAyB,CAAC,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,OAAO,aAAa,CAAA;CAAE,CAAC;AAqBrJ,eAAO,MAAM,OAAO,EA+Hd,gBAAgB,CAAC;AAKvB,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
"use strict";"use client";var Vt=Object.create;var fe=Object.defineProperty;var Lt=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var Mt=Object.getPrototypeOf,At=Object.prototype.hasOwnProperty;var Bt=(e,t)=>{for(var n in t)fe(e,n,{get:t[n],enumerable:!0})},Ue=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Nt(t))!At.call(e,o)&&o!==n&&fe(e,o,{get:()=>t[o],enumerable:!(r=Lt(t,o))||r.enumerable});return e};var H=(e,t,n)=>(n=e!=null?Vt(Mt(e)):{},Ue(t||!e||!e.__esModule?fe(n,"default",{value:e,enumerable:!0}):n,e)),Ht=e=>Ue(fe({},"__esModule",{value:!0}),e);var sn={};Bt(sn,{Sidebar:()=>Oe});module.exports=Ht(sn);var _=H(require("react")),Ct=H(require("classnames")),wt=require("radix-ui/internal");var me=H(require("react")),we=me.createContext(null);function Ke(){let e=me.useContext(we);if(!e)throw new Error("Shell.Handle must be used within a resizable pane");return e}var x=H(require("react")),Ge=H(require("classnames"));var re=x.forwardRef(({className:e,children:t,...n},r)=>{let{containerRef:o,controls:s,cssVarName:l,minSize:P,maxSize:b,defaultSize:S,orientation:m,edge:N,growth:g,onResize:k,onResizeStart:$,onResizeEnd:M,snapPoints:z,snapTolerance:E,collapseThreshold:A,collapsible:j,target:G,requestCollapse:ee,requestToggle:I}=Ke(),D=x.useRef(null),Q=x.useCallback(i=>{D.current=i,typeof r=="function"?r(i):r&&(r.current=i)},[r]),a=x.useRef(null);x.useEffect(()=>()=>{a.current?.(),a.current=null},[]);let d=x.useCallback(()=>{let i=o.current;if(!i)return S;let p=Number.parseFloat(getComputedStyle(i).getPropertyValue(l));return Number.isFinite(p)?p:S},[o,l,S]),C=x.useCallback(()=>{let i=o.current,p=D.current,h=i?.closest(".kui-ShellRoot")?.getBoundingClientRect();if(!i||!h||!p)return b;let y=i.getBoundingClientRect(),B=p.getBoundingClientRect(),L=g(getComputedStyle(i).direction==="rtl"),R;m==="vertical"?R=L>0?h.right-y.left:y.right-h.left:R=L>0?h.bottom-y.top:y.bottom-h.top;let Y=m==="vertical"?B.width:B.height;return!(h.width>0&&h.height>0)||!Number.isFinite(R)?b:Math.max(P,Math.min(b,Math.round(R-Y)))},[o,g,b,P,m]),w=()=>{D.current?.setAttribute("aria-valuemax",String(C()))};x.useLayoutEffect(()=>{D.current?.setAttribute("aria-valuenow",String(Math.round(d())))},[d]);let T=(i,p)=>{i.style.setProperty(l,`${p}px`),D.current?.setAttribute("aria-valuenow",String(Math.round(p)))},X=G.charAt(0).toUpperCase()+G.slice(1);return x.createElement("div",{ref:Q,className:(0,Ge.default)("kui-ShellResizer",e),"data-orientation":m,"data-edge":N,role:"separator",tabIndex:0,"aria-label":`Resize ${X} pane`,"aria-controls":s,"aria-orientation":m,"aria-valuemin":P,"aria-valuemax":b,...n,onPointerDown:i=>{n.onPointerDown?.(i);let p=o.current;if(!p||i.defaultPrevented||i.button!==0)return;i.preventDefault();let h=i.currentTarget,y=i.pointerId;a.current?.();try{h.setPointerCapture(y)}catch{}let B=getComputedStyle(p),L=Number.parseFloat(B.getPropertyValue(l)),R=Number.isFinite(L)?L:S,Y=m==="vertical"?i.clientX:i.clientY,u=g(B.direction==="rtl"),W=C();h.setAttribute("aria-valuemax",String(W));let U=V=>Math.min(Math.max(V,P),W);p.setAttribute("data-resizing",""),h.setAttribute("data-dragging","");let J=document.body,Ee=J.style.cursor,Tt=J.style.userSelect;J.style.cursor=m==="vertical"?"col-resize":"row-resize",J.style.userSelect="none",$?.(R);let ne=R,ze=R,K=0,se=null,Fe=()=>{if(K=0,se===null)return;let V=se;se=null,k?.(V)},$e=null,je=!1,kt=(V,ae)=>{if(V.type===ae)je=!0;else if(je)return!1;return!0},Z=V=>{if(!kt(V,"pointermove")||V===$e)return;$e=V;let ae=m==="vertical"?V.clientX:V.clientY;ze=R+(ae-Y)*u,ne=U(ze),T(p,ne),se=ne,K||(K=requestAnimationFrame(Fe))},pe=()=>{K&&cancelAnimationFrame(K),K=0;try{h.releasePointerCapture(y)}catch{}window.removeEventListener("pointermove",Z),document.removeEventListener("pointermove",Z),window.removeEventListener("mousemove",Z),document.removeEventListener("mousemove",Z),h.removeEventListener("pointermove",Z),window.removeEventListener("pointerup",O),document.removeEventListener("pointerup",O),window.removeEventListener("mouseup",O),document.removeEventListener("mouseup",O),window.removeEventListener("pointercancel",O),document.removeEventListener("pointercancel",O),window.removeEventListener("keydown",We),h.removeEventListener("lostpointercapture",O),p.removeAttribute("data-resizing"),h.removeAttribute("data-dragging"),J.style.cursor=Ee,J.style.userSelect=Tt,a.current=null},Ce=!1,O=()=>{if(Ce)return;if(Ce=!0,K&&cancelAnimationFrame(K),Fe(),j&&typeof A=="number"&&ze<=A){T(p,R),k?.(R),pe(),ee?.(),M?.(R);return}let V=ne;if(z&&z.length){let ae=z.reduce((qe,_e)=>Math.abs(_e-ne)<Math.abs(qe-ne)?_e:qe,z[0]);Math.abs(ae-ne)<=E&&(V=U(ae),T(p,V),k?.(V))}M?.(V),pe()},We=V=>{V.key==="Escape"&&(K&&cancelAnimationFrame(K),K=0,se=null,T(p,R),k?.(R),Ce=!0,M?.(R),pe())};window.addEventListener("pointermove",Z),document.addEventListener("pointermove",Z),window.addEventListener("mousemove",Z),document.addEventListener("mousemove",Z),h.addEventListener("pointermove",Z),window.addEventListener("pointerup",O),document.addEventListener("pointerup",O),window.addEventListener("mouseup",O),document.addEventListener("mouseup",O),window.addEventListener("pointercancel",O),document.addEventListener("pointercancel",O),window.addEventListener("keydown",We),h.addEventListener("lostpointercapture",O),a.current=pe},onDoubleClick:i=>{n.onDoubleClick?.(i),!i.defaultPrevented&&j&&I?.()},onFocus:i=>{n.onFocus?.(i),w()},onKeyDown:i=>{n.onKeyDown?.(i);let p=o.current;if(!p||i.defaultPrevented)return;let h=d(),y=C(),B=R=>Math.min(Math.max(R,P),y),L;if(i.key==="Home")L=B(P);else if(i.key==="End")L=B(y);else{let R=m==="vertical"?i.key==="ArrowRight"?1:i.key==="ArrowLeft"?-1:0:i.key==="ArrowDown"?1:i.key==="ArrowUp"?-1:0;if(R===0)return;let Y=i.shiftKey?32:8;L=B(h+R*Y*g(getComputedStyle(p).direction==="rtl"))}i.preventDefault(),$?.(h),T(p,L),k?.(L),M?.(L)}},t)});re.displayName="Shell.Handle";var Dt=x.forwardRef((e,t)=>x.createElement(re,{...e,ref:t}));Dt.displayName="Shell.Panel.Handle";var be=x.forwardRef((e,t)=>x.createElement(re,{...e,ref:t}));be.displayName="Shell.Sidebar.Handle";var It=x.forwardRef((e,t)=>x.createElement(re,{...e,ref:t}));It.displayName="Shell.Inspector.Handle";var Ot=x.forwardRef((e,t)=>x.createElement(re,{...e,ref:t}));Ot.displayName="Shell.Bottom.Handle";var f=H(require("react"));var ue=H(require("react"));var Qe={xs:"(min-width: 520px)",sm:"(min-width: 768px)",md:"(min-width: 1024px)",lg:"(min-width: 1280px)",xl:"(min-width: 1640px)"},Se=["initial","xs","sm","md","lg","xl"];var Ft=Object.entries(Qe),Te=null,le=new Set,oe=null;function ke(){return Te??(Te=Ft.map(([e,t])=>[e,window.matchMedia(t)])),Te}function Re(){let e="initial";for(let[t,n]of ke())n.matches&&(e=t);return e}function he(){let e=Re();e!==oe&&(oe=e,le.forEach(t=>t()))}function Xe(e){if(typeof window>"u")return()=>{};if(le.size===0){oe=Re();for(let[,t]of ke())typeof t.addEventListener=="function"?t.addEventListener("change",he):t.addListener?.(he)}return le.add(e),()=>{if(le.delete(e),!(le.size>0)){for(let[,t]of ke())try{typeof t.removeEventListener=="function"?t.removeEventListener("change",he):t.removeListener?.(he)}catch{}oe=null}}}function $t(){return typeof window>"u"?"initial":(oe??(oe=Re()),oe)}function jt(){return"initial"}function ce(){return typeof window>"u"?"initial":Re()}var Wt=()=>!0,qt=()=>!1,Ye=()=>()=>{},_t=()=>"initial";function Je(e=!0){let t=ue.useSyncExternalStore(e?Xe:Ye,e?$t:_t,jt),n=ue.useSyncExternalStore(e?Xe:Ye,Wt,qt);return ue.useMemo(()=>({breakpoint:t,ready:n}),[t,n])}var q=H(require("react"));function Ze(e){return typeof e=="object"&&e!==null}function de(e,t){let n={},r=null;for(let o of Se){if(e!==void 0&&!Ze(e)){n[o]=e;continue}let s=Ze(e)?e[o]:void 0;s!==void 0&&(r={value:s}),n[o]=r?r.value:t(o)}return n}function ie(e){let t=e.initial;return Se.every(n=>e[n]===t)?t:void 0}function Ve(e,t){let n=ie(t);if(n!==void 0)return{[`data-${e}`]:n};let r={};for(let o of Se)r[`data-${e}-${o}`]=t[o];return r}function Le(e){return typeof e=="object"&&e!==null?JSON.stringify(e):String(e)}var Sn=de("fixed",()=>"fixed");function Ne(e){e.version+=1;for(let t of e.listeners)t()}function Ut(e,t){return e.listeners.add(t),()=>{e.listeners.delete(t)}}var Kt=q.createContext(null);function et(e){let t=q.useContext(Kt);if(!t)throw new Error(`${e} must be used within <Shell.Root>`);return t}function tt(e,t){let n=q.useCallback(r=>Ut(e,r),[e]);return q.useSyncExternalStore(n,()=>e.peek===t,()=>!1)}var Gt=q.createContext(null);function nt(e,t){let n=q.useContext(Gt);if(!n)throw new Error("Shell panes must be used within <Shell.Root>");let{registerInset:r,unregisterInset:o}=n;q.useLayoutEffect(()=>{if(t)return r(e),()=>o(e)},[e,t,r,o])}var Me=e=>typeof e=="object"&&e!==null;function Xt(e){for(let t of["initial","xs","sm","md","lg","xl"]){let n=e[t];if(n!==void 0)return n}return"closed"}function rt(e){let{name:t,label:n,propNames:r,presentationTable:o,builtIn:s}=e,l=et(`Shell.${n}`),P=f.useId(),b=e.id??`shell-${t}${P}`,S=e.controlled!==void 0,m=Me(e.controlled);m&&(`${n}${r.controlled}${r.default}`,void 0);let N=m?e.controlled:void 0,g=N??(Me(e.defaultValue)?e.defaultValue:void 0),k=Le(g),[$,M]=f.useState(()=>typeof e.defaultValue=="string"?e.defaultValue:"auto"),z=f.useMemo(()=>N?de(N,()=>Xt(N)):de(g,u=>s(o[u])),[k,m,o,s]),E=$;S&&(E=N?"auto":e.controlled);let A=ie(o)===void 0||E==="auto"&&ie(z)===void 0,{breakpoint:j,ready:G}=Je(A),ee=u=>{let W=ie(u);return W!==void 0?W:G?u[j]:void 0},I=E==="auto"?ee(z):E,D=ee(o),Q=D==="overlay",a=I===void 0?void 0:I!=="closed",d=a===!0&&Q,C=e.defaultValue,w=f.useRef({state:E,value:I,autoTable:z,defaultValue:C,controlled:S,onChange:e.onChange,toggleNext:e.toggleNext});f.useLayoutEffect(()=>{w.current={state:E,value:I,autoTable:z,defaultValue:C,controlled:S,onChange:e.onChange,toggleNext:e.toggleNext}});let T=f.useCallback(()=>{let u=w.current;return u.value!==void 0?u.value:u.state==="auto"?u.autoTable[ce()]:void 0},[]),X=f.useCallback(()=>{let u=w.current;return typeof u.defaultValue=="string"?u.defaultValue:Me(u.defaultValue)?u.autoTable[ce()]:void 0},[]),i=f.useCallback((u,W)=>{let U=w.current;T()!==u&&(U.onChange?.(u,W),U.controlled||M(u))},[T]),p=f.useCallback(u=>{let W=w.current,U=T()??"closed",J=W.toggleNext?W.toggleNext(U,X()):U==="closed"?"open":"closed";i(J,u)},[i,T,X]),h=f.useRef(null),y=f.useCallback(u=>{h.current=u},[]);f.useLayoutEffect(()=>{let u={name:t,id:b,el:h.current,value:I,presentation:D,presentationTable:o,overlayLive:d,size:e.size,setValue:i,toggle:p};return l.entries.set(t,u),Ne(l),()=>{l.entries.get(t)===u&&(l.entries.delete(t),Ne(l))}},[l,t,b,I,D,o,d,e.size,i,p]);let B=f.useRef({onExpand:e.onExpand,onCollapse:e.onCollapse});f.useLayoutEffect(()=>{B.current={onExpand:e.onExpand,onCollapse:e.onCollapse}});let L=f.useRef({state:E,shown:a});f.useEffect(()=>{let u=L.current;u.state!==E&&u.shown!==void 0&&a!==void 0&&u.shown!==a&&(a?B.current.onExpand?.():B.current.onCollapse?.()),L.current={state:E,shown:a}},[E,a]),f.useLayoutEffect(()=>{},[]);let R=f.useRef(S);f.useEffect(()=>{},[S,n,r.controlled]);let Y=tt(l,t)&&a===!1&&!Q;return{store:l,id:b,state:E,value:I,shown:a,presentation:D,overlaying:Q,overlayLive:d,peeking:Y,ready:G,breakpoint:j,autoTable:z,setValue:i,toggle:p,defaultHereNow:X,setElement:y}}function ot(e,t){let{state:n,value:r,presentation:o,shown:s}=e;return{...t,"data-state":n,...n==="auto"?Ve("auto",e.autoTable):{},"data-presentation":o,"data-mode":r===void 0?void 0:r==="closed"?"collapsed":"expanded","data-open":o==="stacked"&&s?"":void 0,"data-peek":e.peeking?"":void 0}}function at(e,t){let n=Le(e),r=f.useMemo(()=>de(e,()=>t),[n,t]),o=f.useMemo(()=>ie(r)===void 0?Ve("presentation",r):{},[r]);return{table:r,attributes:o}}var c=H(require("react"));function it(e,t="horizontal"){if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;let n=String(e).trim();if(!n)return;if(n.endsWith("px"))return Number.parseFloat(n);if(n.endsWith("rem")){let o=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(n)*o}if(n.endsWith("%")){let o=Number.parseFloat(n),s=t==="horizontal"?document.documentElement.clientWidth||window.innerWidth||0:document.documentElement.clientHeight||window.innerHeight||0;return o/100*s}let r=Number.parseFloat(n);return Number.isFinite(r)?r:void 0}var Ae=(e,t,n)=>Math.max(t??e,Math.min(n??e,e));function st(e){let{name:t,elementRef:n,cssVarName:r,orientation:o,minSize:s,maxSize:l,resizable:P,size:b,defaultSize:S,paneId:m,persistence:N}=e,g=c.useRef(e);c.useLayoutEffect(()=>{g.current=e});let k=c.useRef(null),$=c.useRef(0);c.useEffect(()=>()=>{k.current&&clearTimeout(k.current)},[]);let M=c.useCallback((a,d)=>{let{onSizeChange:C,sizeUpdate:w,sizeUpdateMs:T}=g.current;if(C){if(w==="debounce"){k.current&&clearTimeout(k.current),k.current=setTimeout(()=>{k.current=null,g.current.onSizeChange?.(a,d)},T);return}if(w==="throttle"){let X=Date.now();if(X-$.current<T)return;$.current=X}C(a,d)}},[]),z=c.useCallback(a=>it(a,o==="vertical"?"horizontal":"vertical"),[o]),E=c.useRef(!1),A=c.useCallback((a,d)=>{let C=n.current;if(C){C.style.setProperty(r,`${a}px`);for(let w of C.querySelectorAll(":scope > .kui-ShellResizer"))w.setAttribute("aria-valuenow",String(Math.round(a)));d&&(E.current=!0)}},[n,r]);c.useLayoutEffect(()=>{E.current||A(e.expandedSize,!1)},[e.expandedSize,A]),c.useLayoutEffect(()=>{if(b!==void 0||S===void 0)return;let a=z(S);if(typeof a!="number"||!Number.isFinite(a))return;let d=Ae(a,s,l);A(d,!0),M(d,{reason:"init"})},[]),c.useLayoutEffect(()=>{if(b===void 0||g.current.overlayingNow())return;let a=z(b);if(typeof a!="number"||!Number.isFinite(a))return;let d=Ae(a,s,l);A(d,!0),M(d,{reason:"controlled"})},[b,s,l,e.overlaying,z,A,M]);let j=c.useMemo(()=>{if(!m||N)return N;let a=`kookie-ui:shell:${t}:${m}`;return{load:()=>{if(!(typeof window>"u"))try{let d=window.localStorage.getItem(a);return d?Number(d):void 0}catch{return}},save:d=>{if(!(typeof window>"u"))try{window.localStorage.setItem(a,String(d))}catch{}}}},[t,m,N]);c.useLayoutEffect(()=>{if(!P||!j?.load||g.current.overlayingNow())return;let a=!0,d=w=>{if(!a||typeof w!="number"||!Number.isFinite(w))return;let T=Ae(w,s,l);A(T,!0),g.current.onResize?.(T)},C=j.load();return C instanceof Promise?C.then(d).catch(w=>{}):d(C),()=>{a=!1}},[P,j,e.overlaying,A,s,l,t]);let G=c.useCallback(a=>g.current.onResize?.(a),[]),ee=c.useCallback(a=>{E.current=!0,g.current.onResizeStart?.(a)},[]),I=c.useCallback(a=>{g.current.onResizeEnd?.(a),M(a,{reason:"resize"}),j?.save?.(a)},[M,j]),D=c.useCallback(()=>g.current.requestCollapse(),[]),Q=c.useCallback(()=>g.current.requestToggle(),[]);return c.useMemo(()=>({containerRef:n,controls:e.elementId,cssVarName:r,minSize:s,maxSize:l,defaultSize:e.expandedSize,orientation:o,edge:e.edge,growth:e.growth,onResize:G,onResizeStart:ee,onResizeEnd:I,target:t,collapsible:e.collapsible,snapPoints:e.snapPoints,snapTolerance:e.snapTolerance??8,collapseThreshold:e.collapseThreshold,requestCollapse:D,requestToggle:Q}),[n,e.elementId,r,s,l,e.expandedSize,o,e.edge,e.growth,G,ee,I,t,e.collapsible,e.snapPoints,e.snapTolerance,e.collapseThreshold,D,Q])}function lt(e,t){let n=c.Children.toArray(e),r=n.filter(s=>c.isValidElement(s)&&s.type===t),o=n.filter(s=>!(c.isValidElement(s)&&s.type===t));return{handles:r,content:o}}var ut=e=>e==="overlay"?"closed":"open";var ct=e=>e?-1:1;function dt(e){if(!("height"in e)&&!("resizer"in e))return e;let{height:t,resizer:n,...r}=e;return r}var v=H(require("react")),xe=H(require("classnames"));var F=H(require("react")),Rt=H(require("classnames")),te=require("radix-ui"),vt=require("radix-ui/internal");var pt={asChild:{type:"boolean"}};var Yt=["none","small","medium","large","full"],ft={radius:{type:"enum",values:Yt,default:void 0}};var Jt=["vertical","horizontal","both"],ve={...pt,...ft,scrollbars:{type:"enum",values:Jt,default:"both"},fade:{type:"boolean",default:!1}};var Pe=H(require("react"));function mt(e){let[t,n]=Pe.useState(null);return Pe.useEffect(()=>{if(!e||!t)return;let r=0,o=()=>{r=0;let b=Math.max(0,t.scrollTop),S=Math.max(0,t.scrollHeight-t.clientHeight-t.scrollTop);t.style.setProperty("--scroll-overflow-start",`${b}px`),t.style.setProperty("--scroll-overflow-end",`${S}px`)},s=()=>{r||(r=requestAnimationFrame(o))};o(),t.addEventListener("scroll",s,{passive:!0});let l=typeof ResizeObserver>"u"?null:new ResizeObserver(s);l?.observe(t);for(let b of Array.from(t.children))l?.observe(b);let P=typeof MutationObserver>"u"?null:new MutationObserver(s);return P?.observe(t,{childList:!0}),()=>{r&&cancelAnimationFrame(r),t.removeEventListener("scroll",s),l?.disconnect(),P?.disconnect(),t.style.removeProperty("--scroll-overflow-start"),t.style.removeProperty("--scroll-overflow-end")}},[e,t]),n}var ye=H(require("react"));function St(){let[e,t]=ye.useState(null);return ye.useEffect(()=>{let n=e?.parentElement;if(!e||!n)return;let r=0,o=()=>{r=0;for(let l of n.querySelectorAll(":scope > .kui-ScrollAreaScrollbar > .kui-ScrollAreaThumb")){let P=l.parentElement,b=getComputedStyle(P);if(P.dataset.orientation==="horizontal"){let S=P.clientWidth-parseFloat(b.paddingLeft)-parseFloat(b.paddingRight),m=bt(e.scrollLeft,e.scrollWidth-e.offsetWidth,S-l.offsetWidth);l.style.transform=`translate3d(${m}px, 0, 0)`}else{let S=P.clientHeight-parseFloat(b.paddingTop)-parseFloat(b.paddingBottom),m=bt(e.scrollTop,e.scrollHeight-e.offsetHeight,S-l.offsetHeight);l.style.transform=`translate3d(0, ${m}px, 0)`}}},s=()=>{r||(r=requestAnimationFrame(o))};return e.addEventListener("scroll",s,{passive:!0}),()=>{r&&cancelAnimationFrame(r),e.removeEventListener("scroll",s)}},[e]),t}function bt(e,t,n){return t<=0||n<=0?0:Math.min(Math.max(e,-t),t)/t*n}var ge=H(require("react"));function ht(e,t){let{asChild:n,children:r}=e;if(!n)return typeof t=="function"?t(r):t;let o=ge.Children.only(r);return ge.cloneElement(o,{children:typeof t=="function"?t(o.props.children):t})}var Be=F.forwardRef((e,t)=>{let{asChild:n,children:r,className:o,style:s,type:l,scrollHideDelay:P=l!=="scroll"?0:void 0,dir:b,radius:S=ve.radius.default,scrollbars:m=ve.scrollbars.default,fade:N=ve.fade.default,...g}=e,k=mt(N),$=St(),M=(0,vt.useComposedRefs)(t,k,$);return F.createElement(te.ScrollArea.Root,{type:l,scrollHideDelay:P,className:(0,Rt.default)("kui-ScrollAreaRoot",o),"data-fade":N?"":void 0,style:s,asChild:n},ht({asChild:n,children:r},z=>F.createElement(F.Fragment,null,F.createElement(te.ScrollArea.Viewport,{...g,ref:M,className:"kui-ScrollAreaViewport"},z),F.createElement("div",{className:"kui-ScrollAreaViewportFocusRing"}),m!=="vertical"?F.createElement(te.ScrollArea.Scrollbar,{"data-radius":S,orientation:"horizontal",className:"kui-ScrollAreaScrollbar"},F.createElement(te.ScrollArea.Thumb,{className:"kui-ScrollAreaThumb"})):null,m!=="horizontal"?F.createElement(te.ScrollArea.Scrollbar,{"data-radius":S,orientation:"vertical",className:"kui-ScrollAreaScrollbar"},F.createElement(te.ScrollArea.Thumb,{className:"kui-ScrollAreaThumb"})):null,m==="both"?F.createElement(te.ScrollArea.Corner,{className:"kui-ScrollAreaCorner"}):null)))});Be.displayName="ScrollArea";var Pt=v.createContext(null);function yt(){return v.useContext(Pt)}var He=v.createContext("2");function gt({children:e,presentation:t}){let n=v.useContext(He),r=v.useMemo(()=>({size:n,menuVariant:"soft",presentation:t}),[n,t]);return v.createElement(Pt.Provider,{value:r},e)}function De(){let e=yt(),t=v.useContext(He),n=e?.size??t,r=e?.menuVariant??"soft";return["kui-ShellPaneChrome",`kui-r-size-${n}`,`kui-menu-variant-${r}`]}var Zt={1:"2",2:"3",3:"4",4:"4"},Ie=v.createContext(null);function xt(){let e=yt(),t=v.useContext(He);return Zt[e?.size??t]}var en=v.forwardRef(({className:e,float:t,children:n,...r},o)=>{let s=De(),l=xt();return v.createElement("div",{...r,ref:o,"data-float":t||void 0,className:(0,xe.default)("kui-ShellPaneHeader","kui-SidebarHeader","kui-SidebarHeader--container",...s,e)},v.createElement(Ie.Provider,{value:l},n))});en.displayName="Shell.PaneHeader";var tn=v.forwardRef(({className:e,float:t,children:n,...r},o)=>{let s=De(),l=xt();return v.createElement("div",{...r,ref:o,"data-float":t||void 0,className:(0,xe.default)("kui-ShellPaneFooter","kui-SidebarFooter","kui-SidebarFooter--container",...s,e)},v.createElement(Ie.Provider,{value:l},n))});tn.displayName="Shell.PaneFooter";var nn=v.forwardRef(({className:e,children:t,fade:n=!1,...r},o)=>{let s=De();return v.createElement(Be,{type:"hover",fade:n,className:"kui-ShellScroll"},v.createElement("div",{...r,ref:o,className:(0,xe.default)("kui-BaseMenuContent","kui-SidebarContent",...s,e)},v.createElement(Ie.Provider,{value:null},v.createElement("div",{className:"kui-BaseMenuViewport"},t))))});nn.displayName="Shell.Scroll";var Et=e=>e==="collapsed"?"closed":"open",rn=e=>e==="closed"?"collapsed":"expanded";function zt(e){if(e===void 0)return;if(typeof e=="string")return Et(e);let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Et(r));return t}var on={controlled:"state",default:"defaultState"},an={initial:"overlay",sm:"fixed"},Oe=_.forwardRef((e,t)=>{let{className:n,presentation:r=an,expandedSize:o=288,minSize:s=200,maxSize:l=400,resizable:P=!1,collapsible:b=!0,onExpand:S,onCollapse:m,onResize:N,onResizeStart:g,onResizeEnd:k,snapPoints:$,snapTolerance:M,collapseThreshold:z,paneId:E,persistence:A,children:j,style:G,state:ee,defaultState:I,onStateChange:D,size:Q,defaultSize:a,onSizeChange:d,sizeUpdate:C,sizeUpdateMs:w=50,inset:T,id:X,...i}=e,{table:p,attributes:h}=at(r,"fixed"),y=rt({name:"sidebar",label:"Sidebar",propNames:on,id:X,controlled:zt(ee),defaultValue:zt(I),presentationTable:p,builtIn:ut,onChange:(J,Ee)=>D?.(rn(J),{reason:Ee}),onExpand:S,onCollapse:m,size:o});nt("sidebar",T),_.useEffect(()=>{($!==void 0||z!==void 0||E!==void 0||A!==void 0)&&void 0},[$,z,E,A]);let B=_.useRef(null),L=(0,wt.useComposedRefs)(t,y.setElement,B),R=st({name:"sidebar",elementId:y.id,elementRef:B,cssVarName:"--sidebar-size",orientation:"vertical",edge:"end",growth:ct,expandedSize:o,minSize:s,maxSize:l,resizable:P,collapsible:b,size:Q,defaultSize:a,onSizeChange:d,sizeUpdate:C,sizeUpdateMs:w,onResize:N,onResizeStart:g,onResizeEnd:k,snapPoints:$,snapTolerance:M,collapseThreshold:z,paneId:E,persistence:A,overlaying:y.overlaying,overlayingNow:()=>p[ce()]==="overlay",requestCollapse:()=>y.setValue("closed","toggle"),requestToggle:()=>y.toggle("toggle")}),{handles:Y,content:u}=lt(j,be),W=P&&y.value!=="closed"&&!y.overlaying?_.createElement(we.Provider,{value:R},Y.length>0?Y:_.createElement(re,null)):null,U=y.peeking?`var(--sidebar-size, ${o}px)`:void 0;return _.createElement("div",{...dt(i),id:y.id,ref:L,className:(0,Ct.default)("kui-ShellPane","kui-ShellSidebar",n),...ot(y,h),"data-inset":T||void 0,tabIndex:y.overlaying?-1:i.tabIndex,style:{...G,"--sidebar-expanded-size":`${o}px`,"--sidebar-min-size":`${s}px`,"--sidebar-max-size":`${l}px`,...U?{"--peek-sidebar-width":U}:{}}},_.createElement("div",{className:"kui-ShellSidebarContent"},_.createElement(gt,null,u)),W)});Oe.displayName="Shell.Sidebar";Oe.Handle=be;
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";"use client";var _t=Object.create;var he=Object.defineProperty;var Gt=Object.getOwnPropertyDescriptor;var Qt=Object.getOwnPropertyNames;var Yt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var Jt=(e,t)=>{for(var n in t)he(e,n,{get:t[n],enumerable:!0})},tt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Qt(t))!Xt.call(e,o)&&o!==n&&he(e,o,{get:()=>t[o],enumerable:!(r=Gt(t,o))||r.enumerable});return e};var A=(e,t,n)=>(n=e!=null?_t(Yt(e)):{},tt(t||!e||!e.__esModule?he(n,"default",{value:e,enumerable:!0}):n,e)),Zt=e=>tt(he({},"__esModule",{value:!0}),e);var An={};Jt(An,{Sidebar:()=>Ge});module.exports=Zt(An);var K=A(require("react")),Wt=A(require("classnames")),Ut=require("radix-ui/internal");var ge=A(require("react")),Ve=ge.createContext(null);function nt(){let e=ge.useContext(Ve);if(!e)throw new Error("Shell.Handle must be used within a resizable pane");return e}var T=A(require("react")),rt=require("radix-ui/internal"),ot=A(require("classnames"));var re=T.forwardRef(({className:e,children:t,...n},r)=>{let{containerRef:o,controls:i,cssVarName:s,minSize:c,maxSize:l,defaultSize:a,orientation:u,edge:g,growth:m,onResize:N,onResizeStart:j,onResizeEnd:B,snapPoints:z,snapTolerance:x,collapseThreshold:D,collapsible:F,target:W,requestCollapse:ee,requestToggle:H}=nt(),I=T.useRef(null),Q=T.useCallback(d=>{I.current=d,typeof r=="function"?r(d):r&&(r.current=d)},[r]),k=T.useRef(null);T.useEffect(()=>()=>{k.current?.(),k.current=null},[]);let p=T.useCallback(()=>{let d=o.current;if(!d)return a;let h=Number.parseFloat(getComputedStyle(d).getPropertyValue(s));return Number.isFinite(h)?h:a},[o,s,a]),P=T.useCallback(()=>{let d=o.current,h=I.current,b=d?.closest(".kui-ShellRoot")?.getBoundingClientRect();if(!d||!b||!h)return l;let v=d.getBoundingClientRect(),O=h.getBoundingClientRect(),M=m(getComputedStyle(d).direction==="rtl"),S;u==="vertical"?S=M>0?b.right-v.left:v.right-b.left:S=M>0?b.bottom-v.top:v.bottom-b.top;let Y=u==="vertical"?O.width:O.height;return!(b.width>0&&b.height>0)||!Number.isFinite(S)?l:Math.max(c,Math.min(l,Math.round(S-Y)))},[o,m,l,c,u]),w=()=>{I.current?.setAttribute("aria-valuemax",String(P()))};(0,rt.useLayoutEffect)(()=>{I.current?.setAttribute("aria-valuenow",String(Math.round(p())))},[p]);let C=(d,h)=>{d.style.setProperty(s,`${h}px`),I.current?.setAttribute("aria-valuenow",String(Math.round(h)))},U=W.charAt(0).toUpperCase()+W.slice(1);return T.createElement("div",{ref:Q,className:(0,ot.default)("kui-ShellResizer",e),"data-orientation":u,"data-edge":g,role:"separator",tabIndex:0,"aria-label":`Resize ${U} pane`,"aria-controls":i,"aria-orientation":u,"aria-valuemin":c,"aria-valuemax":l,...n,onPointerDown:d=>{n.onPointerDown?.(d);let h=o.current;if(!h||d.defaultPrevented||d.button!==0)return;d.preventDefault();let b=d.currentTarget,v=d.pointerId;k.current?.();try{b.setPointerCapture(v)}catch{}let O=getComputedStyle(h),M=Number.parseFloat(O.getPropertyValue(s)),S=Number.isFinite(M)?M:a,Y=u==="vertical"?d.clientX:d.clientY,f=m(O.direction==="rtl"),q=P();b.setAttribute("aria-valuemax",String(q));let _=V=>Math.min(Math.max(V,c),q);h.setAttribute("data-resizing",""),b.setAttribute("data-dragging","");let X=document.body,ke=X.style.cursor,qt=X.style.userSelect;X.style.cursor=u==="vertical"?"col-resize":"row-resize",X.style.userSelect="none",j?.(S);let ne=S,Ne=S,G=0,ue=null,Qe=()=>{if(G=0,ue===null)return;let V=ue;ue=null,N?.(V)},Ye=null,Xe=!1,Kt=(V,ie)=>{if(V.type===ie)Xe=!0;else if(Xe)return!1;return!0},J=V=>{if(!Kt(V,"pointermove")||V===Ye)return;Ye=V;let ie=u==="vertical"?V.clientX:V.clientY;Ne=S+(ie-Y)*f,ne=_(Ne),C(h,ne),ue=ne,G||(G=requestAnimationFrame(Qe))},ye=()=>{G&&cancelAnimationFrame(G),G=0;try{b.releasePointerCapture(v)}catch{}window.removeEventListener("pointermove",J),document.removeEventListener("pointermove",J),window.removeEventListener("mousemove",J),document.removeEventListener("mousemove",J),b.removeEventListener("pointermove",J),window.removeEventListener("pointerup",$),document.removeEventListener("pointerup",$),window.removeEventListener("mouseup",$),document.removeEventListener("mouseup",$),window.removeEventListener("pointercancel",$),document.removeEventListener("pointercancel",$),window.removeEventListener("keydown",Je),b.removeEventListener("lostpointercapture",$),h.removeAttribute("data-resizing"),b.removeAttribute("data-dragging"),X.style.cursor=ke,X.style.userSelect=qt,k.current=null},De=!1,$=()=>{if(De)return;if(De=!0,G&&cancelAnimationFrame(G),Qe(),F&&typeof D=="number"&&Ne<=D){C(h,S),N?.(S),ye(),ee?.(),B?.(S);return}let V=ne;if(z&&z.length){let ie=z.reduce((Ze,et)=>Math.abs(et-ne)<Math.abs(Ze-ne)?et:Ze,z[0]);Math.abs(ie-ne)<=x&&(V=_(ie),C(h,V),N?.(V))}B?.(V),ye()},Je=V=>{V.key==="Escape"&&(G&&cancelAnimationFrame(G),G=0,ue=null,C(h,S),N?.(S),De=!0,B?.(S),ye())};window.addEventListener("pointermove",J),document.addEventListener("pointermove",J),window.addEventListener("mousemove",J),document.addEventListener("mousemove",J),b.addEventListener("pointermove",J),window.addEventListener("pointerup",$),document.addEventListener("pointerup",$),window.addEventListener("mouseup",$),document.addEventListener("mouseup",$),window.addEventListener("pointercancel",$),document.addEventListener("pointercancel",$),window.addEventListener("keydown",Je),b.addEventListener("lostpointercapture",$),k.current=ye},onDoubleClick:d=>{n.onDoubleClick?.(d),!d.defaultPrevented&&F&&H?.()},onFocus:d=>{n.onFocus?.(d),w()},onKeyDown:d=>{n.onKeyDown?.(d);let h=o.current;if(!h||d.defaultPrevented)return;if(d.key==="Enter"){F&&H&&(d.preventDefault(),H());return}let b=p(),v=P(),O=S=>Math.min(Math.max(S,c),v),M;if(d.key==="Home")M=O(c);else if(d.key==="End")M=O(v);else{let S=u==="vertical"?d.key==="ArrowRight"?1:d.key==="ArrowLeft"?-1:0:d.key==="ArrowDown"?1:d.key==="ArrowUp"?-1:0;if(S===0)return;let Y=d.shiftKey?32:8;M=O(b+S*Y*m(getComputedStyle(h).direction==="rtl"))}d.preventDefault(),j?.(b),C(h,M),N?.(M),B?.(M)}},t)});re.displayName="Shell.Handle";var en=T.forwardRef((e,t)=>T.createElement(re,{...e,ref:t}));en.displayName="Shell.Panel.Handle";var be=T.forwardRef((e,t)=>T.createElement(re,{...e,ref:t}));be.displayName="Shell.Sidebar.Handle";var tn=T.forwardRef((e,t)=>T.createElement(re,{...e,ref:t}));tn.displayName="Shell.Inspector.Handle";var nn=T.forwardRef((e,t)=>T.createElement(re,{...e,ref:t}));nn.displayName="Shell.Bottom.Handle";var E=A(require("react")),me=require("radix-ui/internal");var ce=A(require("react"));var st={xs:"(min-width: 520px)",sm:"(min-width: 768px)",md:"(min-width: 1024px)",lg:"(min-width: 1280px)",xl:"(min-width: 1640px)"},Se=["initial","xs","sm","md","lg","xl"];var rn=Object.entries(st),Le=null,de=new Set,oe=null;function Me(){return Le??(Le=rn.map(([e,t])=>[e,window.matchMedia(t)])),Le}function Re(){let e="initial";for(let[t,n]of Me())n.matches&&(e=t);return e}function ve(){let e=Re();e!==oe&&(oe=e,de.forEach(t=>t()))}function it(e){if(typeof window>"u")return()=>{};if(de.size===0){oe=Re();for(let[,t]of Me())typeof t.addEventListener=="function"?t.addEventListener("change",ve):t.addListener?.(ve)}return de.add(e),()=>{if(de.delete(e),!(de.size>0)){for(let[,t]of Me())try{typeof t.removeEventListener=="function"?t.removeEventListener("change",ve):t.removeListener?.(ve)}catch{}oe=null}}}function on(){return typeof window>"u"?"initial":(oe??(oe=Re()),oe)}function sn(){return"initial"}function pe(){return typeof window>"u"?"initial":Re()}var an=()=>!0,ln=()=>!1,at=()=>()=>{},un=()=>"initial";function lt(e=!0){let t=ce.useSyncExternalStore(e?it:at,e?on:un,sn),n=ce.useSyncExternalStore(e?it:at,an,ln);return ce.useMemo(()=>({breakpoint:t,ready:n}),[t,n])}var Z=A(require("react")),dt=require("radix-ui/internal");function ut(e){return typeof e=="object"&&e!==null}function fe(e,t){let n={},r=null;for(let o of Se){if(e!==void 0&&!ut(e)){n[o]=e;continue}let i=ut(e)?e[o]:void 0;i!==void 0&&(r={value:i}),n[o]=r?r.value:t(o)}return n}function ae(e){let t=e.initial;return Se.every(n=>e[n]===t)?t:void 0}function Ae(e,t){let n=ae(t);if(n!==void 0)return{[`data-${e}`]:n};let r={};for(let o of Se)r[`data-${e}-${o}`]=t[o];return r}function Be(e){return typeof e=="object"&&e!==null?JSON.stringify(e):String(e)}var Un=fe("fixed",()=>"fixed");function He(e){e.version+=1;for(let t of e.listeners)t()}function dn(e,t){return e.listeners.add(t),()=>{e.listeners.delete(t)}}var cn=Z.createContext(null);function ct(e){let t=Z.useContext(cn);if(!t)throw new Error(`${e} must be used within <Shell.Root>`);return t}function pt(e,t){let n=Z.useCallback(r=>dn(e,r),[e]);return Z.useSyncExternalStore(n,()=>e.peek===t,()=>!1)}var pn=Z.createContext(null);function ft(e,t){let n=Z.useContext(pn);if(!n)throw new Error("Shell panes must be used within <Shell.Root>");let{registerInset:r,unregisterInset:o}=n;(0,dt.useLayoutEffect)(()=>{if(t)return r(e),()=>o(e)},[e,t,r,o])}var Oe=e=>typeof e=="object"&&e!==null;function mn(e){for(let t of["initial","xs","sm","md","lg","xl"]){let n=e[t];if(n!==void 0)return n}return"closed"}function mt(e){let{name:t,label:n,propNames:r,presentationTable:o,builtIn:i}=e,s=ct(`Shell.${n}`),c=E.useId(),l=e.id??`shell-${t}${c}`,a=e.controlled!==void 0,u=Oe(e.controlled);u&&(`${n}${r.controlled}${r.default}`,void 0);let g=u?e.controlled:void 0,m=g??(Oe(e.defaultValue)?e.defaultValue:void 0),N=Be(m),[j,B]=E.useState(()=>typeof e.defaultValue=="string"?e.defaultValue:"auto"),z=E.useMemo(()=>g?fe(g,()=>mn(g)):fe(m,f=>i(o[f])),[N,u,o,i]),x=j;a&&(x=g?"auto":e.controlled);let D=ae(o)===void 0||x==="auto"&&ae(z)===void 0,{breakpoint:F,ready:W}=lt(D),ee=f=>{let q=ae(f);return q!==void 0?q:W?f[F]:void 0},H=x==="auto"?ee(z):x,I=ee(o),Q=I==="overlay",k=H===void 0?void 0:H!=="closed",p=k===!0&&Q,P=e.defaultValue,w=E.useRef({state:x,value:H,autoTable:z,defaultValue:P,controlled:a,onChange:e.onChange,toggleNext:e.toggleNext});(0,me.useLayoutEffect)(()=>{w.current={state:x,value:H,autoTable:z,defaultValue:P,controlled:a,onChange:e.onChange,toggleNext:e.toggleNext}});let C=E.useCallback(()=>{let f=w.current;return f.value!==void 0?f.value:f.state==="auto"?f.autoTable[pe()]:void 0},[]),U=E.useCallback(()=>{let f=w.current;return typeof f.defaultValue=="string"?f.defaultValue:Oe(f.defaultValue)?f.autoTable[pe()]:void 0},[]),d=E.useCallback((f,q)=>{let _=w.current;C()!==f&&(_.onChange?.(f,q),_.controlled||B(f))},[C]),h=E.useCallback(f=>{let q=w.current,_=C()??"closed",X=q.toggleNext?q.toggleNext(_,U()):_==="closed"?"open":"closed";d(X,f)},[d,C,U]),b=E.useRef(null),v=E.useCallback(f=>{b.current=f},[]);(0,me.useLayoutEffect)(()=>{let f={name:t,id:l,el:b.current,value:H,presentation:I,presentationTable:o,overlayLive:p,size:e.size,setValue:d,toggle:h};return s.entries.set(t,f),He(s),()=>{s.entries.get(t)===f&&(s.entries.delete(t),He(s))}},[s,t,l,H,I,o,p,e.size,d,h]);let O=E.useRef({onExpand:e.onExpand,onCollapse:e.onCollapse});(0,me.useLayoutEffect)(()=>{O.current={onExpand:e.onExpand,onCollapse:e.onCollapse}});let M=E.useRef({state:x,shown:k});E.useEffect(()=>{let f=M.current;f.state!==x&&f.shown!==void 0&&k!==void 0&&f.shown!==k&&(k?O.current.onExpand?.():O.current.onCollapse?.()),M.current={state:x,shown:k}},[x,k]),(0,me.useLayoutEffect)(()=>{},[]);let S=E.useRef(a);E.useEffect(()=>{},[a,n,r.controlled]);let Y=pt(s,t)&&k===!1&&!Q;return{store:s,id:l,state:x,value:H,shown:k,presentation:I,overlaying:Q,overlayLive:p,peeking:Y,ready:W,breakpoint:F,autoTable:z,setValue:d,toggle:h,defaultHereNow:U,setElement:v}}function Pt(e,t){let{state:n,value:r,presentation:o,shown:i}=e;return{...t,"data-state":n,...n==="auto"?Ae("auto",e.autoTable):{},"data-presentation":o,"data-mode":r===void 0?void 0:r==="closed"?"collapsed":"expanded","data-open":o==="stacked"&&i?"":void 0,"data-peek":e.peeking?"":void 0}}function yt(e,t){let n=Be(e),r=E.useMemo(()=>fe(e,()=>t),[n,t]),o=E.useMemo(()=>ae(r)===void 0?Ae("presentation",r):{},[r]);return{table:r,attributes:o}}var R=A(require("react")),le=require("radix-ui/internal");function ht(e,t="horizontal"){if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;let n=String(e).trim();if(!n)return;if(n.endsWith("px"))return Number.parseFloat(n);if(n.endsWith("rem")){let o=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(n)*o}if(n.endsWith("%")){let o=Number.parseFloat(n),i=t==="horizontal"?document.documentElement.clientWidth||window.innerWidth||0:document.documentElement.clientHeight||window.innerHeight||0;return o/100*i}let r=Number.parseFloat(n);return Number.isFinite(r)?r:void 0}var Ie=(e,t,n)=>Math.max(t??e,Math.min(n??e,e));function gt(e){let{name:t,elementRef:n,cssVarName:r,orientation:o,minSize:i,maxSize:s,resizable:c,size:l,defaultSize:a,paneId:u,persistence:g}=e,m=R.useRef(e);(0,le.useLayoutEffect)(()=>{m.current=e});let N=R.useRef(null),j=R.useRef(0);R.useEffect(()=>()=>{N.current&&clearTimeout(N.current)},[]);let B=R.useCallback((p,P)=>{let{onSizeChange:w,sizeUpdate:C,sizeUpdateMs:U}=m.current;if(w){if(C==="debounce"){N.current&&clearTimeout(N.current),N.current=setTimeout(()=>{N.current=null,m.current.onSizeChange?.(p,P)},U);return}if(C==="throttle"){let d=Date.now();if(d-j.current<U)return;j.current=d}w(p,P)}},[]),z=R.useCallback(p=>ht(p,o==="vertical"?"horizontal":"vertical"),[o]),x=R.useRef(!1),D=R.useCallback((p,P)=>{let w=n.current;if(w){w.style.setProperty(r,`${p}px`);for(let C of w.querySelectorAll(":scope > .kui-ShellResizer"))C.setAttribute("aria-valuenow",String(Math.round(p)));P&&(x.current=!0)}},[n,r]);(0,le.useLayoutEffect)(()=>{x.current||D(e.expandedSize,!1)},[e.expandedSize,D]),(0,le.useLayoutEffect)(()=>{if(l!==void 0||a===void 0)return;let p=z(a);if(typeof p!="number"||!Number.isFinite(p))return;let P=Ie(p,i,s);D(P,!0),B(P,{reason:"init"})},[]),(0,le.useLayoutEffect)(()=>{if(l===void 0||m.current.overlayingNow())return;let p=z(l);if(typeof p!="number"||!Number.isFinite(p))return;let P=Ie(p,i,s);D(P,!0),B(P,{reason:"controlled"})},[l,i,s,e.overlaying,z,D,B]);let F=g!==void 0,W=R.useMemo(()=>{if(F)return{load:()=>m.current.persistence?.load?.(),save:P=>m.current.persistence?.save?.(P)};if(!u)return;let p=`kookie-ui:shell:${t}:${u}`;return{load:()=>{if(!(typeof window>"u"))try{let P=window.localStorage.getItem(p);return P?Number(P):void 0}catch{return}},save:P=>{if(!(typeof window>"u"))try{window.localStorage.setItem(p,String(P))}catch{}}}},[t,u,F]);(0,le.useLayoutEffect)(()=>{if(!c||!W?.load||m.current.overlayingNow())return;let p=!0,P=C=>{if(!p||typeof C!="number"||!Number.isFinite(C))return;let U=Ie(C,i,s);D(U,!0),m.current.onResize?.(U)},w=W.load();return w instanceof Promise?w.then(P).catch(C=>{}):P(w),()=>{p=!1}},[c,W,e.overlaying,D,i,s,t]);let ee=R.useCallback(p=>m.current.onResize?.(p),[]),H=R.useCallback(p=>{x.current=!0,m.current.onResizeStart?.(p)},[]),I=R.useCallback(p=>{m.current.onResizeEnd?.(p),B(p,{reason:"resize"}),W?.save?.(p)},[B,W]),Q=R.useCallback(()=>m.current.requestCollapse(),[]),k=R.useCallback(()=>m.current.requestToggle(),[]);return R.useMemo(()=>({containerRef:n,controls:e.elementId,cssVarName:r,minSize:i,maxSize:s,defaultSize:e.expandedSize,orientation:o,edge:e.edge,growth:e.growth,onResize:ee,onResizeStart:H,onResizeEnd:I,target:t,collapsible:e.collapsible,snapPoints:e.snapPoints,snapTolerance:e.snapTolerance??8,collapseThreshold:e.collapseThreshold,requestCollapse:Q,requestToggle:k}),[n,e.elementId,r,i,s,e.expandedSize,o,e.edge,e.growth,ee,H,I,t,e.collapsible,e.snapPoints,e.snapTolerance,e.collapseThreshold,Q,k])}function bt(e,t){let n=R.Children.toArray(e),r=n.filter(i=>R.isValidElement(i)&&i.type===t),o=n.filter(i=>!(R.isValidElement(i)&&i.type===t));return{handles:r,content:o}}var St=e=>e==="overlay"?"closed":"open";var vt=e=>e?-1:1;function Rt(e){if(!("height"in e)&&!("resizer"in e))return e;let{height:t,resizer:n,...r}=e;return r}var y=A(require("react")),Pe=A(require("classnames"));var L=A(require("react")),Bt=A(require("classnames")),te=require("radix-ui"),Ht=require("radix-ui/internal");var xt={asChild:{type:"boolean"}};var Pn=["none","small","medium","large","full"],Ct={radius:{type:"enum",values:Pn,default:void 0}};var yn=["vertical","horizontal","both"],xe={...xt,...Ct,scrollbars:{type:"enum",values:yn,default:"both"},fade:{type:"boolean",default:!1}};var Ce=A(require("react"));function Et(e){let[t,n]=Ce.useState(null);return Ce.useEffect(()=>{if(!e||!t)return;let r=0,o=()=>{r=0;let l=Math.max(0,t.scrollTop),a=Math.max(0,t.scrollHeight-t.clientHeight-t.scrollTop);t.style.setProperty("--scroll-overflow-start",`${l}px`),t.style.setProperty("--scroll-overflow-end",`${a}px`);let u=Math.abs(t.scrollLeft),g=Math.max(0,t.scrollWidth-t.clientWidth-u);t.style.setProperty("--scroll-overflow-x-start",`${u}px`),t.style.setProperty("--scroll-overflow-x-end",`${g}px`)},i=()=>{r||(r=requestAnimationFrame(o))};o(),t.addEventListener("scroll",i,{passive:!0});let s=typeof ResizeObserver>"u"?null:new ResizeObserver(i);s?.observe(t);for(let l of Array.from(t.children))s?.observe(l);let c=typeof MutationObserver>"u"?null:new MutationObserver(i);return c?.observe(t,{childList:!0}),()=>{r&&cancelAnimationFrame(r),t.removeEventListener("scroll",i),s?.disconnect(),c?.disconnect(),t.style.removeProperty("--scroll-overflow-start"),t.style.removeProperty("--scroll-overflow-end"),t.style.removeProperty("--scroll-overflow-x-start"),t.style.removeProperty("--scroll-overflow-x-end")}},[e,t]),n}var Ee=A(require("react"));function Tt(){let[e,t]=Ee.useState(null);return Ee.useEffect(()=>{let n=e?.parentElement;if(!e||!n)return;let r=0,o=()=>{r=0;for(let s of n.querySelectorAll(":scope > .kui-ScrollAreaScrollbar > .kui-ScrollAreaThumb")){let c=s.parentElement,l=getComputedStyle(c);if(c.dataset.orientation==="horizontal"){let a=c.clientWidth-parseFloat(l.paddingLeft)-parseFloat(l.paddingRight),u=wt(e.scrollLeft,e.scrollWidth-e.offsetWidth,a-s.offsetWidth);s.style.transform=`translate3d(${u}px, 0, 0)`}else{let a=c.clientHeight-parseFloat(l.paddingTop)-parseFloat(l.paddingBottom),u=wt(e.scrollTop,e.scrollHeight-e.offsetHeight,a-s.offsetHeight);s.style.transform=`translate3d(0, ${u}px, 0)`}}},i=()=>{r||(r=requestAnimationFrame(o))};return e.addEventListener("scroll",i,{passive:!0}),()=>{r&&cancelAnimationFrame(r),e.removeEventListener("scroll",i)}},[e]),t}function wt(e,t,n){return t<=0||n<=0?0:Math.min(Math.max(e,-t),t)/t*n}var we=A(require("react"));function zt(e,t){let{asChild:n,children:r}=e;if(!n)return typeof t=="function"?t(r):t;let o=we.Children.only(r);return we.cloneElement(o,{children:typeof t=="function"?t(o.props.children):t})}var Vt=A(require("classnames"));var hn=[],gn=new Set;function bn(e){let t=Object.assign({},...e),n=[],r=[],o=new Set;for(let i in t){let s=t[i],c=s.values??hn,l={key:i,type:s.type,default:s.default,hasDefault:s.default!==void 0,responsive:"responsive"in s,className:s.className,customProperties:s.customProperties,parseValue:s.parseValue,values:c,valueSet:c.length>0?new Set(c):gn,enumValueSet:s.type==="enum"?new Set([s.default,...c]):void 0};s.className?(n.push(l),o.add(i)):(l.hasDefault||s.type==="enum")&&r.push(l)}return{styling:n,passthrough:r,stylingKeys:o}}var Sn={children:new WeakMap};function kt(e){let t=Sn;for(let n=0;n<e.length;n++){let r=e[n],o=t.children.get(r);o===void 0&&(o={children:new WeakMap},t.children.set(r,o)),t=o}return t.compiled??(t.compiled=bn(e))}var vn=["initial","xs","sm","md","lg","xl"],$e=new Set(vn);function je(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Rn=new Set(["initial","xs","sm","md","lg","xl"]);function se(e){if(typeof e!="object"||e===null)return!1;for(let t in e)if(Rn.has(t))return!0;return!1}function Te(e,t,n){return t!==void 0?t.has(n):e.includes(n)}function Dt({className:e,customProperties:t,...n}){let r=Fe({allowArbitraryValues:!0,className:e,...n}),o=xn({customProperties:t,...n});return[r,o]}function Fe({allowArbitraryValues:e,value:t,className:n,propValues:r,propValueSet:o,parseValue:i=s=>s}){if(t){if(typeof t=="string")return Te(r,o,t)?Nt(n,t,i):e?n:void 0;if(se(t)){let s=t,c=[];for(let l in s){if(!je(s,l)||!$e.has(l))continue;let a=s[l];if(a!==void 0){if(Te(r,o,a)){let u=Nt(n,a,i),g=l==="initial"?u:`${l}:${u}`;c.push(g)}else if(e){let u=l==="initial"?n:`${l}:${n}`;c.push(u)}}}return c.length>0?c.join(" "):""}if(e)return n}}function Nt(e,t,n){let r=e?"-":"",o=n(t),i=o?.startsWith("-"),s=i?"-":"",c=i?o?.substring(1):o;return`${s}${e}${r}${c}`}function xn({customProperties:e,value:t,propValues:n,propValueSet:r,parseValue:o=i=>i}){if(!t||typeof t=="string"&&Te(n,r,t))return;let i;if(typeof t=="string"){let s=o(t);i={};for(let c of e)i[c]=s;return i}if(se(t)){let s=t;for(let c in s){if(!je(s,c)||!$e.has(c))continue;let l=s[c];if(l===void 0||Te(n,r,l))continue;let a=o(l);i??(i={});for(let u of e){let g=c==="initial"?u:`${u}-${c}`;i[g]=a}}}return i??{}}function We(...e){let t;for(let n of e)n&&(t===void 0&&(t={}),Object.assign(t,n));return t}function Cn(e,t){let n=e.initial,r=!1;return t.hasDefault&&n===void 0&&(n=t.default,r=!0),t.enumValueSet!==void 0&&!t.enumValueSet.has(n)&&(n=t.default,r=!0),r?{...e,initial:n}:e}function Lt(e,...t){let{styling:n,passthrough:r,stylingKeys:o}=kt(t),i={};for(let l in e)o.has(l)||(i[l]=e[l]);for(let l=0;l<r.length;l++){let a=r[l],u=i[a.key];if(u===void 0){a.hasDefault&&(i[a.key]=a.default);continue}a.enumValueSet!==void 0&&!a.enumValueSet.has(u)&&!se(u)&&(i[a.key]=a.default)}let s,c=[];for(let l=0;l<n.length;l++){let a=n[l],u=e[a.key];if(u===void 0&&a.hasDefault&&(u=a.default),a.enumValueSet!==void 0&&!a.enumValueSet.has(u)&&!se(u)&&(u=a.default),!!u){if(se(u)){if(!a.responsive)continue;u=Cn(u,a)}if(a.type==="enum"){let g=Fe({allowArbitraryValues:!1,value:u,className:a.className,propValues:a.values,propValueSet:a.valueSet,parseValue:a.parseValue});g&&c.push(g);continue}if(a.type==="string"||a.type==="enum | string"){let[g,m]=Dt({className:a.className,customProperties:a.customProperties,propValues:a.type==="string"?[]:a.values,propValueSet:a.type==="string"?void 0:a.valueSet,parseValue:a.parseValue,value:u});m&&(s=We(s,m)),g&&c.push(g);continue}if(a.type==="boolean"){c.push(a.className);continue}}}return i.className=(0,Vt.default)(c.length>0?c.join(" "):void 0,e.className),i.style=We(s,e.style),i}var Mt={width:{type:"string",className:"kui-r-w",customProperties:["--width"],responsive:!0},minWidth:{type:"string",className:"kui-r-min-w",customProperties:["--min-width"],responsive:!0},maxWidth:{type:"string",className:"kui-r-max-w",customProperties:["--max-width"],responsive:!0}};var At={height:{type:"string",className:"kui-r-h",customProperties:["--height"],responsive:!0},minHeight:{type:"string",className:"kui-r-min-h",customProperties:["--min-height"],responsive:!0},maxHeight:{type:"string",className:"kui-r-max-h",customProperties:["--max-height"],responsive:!0}};var En='[role="menu"], [role="listbox"]';function wn(e,t){L.useEffect(()=>{if(!t||!e||e.closest(En))return;let n=0,r=()=>{n=0,e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")},o=()=>{n||(n=requestAnimationFrame(r))};r();let i=typeof ResizeObserver>"u"?null:new ResizeObserver(o);i?.observe(e);for(let s of Array.from(e.children))i?.observe(s);return()=>{n&&cancelAnimationFrame(n),i?.disconnect()}},[e,t])}var ze=L.forwardRef((e,t)=>{let{asChild:n,children:r,className:o,style:i,type:s,scrollHideDelay:c=s!=="scroll"?0:void 0,dir:l,radius:a=xe.radius.default,scrollbars:u=xe.scrollbars.default,fade:g=xe.fade.default,...m}=Lt(e,Mt,At),[N,j]=L.useState(null),B=Et(g),z=Tt(),x=(0,Ht.useComposedRefs)(t,B,z,j);wn(N,m.tabIndex===void 0);let D=m["aria-label"]!==void 0||m["aria-labelledby"]!==void 0;return L.createElement(te.ScrollArea.Root,{type:s,scrollHideDelay:c,dir:l,className:(0,Bt.default)("kui-ScrollAreaRoot",o),"data-fade":g?"":void 0,style:i,asChild:n},zt({asChild:n,children:r},F=>L.createElement(L.Fragment,null,L.createElement(te.ScrollArea.Viewport,{role:D?"region":void 0,...m,ref:x,className:"kui-ScrollAreaViewport"},F),L.createElement("div",{className:"kui-ScrollAreaViewportFocusRing"}),u!=="vertical"?L.createElement(te.ScrollArea.Scrollbar,{"data-radius":a,orientation:"horizontal",className:"kui-ScrollAreaScrollbar"},L.createElement(te.ScrollArea.Thumb,{className:"kui-ScrollAreaThumb"})):null,u!=="horizontal"?L.createElement(te.ScrollArea.Scrollbar,{"data-radius":a,orientation:"vertical",className:"kui-ScrollAreaScrollbar"},L.createElement(te.ScrollArea.Thumb,{className:"kui-ScrollAreaThumb"})):null,u==="both"?L.createElement(te.ScrollArea.Corner,{className:"kui-ScrollAreaCorner"}):null)))});ze.displayName="ScrollArea";var Ot=y.createContext(null);function Ue(){return y.useContext(Ot)}var qe=y.createContext("2"),Tn=y.createContext(!1);function It({children:e,presentation:t}){let n=y.useContext(qe),r=y.useMemo(()=>({size:n,menuVariant:"soft",presentation:t}),[n,t]);return y.createElement(Ot.Provider,{value:r},e)}function Ke(){let e=Ue(),t=y.useContext(qe),n=e?.size??t,r=e?.menuVariant??"soft";return["kui-ShellPaneChrome",`kui-r-size-${n}`,`kui-menu-variant-${r}`]}var zn={1:"2",2:"3",3:"4",4:"4"},_e=y.createContext(void 0);function $t(){let e=Ue(),t=y.useContext(qe);return zn[e?.size??t]}var kn=y.forwardRef(({className:e,float:t,children:n,...r},o)=>{let i=Ke(),s=$t();return y.createElement("div",{...r,ref:o,"data-float":t||void 0,className:(0,Pe.default)("kui-ShellPaneHeader","kui-SidebarHeader","kui-SidebarHeader--container",...i,e)},y.createElement(_e.Provider,{value:s},n))});kn.displayName="Shell.PaneHeader";var Nn=y.forwardRef(({className:e,float:t,children:n,...r},o)=>{let i=Ke(),s=$t();return y.createElement("div",{...r,ref:o,"data-float":t||void 0,className:(0,Pe.default)("kui-ShellPaneFooter","kui-SidebarFooter","kui-SidebarFooter--container",...i,e)},y.createElement(_e.Provider,{value:s},n))});Nn.displayName="Shell.PaneFooter";var Dn=y.forwardRef(({className:e,style:t,dir:n,children:r,fade:o=!1,...i},s)=>{let c=Ke(),l=y.useContext(Tn),a=Ue();return l&&a===null?y.createElement(ze,{...i,ref:s,type:"hover",fade:o,className:"kui-ShellScroll"},y.createElement("div",{style:t,dir:n,className:(0,Pe.default)("kui-ShellScrollContent",e)},r)):y.createElement(ze,{...i,ref:s,type:"hover",fade:o,className:"kui-ShellScroll"},y.createElement("div",{style:t,dir:n,className:(0,Pe.default)("kui-BaseMenuContent","kui-SidebarContent",...c,e)},y.createElement(_e.Provider,{value:null},y.createElement("div",{className:"kui-BaseMenuViewport"},r))))});Dn.displayName="Shell.Scroll";var jt=e=>e==="collapsed"?"closed":"open",Vn=e=>e==="closed"?"collapsed":"expanded";function Ft(e){if(e===void 0)return;if(typeof e=="string")return jt(e);let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=jt(r));return t}var Ln={controlled:"state",default:"defaultState"},Mn={initial:"overlay",sm:"fixed"},Ge=K.forwardRef((e,t)=>{let{className:n,presentation:r=Mn,expandedSize:o=288,minSize:i=200,maxSize:s=400,resizable:c=!1,collapsible:l=!0,onExpand:a,onCollapse:u,onResize:g,onResizeStart:m,onResizeEnd:N,snapPoints:j,snapTolerance:B,collapseThreshold:z,paneId:x,persistence:D,children:F,style:W,state:ee,defaultState:H,onStateChange:I,size:Q,defaultSize:k,onSizeChange:p,sizeUpdate:P,sizeUpdateMs:w=50,inset:C,id:U,...d}=e,{table:h,attributes:b}=yt(r,"fixed"),v=mt({name:"sidebar",label:"Sidebar",propNames:Ln,id:U,controlled:Ft(ee),defaultValue:Ft(H),presentationTable:h,builtIn:St,onChange:(X,ke)=>I?.(Vn(X),{reason:ke}),onExpand:a,onCollapse:u,size:o});ft("sidebar",C),K.useEffect(()=>{(j!==void 0||z!==void 0||x!==void 0||D!==void 0)&&void 0},[j,z,x,D]);let O=K.useRef(null),M=(0,Ut.useComposedRefs)(t,v.setElement,O),S=gt({name:"sidebar",elementId:v.id,elementRef:O,cssVarName:"--sidebar-size",orientation:"vertical",edge:"end",growth:vt,expandedSize:o,minSize:i,maxSize:s,resizable:c,collapsible:l,size:Q,defaultSize:k,onSizeChange:p,sizeUpdate:P,sizeUpdateMs:w,onResize:g,onResizeStart:m,onResizeEnd:N,snapPoints:j,snapTolerance:B,collapseThreshold:z,paneId:x,persistence:D,overlaying:v.overlaying,overlayingNow:()=>h[pe()]==="overlay",requestCollapse:()=>v.setValue("closed","toggle"),requestToggle:()=>v.toggle("toggle")}),{handles:Y,content:f}=bt(F,be),q=c&&v.value!=="closed"&&!v.overlaying?K.createElement(Ve.Provider,{value:S},Y.length>0?Y:K.createElement(re,null)):null,_=v.peeking?`var(--sidebar-size, ${o}px)`:void 0;return K.createElement("div",{...Rt(d),role:d.role??"navigation",id:v.id,ref:M,className:(0,Wt.default)("kui-ShellPane","kui-ShellSidebar",n),...Pt(v,b),"data-inset":C||void 0,tabIndex:v.overlaying?-1:d.tabIndex,style:{...W,"--sidebar-expanded-size":`${o}px`,"--sidebar-min-size":`${i}px`,"--sidebar-max-size":`${s}px`,..._?{"--peek-sidebar-width":_}:{}}},K.createElement("div",{className:"kui-ShellSidebarContent"},K.createElement(It,null,f)),q)});Ge.displayName="Shell.Sidebar";Ge.Handle=be;
|
|
2
3
|
//# sourceMappingURL=shell-sidebar.js.map
|