@womp/kookie-ui 0.24.0 → 0.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/components.css +12859 -11868
- 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 +10 -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 +3 -1
- 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 +3 -3
- 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 +6 -0
- 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 +3 -3
- 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.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.map +1 -1
- package/dist/cjs/components/avatar.js +2 -1
- package/dist/cjs/components/avatar.js.map +4 -4
- package/dist/cjs/components/avatar.props.js +1 -0
- package/dist/cjs/components/avatar.props.js.map +1 -1
- package/dist/cjs/components/blockquote.js +1 -0
- package/dist/cjs/components/blockquote.js.map +1 -1
- 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 +2 -1
- package/dist/cjs/components/card.js.map +4 -4
- 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.js +2 -1
- package/dist/cjs/components/checkbox-group.js.map +4 -4
- package/dist/cjs/components/checkbox-group.primitive.js +1 -0
- package/dist/cjs/components/checkbox-group.primitive.js.map +1 -1
- 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 +4 -4
- package/dist/cjs/components/checkbox.props.js +1 -0
- package/dist/cjs/components/checkbox.props.js.map +1 -1
- package/dist/cjs/components/chip.js +2 -1
- package/dist/cjs/components/chip.js.map +4 -4
- package/dist/cjs/components/chip.props.js +1 -0
- package/dist/cjs/components/chip.props.js.map +1 -1
- package/dist/cjs/components/code.js +1 -0
- package/dist/cjs/components/code.js.map +1 -1
- 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.js +2 -1
- package/dist/cjs/components/dialog.js.map +4 -4
- 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.js +1 -0
- package/dist/cjs/components/icons.js.map +1 -1
- 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 +1 -1
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +3 -2
- 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.js +2 -1
- package/dist/cjs/components/navbar.js.map +4 -4
- package/dist/cjs/components/navbar.props.js +1 -0
- package/dist/cjs/components/navbar.props.js.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 +4 -4
- 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 +2 -1
- package/dist/cjs/components/radio-group.js.map +4 -4
- 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 +2 -1
- package/dist/cjs/components/radio.js.map +4 -4
- 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.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.js +1 -0
- package/dist/cjs/components/schemas/toggle.schema.js.map +1 -1
- package/dist/cjs/components/scroll-area.js +1 -0
- package/dist/cjs/components/scroll-area.js.map +1 -1
- 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.map +1 -1
- package/dist/cjs/components/segmented-control.js +2 -1
- package/dist/cjs/components/segmented-control.js.map +4 -4
- 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 +1 -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 +4 -4
- 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 +5 -2
- 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 +4 -4
- 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 +2 -2
- 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 +2 -1
- package/dist/cjs/components/switch.js.map +4 -4
- 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 +4 -4
- 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 +4 -4
- 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 +4 -4
- 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 +4 -4
- package/dist/cjs/components/theme.props.js +1 -0
- package/dist/cjs/components/theme.props.js.map +1 -1
- package/dist/cjs/components/toggle.js +2 -1
- package/dist/cjs/components/toggle.js.map +4 -4
- package/dist/cjs/components/toolbar.d.ts +4 -1
- 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 +4 -4
- 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 +19 -12
- 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/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.d.ts +1 -0
- package/dist/cjs/helpers/index.d.ts.map +1 -1
- package/dist/cjs/helpers/index.js +3 -3
- package/dist/cjs/helpers/index.js.map +3 -3
- package/dist/cjs/helpers/theme-size.d.ts +8 -30
- package/dist/cjs/helpers/theme-size.d.ts.map +1 -1
- package/dist/cjs/helpers/theme-size.js +1 -1
- package/dist/cjs/helpers/theme-size.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/theme-size.d.ts +32 -0
- package/dist/cjs/hooks/theme-size.d.ts.map +1 -0
- package/dist/cjs/hooks/theme-size.js +3 -0
- package/dist/cjs/hooks/theme-size.js.map +7 -0
- 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.js +1 -0
- package/dist/cjs/hooks/use-scroll-edges.js.map +1 -1
- 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 +4 -4
- package/dist/esm/chunk-2IU5XPR2.js +3 -0
- package/dist/esm/chunk-2IU5XPR2.js.map +7 -0
- package/dist/esm/{chunk-JYQGCXXI.js → chunk-2VSRZ4IT.js} +2 -1
- package/dist/esm/{chunk-JYQGCXXI.js.map → chunk-2VSRZ4IT.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-3B25RLWX.js +3 -0
- package/dist/esm/chunk-3B25RLWX.js.map +7 -0
- package/dist/esm/chunk-3CY6H4TE.js +3 -0
- package/dist/esm/chunk-3CY6H4TE.js.map +7 -0
- 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-3L2MDOYC.js +3 -0
- package/dist/esm/chunk-3L2MDOYC.js.map +7 -0
- 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-IAEAXIBI.js → chunk-4J7QDLKI.js} +3 -2
- package/dist/esm/{chunk-IAEAXIBI.js.map → chunk-4J7QDLKI.js.map} +1 -1
- package/dist/esm/chunk-5CFSNNYS.js +3 -0
- package/dist/esm/chunk-5CFSNNYS.js.map +7 -0
- package/dist/esm/chunk-5EBJOOXE.js +3 -0
- package/dist/esm/chunk-5EBJOOXE.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-5L4DZ2D3.js +3 -0
- package/dist/esm/chunk-5L4DZ2D3.js.map +7 -0
- package/dist/esm/chunk-5ON3XLRD.js +3 -0
- package/dist/esm/chunk-5ON3XLRD.js.map +7 -0
- 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-5TJH35TF.js +3 -0
- package/dist/esm/chunk-5TJH35TF.js.map +7 -0
- 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-5XR5PTDR.js +3 -0
- package/dist/esm/chunk-5XR5PTDR.js.map +7 -0
- package/dist/esm/{chunk-4BU4R7UM.js → chunk-63MUJFVF.js} +3 -2
- package/dist/esm/chunk-63MUJFVF.js.map +7 -0
- 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-6AUIIXXE.js +2 -0
- package/dist/esm/chunk-6AUIIXXE.js.map +7 -0
- package/dist/esm/{chunk-ELAW7ZUG.js → chunk-6FLLFCBU.js} +2 -2
- package/dist/esm/{chunk-4QKZYCCH.js → chunk-6RJQ5LLP.js} +3 -2
- package/dist/esm/{chunk-4QKZYCCH.js.map → chunk-6RJQ5LLP.js.map} +1 -1
- 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-I4FLQELQ.js → chunk-7B3XDZXZ.js} +3 -2
- package/dist/esm/chunk-7B3XDZXZ.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-7X7VWR3F.js +3 -0
- package/dist/esm/chunk-7X7VWR3F.js.map +7 -0
- package/dist/esm/chunk-7XHE6TOA.js +6 -0
- package/dist/esm/chunk-7XHE6TOA.js.map +7 -0
- package/dist/esm/chunk-A2OMWZI7.js +2 -0
- package/dist/esm/chunk-AQ7VUGQQ.js +3 -0
- package/dist/esm/chunk-AQ7VUGQQ.js.map +7 -0
- 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-BVFHJP5E.js +3 -0
- package/dist/esm/chunk-BVFHJP5E.js.map +7 -0
- package/dist/esm/{chunk-H5BYPX6V.js → chunk-BXZSJKWA.js} +3 -2
- package/dist/esm/chunk-BXZSJKWA.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-UY6WJUNA.js → chunk-CQG4U5BR.js} +3 -2
- package/dist/esm/{chunk-UY6WJUNA.js.map → chunk-CQG4U5BR.js.map} +2 -2
- package/dist/esm/chunk-CR65RYGM.js +3 -0
- package/dist/esm/chunk-CR65RYGM.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-GYP66ZK2.js → chunk-D4P7332M.js} +3 -2
- package/dist/esm/{chunk-GYP66ZK2.js.map → chunk-D4P7332M.js.map} +1 -1
- 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-EAIQIW23.js +3 -0
- package/dist/esm/{chunk-4ZOVV3TY.js.map → chunk-EAIQIW23.js.map} +3 -3
- 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-FPGBCCML.js +3 -0
- package/dist/esm/chunk-FPGBCCML.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-62ZGP4ET.js → chunk-GKDGNPBD.js} +2 -1
- package/dist/esm/{chunk-62ZGP4ET.js.map → chunk-GKDGNPBD.js.map} +1 -1
- package/dist/esm/{chunk-W6BN5QLH.js → chunk-GNPTPIL7.js} +3 -2
- package/dist/esm/{chunk-W6BN5QLH.js.map → chunk-GNPTPIL7.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-FDJV5RXX.js → chunk-HHSFAOIO.js} +3 -2
- package/dist/esm/chunk-HHSFAOIO.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-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-PBFSBHBS.js → chunk-JUY7CBSL.js} +2 -2
- package/dist/esm/chunk-JZ5Z53MN.js +2 -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-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-MQEWEAH5.js +3 -0
- package/dist/esm/chunk-MQEWEAH5.js.map +7 -0
- package/dist/esm/chunk-MXIVYALY.js +3 -0
- package/dist/esm/chunk-MXIVYALY.js.map +7 -0
- package/dist/esm/chunk-N3QLHFHB.js +3 -0
- package/dist/esm/chunk-N3QLHFHB.js.map +7 -0
- package/dist/esm/{chunk-VVWYAVHM.js → chunk-N5H7C3PZ.js} +3 -2
- package/dist/esm/chunk-N5H7C3PZ.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-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-OQWD63AI.js +3 -0
- package/dist/esm/chunk-OQWD63AI.js.map +7 -0
- package/dist/esm/chunk-PCLO3ZZY.js +3 -0
- package/dist/esm/chunk-PCLO3ZZY.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-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-CHPT42BY.js → chunk-PZ6Z7WTR.js} +3 -2
- package/dist/esm/{chunk-CHPT42BY.js.map → chunk-PZ6Z7WTR.js.map} +1 -1
- 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-PZZJH2LR.js +3 -0
- package/dist/esm/chunk-PZZJH2LR.js.map +7 -0
- 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-QKCNGEX4.js +3 -0
- package/dist/esm/chunk-QKCNGEX4.js.map +7 -0
- 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-PM6QY3JO.js → chunk-R4PGFURL.js} +3 -2
- package/dist/esm/chunk-R4PGFURL.js.map +7 -0
- package/dist/esm/chunk-RB5VHWAW.js +3 -0
- package/dist/esm/chunk-RB5VHWAW.js.map +7 -0
- 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-3XZOE2IQ.js → chunk-RVPLXLRA.js} +3 -2
- package/dist/esm/{chunk-3XZOE2IQ.js.map → chunk-RVPLXLRA.js.map} +1 -1
- 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-VPRAXHLL.js +3 -0
- package/dist/esm/chunk-VPRAXHLL.js.map +7 -0
- package/dist/esm/{chunk-OS3FCYZY.js → chunk-VQPANPMI.js} +2 -1
- package/dist/esm/chunk-VRQEWMC6.js +3 -0
- package/dist/esm/chunk-VRQEWMC6.js.map +7 -0
- package/dist/esm/chunk-VVBSYWUA.js +3 -0
- package/dist/esm/chunk-VVBSYWUA.js.map +7 -0
- package/dist/esm/{chunk-RKZVXVBN.js → chunk-W4MQ6TEK.js} +3 -2
- package/dist/esm/chunk-W4MQ6TEK.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-PALE5UWK.js → chunk-WJ4H2O2G.js} +3 -2
- package/dist/esm/{chunk-PALE5UWK.js.map → chunk-WJ4H2O2G.js.map} +1 -1
- package/dist/esm/chunk-WMODMXEU.js +3 -0
- package/dist/esm/chunk-WMODMXEU.js.map +7 -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-CN6F4REJ.js → chunk-XH2CRCXR.js} +2 -1
- package/dist/esm/{chunk-CN6F4REJ.js.map → chunk-XH2CRCXR.js.map} +1 -1
- 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-YEHM3FZN.js → chunk-XPVRXQSW.js} +3 -2
- package/dist/esm/chunk-XPVRXQSW.js.map +7 -0
- 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-Y2BTPKK6.js +3 -0
- package/dist/esm/chunk-Y2BTPKK6.js.map +7 -0
- 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-YOSCUA6Z.js +3 -0
- package/dist/esm/chunk-YOSCUA6Z.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-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-Z563IAE3.js +3 -0
- package/dist/esm/chunk-Z563IAE3.js.map +7 -0
- package/dist/esm/{chunk-THUBY6L2.js → chunk-ZDSY6CJL.js} +3 -2
- package/dist/esm/chunk-ZDSY6CJL.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/chunk-ZYKJTNAT.js +3 -0
- package/dist/esm/chunk-ZYKJTNAT.js.map +7 -0
- 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 +10 -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 +3 -1
- 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 +6 -0
- 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.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.map +1 -1
- package/dist/esm/components/avatar.js +2 -1
- package/dist/esm/components/avatar.props.js +2 -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.js +2 -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.js +2 -1
- package/dist/esm/components/chip.props.js +2 -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.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.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 +1 -1
- 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.js +2 -1
- package/dist/esm/components/navbar.props.js +2 -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.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.js +2 -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.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 +1 -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 +5 -2
- 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.js +2 -1
- package/dist/esm/components/toolbar.d.ts +4 -1
- 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 +19 -12
- 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.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.d.ts +1 -0
- package/dist/esm/helpers/index.d.ts.map +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/index.js.map +4 -4
- 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.d.ts +8 -30
- package/dist/esm/helpers/theme-size.d.ts.map +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/theme-size.d.ts +32 -0
- package/dist/esm/hooks/theme-size.d.ts.map +1 -0
- package/dist/esm/hooks/theme-size.js +3 -0
- 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.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/font-family.prop.js.map +4 -4
- 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 +3 -3
- 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 +101 -42
- 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-tab-list.css +5 -0
- package/src/components/_internal/dropdown-menu-drill-down.tsx +45 -26
- package/src/components/_internal/menu-context.tsx +36 -1
- package/src/components/_internal/pane-chrome.tsx +8 -6
- 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 +6 -1
- package/src/components/_internal/shell-pane.tsx +5 -4
- package/src/components/_internal/shell-resizable.tsx +30 -8
- package/src/components/_internal/shell-sidebar.tsx +6 -1
- package/src/components/_internal/shell-store.tsx +2 -1
- package/src/components/accordion.css +55 -69
- package/src/components/accordion.tsx +1 -27
- package/src/components/alert-dialog.tsx +5 -1
- package/src/components/avatar.css +6 -2
- package/src/components/avatar.tsx +37 -4
- package/src/components/blockquote.css +2 -2
- package/src/components/button.tsx +12 -5
- package/src/components/card.css +14 -3
- package/src/components/card.tsx +1 -1
- package/src/components/chatbar.css +20 -3
- package/src/components/chatbar.tsx +15 -12
- package/src/components/checkbox-group.css +1 -5
- package/src/components/checkbox-group.tsx +1 -1
- package/src/components/checkbox.css +1 -5
- package/src/components/checkbox.tsx +1 -1
- package/src/components/chip.css +0 -3
- package/src/components/combobox.tsx +26 -27
- package/src/components/context-menu.tsx +48 -28
- package/src/components/dialog.tsx +1 -1
- package/src/components/dropdown-menu.css +0 -6
- package/src/components/dropdown-menu.tsx +72 -35
- package/src/components/heading.props.tsx +1 -1
- package/src/components/heading.tsx +4 -4
- package/src/components/image.css +5 -0
- package/src/components/image.tsx +29 -3
- package/src/components/index.tsx +1 -1
- package/src/components/kbd.css +6 -5
- package/src/components/link.css +1 -5
- package/src/components/message-scroller.tsx +15 -26
- package/src/components/navbar.css +9 -1
- package/src/components/navbar.tsx +1 -1
- package/src/components/notice.tsx +1 -1
- package/src/components/popover.css +18 -12
- package/src/components/popover.tsx +14 -12
- package/src/components/progress.css +33 -6
- package/src/components/progress.tsx +5 -3
- package/src/components/radio-group.tsx +1 -1
- package/src/components/radio.tsx +1 -1
- package/src/components/scroll-area.css +34 -4
- package/src/components/segmented-control.css +178 -148
- package/src/components/segmented-control.props.tsx +1 -1
- package/src/components/segmented-control.tsx +89 -64
- package/src/components/select.css +16 -29
- package/src/components/select.tsx +5 -16
- package/src/components/separator.css +8 -1
- package/src/components/separator.props.tsx +1 -1
- package/src/components/separator.tsx +22 -4
- package/src/components/sheet.css +8 -7
- package/src/components/sheet.tsx +4 -2
- package/src/components/shell.css +148 -21
- package/src/components/shell.tsx +19 -2
- package/src/components/sidebar.css +1 -135
- package/src/components/sidebar.tsx +194 -161
- package/src/components/slider.css +90 -21
- package/src/components/slider.props.tsx +2 -2
- package/src/components/slider.tsx +79 -92
- package/src/components/spinner.css +10 -2
- package/src/components/spinner.tsx +5 -1
- package/src/components/switch.css +40 -8
- package/src/components/switch.tsx +1 -1
- package/src/components/table.css +5 -1
- package/src/components/table.props.tsx +0 -9
- package/src/components/table.tsx +3 -2
- package/src/components/tabs.tsx +11 -4
- package/src/components/text-area.css +17 -2
- package/src/components/text-area.tsx +21 -17
- package/src/components/text-field.css +51 -36
- package/src/components/text-field.tsx +101 -50
- package/src/components/theme.tsx +15 -45
- package/src/components/toolbar.tsx +52 -16
- 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 +103 -62
- package/src/helpers/get-margin-styles.ts +8 -10
- package/src/helpers/index.ts +3 -0
- package/src/helpers/theme-size.ts +8 -46
- package/src/hooks/theme-size.ts +50 -0
- package/src/hooks/use-appearance.ts +32 -19
- package/src/hooks/use-body-pointer-events-cleanup.ts +123 -124
- package/src/props/gap.props.ts +4 -4
- package/src/styles/tokens/color.css +3 -0
- package/src/styles/utilities/margin.css +2 -2
- package/src/styles/utilities/text-align.css +8 -0
- package/styles.css +1837 -808
- package/tokens/base.css +2 -0
- package/tokens.css +2 -0
- package/utilities.css +38 -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-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-3VTS4C63.js +0 -2
- package/dist/esm/chunk-3VTS4C63.js.map +0 -7
- package/dist/esm/chunk-3WE4E2WQ.js +0 -2
- package/dist/esm/chunk-3WE4E2WQ.js.map +0 -7
- package/dist/esm/chunk-3XUY5WFA.js +0 -2
- package/dist/esm/chunk-3XUY5WFA.js.map +0 -7
- package/dist/esm/chunk-3YLYGKFB.js +0 -2
- package/dist/esm/chunk-3YLYGKFB.js.map +0 -7
- package/dist/esm/chunk-432YLNB3.js +0 -2
- package/dist/esm/chunk-432YLNB3.js.map +0 -7
- package/dist/esm/chunk-4BU4R7UM.js.map +0 -7
- package/dist/esm/chunk-4R5EMVB3.js +0 -2
- package/dist/esm/chunk-4R5EMVB3.js.map +0 -7
- package/dist/esm/chunk-4ZOVV3TY.js +0 -2
- 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-6DWDNKLS.js +0 -1
- package/dist/esm/chunk-7CUQMU3T.js +0 -2
- package/dist/esm/chunk-7CUQMU3T.js.map +0 -7
- package/dist/esm/chunk-BGAJ2MDF.js +0 -2
- package/dist/esm/chunk-BGAJ2MDF.js.map +0 -7
- package/dist/esm/chunk-BJUCBOGU.js +0 -2
- package/dist/esm/chunk-CLZW2IDD.js +0 -2
- package/dist/esm/chunk-CLZW2IDD.js.map +0 -7
- package/dist/esm/chunk-CMHUK7OG.js +0 -2
- package/dist/esm/chunk-CMHUK7OG.js.map +0 -7
- package/dist/esm/chunk-DFGY2NZB.js +0 -2
- package/dist/esm/chunk-DUTZUWZP.js +0 -2
- package/dist/esm/chunk-DUTZUWZP.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-FDJV5RXX.js.map +0 -7
- package/dist/esm/chunk-G2JD52O5.js +0 -2
- package/dist/esm/chunk-G2JD52O5.js.map +0 -7
- package/dist/esm/chunk-G4ETY2NP.js +0 -2
- package/dist/esm/chunk-G4ETY2NP.js.map +0 -7
- package/dist/esm/chunk-GPOCLDBR.js +0 -2
- package/dist/esm/chunk-GPOCLDBR.js.map +0 -7
- package/dist/esm/chunk-H3IAGAEL.js +0 -2
- package/dist/esm/chunk-H5BYPX6V.js.map +0 -7
- package/dist/esm/chunk-H5G7UECV.js +0 -2
- package/dist/esm/chunk-H5G7UECV.js.map +0 -7
- package/dist/esm/chunk-HT7RFHLW.js +0 -2
- package/dist/esm/chunk-HT7RFHLW.js.map +0 -7
- package/dist/esm/chunk-I4FLQELQ.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-KA5UE2VN.js +0 -2
- package/dist/esm/chunk-KA5UE2VN.js.map +0 -7
- package/dist/esm/chunk-KEGCX5VM.js +0 -2
- package/dist/esm/chunk-KEGCX5VM.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-KVHKPUZ2.js +0 -2
- package/dist/esm/chunk-KVHKPUZ2.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-N3WBEQWL.js +0 -5
- package/dist/esm/chunk-N3WBEQWL.js.map +0 -7
- package/dist/esm/chunk-NC3CJUE3.js +0 -2
- package/dist/esm/chunk-NC3CJUE3.js.map +0 -7
- package/dist/esm/chunk-OA7C34MJ.js +0 -1
- package/dist/esm/chunk-P2MV6HLA.js +0 -2
- package/dist/esm/chunk-P2MV6HLA.js.map +0 -7
- package/dist/esm/chunk-PDMCLVYT.js +0 -2
- package/dist/esm/chunk-PDMCLVYT.js.map +0 -7
- package/dist/esm/chunk-PJR6GRZC.js +0 -2
- package/dist/esm/chunk-PJR6GRZC.js.map +0 -7
- package/dist/esm/chunk-PM6QY3JO.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-RKZVXVBN.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-THUBY6L2.js.map +0 -7
- package/dist/esm/chunk-TXQZ5HLV.js +0 -2
- package/dist/esm/chunk-TXQZ5HLV.js.map +0 -7
- package/dist/esm/chunk-TZTUPQYK.js +0 -2
- package/dist/esm/chunk-UICSVJ3B.js +0 -1
- package/dist/esm/chunk-UKASIY6M.js +0 -2
- package/dist/esm/chunk-UKASIY6M.js.map +0 -7
- package/dist/esm/chunk-UONSKZQT.js +0 -2
- package/dist/esm/chunk-V5O3TF57.js +0 -2
- package/dist/esm/chunk-V5O3TF57.js.map +0 -7
- package/dist/esm/chunk-VCV7RACK.js +0 -2
- package/dist/esm/chunk-VCV7RACK.js.map +0 -7
- package/dist/esm/chunk-VPSMETY2.js +0 -2
- package/dist/esm/chunk-VUNCI6A6.js +0 -2
- package/dist/esm/chunk-VUNCI6A6.js.map +0 -7
- package/dist/esm/chunk-VUPIJNG2.js +0 -2
- package/dist/esm/chunk-VUPIJNG2.js.map +0 -7
- package/dist/esm/chunk-VVWYAVHM.js.map +0 -7
- package/dist/esm/chunk-VXQQ6KXI.js +0 -2
- package/dist/esm/chunk-VXQQ6KXI.js.map +0 -7
- package/dist/esm/chunk-WG5ORTIW.js +0 -2
- package/dist/esm/chunk-WG5ORTIW.js.map +0 -7
- package/dist/esm/chunk-WMVR2XBR.js +0 -2
- package/dist/esm/chunk-WMVR2XBR.js.map +0 -7
- package/dist/esm/chunk-WOR3JCLX.js +0 -1
- package/dist/esm/chunk-WX7SX5BN.js +0 -2
- package/dist/esm/chunk-WX7SX5BN.js.map +0 -7
- package/dist/esm/chunk-X4A3XRBY.js +0 -2
- package/dist/esm/chunk-XOACTIBL.js +0 -2
- package/dist/esm/chunk-XOACTIBL.js.map +0 -7
- package/dist/esm/chunk-XZQSSRTG.js +0 -2
- package/dist/esm/chunk-YEHM3FZN.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-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
- /package/dist/esm/{chunk-WOR3JCLX.js.map → hooks/theme-size.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/index.ts", "../../../src/hooks/use-live-announcer.ts", "../../../src/hooks/use-body-pointer-events-cleanup.ts", "../../../src/hooks/use-tooltip-wrapper.ts", "../../../src/hooks/use-toggle-state.ts", "../../../src/hooks/use-appearance.ts", "../../../src/hooks/appearance-script.ts"],
|
|
4
|
-
"sourcesContent": ["export { useLiveAnnouncer } from './use-live-announcer.js';\nexport { useBodyPointerEventsCleanup } from './use-body-pointer-events-cleanup.js';\nexport { useTooltipWrapper } from './use-tooltip-wrapper.js';\nexport { useToggleState } from './use-toggle-state.js';\nexport { useAppearance, setAppearance } from './use-appearance.js';\nexport { appearanceScript, APPEARANCE_STORAGE_KEY } from './appearance-script.js';\nexport type { AppearanceChoice, ResolvedAppearance } from './use-appearance.js';\n", "import * as React from 'react';\n\n/**\n * Reference counter to track how many components are using the live region.\n * Only remove the live region when no components are using it.\n */\nlet liveRegionRefCount = 0;\n\n/**\n * Hook for making live announcements to screen readers\n * Creates a hidden aria-live region for announcing dynamic content changes\n */\nexport function useLiveAnnouncer() {\n // Track the timeout so we can clean it up on unmount\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n // Create aria-live region if it doesn't exist\n React.useEffect(() => {\n let liveRegion = document.getElementById('kui-live-announcer');\n\n if (!liveRegion) {\n liveRegion = document.createElement('div');\n liveRegion.id = 'kui-live-announcer';\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.setAttribute('aria-atomic', 'true');\n liveRegion.style.cssText = `\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n `;\n document.body.appendChild(liveRegion);\n }\n\n // Increment ref count when component mounts\n liveRegionRefCount++;\n\n return () => {\n // Decrement ref count when component unmounts\n liveRegionRefCount--;\n\n // Clean up timeout on unmount\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Only remove the live region if no components are using it\n if (liveRegionRefCount === 0) {\n const region = document.getElementById('kui-live-announcer');\n if (region) {\n region.remove();\n }\n }\n };\n }, []);\n\n const announce = React.useCallback((message: string) => {\n const liveRegion = document.getElementById('kui-live-announcer');\n if (liveRegion) {\n // Clear any pending timeout\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Clear previous announcements\n liveRegion.textContent = '';\n\n // Add new announcement with a small delay to ensure it's announced\n timeoutRef.current = setTimeout(() => {\n liveRegion.textContent = message;\n }, 100);\n }\n }, []);\n\n return announce;\n}\n", "import * as React from 'react';\n\nlet cleanupInstalled = false;\n\n/**\n * Hook to cleanup stuck pointer-events: none on document.body\n *\n * This addresses an issue where react-remove-scroll (used by Radix UI Dialog)\n * sometimes fails to restore body pointer-events after dialog closes,\n * leaving the page unclickable.\n */\nexport function useBodyPointerEventsCleanup() {\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n if (cleanupInstalled) return;\n\n cleanupInstalled = true;\n\n // Deferred cleanups are tracked so unmount can cancel the ones still\n // queued. A timer that outlives the document reaches for `document.body`\n // after it is gone; under jsdom that surfaces as an unhandled\n // ReferenceError attributed to whichever test happened to be running.\n const pending = new Set<ReturnType<typeof setTimeout>>();\n\n const defer = (fn: () => void, delay: number) => {\n const id = setTimeout(() => {\n pending.delete(id);\n fn();\n }, delay);\n pending.add(id);\n };\n\n const hasOpenModal = (): boolean => {\n // Check for open dialogs/alertdialogs\n const hasDialogs = Boolean(\n document.querySelector(\n '[role=\"dialog\"][aria-modal=\"true\"], [role=\"alertdialog\"][aria-modal=\"true\"]',\n ),\n );\n\n // Also check for any Radix overlays that are still mounted\n const hasRadixOverlays = Boolean(\n document.querySelector('[data-radix-popper-content-wrapper], [data-state=\"open\"]'),\n );\n\n return hasDialogs || hasRadixOverlays;\n };\n\n const forceCleanup = () => {\n // Aggressive cleanup - remove pointer-events regardless\n if (document.body.style.pointerEvents === 'none') {\n console.log('[KookieUI] Force cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n\n // Also remove any scroll-lock related attributes\n document.body.removeAttribute('data-scroll-locked');\n document.body.removeAttribute('data-remove-scroll');\n\n // Remove any classes that might be causing issues\n document.body.classList.remove('ReactModal__Body--open');\n }\n };\n\n const safeCleanup = () => {\n if (document.body.style.pointerEvents === 'none' && !hasOpenModal()) {\n console.log('[KookieUI] Safe cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n }\n };\n\n // Force cleanup on any click outside modal content\n const onDocumentClick = (event: Event) => {\n const target = event.target as Element;\n if (\n target &&\n !target.closest(\n '[role=\"dialog\"], [role=\"alertdialog\"], [data-radix-popper-content-wrapper]',\n )\n ) {\n // Clicked outside any modal - force cleanup after a short delay\n defer(forceCleanup, 100);\n }\n };\n\n // Force cleanup on ESC key\n const onEscapeKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n defer(forceCleanup, 200);\n }\n };\n\n // Safe cleanup on other interactions\n const onInteraction = () => {\n defer(safeCleanup, 50);\n };\n\n // Install global listeners\n document.addEventListener('click', onDocumentClick, true);\n document.addEventListener('keydown', onEscapeKey, true);\n document.addEventListener('pointerup', onInteraction, true);\n document.addEventListener('transitionend', onInteraction, true);\n document.addEventListener('animationend', onInteraction, true);\n\n // Watch for DOM changes that might indicate overlay removal\n const observer = new MutationObserver(() => {\n defer(safeCleanup, 0);\n });\n observer.observe(document.body, { childList: true, subtree: true, attributes: true });\n\n // Fallback periodic cleanup\n const intervalId = setInterval(() => {\n if (document.body.style.pointerEvents === 'none' && !hasOpenModal()) {\n console.log('[KookieUI] Periodic cleanup of stuck pointer-events');\n document.body.style.pointerEvents = '';\n }\n }, 1000);\n\n // Initial cleanup\n defer(safeCleanup, 100);\n\n // Tear everything down together. The observer is the important one: it\n // fires while React unmounts the tree, so leaving it connected keeps\n // queueing work against a document that is about to go away. Releasing the\n // latch lets a later mount reinstall.\n return () => {\n clearInterval(intervalId);\n\n pending.forEach(clearTimeout);\n pending.clear();\n\n observer.disconnect();\n\n document.removeEventListener('click', onDocumentClick, true);\n document.removeEventListener('keydown', onEscapeKey, true);\n document.removeEventListener('pointerup', onInteraction, true);\n document.removeEventListener('transitionend', onInteraction, true);\n document.removeEventListener('animationend', onInteraction, true);\n\n cleanupInstalled = false;\n };\n }, []);\n}\n", "import * as React from 'react';\n\n/**\n * Hook for managing tooltip accessibility props and conditional rendering.\n * Encapsulates tooltip ID generation and aria-describedby binding.\n *\n * @param tooltip - The tooltip content (if any)\n * @returns Object containing tooltipId, hasTooltip flag, and accessibility props\n *\n * @example\n * ```tsx\n * const { tooltipId, hasTooltip, accessibilityProps } = useTooltipWrapper(tooltip);\n *\n * const button = <button {...accessibilityProps}>Click me</button>;\n *\n * if (!hasTooltip) return button;\n *\n * return <Tooltip id={tooltipId} content={tooltip}>{button}</Tooltip>;\n * ```\n */\nexport function useTooltipWrapper(tooltip: React.ReactNode) {\n const tooltipId = React.useId();\n const hasTooltip = Boolean(tooltip);\n\n const accessibilityProps = React.useMemo(() => (hasTooltip ? { 'aria-describedby': tooltipId } : {}), [hasTooltip, tooltipId]);\n\n return { tooltipId, hasTooltip, accessibilityProps };\n}\n", "import * as React from 'react';\nimport { useLiveAnnouncer } from './use-live-announcer.js';\n\n/**\n * Options for the useToggleState hook\n */\ninterface UseToggleStateOptions {\n /** Controlled pressed state */\n pressed?: boolean;\n /** Callback when pressed state changes */\n onPressedChange?: (pressed: boolean) => void;\n /** Function to get the accessible name for announcements */\n getAccessibleName: () => string;\n /** Component name for warning messages */\n componentName: string;\n}\n\n/**\n * Hook for shared toggle button state management.\n * Provides accessibility announcements and controlled/uncontrolled warnings.\n *\n * @param options - Configuration options for the toggle state\n * @returns Object containing the handlePressedChange callback\n *\n * @example\n * ```tsx\n * const getAccessibleName = React.useCallback(() => 'Toggle button', []);\n *\n * const { handlePressedChange } = useToggleState({\n * pressed,\n * onPressedChange,\n * getAccessibleName,\n * componentName: 'Toggle',\n * });\n * ```\n */\nexport function useToggleState({ pressed, onPressedChange, getAccessibleName, componentName }: UseToggleStateOptions) {\n const announce = useLiveAnnouncer();\n\n // Track if we've already warned about controlled without handler\n const warnedRef = React.useRef(false);\n\n /**\n * Memoized handler for state changes with accessibility announcements.\n * Announces the new state immediately for screen readers.\n */\n const handlePressedChange = React.useCallback(\n (newPressed: boolean) => {\n const accessibleName = getAccessibleName();\n // Announce the state change for screen readers\n announce(`${accessibleName} ${newPressed ? 'pressed' : 'unpressed'}`);\n // Call the user's change handler\n onPressedChange?.(newPressed);\n },\n [announce, onPressedChange, getAccessibleName],\n );\n\n // Development-only warning for controlled/uncontrolled pattern\n // Only warns once to avoid console spam\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'development' && pressed !== undefined && onPressedChange === undefined && !warnedRef.current) {\n warnedRef.current = true;\n console.warn(\n `${componentName}: You provided a \\`pressed\\` prop without an \\`onPressedChange\\` handler. ` +\n 'This will result in a read-only toggle button. If you want the button to be interactive, ' +\n 'you should provide an `onPressedChange` handler.',\n );\n }\n }, [pressed, onPressedChange, componentName]);\n\n return { handlePressedChange };\n}\n", "'use client';\n\nimport * as React from 'react';\nimport { APPEARANCE_STORAGE_KEY } from './appearance-script.js';\n\n/**\n * Light and dark mode, decided before the first paint and kept on `<html>`.\n *\n * The server cannot know the visitor's mode, so `appearanceScript` runs synchronously in\n * `<head>`: the stored choice first, `prefers-color-scheme` otherwise. It writes the `light`\n * or `dark` class (which every token and component stylesheet already keys off) and\n * `data-appearance` on `<html>`. The root `<Theme>` keeps `appearance=\"inherit\"`, so it\n * writes no class of its own and `<html>` is the one source of truth. Nested themes and\n * portals inherit it from there.\n *\n * `useAppearance` is the client half: an external store over `<html>` and the same storage\n * key. It never mirrors the mode into React state that could disagree with the DOM.\n */\n\ntype AppearanceChoice = 'system' | 'light' | 'dark';\ntype ResolvedAppearance = 'light' | 'dark';\n\nconst listeners = new Set<() => void>();\n\nfunction emit() {\n for (const listener of listeners) listener();\n}\n\nfunction readChoice(): AppearanceChoice {\n try {\n const value = globalThis.localStorage?.getItem(APPEARANCE_STORAGE_KEY);\n return value === 'light' || value === 'dark' ? value : 'system';\n } catch {\n return 'system';\n }\n}\n\nfunction systemAppearance(): ResolvedAppearance {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n}\n\nfunction stamp(mode: ResolvedAppearance) {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n root.classList.add(mode);\n root.setAttribute('data-appearance', mode);\n root.style.colorScheme = mode;\n}\n\nfunction readResolved(): ResolvedAppearance {\n const root = document.documentElement;\n if (root.classList.contains('dark') || root.classList.contains('dark-theme')) return 'dark';\n if (root.classList.contains('light') || root.classList.contains('light-theme')) return 'light';\n return systemAppearance();\n}\n\nlet snapshot: { choice: AppearanceChoice; resolved: ResolvedAppearance } | null = null;\n\nfunction getSnapshot() {\n const choice = readChoice();\n const resolved = readResolved();\n if (!snapshot || snapshot.choice !== choice || snapshot.resolved !== resolved) {\n snapshot = { choice, resolved };\n }\n return snapshot;\n}\n\nconst serverSnapshot = { choice: 'system' as AppearanceChoice, resolved: 'light' as ResolvedAppearance };\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n // With no stored choice, follow the system as it changes.\n const onSystemChange = () => {\n if (readChoice() === 'system') {\n stamp(systemAppearance());\n emit();\n }\n };\n // Another tab changed the choice.\n const onStorage = (event: StorageEvent) => {\n if (event.key !== APPEARANCE_STORAGE_KEY) return;\n const choice = readChoice();\n stamp(choice === 'system' ? systemAppearance() : choice);\n emit();\n };\n media.addEventListener('change', onSystemChange);\n window.addEventListener('storage', onStorage);\n return () => {\n listeners.delete(listener);\n media.removeEventListener('change', onSystemChange);\n window.removeEventListener('storage', onStorage);\n };\n}\n\n/** Applies a choice to `<html>` and stores it. The change applies even if storage is blocked. */\nfunction setAppearance(choice: AppearanceChoice) {\n try {\n if (choice === 'system') localStorage.removeItem(APPEARANCE_STORAGE_KEY);\n else localStorage.setItem(APPEARANCE_STORAGE_KEY, choice);\n } catch {\n // Storage is blocked: the mode still changes for this page.\n }\n stamp(choice === 'system' ? systemAppearance() : choice);\n emit();\n}\n\n/**\n * The page's light or dark mode. `choice` is what the person picked (`system` when they\n * haven't); `appearance` is what is showing. On the server and in the first client render it\n * reports `system` / `light`, then corrects without a hydration mismatch.\n */\nfunction useAppearance() {\n const { choice, resolved } = React.useSyncExternalStore(subscribe, getSnapshot, () => serverSnapshot);\n return { choice, appearance: resolved, setAppearance } as const;\n}\n\nexport { useAppearance, setAppearance };\nexport type { AppearanceChoice, ResolvedAppearance };\n", "/**\n * The pre-paint half of light and dark mode (see `use-appearance.ts`). Kept in its own module\n * with no client directive, so a server component such as a Next.js root layout can import the\n * string and inline it in `<head>`.\n */\n\nconst APPEARANCE_STORAGE_KEY = 'kookie-appearance';\n\n/**\n * Inline this in `<head>`, before any stylesheet paints, e.g.\n * `<script dangerouslySetInnerHTML={{ __html: appearanceScript }} />`.\n *\n * Storage is read inside its own try/catch: browsers that block site data throw on access,\n * and that must not skip the stamp. `matchMedia` always answers.\n */\nconst appearanceScript = `(function () {\n var e = document.documentElement;\n var a = null;\n try { a = localStorage.getItem(${JSON.stringify(APPEARANCE_STORAGE_KEY)}); } catch (err) {}\n var dark = a === \"light\" ? false : a === \"dark\" ? true : matchMedia(\"(prefers-color-scheme: dark)\").matches;\n var mode = dark ? \"dark\" : \"light\";\n e.classList.remove(\"light\", \"dark\");\n e.classList.add(mode);\n e.setAttribute(\"data-appearance\", mode);\n e.style.colorScheme = mode;\n})();`;\n\nexport { appearanceScript, APPEARANCE_STORAGE_KEY };\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,
|
|
6
|
-
"names": ["hooks_exports", "__export", "APPEARANCE_STORAGE_KEY", "appearanceScript", "setAppearance", "useAppearance", "useBodyPointerEventsCleanup", "useLiveAnnouncer", "useToggleState", "useTooltipWrapper", "__toCommonJS", "React", "liveRegionRefCount", "useLiveAnnouncer", "timeoutRef", "liveRegion", "region", "message", "React", "
|
|
4
|
+
"sourcesContent": ["export { useLiveAnnouncer } from './use-live-announcer.js';\nexport { useBodyPointerEventsCleanup } from './use-body-pointer-events-cleanup.js';\nexport { useTooltipWrapper } from './use-tooltip-wrapper.js';\nexport { useToggleState } from './use-toggle-state.js';\nexport { useAppearance, setAppearance } from './use-appearance.js';\nexport { appearanceScript, APPEARANCE_STORAGE_KEY } from './appearance-script.js';\nexport type { AppearanceChoice, ResolvedAppearance } from './use-appearance.js';\n", "import * as React from 'react';\n\n/**\n * Reference counter to track how many components are using the live region.\n * Only remove the live region when no components are using it.\n */\nlet liveRegionRefCount = 0;\n\n/**\n * Hook for making live announcements to screen readers\n * Creates a hidden aria-live region for announcing dynamic content changes\n */\nexport function useLiveAnnouncer() {\n // Track the timeout so we can clean it up on unmount\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n // Create aria-live region if it doesn't exist\n React.useEffect(() => {\n let liveRegion = document.getElementById('kui-live-announcer');\n\n if (!liveRegion) {\n liveRegion = document.createElement('div');\n liveRegion.id = 'kui-live-announcer';\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.setAttribute('aria-atomic', 'true');\n liveRegion.style.cssText = `\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n `;\n document.body.appendChild(liveRegion);\n }\n\n // Increment ref count when component mounts\n liveRegionRefCount++;\n\n return () => {\n // Decrement ref count when component unmounts\n liveRegionRefCount--;\n\n // Clean up timeout on unmount\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Only remove the live region if no components are using it\n if (liveRegionRefCount === 0) {\n const region = document.getElementById('kui-live-announcer');\n if (region) {\n region.remove();\n }\n }\n };\n }, []);\n\n const announce = React.useCallback((message: string) => {\n const liveRegion = document.getElementById('kui-live-announcer');\n if (liveRegion) {\n // Clear any pending timeout\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Clear previous announcements\n liveRegion.textContent = '';\n\n // Add new announcement with a small delay to ensure it's announced\n timeoutRef.current = setTimeout(() => {\n liveRegion.textContent = message;\n }, 100);\n }\n }, []);\n\n return announce;\n}\n", "import * as React from 'react';\n\n// How many overlays currently use the hook. The listeners are shared: the first mount installs\n// them and the last unmount removes them, so closing one overlay never strips the fallback from\n// another that is still mounted.\nlet mountCount = 0;\nlet teardown: (() => void) | null = null;\n\nconst devLog = (message: string) => {\n if (process.env.NODE_ENV !== 'production') {\n console.log(message);\n }\n};\n\nfunction install(): () => void {\n // Deferred cleanups are tracked so teardown can cancel the ones still queued. A timer that\n // outlives the document reaches for `document.body` after it is gone; under jsdom that surfaces\n // as an unhandled ReferenceError attributed to whichever test happened to be running.\n const pending = new Set<ReturnType<typeof setTimeout>>();\n\n const defer = (fn: () => void, delay: number) => {\n const id = setTimeout(() => {\n pending.delete(id);\n fn();\n }, delay);\n pending.add(id);\n };\n\n const isStuck = () => document.body.style.pointerEvents === 'none';\n\n const hasOpenModal = (): boolean => {\n // Open dialogs and alert dialogs\n const hasDialogs = Boolean(\n document.querySelector('[role=\"dialog\"][aria-modal=\"true\"], [role=\"alertdialog\"][aria-modal=\"true\"]'),\n );\n\n // Any Radix overlay that is still mounted. Only overlays count: an open Accordion or\n // Collapsible also carries data-state=\"open\" and must not keep a stuck page blocked.\n const hasRadixOverlays = Boolean(\n document.querySelector(\n '[data-radix-popper-content-wrapper], [role=\"dialog\"][data-state=\"open\"], [role=\"alertdialog\"][data-state=\"open\"]',\n ),\n );\n\n return hasDialogs || hasRadixOverlays;\n };\n\n // Only clears pointer-events when no modal is open. Scroll-lock attributes belong to\n // react-remove-scroll and are never touched here.\n const safeCleanup = () => {\n if (isStuck() && !hasOpenModal()) {\n devLog('[KookieUI] Cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n }\n };\n\n // Every trigger queues a check only while the body is actually blocked.\n const scheduleCleanup = (delay: number) => {\n if (isStuck()) defer(safeCleanup, delay);\n };\n\n const onDocumentClick = (event: Event) => {\n const target = event.target as Element;\n if (target && !target.closest('[role=\"dialog\"], [role=\"alertdialog\"], [data-radix-popper-content-wrapper]')) {\n scheduleCleanup(100);\n }\n };\n\n const onEscapeKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n scheduleCleanup(200);\n }\n };\n\n const onInteraction = () => {\n scheduleCleanup(50);\n };\n\n document.addEventListener('click', onDocumentClick, true);\n document.addEventListener('keydown', onEscapeKey, true);\n document.addEventListener('pointerup', onInteraction, true);\n document.addEventListener('transitionend', onInteraction, true);\n document.addEventListener('animationend', onInteraction, true);\n\n // Portals mount and unmount as direct children of body, and the stuck value lives in body's\n // style, so body's own children and style are all that need watching.\n const observer = new MutationObserver(() => {\n scheduleCleanup(0);\n });\n observer.observe(document.body, { childList: true, attributes: true, attributeFilter: ['style'] });\n\n // Fallback periodic cleanup\n const intervalId = setInterval(safeCleanup, 1000);\n\n // Initial cleanup\n scheduleCleanup(100);\n\n // Tear everything down together. The observer is the important one: it fires while React\n // unmounts the tree, so leaving it connected keeps queueing work against a document that is\n // about to go away.\n return () => {\n clearInterval(intervalId);\n\n pending.forEach(clearTimeout);\n pending.clear();\n\n observer.disconnect();\n\n document.removeEventListener('click', onDocumentClick, true);\n document.removeEventListener('keydown', onEscapeKey, true);\n document.removeEventListener('pointerup', onInteraction, true);\n document.removeEventListener('transitionend', onInteraction, true);\n document.removeEventListener('animationend', onInteraction, true);\n };\n}\n\n/**\n * Hook to cleanup stuck pointer-events: none on document.body\n *\n * This addresses an issue where react-remove-scroll (used by Radix UI Dialog)\n * sometimes fails to restore body pointer-events after dialog closes,\n * leaving the page unclickable. It never clears the value while a modal is open.\n */\nexport function useBodyPointerEventsCleanup() {\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n\n mountCount += 1;\n if (mountCount === 1) {\n teardown = install();\n }\n\n return () => {\n mountCount -= 1;\n if (mountCount === 0) {\n teardown?.();\n teardown = null;\n }\n };\n }, []);\n}\n", "import * as React from 'react';\n\n/**\n * Hook for managing tooltip accessibility props and conditional rendering.\n * Encapsulates tooltip ID generation and aria-describedby binding.\n *\n * @param tooltip - The tooltip content (if any)\n * @returns Object containing tooltipId, hasTooltip flag, and accessibility props\n *\n * @example\n * ```tsx\n * const { tooltipId, hasTooltip, accessibilityProps } = useTooltipWrapper(tooltip);\n *\n * const button = <button {...accessibilityProps}>Click me</button>;\n *\n * if (!hasTooltip) return button;\n *\n * return <Tooltip id={tooltipId} content={tooltip}>{button}</Tooltip>;\n * ```\n */\nexport function useTooltipWrapper(tooltip: React.ReactNode) {\n const tooltipId = React.useId();\n const hasTooltip = Boolean(tooltip);\n\n const accessibilityProps = React.useMemo(() => (hasTooltip ? { 'aria-describedby': tooltipId } : {}), [hasTooltip, tooltipId]);\n\n return { tooltipId, hasTooltip, accessibilityProps };\n}\n", "import * as React from 'react';\nimport { useLiveAnnouncer } from './use-live-announcer.js';\n\n/**\n * Options for the useToggleState hook\n */\ninterface UseToggleStateOptions {\n /** Controlled pressed state */\n pressed?: boolean;\n /** Callback when pressed state changes */\n onPressedChange?: (pressed: boolean) => void;\n /** Function to get the accessible name for announcements */\n getAccessibleName: () => string;\n /** Component name for warning messages */\n componentName: string;\n}\n\n/**\n * Hook for shared toggle button state management.\n * Provides accessibility announcements and controlled/uncontrolled warnings.\n *\n * @param options - Configuration options for the toggle state\n * @returns Object containing the handlePressedChange callback\n *\n * @example\n * ```tsx\n * const getAccessibleName = React.useCallback(() => 'Toggle button', []);\n *\n * const { handlePressedChange } = useToggleState({\n * pressed,\n * onPressedChange,\n * getAccessibleName,\n * componentName: 'Toggle',\n * });\n * ```\n */\nexport function useToggleState({ pressed, onPressedChange, getAccessibleName, componentName }: UseToggleStateOptions) {\n const announce = useLiveAnnouncer();\n\n // Track if we've already warned about controlled without handler\n const warnedRef = React.useRef(false);\n\n /**\n * Memoized handler for state changes with accessibility announcements.\n * Announces the new state immediately for screen readers.\n */\n const handlePressedChange = React.useCallback(\n (newPressed: boolean) => {\n const accessibleName = getAccessibleName();\n // Announce the state change for screen readers\n announce(`${accessibleName} ${newPressed ? 'pressed' : 'unpressed'}`);\n // Call the user's change handler\n onPressedChange?.(newPressed);\n },\n [announce, onPressedChange, getAccessibleName],\n );\n\n // Development-only warning for controlled/uncontrolled pattern\n // Only warns once to avoid console spam\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'development' && pressed !== undefined && onPressedChange === undefined && !warnedRef.current) {\n warnedRef.current = true;\n console.warn(\n `${componentName}: You provided a \\`pressed\\` prop without an \\`onPressedChange\\` handler. ` +\n 'This will result in a read-only toggle button. If you want the button to be interactive, ' +\n 'you should provide an `onPressedChange` handler.',\n );\n }\n }, [pressed, onPressedChange, componentName]);\n\n return { handlePressedChange };\n}\n", "'use client';\n\nimport * as React from 'react';\nimport { APPEARANCE_STORAGE_KEY } from './appearance-script.js';\n\n/**\n * Light and dark mode, decided before the first paint and kept on `<html>`.\n *\n * The server cannot know the visitor's mode, so `appearanceScript` runs synchronously in\n * `<head>`: the stored choice first, `prefers-color-scheme` otherwise. It writes the `light`\n * or `dark` class (which every token and component stylesheet already keys off) and\n * `data-appearance` on `<html>`. The root `<Theme>` keeps `appearance=\"inherit\"`, so it\n * writes no class of its own and `<html>` is the one source of truth. Nested themes and\n * portals inherit it from there.\n *\n * `useAppearance` is the client half: an external store over `<html>` and the same storage\n * key. It never mirrors the mode into React state that could disagree with the DOM.\n */\n\ntype AppearanceChoice = 'system' | 'light' | 'dark';\ntype ResolvedAppearance = 'light' | 'dark';\n\nconst listeners = new Set<() => void>();\n\nfunction emit() {\n for (const listener of listeners) listener();\n}\n\n// The last choice made on this page, for when storage is blocked and cannot hold it.\nlet pageChoice: AppearanceChoice = 'system';\n\nfunction readChoice(): AppearanceChoice {\n try {\n const value = globalThis.localStorage?.getItem(APPEARANCE_STORAGE_KEY);\n return value === 'light' || value === 'dark' ? value : 'system';\n } catch {\n return pageChoice;\n }\n}\n\nfunction systemAppearance(): ResolvedAppearance {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n}\n\nfunction stamp(mode: ResolvedAppearance) {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n root.classList.add(mode);\n root.setAttribute('data-appearance', mode);\n root.style.colorScheme = mode;\n}\n\nfunction readResolved(): ResolvedAppearance {\n const root = document.documentElement;\n if (root.classList.contains('dark') || root.classList.contains('dark-theme')) return 'dark';\n if (root.classList.contains('light') || root.classList.contains('light-theme')) return 'light';\n return systemAppearance();\n}\n\nlet snapshot: { choice: AppearanceChoice; resolved: ResolvedAppearance } | null = null;\n\nfunction getSnapshot() {\n const choice = readChoice();\n const resolved = readResolved();\n if (!snapshot || snapshot.choice !== choice || snapshot.resolved !== resolved) {\n snapshot = { choice, resolved };\n }\n return snapshot;\n}\n\nconst serverSnapshot = { choice: 'system' as AppearanceChoice, resolved: 'light' as ResolvedAppearance };\n\n// With no stored choice, follow the system as it changes.\nfunction onSystemChange() {\n if (readChoice() === 'system') {\n stamp(systemAppearance());\n emit();\n }\n}\n\n// Another tab changed the choice.\nfunction onStorage(event: StorageEvent) {\n if (event.key !== APPEARANCE_STORAGE_KEY) return;\n const choice = readChoice();\n stamp(choice === 'system' ? systemAppearance() : choice);\n emit();\n}\n\nlet media: MediaQueryList | null = null;\n\n// One set of window listeners for every subscriber, so one change stamps `<html>` once.\nfunction subscribe(listener: () => void) {\n if (listeners.size === 0) {\n media = window.matchMedia('(prefers-color-scheme: dark)');\n media.addEventListener('change', onSystemChange);\n window.addEventListener('storage', onStorage);\n }\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n media?.removeEventListener('change', onSystemChange);\n media = null;\n window.removeEventListener('storage', onStorage);\n };\n}\n\n/** Applies a choice to `<html>` and stores it. The change applies even if storage is blocked. */\nfunction setAppearance(choice: AppearanceChoice) {\n pageChoice = choice;\n try {\n if (choice === 'system') localStorage.removeItem(APPEARANCE_STORAGE_KEY);\n else localStorage.setItem(APPEARANCE_STORAGE_KEY, choice);\n } catch {\n // Storage is blocked: the mode still changes for this page.\n }\n stamp(choice === 'system' ? systemAppearance() : choice);\n emit();\n}\n\n/**\n * The page's light or dark mode. `choice` is what the person picked (`system` when they\n * haven't); `appearance` is what is showing. On the server and in the first client render it\n * reports `system` / `light`, then corrects without a hydration mismatch.\n */\nfunction useAppearance() {\n const { choice, resolved } = React.useSyncExternalStore(subscribe, getSnapshot, () => serverSnapshot);\n return { choice, appearance: resolved, setAppearance } as const;\n}\n\nexport { useAppearance, setAppearance };\nexport type { AppearanceChoice, ResolvedAppearance };\n", "/**\n * The pre-paint half of light and dark mode (see `use-appearance.ts`). Kept in its own module\n * with no client directive, so a server component such as a Next.js root layout can import the\n * string and inline it in `<head>`.\n */\n\nconst APPEARANCE_STORAGE_KEY = 'kookie-appearance';\n\n/**\n * Inline this in `<head>`, before any stylesheet paints, e.g.\n * `<script dangerouslySetInnerHTML={{ __html: appearanceScript }} />`.\n *\n * Storage is read inside its own try/catch: browsers that block site data throw on access,\n * and that must not skip the stamp. `matchMedia` always answers.\n */\nconst appearanceScript = `(function () {\n var e = document.documentElement;\n var a = null;\n try { a = localStorage.getItem(${JSON.stringify(APPEARANCE_STORAGE_KEY)}); } catch (err) {}\n var dark = a === \"light\" ? false : a === \"dark\" ? true : matchMedia(\"(prefers-color-scheme: dark)\").matches;\n var mode = dark ? \"dark\" : \"light\";\n e.classList.remove(\"light\", \"dark\");\n e.classList.add(mode);\n e.setAttribute(\"data-appearance\", mode);\n e.style.colorScheme = mode;\n})();`;\n\nexport { appearanceScript, APPEARANCE_STORAGE_KEY };\n"],
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,4BAAAE,EAAA,qBAAAC,EAAA,kBAAAC,EAAA,kBAAAC,EAAA,gCAAAC,EAAA,qBAAAC,EAAA,mBAAAC,EAAA,sBAAAC,IAAA,eAAAC,EAAAV,ICAA,IAAAW,EAAuB,oBAMnBC,EAAqB,EAMlB,SAASC,GAAmB,CAEjC,IAAMC,EAAmB,SAAkD,MAAS,EAGpF,OAAM,YAAU,IAAM,CACpB,IAAIC,EAAa,SAAS,eAAe,oBAAoB,EAE7D,OAAKA,IACHA,EAAa,SAAS,cAAc,KAAK,EACzCA,EAAW,GAAK,qBAChBA,EAAW,aAAa,YAAa,QAAQ,EAC7CA,EAAW,aAAa,cAAe,MAAM,EAC7CA,EAAW,MAAM,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAS3B,SAAS,KAAK,YAAYA,CAAU,GAItCH,IAEO,IAAM,CAUX,GARAA,IAGIE,EAAW,SACb,aAAaA,EAAW,OAAO,EAI7BF,IAAuB,EAAG,CAC5B,IAAMI,EAAS,SAAS,eAAe,oBAAoB,EACvDA,GACFA,EAAO,OAAO,CAElB,CACF,CACF,EAAG,CAAC,CAAC,EAEkB,cAAaC,GAAoB,CACtD,IAAMF,EAAa,SAAS,eAAe,oBAAoB,EAC3DA,IAEED,EAAW,SACb,aAAaA,EAAW,OAAO,EAIjCC,EAAW,YAAc,GAGzBD,EAAW,QAAU,WAAW,IAAM,CACpCC,EAAW,YAAcE,CAC3B,EAAG,GAAG,EAEV,EAAG,CAAC,CAAC,CAGP,CC9EA,IAAAC,EAAuB,oBAKnBC,EAAa,EACbC,EAAgC,KAE9BC,EAAUC,GAAoB,CAIpC,EAEA,SAASC,GAAsB,CAI7B,IAAMC,EAAU,IAAI,IAEdC,EAAQ,CAACC,EAAgBC,IAAkB,CAC/C,IAAMC,EAAK,WAAW,IAAM,CAC1BJ,EAAQ,OAAOI,CAAE,EACjBF,EAAG,CACL,EAAGC,CAAK,EACRH,EAAQ,IAAII,CAAE,CAChB,EAEMC,EAAU,IAAM,SAAS,KAAK,MAAM,gBAAkB,OAEtDC,EAAe,IAAe,CAElC,IAAMC,EAAa,EACjB,SAAS,cAAc,6EAA6E,EAKhGC,EAAmB,EACvB,SAAS,cACP,kHACF,EAGF,OAAOD,GAAcC,CACvB,EAIMC,EAAc,IAAM,CACpBJ,EAAQ,GAAK,CAACC,EAAa,IAC7BT,EAAO,0DAA0D,EACjE,SAAS,KAAK,MAAM,cAAgB,GAExC,EAGMa,EAAmBP,GAAkB,CACrCE,EAAQ,GAAGJ,EAAMQ,EAAaN,CAAK,CACzC,EAEMQ,EAAmBC,GAAiB,CACxC,IAAMC,EAASD,EAAM,OACjBC,GAAU,CAACA,EAAO,QAAQ,4EAA4E,GACxGH,EAAgB,GAAG,CAEvB,EAEMI,EAAeF,GAAyB,CACxCA,EAAM,MAAQ,UAChBF,EAAgB,GAAG,CAEvB,EAEMK,EAAgB,IAAM,CAC1BL,EAAgB,EAAE,CACpB,EAEA,SAAS,iBAAiB,QAASC,EAAiB,EAAI,EACxD,SAAS,iBAAiB,UAAWG,EAAa,EAAI,EACtD,SAAS,iBAAiB,YAAaC,EAAe,EAAI,EAC1D,SAAS,iBAAiB,gBAAiBA,EAAe,EAAI,EAC9D,SAAS,iBAAiB,eAAgBA,EAAe,EAAI,EAI7D,IAAMC,EAAW,IAAI,iBAAiB,IAAM,CAC1CN,EAAgB,CAAC,CACnB,CAAC,EACDM,EAAS,QAAQ,SAAS,KAAM,CAAE,UAAW,GAAM,WAAY,GAAM,gBAAiB,CAAC,OAAO,CAAE,CAAC,EAGjG,IAAMC,EAAa,YAAYR,EAAa,GAAI,EAGhD,OAAAC,EAAgB,GAAG,EAKZ,IAAM,CACX,cAAcO,CAAU,EAExBjB,EAAQ,QAAQ,YAAY,EAC5BA,EAAQ,MAAM,EAEdgB,EAAS,WAAW,EAEpB,SAAS,oBAAoB,QAASL,EAAiB,EAAI,EAC3D,SAAS,oBAAoB,UAAWG,EAAa,EAAI,EACzD,SAAS,oBAAoB,YAAaC,EAAe,EAAI,EAC7D,SAAS,oBAAoB,gBAAiBA,EAAe,EAAI,EACjE,SAAS,oBAAoB,eAAgBA,EAAe,EAAI,CAClE,CACF,CASO,SAASG,GAA8B,CACtC,YAAU,IAAM,CACpB,GAAI,SAAO,SAAa,KAExB,OAAAvB,GAAc,EACVA,IAAe,IACjBC,EAAWG,EAAQ,GAGd,IAAM,CACXJ,GAAc,EACVA,IAAe,IACjBC,IAAW,EACXA,EAAW,KAEf,CACF,EAAG,CAAC,CAAC,CACP,CC5IA,IAAAuB,EAAuB,oBAoBhB,SAASC,EAAkBC,EAA0B,CAC1D,IAAMC,EAAkB,QAAM,EACxBC,EAAa,EAAQF,EAErBG,EAA2B,UAAQ,IAAOD,EAAa,CAAE,mBAAoBD,CAAU,EAAI,CAAC,EAAI,CAACC,EAAYD,CAAS,CAAC,EAE7H,MAAO,CAAE,UAAAA,EAAW,WAAAC,EAAY,mBAAAC,CAAmB,CACrD,CC3BA,IAAAC,EAAuB,oBAoChB,SAASC,EAAe,CAAE,QAAAC,EAAS,gBAAAC,EAAiB,kBAAAC,EAAmB,cAAAC,CAAc,EAA0B,CACpH,IAAMC,EAAWC,EAAiB,EAG5BC,EAAkB,SAAO,EAAK,EAM9BC,EAA4B,cAC/BC,GAAwB,CACvB,IAAMC,EAAiBP,EAAkB,EAEzCE,EAAS,GAAGK,CAAc,IAAID,EAAa,UAAY,WAAW,EAAE,EAEpEP,IAAkBO,CAAU,CAC9B,EACA,CAACJ,EAAUH,EAAiBC,CAAiB,CAC/C,EAIA,OAAM,YAAU,IAAM,CAStB,EAAG,CAACF,EAASC,EAAiBE,CAAa,CAAC,EAErC,CAAE,oBAAAI,CAAoB,CAC/B,CCrEA,IAAAG,EAAuB,oBCIvB,IAAMC,EAAyB,oBASzBC,EAAmB;AAAA;AAAA;AAAA,mCAGU,KAAK,UAAUD,CAAsB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ODIzE,IAAME,EAAY,IAAI,IAEtB,SAASC,GAAO,CACd,QAAWC,KAAYF,EAAWE,EAAS,CAC7C,CAGA,IAAIC,EAA+B,SAEnC,SAASC,GAA+B,CACtC,GAAI,CACF,IAAMC,EAAQ,WAAW,cAAc,QAAQC,CAAsB,EACrE,OAAOD,IAAU,SAAWA,IAAU,OAASA,EAAQ,QACzD,MAAQ,CACN,OAAOF,CACT,CACF,CAEA,SAASI,GAAuC,CAC9C,OAAO,OAAO,WAAW,8BAA8B,EAAE,QAAU,OAAS,OAC9E,CAEA,SAASC,EAAMC,EAA0B,CACvC,IAAMC,EAAO,SAAS,gBACtBA,EAAK,UAAU,OAAO,QAAS,MAAM,EACrCA,EAAK,UAAU,IAAID,CAAI,EACvBC,EAAK,aAAa,kBAAmBD,CAAI,EACzCC,EAAK,MAAM,YAAcD,CAC3B,CAEA,SAASE,GAAmC,CAC1C,IAAMD,EAAO,SAAS,gBACtB,OAAIA,EAAK,UAAU,SAAS,MAAM,GAAKA,EAAK,UAAU,SAAS,YAAY,EAAU,OACjFA,EAAK,UAAU,SAAS,OAAO,GAAKA,EAAK,UAAU,SAAS,aAAa,EAAU,QAChFH,EAAiB,CAC1B,CAEA,IAAIK,EAA8E,KAElF,SAASC,GAAc,CACrB,IAAMC,EAASV,EAAW,EACpBW,EAAWJ,EAAa,EAC9B,OAAI,CAACC,GAAYA,EAAS,SAAWE,GAAUF,EAAS,WAAaG,KACnEH,EAAW,CAAE,OAAAE,EAAQ,SAAAC,CAAS,GAEzBH,CACT,CAEA,IAAMI,GAAiB,CAAE,OAAQ,SAA8B,SAAU,OAA8B,EAGvG,SAASC,GAAiB,CACpBb,EAAW,IAAM,WACnBI,EAAMD,EAAiB,CAAC,EACxBN,EAAK,EAET,CAGA,SAASiB,EAAUC,EAAqB,CACtC,GAAIA,EAAM,MAAQb,EAAwB,OAC1C,IAAMQ,EAASV,EAAW,EAC1BI,EAAMM,IAAW,SAAWP,EAAiB,EAAIO,CAAM,EACvDb,EAAK,CACP,CAEA,IAAImB,EAA+B,KAGnC,SAASC,GAAUnB,EAAsB,CACvC,OAAIF,EAAU,OAAS,IACrBoB,EAAQ,OAAO,WAAW,8BAA8B,EACxDA,EAAM,iBAAiB,SAAUH,CAAc,EAC/C,OAAO,iBAAiB,UAAWC,CAAS,GAE9ClB,EAAU,IAAIE,CAAQ,EACf,IAAM,CACXF,EAAU,OAAOE,CAAQ,EACrB,EAAAF,EAAU,KAAO,KACrBoB,GAAO,oBAAoB,SAAUH,CAAc,EACnDG,EAAQ,KACR,OAAO,oBAAoB,UAAWF,CAAS,EACjD,CACF,CAGA,SAASI,EAAcR,EAA0B,CAC/CX,EAAaW,EACb,GAAI,CACEA,IAAW,SAAU,aAAa,WAAWR,CAAsB,EAClE,aAAa,QAAQA,EAAwBQ,CAAM,CAC1D,MAAQ,CAER,CACAN,EAAMM,IAAW,SAAWP,EAAiB,EAAIO,CAAM,EACvDb,EAAK,CACP,CAOA,SAASsB,GAAgB,CACvB,GAAM,CAAE,OAAAT,EAAQ,SAAAC,CAAS,EAAU,uBAAqBM,GAAWR,EAAa,IAAMG,EAAc,EACpG,MAAO,CAAE,OAAAF,EAAQ,WAAYC,EAAU,cAAAO,CAAc,CACvD",
|
|
6
|
+
"names": ["hooks_exports", "__export", "APPEARANCE_STORAGE_KEY", "appearanceScript", "setAppearance", "useAppearance", "useBodyPointerEventsCleanup", "useLiveAnnouncer", "useToggleState", "useTooltipWrapper", "__toCommonJS", "React", "liveRegionRefCount", "useLiveAnnouncer", "timeoutRef", "liveRegion", "region", "message", "React", "mountCount", "teardown", "devLog", "message", "install", "pending", "defer", "fn", "delay", "id", "isStuck", "hasOpenModal", "hasDialogs", "hasRadixOverlays", "safeCleanup", "scheduleCleanup", "onDocumentClick", "event", "target", "onEscapeKey", "onInteraction", "observer", "intervalId", "useBodyPointerEventsCleanup", "React", "useTooltipWrapper", "tooltip", "tooltipId", "hasTooltip", "accessibilityProps", "React", "useToggleState", "pressed", "onPressedChange", "getAccessibleName", "componentName", "announce", "useLiveAnnouncer", "warnedRef", "handlePressedChange", "newPressed", "accessibleName", "React", "APPEARANCE_STORAGE_KEY", "appearanceScript", "listeners", "emit", "listener", "pageChoice", "readChoice", "value", "APPEARANCE_STORAGE_KEY", "systemAppearance", "stamp", "mode", "root", "readResolved", "snapshot", "getSnapshot", "choice", "resolved", "serverSnapshot", "onSystemChange", "onStorage", "event", "media", "subscribe", "setAppearance", "useAppearance"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ThemeSize } from '../helpers/theme-size.js';
|
|
3
|
+
/**
|
|
4
|
+
* The app-wide size index, provided by `Theme` beside `ThemeContext`.
|
|
5
|
+
*
|
|
6
|
+
* It is its own context, holding one string, so a component that only needs
|
|
7
|
+
* the size does not re-render when the accent colour or appearance changes.
|
|
8
|
+
*/
|
|
9
|
+
declare const ThemeSizeContext: React.Context<ThemeSize>;
|
|
10
|
+
interface SizePropDef {
|
|
11
|
+
values: readonly string[];
|
|
12
|
+
default?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The size a component on the 1-4 index takes: what the caller said, else the
|
|
16
|
+
* nearest Theme's size, mapped into the component's range.
|
|
17
|
+
*/
|
|
18
|
+
declare function useThemeSize<V>(explicit: V | undefined, propDef: SizePropDef): V;
|
|
19
|
+
/**
|
|
20
|
+
* Fills `size` from the nearest Theme when the caller left it unset, so the
|
|
21
|
+
* result can go straight into `extractProps`. An explicit size, responsive
|
|
22
|
+
* object included, wins.
|
|
23
|
+
*
|
|
24
|
+
* Returns the same props object when there is nothing to fill: when a size is
|
|
25
|
+
* set, or when the theme size resolves to the prop def's own default (the
|
|
26
|
+
* common case, a Theme with no size), so `extractProps` applies it as before.
|
|
27
|
+
*/
|
|
28
|
+
declare function useThemeSizeProps<P extends {
|
|
29
|
+
size?: unknown;
|
|
30
|
+
}>(props: P, propDef: SizePropDef): P;
|
|
31
|
+
export { ThemeSizeContext, useThemeSize, useThemeSizeProps };
|
|
32
|
+
//# sourceMappingURL=theme-size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-size.d.ts","sourceRoot":"","sources":["../../../src/hooks/theme-size.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;GAKG;AACH,QAAA,MAAM,gBAAgB,0BAAqD,CAAC;AAG5E,UAAU,WAAW;IACnB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,iBAAS,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAKzE;AAED;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAM1F;AAED,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";"use client";var z=Object.create;var m=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var d=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var l=(e,t)=>{for(var n in t)m(e,n,{get:t[n],enumerable:!0})},a=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of h(t))!T.call(e,r)&&r!==n&&m(e,r,{get:()=>t[r],enumerable:!(i=S(t,r))||i.enumerable});return e};var p=(e,t,n)=>(n=e!=null?z(d(e)):{},a(t||!e||!e.__esModule?m(n,"default",{value:e,enumerable:!0}):n,e)),x=e=>a(m({},"__esModule",{value:!0}),e);var g={};l(g,{ThemeSizeContext:()=>u,useThemeSize:()=>y,useThemeSizeProps:()=>P});module.exports=x(g);var o=p(require("react"));function f(e,t){if(t.includes(e))return e;let n=Number(e),i=t[0],r=1/0;for(let s=0;s<t.length;s++){let c=Math.abs(Number(t[s])-n);c<r&&(r=c,i=t[s])}return i}var u=o.createContext("2");u.displayName="ThemeSizeContext";function y(e,t){let n=o.useContext(u);return e!==void 0?e:f(n,t.values)}function P(e,t){let n=o.useContext(u);if(e.size!==void 0)return e;let i=f(n,t.values);return i===t.default?e:{...e,size:i}}
|
|
3
|
+
//# sourceMappingURL=theme-size.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/theme-size.ts", "../../../src/helpers/theme-size.ts"],
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\n\nimport { THEME_SIZE_DEFAULT, clampSize } from '../helpers/theme-size.js';\nimport type { ThemeSize } from '../helpers/theme-size.js';\n\n/**\n * The app-wide size index, provided by `Theme` beside `ThemeContext`.\n *\n * It is its own context, holding one string, so a component that only needs\n * the size does not re-render when the accent colour or appearance changes.\n */\nconst ThemeSizeContext = React.createContext<ThemeSize>(THEME_SIZE_DEFAULT);\nThemeSizeContext.displayName = 'ThemeSizeContext';\n\ninterface SizePropDef {\n values: readonly string[];\n default?: string;\n}\n\n/**\n * The size a component on the 1-4 index takes: what the caller said, else the\n * nearest Theme's size, mapped into the component's range.\n */\nfunction useThemeSize<V>(explicit: V | undefined, propDef: SizePropDef): V {\n const themeSize = React.useContext(ThemeSizeContext);\n if (explicit !== undefined) return explicit;\n // The clamped value is one of `propDef.values`, which is what `V` ranges over.\n return clampSize(themeSize, propDef.values) as V;\n}\n\n/**\n * Fills `size` from the nearest Theme when the caller left it unset, so the\n * result can go straight into `extractProps`. An explicit size, responsive\n * object included, wins.\n *\n * Returns the same props object when there is nothing to fill: when a size is\n * set, or when the theme size resolves to the prop def's own default (the\n * common case, a Theme with no size), so `extractProps` applies it as before.\n */\nfunction useThemeSizeProps<P extends { size?: unknown }>(props: P, propDef: SizePropDef): P {\n const themeSize = React.useContext(ThemeSizeContext);\n if (props.size !== undefined) return props;\n const size = clampSize(themeSize, propDef.values);\n if (size === propDef.default) return props;\n return { ...props, size };\n}\n\nexport { ThemeSizeContext, useThemeSize, useThemeSizeProps };\n", "/**\n * The pure half of the theme size: the type, the default and the clamp. Server-safe.\n *\n * The context and the hooks that read it live in `hooks/theme-size.ts`, a client module, so there\n * is one `ThemeSizeContext` and importing `/helpers` from a server component does not call\n * `createContext`.\n */\n\ntype ThemeSize = '1' | '2' | '3' | '4';\n\n/** The rest of the 1-4 index when no Theme states a size. */\nconst THEME_SIZE_DEFAULT: ThemeSize = '2';\n\n/**\n * Maps the theme size onto a component's own range: the value itself when the\n * component has it, otherwise the nearest end of the range (`4` on a 1-3 scale\n * is `3`, on a 1-2 scale it is `2`).\n */\nfunction clampSize(size: ThemeSize, values: readonly string[]): string {\n if (values.includes(size)) return size;\n const n = Number(size);\n let nearest = values[0];\n let distance = Infinity;\n for (let i = 0; i < values.length; i++) {\n const d = Math.abs(Number(values[i]) - n);\n if (d < distance) {\n distance = d;\n nearest = values[i];\n }\n }\n return nearest;\n}\n\nexport { THEME_SIZE_DEFAULT, clampSize };\nexport type { ThemeSize };\n"],
|
|
5
|
+
"mappings": ";ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,iBAAAC,EAAA,sBAAAC,IAAA,eAAAC,EAAAL,GAEA,IAAAM,EAAuB,oBCgBvB,SAASC,EAAUC,EAAiBC,EAAmC,CACrE,GAAIA,EAAO,SAASD,CAAI,EAAG,OAAOA,EAClC,IAAM,EAAI,OAAOA,CAAI,EACjBE,EAAUD,EAAO,CAAC,EAClBE,EAAW,IACf,QAASC,EAAI,EAAGA,EAAIH,EAAO,OAAQG,IAAK,CACtC,IAAMC,EAAI,KAAK,IAAI,OAAOJ,EAAOG,CAAC,CAAC,EAAI,CAAC,EACpCC,EAAIF,IACNA,EAAWE,EACXH,EAAUD,EAAOG,CAAC,EAEtB,CACA,OAAOF,CACT,CDlBA,IAAMI,EAAyB,gBAAyB,GAAkB,EAC1EA,EAAiB,YAAc,mBAW/B,SAASC,EAAgBC,EAAyBC,EAAyB,CACzE,IAAMC,EAAkB,aAAWJ,CAAgB,EACnD,OAAIE,IAAa,OAAkBA,EAE5BG,EAAUD,EAAWD,EAAQ,MAAM,CAC5C,CAWA,SAASG,EAAgDC,EAAUJ,EAAyB,CAC1F,IAAMC,EAAkB,aAAWJ,CAAgB,EACnD,GAAIO,EAAM,OAAS,OAAW,OAAOA,EACrC,IAAMC,EAAOH,EAAUD,EAAWD,EAAQ,MAAM,EAChD,OAAIK,IAASL,EAAQ,QAAgBI,EAC9B,CAAE,GAAGA,EAAO,KAAAC,CAAK,CAC1B",
|
|
6
|
+
"names": ["theme_size_exports", "__export", "ThemeSizeContext", "useThemeSize", "useThemeSizeProps", "__toCommonJS", "React", "clampSize", "size", "values", "nearest", "distance", "i", "d", "ThemeSizeContext", "useThemeSize", "explicit", "propDef", "themeSize", "clampSize", "useThemeSizeProps", "props", "size"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-appearance.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-appearance.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AAEH,KAAK,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AACpD,KAAK,kBAAkB,GAAG,OAAO,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"use-appearance.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-appearance.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AAEH,KAAK,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AACpD,KAAK,kBAAkB,GAAG,OAAO,GAAG,MAAM,CAAC;AAuF3C,iGAAiG;AACjG,iBAAS,aAAa,CAAC,MAAM,EAAE,gBAAgB,QAU9C;AAED;;;;GAIG;AACH,iBAAS,aAAa;;;;EAGrB;AAED,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
"use
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";"use client";var k=Object.create;var c=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var C=(e,t)=>{for(var a in t)c(e,a,{get:t[a],enumerable:!0})},u=(e,t,a,h)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of E(t))!L.call(e,n)&&n!==a&&c(e,n,{get:()=>t[n],enumerable:!(h=S(t,n))||h.enumerable});return e};var w=(e,t,a)=>(a=e!=null?k(R(e)):{},u(t||!e||!e.__esModule?c(a,"default",{value:e,enumerable:!0}):a,e)),b=e=>u(c({},"__esModule",{value:!0}),e);var N={};C(N,{setAppearance:()=>y,useAppearance:()=>_});module.exports=b(N);var g=w(require("react"));var r="kookie-appearance",T=`(function () {
|
|
2
3
|
var e = document.documentElement;
|
|
3
4
|
var a = null;
|
|
4
|
-
try { a = localStorage.getItem(${JSON.stringify(
|
|
5
|
+
try { a = localStorage.getItem(${JSON.stringify(r)}); } catch (err) {}
|
|
5
6
|
var dark = a === "light" ? false : a === "dark" ? true : matchMedia("(prefers-color-scheme: dark)").matches;
|
|
6
7
|
var mode = dark ? "dark" : "light";
|
|
7
8
|
e.classList.remove("light", "dark");
|
|
8
9
|
e.classList.add(mode);
|
|
9
10
|
e.setAttribute("data-appearance", mode);
|
|
10
11
|
e.style.colorScheme = mode;
|
|
11
|
-
})();`;var
|
|
12
|
+
})();`;var o=new Set;function d(){for(let e of o)e()}var A="system";function p(){try{let e=globalThis.localStorage?.getItem(r);return e==="light"||e==="dark"?e:"system"}catch{return A}}function l(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function m(e){let t=document.documentElement;t.classList.remove("light","dark"),t.classList.add(e),t.setAttribute("data-appearance",e),t.style.colorScheme=e}function x(){let e=document.documentElement;return e.classList.contains("dark")||e.classList.contains("dark-theme")?"dark":e.classList.contains("light")||e.classList.contains("light-theme")?"light":l()}var s=null;function I(){let e=p(),t=x();return(!s||s.choice!==e||s.resolved!==t)&&(s={choice:e,resolved:t}),s}var M={choice:"system",resolved:"light"};function v(){p()==="system"&&(m(l()),d())}function f(e){if(e.key!==r)return;let t=p();m(t==="system"?l():t),d()}var i=null;function P(e){return o.size===0&&(i=window.matchMedia("(prefers-color-scheme: dark)"),i.addEventListener("change",v),window.addEventListener("storage",f)),o.add(e),()=>{o.delete(e),!(o.size>0)&&(i?.removeEventListener("change",v),i=null,window.removeEventListener("storage",f))}}function y(e){A=e;try{e==="system"?localStorage.removeItem(r):localStorage.setItem(r,e)}catch{}m(e==="system"?l():e),d()}function _(){let{choice:e,resolved:t}=g.useSyncExternalStore(P,I,()=>M);return{choice:e,appearance:t,setAppearance:y}}
|
|
12
13
|
//# sourceMappingURL=use-appearance.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-appearance.ts", "../../../src/hooks/appearance-script.ts"],
|
|
4
|
-
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { APPEARANCE_STORAGE_KEY } from './appearance-script.js';\n\n/**\n * Light and dark mode, decided before the first paint and kept on `<html>`.\n *\n * The server cannot know the visitor's mode, so `appearanceScript` runs synchronously in\n * `<head>`: the stored choice first, `prefers-color-scheme` otherwise. It writes the `light`\n * or `dark` class (which every token and component stylesheet already keys off) and\n * `data-appearance` on `<html>`. The root `<Theme>` keeps `appearance=\"inherit\"`, so it\n * writes no class of its own and `<html>` is the one source of truth. Nested themes and\n * portals inherit it from there.\n *\n * `useAppearance` is the client half: an external store over `<html>` and the same storage\n * key. It never mirrors the mode into React state that could disagree with the DOM.\n */\n\ntype AppearanceChoice = 'system' | 'light' | 'dark';\ntype ResolvedAppearance = 'light' | 'dark';\n\nconst listeners = new Set<() => void>();\n\nfunction emit() {\n for (const listener of listeners) listener();\n}\n\nfunction readChoice(): AppearanceChoice {\n try {\n const value = globalThis.localStorage?.getItem(APPEARANCE_STORAGE_KEY);\n return value === 'light' || value === 'dark' ? value : 'system';\n } catch {\n return
|
|
5
|
-
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAuB,oBCIvB,IAAMC,EAAyB,oBASzBC,EAAmB;AAAA;AAAA;AAAA,mCAGU,KAAK,UAAUD,CAAsB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ODIzE,IAAME,EAAY,IAAI,IAEtB,SAASC,GAAO,CACd,QAAWC,KAAYF,EAAWE,EAAS,CAC7C,
|
|
6
|
-
"names": ["use_appearance_exports", "__export", "setAppearance", "useAppearance", "__toCommonJS", "React", "APPEARANCE_STORAGE_KEY", "appearanceScript", "listeners", "emit", "listener", "readChoice", "value", "APPEARANCE_STORAGE_KEY", "systemAppearance", "stamp", "mode", "root", "readResolved", "snapshot", "getSnapshot", "choice", "resolved", "serverSnapshot", "
|
|
4
|
+
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { APPEARANCE_STORAGE_KEY } from './appearance-script.js';\n\n/**\n * Light and dark mode, decided before the first paint and kept on `<html>`.\n *\n * The server cannot know the visitor's mode, so `appearanceScript` runs synchronously in\n * `<head>`: the stored choice first, `prefers-color-scheme` otherwise. It writes the `light`\n * or `dark` class (which every token and component stylesheet already keys off) and\n * `data-appearance` on `<html>`. The root `<Theme>` keeps `appearance=\"inherit\"`, so it\n * writes no class of its own and `<html>` is the one source of truth. Nested themes and\n * portals inherit it from there.\n *\n * `useAppearance` is the client half: an external store over `<html>` and the same storage\n * key. It never mirrors the mode into React state that could disagree with the DOM.\n */\n\ntype AppearanceChoice = 'system' | 'light' | 'dark';\ntype ResolvedAppearance = 'light' | 'dark';\n\nconst listeners = new Set<() => void>();\n\nfunction emit() {\n for (const listener of listeners) listener();\n}\n\n// The last choice made on this page, for when storage is blocked and cannot hold it.\nlet pageChoice: AppearanceChoice = 'system';\n\nfunction readChoice(): AppearanceChoice {\n try {\n const value = globalThis.localStorage?.getItem(APPEARANCE_STORAGE_KEY);\n return value === 'light' || value === 'dark' ? value : 'system';\n } catch {\n return pageChoice;\n }\n}\n\nfunction systemAppearance(): ResolvedAppearance {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n}\n\nfunction stamp(mode: ResolvedAppearance) {\n const root = document.documentElement;\n root.classList.remove('light', 'dark');\n root.classList.add(mode);\n root.setAttribute('data-appearance', mode);\n root.style.colorScheme = mode;\n}\n\nfunction readResolved(): ResolvedAppearance {\n const root = document.documentElement;\n if (root.classList.contains('dark') || root.classList.contains('dark-theme')) return 'dark';\n if (root.classList.contains('light') || root.classList.contains('light-theme')) return 'light';\n return systemAppearance();\n}\n\nlet snapshot: { choice: AppearanceChoice; resolved: ResolvedAppearance } | null = null;\n\nfunction getSnapshot() {\n const choice = readChoice();\n const resolved = readResolved();\n if (!snapshot || snapshot.choice !== choice || snapshot.resolved !== resolved) {\n snapshot = { choice, resolved };\n }\n return snapshot;\n}\n\nconst serverSnapshot = { choice: 'system' as AppearanceChoice, resolved: 'light' as ResolvedAppearance };\n\n// With no stored choice, follow the system as it changes.\nfunction onSystemChange() {\n if (readChoice() === 'system') {\n stamp(systemAppearance());\n emit();\n }\n}\n\n// Another tab changed the choice.\nfunction onStorage(event: StorageEvent) {\n if (event.key !== APPEARANCE_STORAGE_KEY) return;\n const choice = readChoice();\n stamp(choice === 'system' ? systemAppearance() : choice);\n emit();\n}\n\nlet media: MediaQueryList | null = null;\n\n// One set of window listeners for every subscriber, so one change stamps `<html>` once.\nfunction subscribe(listener: () => void) {\n if (listeners.size === 0) {\n media = window.matchMedia('(prefers-color-scheme: dark)');\n media.addEventListener('change', onSystemChange);\n window.addEventListener('storage', onStorage);\n }\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n media?.removeEventListener('change', onSystemChange);\n media = null;\n window.removeEventListener('storage', onStorage);\n };\n}\n\n/** Applies a choice to `<html>` and stores it. The change applies even if storage is blocked. */\nfunction setAppearance(choice: AppearanceChoice) {\n pageChoice = choice;\n try {\n if (choice === 'system') localStorage.removeItem(APPEARANCE_STORAGE_KEY);\n else localStorage.setItem(APPEARANCE_STORAGE_KEY, choice);\n } catch {\n // Storage is blocked: the mode still changes for this page.\n }\n stamp(choice === 'system' ? systemAppearance() : choice);\n emit();\n}\n\n/**\n * The page's light or dark mode. `choice` is what the person picked (`system` when they\n * haven't); `appearance` is what is showing. On the server and in the first client render it\n * reports `system` / `light`, then corrects without a hydration mismatch.\n */\nfunction useAppearance() {\n const { choice, resolved } = React.useSyncExternalStore(subscribe, getSnapshot, () => serverSnapshot);\n return { choice, appearance: resolved, setAppearance } as const;\n}\n\nexport { useAppearance, setAppearance };\nexport type { AppearanceChoice, ResolvedAppearance };\n", "/**\n * The pre-paint half of light and dark mode (see `use-appearance.ts`). Kept in its own module\n * with no client directive, so a server component such as a Next.js root layout can import the\n * string and inline it in `<head>`.\n */\n\nconst APPEARANCE_STORAGE_KEY = 'kookie-appearance';\n\n/**\n * Inline this in `<head>`, before any stylesheet paints, e.g.\n * `<script dangerouslySetInnerHTML={{ __html: appearanceScript }} />`.\n *\n * Storage is read inside its own try/catch: browsers that block site data throw on access,\n * and that must not skip the stamp. `matchMedia` always answers.\n */\nconst appearanceScript = `(function () {\n var e = document.documentElement;\n var a = null;\n try { a = localStorage.getItem(${JSON.stringify(APPEARANCE_STORAGE_KEY)}); } catch (err) {}\n var dark = a === \"light\" ? false : a === \"dark\" ? true : matchMedia(\"(prefers-color-scheme: dark)\").matches;\n var mode = dark ? \"dark\" : \"light\";\n e.classList.remove(\"light\", \"dark\");\n e.classList.add(mode);\n e.setAttribute(\"data-appearance\", mode);\n e.style.colorScheme = mode;\n})();`;\n\nexport { appearanceScript, APPEARANCE_STORAGE_KEY };\n"],
|
|
5
|
+
"mappings": ";ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAuB,oBCIvB,IAAMC,EAAyB,oBASzBC,EAAmB;AAAA;AAAA;AAAA,mCAGU,KAAK,UAAUD,CAAsB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ODIzE,IAAME,EAAY,IAAI,IAEtB,SAASC,GAAO,CACd,QAAWC,KAAYF,EAAWE,EAAS,CAC7C,CAGA,IAAIC,EAA+B,SAEnC,SAASC,GAA+B,CACtC,GAAI,CACF,IAAMC,EAAQ,WAAW,cAAc,QAAQC,CAAsB,EACrE,OAAOD,IAAU,SAAWA,IAAU,OAASA,EAAQ,QACzD,MAAQ,CACN,OAAOF,CACT,CACF,CAEA,SAASI,GAAuC,CAC9C,OAAO,OAAO,WAAW,8BAA8B,EAAE,QAAU,OAAS,OAC9E,CAEA,SAASC,EAAMC,EAA0B,CACvC,IAAMC,EAAO,SAAS,gBACtBA,EAAK,UAAU,OAAO,QAAS,MAAM,EACrCA,EAAK,UAAU,IAAID,CAAI,EACvBC,EAAK,aAAa,kBAAmBD,CAAI,EACzCC,EAAK,MAAM,YAAcD,CAC3B,CAEA,SAASE,GAAmC,CAC1C,IAAMD,EAAO,SAAS,gBACtB,OAAIA,EAAK,UAAU,SAAS,MAAM,GAAKA,EAAK,UAAU,SAAS,YAAY,EAAU,OACjFA,EAAK,UAAU,SAAS,OAAO,GAAKA,EAAK,UAAU,SAAS,aAAa,EAAU,QAChFH,EAAiB,CAC1B,CAEA,IAAIK,EAA8E,KAElF,SAASC,GAAc,CACrB,IAAMC,EAASV,EAAW,EACpBW,EAAWJ,EAAa,EAC9B,OAAI,CAACC,GAAYA,EAAS,SAAWE,GAAUF,EAAS,WAAaG,KACnEH,EAAW,CAAE,OAAAE,EAAQ,SAAAC,CAAS,GAEzBH,CACT,CAEA,IAAMI,EAAiB,CAAE,OAAQ,SAA8B,SAAU,OAA8B,EAGvG,SAASC,GAAiB,CACpBb,EAAW,IAAM,WACnBI,EAAMD,EAAiB,CAAC,EACxBN,EAAK,EAET,CAGA,SAASiB,EAAUC,EAAqB,CACtC,GAAIA,EAAM,MAAQb,EAAwB,OAC1C,IAAMQ,EAASV,EAAW,EAC1BI,EAAMM,IAAW,SAAWP,EAAiB,EAAIO,CAAM,EACvDb,EAAK,CACP,CAEA,IAAImB,EAA+B,KAGnC,SAASC,EAAUnB,EAAsB,CACvC,OAAIF,EAAU,OAAS,IACrBoB,EAAQ,OAAO,WAAW,8BAA8B,EACxDA,EAAM,iBAAiB,SAAUH,CAAc,EAC/C,OAAO,iBAAiB,UAAWC,CAAS,GAE9ClB,EAAU,IAAIE,CAAQ,EACf,IAAM,CACXF,EAAU,OAAOE,CAAQ,EACrB,EAAAF,EAAU,KAAO,KACrBoB,GAAO,oBAAoB,SAAUH,CAAc,EACnDG,EAAQ,KACR,OAAO,oBAAoB,UAAWF,CAAS,EACjD,CACF,CAGA,SAASI,EAAcR,EAA0B,CAC/CX,EAAaW,EACb,GAAI,CACEA,IAAW,SAAU,aAAa,WAAWR,CAAsB,EAClE,aAAa,QAAQA,EAAwBQ,CAAM,CAC1D,MAAQ,CAER,CACAN,EAAMM,IAAW,SAAWP,EAAiB,EAAIO,CAAM,EACvDb,EAAK,CACP,CAOA,SAASsB,GAAgB,CACvB,GAAM,CAAE,OAAAT,EAAQ,SAAAC,CAAS,EAAU,uBAAqBM,EAAWR,EAAa,IAAMG,CAAc,EACpG,MAAO,CAAE,OAAAF,EAAQ,WAAYC,EAAU,cAAAO,CAAc,CACvD",
|
|
6
|
+
"names": ["use_appearance_exports", "__export", "setAppearance", "useAppearance", "__toCommonJS", "React", "APPEARANCE_STORAGE_KEY", "appearanceScript", "listeners", "emit", "listener", "pageChoice", "readChoice", "value", "APPEARANCE_STORAGE_KEY", "systemAppearance", "stamp", "mode", "root", "readResolved", "snapshot", "getSnapshot", "choice", "resolved", "serverSnapshot", "onSystemChange", "onStorage", "event", "media", "subscribe", "setAppearance", "useAppearance"]
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This addresses an issue where react-remove-scroll (used by Radix UI Dialog)
|
|
5
5
|
* sometimes fails to restore body pointer-events after dialog closes,
|
|
6
|
-
* leaving the page unclickable.
|
|
6
|
+
* leaving the page unclickable. It never clears the value while a modal is open.
|
|
7
7
|
*/
|
|
8
8
|
export declare function useBodyPointerEventsCleanup(): void;
|
|
9
9
|
//# sourceMappingURL=use-body-pointer-events-cleanup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-body-pointer-events-cleanup.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-body-pointer-events-cleanup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-body-pointer-events-cleanup.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-body-pointer-events-cleanup.ts"],"names":[],"mappings":"AAoHA;;;;;;GAMG;AACH,wBAAgB,2BAA2B,SAiB1C"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
"use
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";var b=Object.create;var u=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var C=(e,t)=>{for(var n in t)u(e,n,{get:t[n],enumerable:!0})},f=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of k(t))!h.call(e,r)&&r!==n&&u(e,r,{get:()=>t[r],enumerable:!(s=L(t,r))||s.enumerable});return e};var I=(e,t,n)=>(n=e!=null?b(w(e)):{},f(t||!e||!e.__esModule?u(n,"default",{value:e,enumerable:!0}):n,e)),x=e=>f(u({},"__esModule",{value:!0}),e);var T={};C(T,{useBodyPointerEventsCleanup:()=>S});module.exports=x(T);var y=I(require("react")),c=0,l=null,O=e=>{};function R(){let e=new Set,t=(o,i)=>{let E=setTimeout(()=>{e.delete(E),o()},i);e.add(E)},n=()=>document.body.style.pointerEvents==="none",s=()=>{let o=!!document.querySelector('[role="dialog"][aria-modal="true"], [role="alertdialog"][aria-modal="true"]'),i=!!document.querySelector('[data-radix-popper-content-wrapper], [role="dialog"][data-state="open"], [role="alertdialog"][data-state="open"]');return o||i},r=()=>{n()&&!s()&&(O("[KookieUI] Cleaning stuck pointer-events: none from body"),document.body.style.pointerEvents="")},d=o=>{n()&&t(r,o)},m=o=>{let i=o.target;i&&!i.closest('[role="dialog"], [role="alertdialog"], [data-radix-popper-content-wrapper]')&&d(100)},p=o=>{o.key==="Escape"&&d(200)},a=()=>{d(50)};document.addEventListener("click",m,!0),document.addEventListener("keydown",p,!0),document.addEventListener("pointerup",a,!0),document.addEventListener("transitionend",a,!0),document.addEventListener("animationend",a,!0);let v=new MutationObserver(()=>{d(0)});v.observe(document.body,{childList:!0,attributes:!0,attributeFilter:["style"]});let g=setInterval(r,1e3);return d(100),()=>{clearInterval(g),e.forEach(clearTimeout),e.clear(),v.disconnect(),document.removeEventListener("click",m,!0),document.removeEventListener("keydown",p,!0),document.removeEventListener("pointerup",a,!0),document.removeEventListener("transitionend",a,!0),document.removeEventListener("animationend",a,!0)}}function S(){y.useEffect(()=>{if(!(typeof document>"u"))return c+=1,c===1&&(l=R()),()=>{c-=1,c===0&&(l?.(),l=null)}},[])}
|
|
2
3
|
//# sourceMappingURL=use-body-pointer-events-cleanup.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-body-pointer-events-cleanup.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\n\
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,
|
|
6
|
-
"names": ["use_body_pointer_events_cleanup_exports", "__export", "useBodyPointerEventsCleanup", "__toCommonJS", "React", "
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\n\n// How many overlays currently use the hook. The listeners are shared: the first mount installs\n// them and the last unmount removes them, so closing one overlay never strips the fallback from\n// another that is still mounted.\nlet mountCount = 0;\nlet teardown: (() => void) | null = null;\n\nconst devLog = (message: string) => {\n if (process.env.NODE_ENV !== 'production') {\n console.log(message);\n }\n};\n\nfunction install(): () => void {\n // Deferred cleanups are tracked so teardown can cancel the ones still queued. A timer that\n // outlives the document reaches for `document.body` after it is gone; under jsdom that surfaces\n // as an unhandled ReferenceError attributed to whichever test happened to be running.\n const pending = new Set<ReturnType<typeof setTimeout>>();\n\n const defer = (fn: () => void, delay: number) => {\n const id = setTimeout(() => {\n pending.delete(id);\n fn();\n }, delay);\n pending.add(id);\n };\n\n const isStuck = () => document.body.style.pointerEvents === 'none';\n\n const hasOpenModal = (): boolean => {\n // Open dialogs and alert dialogs\n const hasDialogs = Boolean(\n document.querySelector('[role=\"dialog\"][aria-modal=\"true\"], [role=\"alertdialog\"][aria-modal=\"true\"]'),\n );\n\n // Any Radix overlay that is still mounted. Only overlays count: an open Accordion or\n // Collapsible also carries data-state=\"open\" and must not keep a stuck page blocked.\n const hasRadixOverlays = Boolean(\n document.querySelector(\n '[data-radix-popper-content-wrapper], [role=\"dialog\"][data-state=\"open\"], [role=\"alertdialog\"][data-state=\"open\"]',\n ),\n );\n\n return hasDialogs || hasRadixOverlays;\n };\n\n // Only clears pointer-events when no modal is open. Scroll-lock attributes belong to\n // react-remove-scroll and are never touched here.\n const safeCleanup = () => {\n if (isStuck() && !hasOpenModal()) {\n devLog('[KookieUI] Cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n }\n };\n\n // Every trigger queues a check only while the body is actually blocked.\n const scheduleCleanup = (delay: number) => {\n if (isStuck()) defer(safeCleanup, delay);\n };\n\n const onDocumentClick = (event: Event) => {\n const target = event.target as Element;\n if (target && !target.closest('[role=\"dialog\"], [role=\"alertdialog\"], [data-radix-popper-content-wrapper]')) {\n scheduleCleanup(100);\n }\n };\n\n const onEscapeKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n scheduleCleanup(200);\n }\n };\n\n const onInteraction = () => {\n scheduleCleanup(50);\n };\n\n document.addEventListener('click', onDocumentClick, true);\n document.addEventListener('keydown', onEscapeKey, true);\n document.addEventListener('pointerup', onInteraction, true);\n document.addEventListener('transitionend', onInteraction, true);\n document.addEventListener('animationend', onInteraction, true);\n\n // Portals mount and unmount as direct children of body, and the stuck value lives in body's\n // style, so body's own children and style are all that need watching.\n const observer = new MutationObserver(() => {\n scheduleCleanup(0);\n });\n observer.observe(document.body, { childList: true, attributes: true, attributeFilter: ['style'] });\n\n // Fallback periodic cleanup\n const intervalId = setInterval(safeCleanup, 1000);\n\n // Initial cleanup\n scheduleCleanup(100);\n\n // Tear everything down together. The observer is the important one: it fires while React\n // unmounts the tree, so leaving it connected keeps queueing work against a document that is\n // about to go away.\n return () => {\n clearInterval(intervalId);\n\n pending.forEach(clearTimeout);\n pending.clear();\n\n observer.disconnect();\n\n document.removeEventListener('click', onDocumentClick, true);\n document.removeEventListener('keydown', onEscapeKey, true);\n document.removeEventListener('pointerup', onInteraction, true);\n document.removeEventListener('transitionend', onInteraction, true);\n document.removeEventListener('animationend', onInteraction, true);\n };\n}\n\n/**\n * Hook to cleanup stuck pointer-events: none on document.body\n *\n * This addresses an issue where react-remove-scroll (used by Radix UI Dialog)\n * sometimes fails to restore body pointer-events after dialog closes,\n * leaving the page unclickable. It never clears the value while a modal is open.\n */\nexport function useBodyPointerEventsCleanup() {\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n\n mountCount += 1;\n if (mountCount === 1) {\n teardown = install();\n }\n\n return () => {\n mountCount -= 1;\n if (mountCount === 0) {\n teardown?.();\n teardown = null;\n }\n };\n }, []);\n}\n"],
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAKnBC,EAAa,EACbC,EAAgC,KAE9BC,EAAUC,GAAoB,CAIpC,EAEA,SAASC,GAAsB,CAI7B,IAAMC,EAAU,IAAI,IAEdC,EAAQ,CAACC,EAAgBC,IAAkB,CAC/C,IAAMC,EAAK,WAAW,IAAM,CAC1BJ,EAAQ,OAAOI,CAAE,EACjBF,EAAG,CACL,EAAGC,CAAK,EACRH,EAAQ,IAAII,CAAE,CAChB,EAEMC,EAAU,IAAM,SAAS,KAAK,MAAM,gBAAkB,OAEtDC,EAAe,IAAe,CAElC,IAAMC,EAAa,EACjB,SAAS,cAAc,6EAA6E,EAKhGC,EAAmB,EACvB,SAAS,cACP,kHACF,EAGF,OAAOD,GAAcC,CACvB,EAIMC,EAAc,IAAM,CACpBJ,EAAQ,GAAK,CAACC,EAAa,IAC7BT,EAAO,0DAA0D,EACjE,SAAS,KAAK,MAAM,cAAgB,GAExC,EAGMa,EAAmBP,GAAkB,CACrCE,EAAQ,GAAGJ,EAAMQ,EAAaN,CAAK,CACzC,EAEMQ,EAAmBC,GAAiB,CACxC,IAAMC,EAASD,EAAM,OACjBC,GAAU,CAACA,EAAO,QAAQ,4EAA4E,GACxGH,EAAgB,GAAG,CAEvB,EAEMI,EAAeF,GAAyB,CACxCA,EAAM,MAAQ,UAChBF,EAAgB,GAAG,CAEvB,EAEMK,EAAgB,IAAM,CAC1BL,EAAgB,EAAE,CACpB,EAEA,SAAS,iBAAiB,QAASC,EAAiB,EAAI,EACxD,SAAS,iBAAiB,UAAWG,EAAa,EAAI,EACtD,SAAS,iBAAiB,YAAaC,EAAe,EAAI,EAC1D,SAAS,iBAAiB,gBAAiBA,EAAe,EAAI,EAC9D,SAAS,iBAAiB,eAAgBA,EAAe,EAAI,EAI7D,IAAMC,EAAW,IAAI,iBAAiB,IAAM,CAC1CN,EAAgB,CAAC,CACnB,CAAC,EACDM,EAAS,QAAQ,SAAS,KAAM,CAAE,UAAW,GAAM,WAAY,GAAM,gBAAiB,CAAC,OAAO,CAAE,CAAC,EAGjG,IAAMC,EAAa,YAAYR,EAAa,GAAI,EAGhD,OAAAC,EAAgB,GAAG,EAKZ,IAAM,CACX,cAAcO,CAAU,EAExBjB,EAAQ,QAAQ,YAAY,EAC5BA,EAAQ,MAAM,EAEdgB,EAAS,WAAW,EAEpB,SAAS,oBAAoB,QAASL,EAAiB,EAAI,EAC3D,SAAS,oBAAoB,UAAWG,EAAa,EAAI,EACzD,SAAS,oBAAoB,YAAaC,EAAe,EAAI,EAC7D,SAAS,oBAAoB,gBAAiBA,EAAe,EAAI,EACjE,SAAS,oBAAoB,eAAgBA,EAAe,EAAI,CAClE,CACF,CASO,SAASvB,GAA8B,CACtC,YAAU,IAAM,CACpB,GAAI,SAAO,SAAa,KAExB,OAAAG,GAAc,EACVA,IAAe,IACjBC,EAAWG,EAAQ,GAGd,IAAM,CACXJ,GAAc,EACVA,IAAe,IACjBC,IAAW,EACXA,EAAW,KAEf,CACF,EAAG,CAAC,CAAC,CACP",
|
|
6
|
+
"names": ["use_body_pointer_events_cleanup_exports", "__export", "useBodyPointerEventsCleanup", "__toCommonJS", "React", "mountCount", "teardown", "devLog", "message", "install", "pending", "defer", "fn", "delay", "id", "isStuck", "hasOpenModal", "hasDialogs", "hasRadixOverlays", "safeCleanup", "scheduleCleanup", "onDocumentClick", "event", "target", "onEscapeKey", "onInteraction", "observer", "intervalId"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";"use client";var S=Object.create;var s=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},m=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of b(t))!v.call(e,r)&&r!==n&&s(e,r,{get:()=>t[r],enumerable:!(c=P(t,r))||c.enumerable});return e};var h=(e,t,n)=>(n=e!=null?S(R(e)):{},m(t||!e||!e.__esModule?s(n,"default",{value:e,enumerable:!0}):n,e)),k=e=>m(s({},"__esModule",{value:!0}),e);var I={};g(I,{readBreakpoint:()=>z,useBreakpoint:()=>C});module.exports=k(I);var a=h(require("react"));var f={xs:"(min-width: 520px)",sm:"(min-width: 768px)",md:"(min-width: 1024px)",lg:"(min-width: 1280px)",xl:"(min-width: 1640px)"};var B=Object.entries(f),l=null,o=new Set,i=null;function u(){return l??(l=B.map(([e,t])=>[e,window.matchMedia(t)])),l}function d(){let e="initial";for(let[t,n]of u())n.matches&&(e=t);return e}function p(){let e=d();e!==i&&(i=e,o.forEach(t=>t()))}function x(e){if(typeof window>"u")return()=>{};if(o.size===0){i=d();for(let[,t]of u())typeof t.addEventListener=="function"?t.addEventListener("change",p):t.addListener?.(p)}return o.add(e),()=>{if(o.delete(e),!(o.size>0)){for(let[,t]of u())try{typeof t.removeEventListener=="function"?t.removeEventListener("change",p):t.removeListener?.(p)}catch{}i=null}}}function E(){return typeof window>"u"?"initial":(i??(i=d()),i)}function w(){return"initial"}function z(){return typeof window>"u"?"initial":d()}var L=()=>!0,M=()=>!1,y=()=>()=>{},T=()=>"initial";function C(e=!0){let t=a.useSyncExternalStore(e?x:y,e?E:T,w),n=a.useSyncExternalStore(e?x:y,L,M);return a.useMemo(()=>({breakpoint:t,ready:n}),[t,n])}
|
|
2
3
|
//# sourceMappingURL=use-breakpoint.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-breakpoint.ts", "../../../src/components/shell.types.ts"],
|
|
4
4
|
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport { _BREAKPOINTS, type Breakpoint } from '../components/shell.types.js';\n\nconst QUERIES = Object.entries(_BREAKPOINTS) as Array<[Breakpoint, string]>;\n\ntype Listener = () => void;\n\n/**\n * One set of `MediaQueryList`s and one set of listeners for the whole\n * application. Every component that asks for the breakpoint used to create and\n * subscribe to its own copy of all five queries.\n */\nlet mediaQueryLists: Array<[Breakpoint, MediaQueryList]> | null = null;\nconst listeners = new Set<Listener>();\nlet cachedBreakpoint: Breakpoint | null = null;\n\nfunction getMediaQueryLists() {\n mediaQueryLists ??= QUERIES.map(([name, query]) => [name, window.matchMedia(query)] as [Breakpoint, MediaQueryList]);\n return mediaQueryLists;\n}\n\nfunction computeBreakpoint(): Breakpoint {\n // The largest matching query wins; `_BREAKPOINTS` is ordered smallest first.\n let matched: Breakpoint = 'initial';\n for (const [name, mql] of getMediaQueryLists()) {\n if (mql.matches) matched = name;\n }\n return matched;\n}\n\nfunction handleChange() {\n const next = computeBreakpoint();\n if (next === cachedBreakpoint) return;\n cachedBreakpoint = next;\n listeners.forEach((listener) => listener());\n}\n\nfunction subscribe(listener: Listener) {\n if (typeof window === 'undefined') return () => {};\n\n if (listeners.size === 0) {\n cachedBreakpoint = computeBreakpoint();\n for (const [, mql] of getMediaQueryLists()) {\n // Safari below 14 only has the deprecated listener API.\n if (typeof mql.addEventListener === 'function') mql.addEventListener('change', handleChange);\n else mql.addListener?.(handleChange);\n }\n }\n\n listeners.add(listener);\n\n return () => {\n listeners.delete(listener);\n if (listeners.size > 0) return;\n\n for (const [, mql] of getMediaQueryLists()) {\n try {\n if (typeof mql.removeEventListener === 'function') mql.removeEventListener('change', handleChange);\n else mql.removeListener?.(handleChange);\n } catch (error) {\n // Removal can throw in edge cases, e.g. the list was already torn down.\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[useBreakpoint] MediaQueryList cleanup warning:', error);\n }\n }\n }\n cachedBreakpoint = null;\n };\n}\n\n/**\n * `getSnapshot` must return a referentially stable value between changes, so it\n * reads the cache that `handleChange` maintains rather than recomputing.\n */\nfunction getSnapshot(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n cachedBreakpoint ??= computeBreakpoint();\n return cachedBreakpoint;\n}\n\nfunction getServerSnapshot(): Breakpoint {\n return 'initial';\n}\n\n/**\n * The breakpoint right now, outside React's render. For an effect that needs\n * the answer at the moment it runs rather than the one its render saw.\n */\nexport function readBreakpoint(): Breakpoint {\n if (typeof window === 'undefined') return 'initial';\n return computeBreakpoint();\n}\n\nconst getReadySnapshot = () => true;\nconst getReadyServerSnapshot = () => false;\n\nconst noopSubscribe = () => () => {};\nconst getInitialSnapshot = (): Breakpoint => 'initial';\n\n/**\n * The current breakpoint, and whether it has been resolved against a real\n * viewport yet (`false` on the server and during hydration).\n *\n * Reads through `useSyncExternalStore` rather than settling into state from an\n * effect. On a client render the very first pass already has the real\n * breakpoint, instead of rendering the whole shell at `initial` and correcting\n * it after the browser has painted.\n *\n * Pass `enabled = false` to skip the subscription (the breakpoint then reads as\n * `initial`).\n */\nexport function useBreakpoint(enabled = true): { breakpoint: Breakpoint; ready: boolean } {\n // Callers with a non-responsive value pass `enabled = false` so they neither\n // subscribe to the media queries nor re-render when the viewport crosses one.\n const breakpoint = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n enabled ? getSnapshot : getInitialSnapshot,\n getServerSnapshot,\n );\n const ready = React.useSyncExternalStore(\n enabled ? subscribe : noopSubscribe,\n getReadySnapshot,\n getReadyServerSnapshot,\n );\n\n return React.useMemo(() => ({ breakpoint, ready }), [breakpoint, ready]);\n}\n", "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"],
|
|
5
|
-
"mappings": "ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAuB,oBCqDhB,IAAMC,EAAe,CAC1B,GAAI,qBACJ,GAAI,qBACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,qBACN,EDxDA,IAAMC,EAAU,OAAO,QAAQC,CAAY,EASvCC,EAA8D,KAC5DC,EAAY,IAAI,IAClBC,EAAsC,KAE1C,SAASC,GAAqB,CAC5B,OAAAH,MAAoBF,EAAQ,IAAI,CAAC,CAACM,EAAMC,CAAK,IAAM,CAACD,EAAM,OAAO,WAAWC,CAAK,CAAC,CAAiC,GAC5GL,CACT,CAEA,SAASM,GAAgC,CAEvC,IAAIC,EAAsB,UAC1B,OAAW,CAACH,EAAMI,CAAG,IAAKL,EAAmB,EACvCK,EAAI,UAASD,EAAUH,GAE7B,OAAOG,CACT,CAEA,SAASE,GAAe,CACtB,IAAMC,EAAOJ,EAAkB,EAC3BI,IAASR,IACbA,EAAmBQ,EACnBT,EAAU,QAASU,GAAaA,EAAS,CAAC,EAC5C,CAEA,SAASC,EAAUD,EAAoB,CACrC,GAAI,OAAO,OAAW,IAAa,MAAO,IAAM,CAAC,EAEjD,GAAIV,EAAU,OAAS,EAAG,CACxBC,EAAmBI,EAAkB,EACrC,OAAW,CAAC,CAAEE,CAAG,IAAKL,EAAmB,EAEnC,OAAOK,EAAI,kBAAqB,WAAYA,EAAI,iBAAiB,SAAUC,CAAY,EACtFD,EAAI,cAAcC,CAAY,CAEvC,CAEA,OAAAR,EAAU,IAAIU,CAAQ,EAEf,IAAM,CAEX,GADAV,EAAU,OAAOU,CAAQ,EACrB,EAAAV,EAAU,KAAO,GAErB,QAAW,CAAC,CAAEO,CAAG,IAAKL,EAAmB,EACvC,GAAI,CACE,OAAOK,EAAI,qBAAwB,WAAYA,EAAI,oBAAoB,SAAUC,CAAY,EAC5FD,EAAI,iBAAiBC,CAAY,CACxC,MAAgB,CAKhB,CAEFP,EAAmB,KACrB,CACF,CAMA,SAASW,GAA0B,CACjC,OAAI,OAAO,OAAW,IAAoB,WAC1CX,MAAqBI,EAAkB,GAChCJ,EACT,CAEA,SAASY,GAAgC,CACvC,MAAO,SACT,CAMO,SAASC,GAA6B,CAC3C,OAAI,OAAO,OAAW,IAAoB,UACnCT,EAAkB,CAC3B,CAEA,IAAMU,EAAmB,IAAM,GACzBC,EAAyB,IAAM,GAE/BC,EAAgB,IAAM,IAAM,CAAC,EAC7BC,EAAqB,IAAkB,UActC,SAASC,EAAcC,EAAU,GAAkD,CAGxF,IAAMC,EAAmB,uBACvBD,EAAUT,EAAYM,EACtBG,EAAUR,EAAcM,EACxBL,CACF,EACMS,EAAc,uBAClBF,EAAUT,EAAYM,EACtBF,EACAC,CACF,EAEA,OAAa,UAAQ,KAAO,CAAE,WAAAK,EAAY,MAAAC,CAAM,GAAI,CAACD,EAAYC,CAAK,CAAC,CACzE",
|
|
5
|
+
"mappings": ";ukBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,EAAA,kBAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAuB,oBCqDhB,IAAMC,EAAe,CAC1B,GAAI,qBACJ,GAAI,qBACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,qBACN,EDxDA,IAAMC,EAAU,OAAO,QAAQC,CAAY,EASvCC,EAA8D,KAC5DC,EAAY,IAAI,IAClBC,EAAsC,KAE1C,SAASC,GAAqB,CAC5B,OAAAH,MAAoBF,EAAQ,IAAI,CAAC,CAACM,EAAMC,CAAK,IAAM,CAACD,EAAM,OAAO,WAAWC,CAAK,CAAC,CAAiC,GAC5GL,CACT,CAEA,SAASM,GAAgC,CAEvC,IAAIC,EAAsB,UAC1B,OAAW,CAACH,EAAMI,CAAG,IAAKL,EAAmB,EACvCK,EAAI,UAASD,EAAUH,GAE7B,OAAOG,CACT,CAEA,SAASE,GAAe,CACtB,IAAMC,EAAOJ,EAAkB,EAC3BI,IAASR,IACbA,EAAmBQ,EACnBT,EAAU,QAASU,GAAaA,EAAS,CAAC,EAC5C,CAEA,SAASC,EAAUD,EAAoB,CACrC,GAAI,OAAO,OAAW,IAAa,MAAO,IAAM,CAAC,EAEjD,GAAIV,EAAU,OAAS,EAAG,CACxBC,EAAmBI,EAAkB,EACrC,OAAW,CAAC,CAAEE,CAAG,IAAKL,EAAmB,EAEnC,OAAOK,EAAI,kBAAqB,WAAYA,EAAI,iBAAiB,SAAUC,CAAY,EACtFD,EAAI,cAAcC,CAAY,CAEvC,CAEA,OAAAR,EAAU,IAAIU,CAAQ,EAEf,IAAM,CAEX,GADAV,EAAU,OAAOU,CAAQ,EACrB,EAAAV,EAAU,KAAO,GAErB,QAAW,CAAC,CAAEO,CAAG,IAAKL,EAAmB,EACvC,GAAI,CACE,OAAOK,EAAI,qBAAwB,WAAYA,EAAI,oBAAoB,SAAUC,CAAY,EAC5FD,EAAI,iBAAiBC,CAAY,CACxC,MAAgB,CAKhB,CAEFP,EAAmB,KACrB,CACF,CAMA,SAASW,GAA0B,CACjC,OAAI,OAAO,OAAW,IAAoB,WAC1CX,MAAqBI,EAAkB,GAChCJ,EACT,CAEA,SAASY,GAAgC,CACvC,MAAO,SACT,CAMO,SAASC,GAA6B,CAC3C,OAAI,OAAO,OAAW,IAAoB,UACnCT,EAAkB,CAC3B,CAEA,IAAMU,EAAmB,IAAM,GACzBC,EAAyB,IAAM,GAE/BC,EAAgB,IAAM,IAAM,CAAC,EAC7BC,EAAqB,IAAkB,UActC,SAASC,EAAcC,EAAU,GAAkD,CAGxF,IAAMC,EAAmB,uBACvBD,EAAUT,EAAYM,EACtBG,EAAUR,EAAcM,EACxBL,CACF,EACMS,EAAc,uBAClBF,EAAUT,EAAYM,EACtBF,EACAC,CACF,EAEA,OAAa,UAAQ,KAAO,CAAE,WAAAK,EAAY,MAAAC,CAAM,GAAI,CAACD,EAAYC,CAAK,CAAC,CACzE",
|
|
6
6
|
"names": ["use_breakpoint_exports", "__export", "readBreakpoint", "useBreakpoint", "__toCommonJS", "React", "_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"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var l=Object.create;var r=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var p=(e,n)=>{for(var t in n)r(e,t,{get:n[t],enumerable:!0})},a=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let u of s(n))!m.call(e,u)&&u!==t&&r(e,u,{get:()=>n[u],enumerable:!(i=d(n,u))||i.enumerable});return e};var v=(e,n,t)=>(t=e!=null?l(f(e)):{},a(n||!e||!e.__esModule?r(t,"default",{value:e,enumerable:!0}):t,e)),R=e=>a(r({},"__esModule",{value:!0}),e);var x={};p(x,{useLiveAnnouncer:()=>g});module.exports=R(x);var o=v(require("react")),c=0;function g(){let e=o.useRef(void 0);return o.useEffect(()=>{let t=document.getElementById("kui-live-announcer");return t||(t=document.createElement("div"),t.id="kui-live-announcer",t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),t.style.cssText=`
|
|
2
3
|
position: absolute;
|
|
3
4
|
left: -10000px;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-live-announcer.ts"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\n\n/**\n * Reference counter to track how many components are using the live region.\n * Only remove the live region when no components are using it.\n */\nlet liveRegionRefCount = 0;\n\n/**\n * Hook for making live announcements to screen readers\n * Creates a hidden aria-live region for announcing dynamic content changes\n */\nexport function useLiveAnnouncer() {\n // Track the timeout so we can clean it up on unmount\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n // Create aria-live region if it doesn't exist\n React.useEffect(() => {\n let liveRegion = document.getElementById('kui-live-announcer');\n\n if (!liveRegion) {\n liveRegion = document.createElement('div');\n liveRegion.id = 'kui-live-announcer';\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.setAttribute('aria-atomic', 'true');\n liveRegion.style.cssText = `\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n `;\n document.body.appendChild(liveRegion);\n }\n\n // Increment ref count when component mounts\n liveRegionRefCount++;\n\n return () => {\n // Decrement ref count when component unmounts\n liveRegionRefCount--;\n\n // Clean up timeout on unmount\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Only remove the live region if no components are using it\n if (liveRegionRefCount === 0) {\n const region = document.getElementById('kui-live-announcer');\n if (region) {\n region.remove();\n }\n }\n };\n }, []);\n\n const announce = React.useCallback((message: string) => {\n const liveRegion = document.getElementById('kui-live-announcer');\n if (liveRegion) {\n // Clear any pending timeout\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Clear previous announcements\n liveRegion.textContent = '';\n\n // Add new announcement with a small delay to ensure it's announced\n timeoutRef.current = setTimeout(() => {\n liveRegion.textContent = message;\n }, 100);\n }\n }, []);\n\n return announce;\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAMnBC,EAAqB,EAMlB,SAASH,GAAmB,CAEjC,IAAMI,EAAmB,SAAkD,MAAS,EAGpF,OAAM,YAAU,IAAM,CACpB,IAAIC,EAAa,SAAS,eAAe,oBAAoB,EAE7D,OAAKA,IACHA,EAAa,SAAS,cAAc,KAAK,EACzCA,EAAW,GAAK,qBAChBA,EAAW,aAAa,YAAa,QAAQ,EAC7CA,EAAW,aAAa,cAAe,MAAM,EAC7CA,EAAW,MAAM,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAS3B,SAAS,KAAK,YAAYA,CAAU,GAItCF,IAEO,IAAM,CAUX,GARAA,IAGIC,EAAW,SACb,aAAaA,EAAW,OAAO,EAI7BD,IAAuB,EAAG,CAC5B,IAAMG,EAAS,SAAS,eAAe,oBAAoB,EACvDA,GACFA,EAAO,OAAO,CAElB,CACF,CACF,EAAG,CAAC,CAAC,EAEkB,cAAaC,GAAoB,CACtD,IAAMF,EAAa,SAAS,eAAe,oBAAoB,EAC3DA,IAEED,EAAW,SACb,aAAaA,EAAW,OAAO,EAIjCC,EAAW,YAAc,GAGzBD,EAAW,QAAU,WAAW,IAAM,CACpCC,EAAW,YAAcE,CAC3B,EAAG,GAAG,EAEV,EAAG,CAAC,CAAC,CAGP",
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAMnBC,EAAqB,EAMlB,SAASH,GAAmB,CAEjC,IAAMI,EAAmB,SAAkD,MAAS,EAGpF,OAAM,YAAU,IAAM,CACpB,IAAIC,EAAa,SAAS,eAAe,oBAAoB,EAE7D,OAAKA,IACHA,EAAa,SAAS,cAAc,KAAK,EACzCA,EAAW,GAAK,qBAChBA,EAAW,aAAa,YAAa,QAAQ,EAC7CA,EAAW,aAAa,cAAe,MAAM,EAC7CA,EAAW,MAAM,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAS3B,SAAS,KAAK,YAAYA,CAAU,GAItCF,IAEO,IAAM,CAUX,GARAA,IAGIC,EAAW,SACb,aAAaA,EAAW,OAAO,EAI7BD,IAAuB,EAAG,CAC5B,IAAMG,EAAS,SAAS,eAAe,oBAAoB,EACvDA,GACFA,EAAO,OAAO,CAElB,CACF,CACF,EAAG,CAAC,CAAC,EAEkB,cAAaC,GAAoB,CACtD,IAAMF,EAAa,SAAS,eAAe,oBAAoB,EAC3DA,IAEED,EAAW,SACb,aAAaA,EAAW,OAAO,EAIjCC,EAAW,YAAc,GAGzBD,EAAW,QAAU,WAAW,IAAM,CACpCC,EAAW,YAAcE,CAC3B,EAAG,GAAG,EAEV,EAAG,CAAC,CAAC,CAGP",
|
|
6
6
|
"names": ["use_live_announcer_exports", "__export", "useLiveAnnouncer", "__toCommonJS", "React", "liveRegionRefCount", "timeoutRef", "liveRegion", "region", "message"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var i=Object.create;var o=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var v=(t,e)=>{for(var s in e)o(t,s,{get:e[s],enumerable:!0})},u=(t,e,s,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of P(e))!f.call(t,c)&&c!==s&&o(t,c,{get:()=>e[c],enumerable:!(a=r(e,c))||a.enumerable});return t};var R=(t,e,s)=>(s=t!=null?i(S(t)):{},u(e||!t||!t.__esModule?o(s,"default",{value:t,enumerable:!0}):s,t)),m=t=>u(o({},"__esModule",{value:!0}),t);var b={};v(b,{usePropSyncedState:()=>T});module.exports=m(b);var n=R(require("react"));function T(t){let[e,s]=n.useState(t),[a,c]=n.useState(t);return Object.is(t,a)||(c(t),s(t)),[e,s]}
|
|
2
3
|
//# sourceMappingURL=use-prop-synced-state.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-prop-synced-state.ts"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\n\n/**\n * State that tracks a prop but can also be set imperatively \u2014 the shape `Theme`\n * needs, where a prop sets the value and the context setters can change it at runtime.\n *\n * Adjusts state during render rather than syncing in a `useEffect`. An effect\n * would commit one render carrying the *old* value and schedule a second one,\n * which for a provider means every consumer renders twice and the browser can\n * paint the stale value in between.\n *\n * @see https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */\nexport function usePropSyncedState<T>(propValue: T) {\n const [value, setValue] = React.useState(propValue);\n const [previousPropValue, setPreviousPropValue] = React.useState(propValue);\n\n if (!Object.is(propValue, previousPropValue)) {\n setPreviousPropValue(propValue);\n setValue(propValue);\n }\n\n return [value, setValue] as const;\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAahB,SAASF,EAAsBG,EAAc,CAClD,GAAM,CAACC,EAAOC,CAAQ,EAAU,WAASF,CAAS,EAC5C,CAACG,EAAmBC,CAAoB,EAAU,WAASJ,CAAS,EAE1E,OAAK,OAAO,GAAGA,EAAWG,CAAiB,IACzCC,EAAqBJ,CAAS,EAC9BE,EAASF,CAAS,GAGb,CAACC,EAAOC,CAAQ,CACzB",
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAahB,SAASF,EAAsBG,EAAc,CAClD,GAAM,CAACC,EAAOC,CAAQ,EAAU,WAASF,CAAS,EAC5C,CAACG,EAAmBC,CAAoB,EAAU,WAASJ,CAAS,EAE1E,OAAK,OAAO,GAAGA,EAAWG,CAAiB,IACzCC,EAAqBJ,CAAS,EAC9BE,EAASF,CAAS,GAGb,CAACC,EAAOC,CAAQ,CACzB",
|
|
6
6
|
"names": ["use_prop_synced_state_exports", "__export", "usePropSyncedState", "__toCommonJS", "React", "propValue", "value", "setValue", "previousPropValue", "setPreviousPropValue"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var p=Object.create;var n=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var b=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},d=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of x(e))!w.call(t,s)&&s!==r&&n(t,s,{get:()=>e[s],enumerable:!(o=y(e,s))||o.enumerable});return t};var P=(t,e,r)=>(r=t!=null?p(h(t)):{},d(e||!t||!t.__esModule?n(r,"default",{value:t,enumerable:!0}):r,t)),E=t=>d(n({},"__esModule",{value:!0}),t);var L={};b(L,{useScrollEdges:()=>M});module.exports=E(L);var c=P(require("react"));function M(t){let[e,r]=c.useState(null);return c.useEffect(()=>{if(!t||!e)return;let o=0,s=()=>{o=0;let a=Math.max(0,e.scrollTop),m=Math.max(0,e.scrollHeight-e.clientHeight-e.scrollTop);e.style.setProperty("--scroll-overflow-start",`${a}px`),e.style.setProperty("--scroll-overflow-end",`${m}px`);let v=Math.abs(e.scrollLeft),u=Math.max(0,e.scrollWidth-e.clientWidth-v);e.style.setProperty("--scroll-overflow-x-start",`${v}px`),e.style.setProperty("--scroll-overflow-x-end",`${u}px`)},l=()=>{o||(o=requestAnimationFrame(s))};s(),e.addEventListener("scroll",l,{passive:!0});let i=typeof ResizeObserver>"u"?null:new ResizeObserver(l);i?.observe(e);for(let a of Array.from(e.children))i?.observe(a);let f=typeof MutationObserver>"u"?null:new MutationObserver(l);return f?.observe(e,{childList:!0}),()=>{o&&cancelAnimationFrame(o),e.removeEventListener("scroll",l),i?.disconnect(),f?.disconnect(),e.style.removeProperty("--scroll-overflow-start"),e.style.removeProperty("--scroll-overflow-end"),e.style.removeProperty("--scroll-overflow-x-start"),e.style.removeProperty("--scroll-overflow-x-end")}},[t,e]),r}
|
|
2
3
|
//# sourceMappingURL=use-scroll-edges.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-scroll-edges.ts"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\n\n/**\n * Publishes how much content is hidden past each edge of a scroller, as\n * `--scroll-overflow-start` and `--scroll-overflow-end` (block axis) and\n * `--scroll-overflow-x-start` and `--scroll-overflow-x-end` (inline axis, from\n * the inline start, so right-to-left reads the same) in px on the element.\n * The scroll fade reads them, so an edge fades only while content is hidden\n * there, and the fade ramps in over the first pixels of scrolling.\n *\n * Writes happen at most once per frame, on scroll and when the element or its\n * content resizes. Nothing re-renders.\n */\nexport function useScrollEdges<T extends HTMLElement>(enabled: boolean) {\n const [element, setElement] = React.useState<T | null>(null);\n\n React.useEffect(() => {\n if (!enabled || !element) return;\n let frame = 0;\n const write = () => {\n frame = 0;\n const start = Math.max(0, element.scrollTop);\n const end = Math.max(0, element.scrollHeight - element.clientHeight - element.scrollTop);\n element.style.setProperty('--scroll-overflow-start', `${start}px`);\n element.style.setProperty('--scroll-overflow-end', `${end}px`);\n // scrollLeft runs negative in right-to-left, so its size is the distance from the inline start.\n const xStart = Math.abs(element.scrollLeft);\n const xEnd = Math.max(0, element.scrollWidth - element.clientWidth - xStart);\n element.style.setProperty('--scroll-overflow-x-start', `${xStart}px`);\n element.style.setProperty('--scroll-overflow-x-end', `${xEnd}px`);\n };\n const schedule = () => {\n if (!frame) frame = requestAnimationFrame(write);\n };\n write();\n element.addEventListener('scroll', schedule, { passive: true });\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(schedule);\n observer?.observe(element);\n for (const child of Array.from(element.children)) observer?.observe(child);\n const mutations = typeof MutationObserver === 'undefined' ? null : new MutationObserver(schedule);\n mutations?.observe(element, { childList: true });\n return () => {\n if (frame) cancelAnimationFrame(frame);\n element.removeEventListener('scroll', schedule);\n observer?.disconnect();\n mutations?.disconnect();\n element.style.removeProperty('--scroll-overflow-start');\n element.style.removeProperty('--scroll-overflow-end');\n element.style.removeProperty('--scroll-overflow-x-start');\n element.style.removeProperty('--scroll-overflow-x-end');\n };\n }, [enabled, element]);\n\n return setElement;\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAahB,SAASF,EAAsCG,EAAkB,CACtE,GAAM,CAACC,EAASC,CAAU,EAAU,WAAmB,IAAI,EAE3D,OAAM,YAAU,IAAM,CACpB,GAAI,CAACF,GAAW,CAACC,EAAS,OAC1B,IAAIE,EAAQ,EACNC,EAAQ,IAAM,CAClBD,EAAQ,EACR,IAAME,EAAQ,KAAK,IAAI,EAAGJ,EAAQ,SAAS,EACrCK,EAAM,KAAK,IAAI,EAAGL,EAAQ,aAAeA,EAAQ,aAAeA,EAAQ,SAAS,EACvFA,EAAQ,MAAM,YAAY,0BAA2B,GAAGI,CAAK,IAAI,EACjEJ,EAAQ,MAAM,YAAY,wBAAyB,GAAGK,CAAG,IAAI,EAE7D,IAAMC,EAAS,KAAK,IAAIN,EAAQ,UAAU,EACpCO,EAAO,KAAK,IAAI,EAAGP,EAAQ,YAAcA,EAAQ,YAAcM,CAAM,EAC3EN,EAAQ,MAAM,YAAY,4BAA6B,GAAGM,CAAM,IAAI,EACpEN,EAAQ,MAAM,YAAY,0BAA2B,GAAGO,CAAI,IAAI,CAClE,EACMC,EAAW,IAAM,CAChBN,IAAOA,EAAQ,sBAAsBC,CAAK,EACjD,EACAA,EAAM,EACNH,EAAQ,iBAAiB,SAAUQ,EAAU,CAAE,QAAS,EAAK,CAAC,EAC9D,IAAMC,EAAW,OAAO,eAAmB,IAAc,KAAO,IAAI,eAAeD,CAAQ,EAC3FC,GAAU,QAAQT,CAAO,EACzB,QAAWU,KAAS,MAAM,KAAKV,EAAQ,QAAQ,EAAGS,GAAU,QAAQC,CAAK,EACzE,IAAMC,EAAY,OAAO,iBAAqB,IAAc,KAAO,IAAI,iBAAiBH,CAAQ,EAChG,OAAAG,GAAW,QAAQX,EAAS,CAAE,UAAW,EAAK,CAAC,EACxC,IAAM,CACPE,GAAO,qBAAqBA,CAAK,EACrCF,EAAQ,oBAAoB,SAAUQ,CAAQ,EAC9CC,GAAU,WAAW,EACrBE,GAAW,WAAW,EACtBX,EAAQ,MAAM,eAAe,yBAAyB,EACtDA,EAAQ,MAAM,eAAe,uBAAuB,EACpDA,EAAQ,MAAM,eAAe,2BAA2B,EACxDA,EAAQ,MAAM,eAAe,yBAAyB,CACxD,CACF,EAAG,CAACD,EAASC,CAAO,CAAC,EAEdC,CACT",
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAahB,SAASF,EAAsCG,EAAkB,CACtE,GAAM,CAACC,EAASC,CAAU,EAAU,WAAmB,IAAI,EAE3D,OAAM,YAAU,IAAM,CACpB,GAAI,CAACF,GAAW,CAACC,EAAS,OAC1B,IAAIE,EAAQ,EACNC,EAAQ,IAAM,CAClBD,EAAQ,EACR,IAAME,EAAQ,KAAK,IAAI,EAAGJ,EAAQ,SAAS,EACrCK,EAAM,KAAK,IAAI,EAAGL,EAAQ,aAAeA,EAAQ,aAAeA,EAAQ,SAAS,EACvFA,EAAQ,MAAM,YAAY,0BAA2B,GAAGI,CAAK,IAAI,EACjEJ,EAAQ,MAAM,YAAY,wBAAyB,GAAGK,CAAG,IAAI,EAE7D,IAAMC,EAAS,KAAK,IAAIN,EAAQ,UAAU,EACpCO,EAAO,KAAK,IAAI,EAAGP,EAAQ,YAAcA,EAAQ,YAAcM,CAAM,EAC3EN,EAAQ,MAAM,YAAY,4BAA6B,GAAGM,CAAM,IAAI,EACpEN,EAAQ,MAAM,YAAY,0BAA2B,GAAGO,CAAI,IAAI,CAClE,EACMC,EAAW,IAAM,CAChBN,IAAOA,EAAQ,sBAAsBC,CAAK,EACjD,EACAA,EAAM,EACNH,EAAQ,iBAAiB,SAAUQ,EAAU,CAAE,QAAS,EAAK,CAAC,EAC9D,IAAMC,EAAW,OAAO,eAAmB,IAAc,KAAO,IAAI,eAAeD,CAAQ,EAC3FC,GAAU,QAAQT,CAAO,EACzB,QAAWU,KAAS,MAAM,KAAKV,EAAQ,QAAQ,EAAGS,GAAU,QAAQC,CAAK,EACzE,IAAMC,EAAY,OAAO,iBAAqB,IAAc,KAAO,IAAI,iBAAiBH,CAAQ,EAChG,OAAAG,GAAW,QAAQX,EAAS,CAAE,UAAW,EAAK,CAAC,EACxC,IAAM,CACPE,GAAO,qBAAqBA,CAAK,EACrCF,EAAQ,oBAAoB,SAAUQ,CAAQ,EAC9CC,GAAU,WAAW,EACrBE,GAAW,WAAW,EACtBX,EAAQ,MAAM,eAAe,yBAAyB,EACtDA,EAAQ,MAAM,eAAe,uBAAuB,EACpDA,EAAQ,MAAM,eAAe,2BAA2B,EACxDA,EAAQ,MAAM,eAAe,yBAAyB,CACxD,CACF,EAAG,CAACD,EAASC,CAAO,CAAC,EAEdC,CACT",
|
|
6
6
|
"names": ["use_scroll_edges_exports", "__export", "useScrollEdges", "__toCommonJS", "React", "enabled", "element", "setElement", "frame", "write", "start", "end", "xStart", "xEnd", "schedule", "observer", "child", "mutations"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var h=Object.create;var c=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var E=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var o in e)c(t,o,{get:e[o],enumerable:!0})},p=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of T(e))!g.call(t,n)&&n!==o&&c(t,n,{get:()=>e[n],enumerable:!(r=b(e,n))||r.enumerable});return t};var L=(t,e,o)=>(o=t!=null?h(E(t)):{},p(e||!t||!t.__esModule?c(o,"default",{value:t,enumerable:!0}):o,t)),S=t=>p(c({},"__esModule",{value:!0}),t);var F={};H(F,{useThumbSync:()=>y});module.exports=S(F);var i=L(require("react"));function y(){let[t,e]=i.useState(null);return i.useEffect(()=>{let o=t?.parentElement;if(!t||!o)return;let r=0,n=()=>{r=0;for(let s of o.querySelectorAll(":scope > .kui-ScrollAreaScrollbar > .kui-ScrollAreaThumb")){let l=s.parentElement,a=getComputedStyle(l);if(l.dataset.orientation==="horizontal"){let f=l.clientWidth-parseFloat(a.paddingLeft)-parseFloat(a.paddingRight),m=d(t.scrollLeft,t.scrollWidth-t.offsetWidth,f-s.offsetWidth);s.style.transform=`translate3d(${m}px, 0, 0)`}else{let f=l.clientHeight-parseFloat(a.paddingTop)-parseFloat(a.paddingBottom),m=d(t.scrollTop,t.scrollHeight-t.offsetHeight,f-s.offsetHeight);s.style.transform=`translate3d(0, ${m}px, 0)`}}},u=()=>{r||(r=requestAnimationFrame(n))};return t.addEventListener("scroll",u,{passive:!0}),()=>{r&&cancelAnimationFrame(r),t.removeEventListener("scroll",u)}},[t]),e}function d(t,e,o){return e<=0||o<=0?0:Math.min(Math.max(t,-e),e)/e*o}
|
|
2
3
|
//# sourceMappingURL=use-thumb-sync.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-thumb-sync.ts"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\n\n/**\n * Keeps a Radix ScrollArea's thumbs on the scroll position on every scroll.\n *\n * Radix moves a thumb from a requestAnimationFrame loop it starts on the first scroll event of a\n * burst. Next's production minifier compiles that self-calling loop away, so in a production\n * build the thumb moves once, sits while the content scrolls, and jumps when the next burst\n * starts. This writes the transform Radix would, at most once per frame. Nothing re-renders.\n *\n * Pass the hook's setter as a ref on `ScrollArea.Viewport`; the scrollbars are its siblings.\n */\nexport function useThumbSync<T extends HTMLElement>() {\n const [viewport, setViewport] = React.useState<T | null>(null);\n\n React.useEffect(() => {\n const root = viewport?.parentElement;\n if (!viewport || !root) return;\n let frame = 0;\n const write = () => {\n frame = 0;\n for (const thumb of root.querySelectorAll<HTMLElement>(':scope > .kui-ScrollAreaScrollbar > .kui-ScrollAreaThumb')) {\n const scrollbar = thumb.parentElement as HTMLElement;\n const style = getComputedStyle(scrollbar);\n if (scrollbar.dataset.orientation === 'horizontal') {\n const track = scrollbar.clientWidth - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight);\n const offset = thumbOffset(viewport.scrollLeft, viewport.scrollWidth - viewport.offsetWidth, track - thumb.offsetWidth);\n thumb.style.transform = `translate3d(${offset}px, 0, 0)`;\n } else {\n const track = scrollbar.clientHeight - parseFloat(style.paddingTop) - parseFloat(style.paddingBottom);\n const offset = thumbOffset(viewport.scrollTop, viewport.scrollHeight - viewport.offsetHeight, track - thumb.offsetHeight);\n thumb.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n }\n };\n const schedule = () => {\n if (!frame) frame = requestAnimationFrame(write);\n };\n viewport.addEventListener('scroll', schedule, { passive: true });\n return () => {\n if (frame) cancelAnimationFrame(frame);\n viewport.removeEventListener('scroll', schedule);\n };\n }, [viewport]);\n\n return setViewport;\n}\n\n/** Radix's mapping: scroll position over its range, onto the room the thumb has to travel. */\nfunction thumbOffset(position: number, range: number, travel: number) {\n if (range <= 0 || travel <= 0) return 0;\n // Right-to-left scrolls run from -range to 0; the thumb then travels from -travel to 0.\n const clamped = Math.min(Math.max(position, -range), range);\n return (clamped / range) * travel;\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAYhB,SAASF,GAAsC,CACpD,GAAM,CAACG,EAAUC,CAAW,EAAU,WAAmB,IAAI,EAE7D,OAAM,YAAU,IAAM,CACpB,IAAMC,EAAOF,GAAU,cACvB,GAAI,CAACA,GAAY,CAACE,EAAM,OACxB,IAAIC,EAAQ,EACNC,EAAQ,IAAM,CAClBD,EAAQ,EACR,QAAWE,KAASH,EAAK,iBAA8B,0DAA0D,EAAG,CAClH,IAAMI,EAAYD,EAAM,cAClBE,EAAQ,iBAAiBD,CAAS,EACxC,GAAIA,EAAU,QAAQ,cAAgB,aAAc,CAClD,IAAME,EAAQF,EAAU,YAAc,WAAWC,EAAM,WAAW,EAAI,WAAWA,EAAM,YAAY,EAC7FE,EAASC,EAAYV,EAAS,WAAYA,EAAS,YAAcA,EAAS,YAAaQ,EAAQH,EAAM,WAAW,EACtHA,EAAM,MAAM,UAAY,eAAeI,CAAM,WAC/C,KAAO,CACL,IAAMD,EAAQF,EAAU,aAAe,WAAWC,EAAM,UAAU,EAAI,WAAWA,EAAM,aAAa,EAC9FE,EAASC,EAAYV,EAAS,UAAWA,EAAS,aAAeA,EAAS,aAAcQ,EAAQH,EAAM,YAAY,EACxHA,EAAM,MAAM,UAAY,kBAAkBI,CAAM,QAClD,CACF,CACF,EACME,EAAW,IAAM,CAChBR,IAAOA,EAAQ,sBAAsBC,CAAK,EACjD,EACA,OAAAJ,EAAS,iBAAiB,SAAUW,EAAU,CAAE,QAAS,EAAK,CAAC,EACxD,IAAM,CACPR,GAAO,qBAAqBA,CAAK,EACrCH,EAAS,oBAAoB,SAAUW,CAAQ,CACjD,CACF,EAAG,CAACX,CAAQ,CAAC,EAENC,CACT,CAGA,SAASS,EAAYE,EAAkBC,EAAeC,EAAgB,CACpE,OAAID,GAAS,GAAKC,GAAU,EAAU,EAEtB,KAAK,IAAI,KAAK,IAAIF,EAAU,CAACC,CAAK,EAAGA,CAAK,EACxCA,EAASC,CAC7B",
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBAYhB,SAASF,GAAsC,CACpD,GAAM,CAACG,EAAUC,CAAW,EAAU,WAAmB,IAAI,EAE7D,OAAM,YAAU,IAAM,CACpB,IAAMC,EAAOF,GAAU,cACvB,GAAI,CAACA,GAAY,CAACE,EAAM,OACxB,IAAIC,EAAQ,EACNC,EAAQ,IAAM,CAClBD,EAAQ,EACR,QAAWE,KAASH,EAAK,iBAA8B,0DAA0D,EAAG,CAClH,IAAMI,EAAYD,EAAM,cAClBE,EAAQ,iBAAiBD,CAAS,EACxC,GAAIA,EAAU,QAAQ,cAAgB,aAAc,CAClD,IAAME,EAAQF,EAAU,YAAc,WAAWC,EAAM,WAAW,EAAI,WAAWA,EAAM,YAAY,EAC7FE,EAASC,EAAYV,EAAS,WAAYA,EAAS,YAAcA,EAAS,YAAaQ,EAAQH,EAAM,WAAW,EACtHA,EAAM,MAAM,UAAY,eAAeI,CAAM,WAC/C,KAAO,CACL,IAAMD,EAAQF,EAAU,aAAe,WAAWC,EAAM,UAAU,EAAI,WAAWA,EAAM,aAAa,EAC9FE,EAASC,EAAYV,EAAS,UAAWA,EAAS,aAAeA,EAAS,aAAcQ,EAAQH,EAAM,YAAY,EACxHA,EAAM,MAAM,UAAY,kBAAkBI,CAAM,QAClD,CACF,CACF,EACME,EAAW,IAAM,CAChBR,IAAOA,EAAQ,sBAAsBC,CAAK,EACjD,EACA,OAAAJ,EAAS,iBAAiB,SAAUW,EAAU,CAAE,QAAS,EAAK,CAAC,EACxD,IAAM,CACPR,GAAO,qBAAqBA,CAAK,EACrCH,EAAS,oBAAoB,SAAUW,CAAQ,CACjD,CACF,EAAG,CAACX,CAAQ,CAAC,EAENC,CACT,CAGA,SAASS,EAAYE,EAAkBC,EAAeC,EAAgB,CACpE,OAAID,GAAS,GAAKC,GAAU,EAAU,EAEtB,KAAK,IAAI,KAAK,IAAIF,EAAU,CAACC,CAAK,EAAGA,CAAK,EACxCA,EAASC,CAC7B",
|
|
6
6
|
"names": ["use_thumb_sync_exports", "__export", "useThumbSync", "__toCommonJS", "React", "viewport", "setViewport", "root", "frame", "write", "thumb", "scrollbar", "style", "track", "offset", "thumbOffset", "schedule", "position", "range", "travel"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var g=Object.create;var a=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var w=(e,n)=>{for(var t in n)a(e,t,{get:n[t],enumerable:!0})},l=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of R(n))!b.call(e,r)&&r!==t&&a(e,r,{get:()=>n[r],enumerable:!(o=v(n,r))||o.enumerable});return e};var d=(e,n,t)=>(t=e!=null?g(h(e)):{},l(n||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),y=e=>l(a({},"__esModule",{value:!0}),e);var C={};w(C,{useToggleState:()=>T});module.exports=y(C);var u=d(require("react"));var i=d(require("react")),s=0;function f(){let e=i.useRef(void 0);return i.useEffect(()=>{let t=document.getElementById("kui-live-announcer");return t||(t=document.createElement("div"),t.id="kui-live-announcer",t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),t.style.cssText=`
|
|
2
3
|
position: absolute;
|
|
3
4
|
left: -10000px;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/use-toggle-state.ts", "../../../src/hooks/use-live-announcer.ts"],
|
|
4
4
|
"sourcesContent": ["import * as React from 'react';\nimport { useLiveAnnouncer } from './use-live-announcer.js';\n\n/**\n * Options for the useToggleState hook\n */\ninterface UseToggleStateOptions {\n /** Controlled pressed state */\n pressed?: boolean;\n /** Callback when pressed state changes */\n onPressedChange?: (pressed: boolean) => void;\n /** Function to get the accessible name for announcements */\n getAccessibleName: () => string;\n /** Component name for warning messages */\n componentName: string;\n}\n\n/**\n * Hook for shared toggle button state management.\n * Provides accessibility announcements and controlled/uncontrolled warnings.\n *\n * @param options - Configuration options for the toggle state\n * @returns Object containing the handlePressedChange callback\n *\n * @example\n * ```tsx\n * const getAccessibleName = React.useCallback(() => 'Toggle button', []);\n *\n * const { handlePressedChange } = useToggleState({\n * pressed,\n * onPressedChange,\n * getAccessibleName,\n * componentName: 'Toggle',\n * });\n * ```\n */\nexport function useToggleState({ pressed, onPressedChange, getAccessibleName, componentName }: UseToggleStateOptions) {\n const announce = useLiveAnnouncer();\n\n // Track if we've already warned about controlled without handler\n const warnedRef = React.useRef(false);\n\n /**\n * Memoized handler for state changes with accessibility announcements.\n * Announces the new state immediately for screen readers.\n */\n const handlePressedChange = React.useCallback(\n (newPressed: boolean) => {\n const accessibleName = getAccessibleName();\n // Announce the state change for screen readers\n announce(`${accessibleName} ${newPressed ? 'pressed' : 'unpressed'}`);\n // Call the user's change handler\n onPressedChange?.(newPressed);\n },\n [announce, onPressedChange, getAccessibleName],\n );\n\n // Development-only warning for controlled/uncontrolled pattern\n // Only warns once to avoid console spam\n React.useEffect(() => {\n if (process.env.NODE_ENV === 'development' && pressed !== undefined && onPressedChange === undefined && !warnedRef.current) {\n warnedRef.current = true;\n console.warn(\n `${componentName}: You provided a \\`pressed\\` prop without an \\`onPressedChange\\` handler. ` +\n 'This will result in a read-only toggle button. If you want the button to be interactive, ' +\n 'you should provide an `onPressedChange` handler.',\n );\n }\n }, [pressed, onPressedChange, componentName]);\n\n return { handlePressedChange };\n}\n", "import * as React from 'react';\n\n/**\n * Reference counter to track how many components are using the live region.\n * Only remove the live region when no components are using it.\n */\nlet liveRegionRefCount = 0;\n\n/**\n * Hook for making live announcements to screen readers\n * Creates a hidden aria-live region for announcing dynamic content changes\n */\nexport function useLiveAnnouncer() {\n // Track the timeout so we can clean it up on unmount\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n // Create aria-live region if it doesn't exist\n React.useEffect(() => {\n let liveRegion = document.getElementById('kui-live-announcer');\n\n if (!liveRegion) {\n liveRegion = document.createElement('div');\n liveRegion.id = 'kui-live-announcer';\n liveRegion.setAttribute('aria-live', 'polite');\n liveRegion.setAttribute('aria-atomic', 'true');\n liveRegion.style.cssText = `\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n `;\n document.body.appendChild(liveRegion);\n }\n\n // Increment ref count when component mounts\n liveRegionRefCount++;\n\n return () => {\n // Decrement ref count when component unmounts\n liveRegionRefCount--;\n\n // Clean up timeout on unmount\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Only remove the live region if no components are using it\n if (liveRegionRefCount === 0) {\n const region = document.getElementById('kui-live-announcer');\n if (region) {\n region.remove();\n }\n }\n };\n }, []);\n\n const announce = React.useCallback((message: string) => {\n const liveRegion = document.getElementById('kui-live-announcer');\n if (liveRegion) {\n // Clear any pending timeout\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n // Clear previous announcements\n liveRegion.textContent = '';\n\n // Add new announcement with a small delay to ensure it's announced\n timeoutRef.current = setTimeout(() => {\n liveRegion.textContent = message;\n }, 100);\n }\n }, []);\n\n return announce;\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBCAvB,IAAAC,EAAuB,oBAMnBC,EAAqB,EAMlB,SAASC,GAAmB,CAEjC,IAAMC,EAAmB,SAAkD,MAAS,EAGpF,OAAM,YAAU,IAAM,CACpB,IAAIC,EAAa,SAAS,eAAe,oBAAoB,EAE7D,OAAKA,IACHA,EAAa,SAAS,cAAc,KAAK,EACzCA,EAAW,GAAK,qBAChBA,EAAW,aAAa,YAAa,QAAQ,EAC7CA,EAAW,aAAa,cAAe,MAAM,EAC7CA,EAAW,MAAM,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAS3B,SAAS,KAAK,YAAYA,CAAU,GAItCH,IAEO,IAAM,CAUX,GARAA,IAGIE,EAAW,SACb,aAAaA,EAAW,OAAO,EAI7BF,IAAuB,EAAG,CAC5B,IAAMI,EAAS,SAAS,eAAe,oBAAoB,EACvDA,GACFA,EAAO,OAAO,CAElB,CACF,CACF,EAAG,CAAC,CAAC,EAEkB,cAAaC,GAAoB,CACtD,IAAMF,EAAa,SAAS,eAAe,oBAAoB,EAC3DA,IAEED,EAAW,SACb,aAAaA,EAAW,OAAO,EAIjCC,EAAW,YAAc,GAGzBD,EAAW,QAAU,WAAW,IAAM,CACpCC,EAAW,YAAcE,CAC3B,EAAG,GAAG,EAEV,EAAG,CAAC,CAAC,CAGP,CD1CO,SAASC,EAAe,CAAE,QAAAC,EAAS,gBAAAC,EAAiB,kBAAAC,EAAmB,cAAAC,CAAc,EAA0B,CACpH,IAAMC,EAAWC,EAAiB,EAG5BC,EAAkB,SAAO,EAAK,EAM9BC,EAA4B,cAC/BC,GAAwB,CACvB,IAAMC,EAAiBP,EAAkB,EAEzCE,EAAS,GAAGK,CAAc,IAAID,EAAa,UAAY,WAAW,EAAE,EAEpEP,IAAkBO,CAAU,CAC9B,EACA,CAACJ,EAAUH,EAAiBC,CAAiB,CAC/C,EAIA,OAAM,YAAU,IAAM,CAStB,EAAG,CAACF,EAASC,EAAiBE,CAAa,CAAC,EAErC,CAAE,oBAAAI,CAAoB,CAC/B",
|
|
5
|
+
"mappings": ";0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAuB,oBCAvB,IAAAC,EAAuB,oBAMnBC,EAAqB,EAMlB,SAASC,GAAmB,CAEjC,IAAMC,EAAmB,SAAkD,MAAS,EAGpF,OAAM,YAAU,IAAM,CACpB,IAAIC,EAAa,SAAS,eAAe,oBAAoB,EAE7D,OAAKA,IACHA,EAAa,SAAS,cAAc,KAAK,EACzCA,EAAW,GAAK,qBAChBA,EAAW,aAAa,YAAa,QAAQ,EAC7CA,EAAW,aAAa,cAAe,MAAM,EAC7CA,EAAW,MAAM,QAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAS3B,SAAS,KAAK,YAAYA,CAAU,GAItCH,IAEO,IAAM,CAUX,GARAA,IAGIE,EAAW,SACb,aAAaA,EAAW,OAAO,EAI7BF,IAAuB,EAAG,CAC5B,IAAMI,EAAS,SAAS,eAAe,oBAAoB,EACvDA,GACFA,EAAO,OAAO,CAElB,CACF,CACF,EAAG,CAAC,CAAC,EAEkB,cAAaC,GAAoB,CACtD,IAAMF,EAAa,SAAS,eAAe,oBAAoB,EAC3DA,IAEED,EAAW,SACb,aAAaA,EAAW,OAAO,EAIjCC,EAAW,YAAc,GAGzBD,EAAW,QAAU,WAAW,IAAM,CACpCC,EAAW,YAAcE,CAC3B,EAAG,GAAG,EAEV,EAAG,CAAC,CAAC,CAGP,CD1CO,SAASC,EAAe,CAAE,QAAAC,EAAS,gBAAAC,EAAiB,kBAAAC,EAAmB,cAAAC,CAAc,EAA0B,CACpH,IAAMC,EAAWC,EAAiB,EAG5BC,EAAkB,SAAO,EAAK,EAM9BC,EAA4B,cAC/BC,GAAwB,CACvB,IAAMC,EAAiBP,EAAkB,EAEzCE,EAAS,GAAGK,CAAc,IAAID,EAAa,UAAY,WAAW,EAAE,EAEpEP,IAAkBO,CAAU,CAC9B,EACA,CAACJ,EAAUH,EAAiBC,CAAiB,CAC/C,EAIA,OAAM,YAAU,IAAM,CAStB,EAAG,CAACF,EAASC,EAAiBE,CAAa,CAAC,EAErC,CAAE,oBAAAI,CAAoB,CAC/B",
|
|
6
6
|
"names": ["use_toggle_state_exports", "__export", "useToggleState", "__toCommonJS", "React", "React", "liveRegionRefCount", "useLiveAnnouncer", "timeoutRef", "liveRegion", "region", "message", "useToggleState", "pressed", "onPressedChange", "getAccessibleName", "componentName", "announce", "useLiveAnnouncer", "warnedRef", "handlePressedChange", "newPressed", "accessibleName"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
"use strict";var p=Object.create;var s=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty;var R=(o,e)=>{for(var t in e)s(o,t,{get:e[t],enumerable:!0})},r=(o,e,t,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of d(e))!u.call(o,a)&&a!==t&&s(o,a,{get:()=>e[a],enumerable:!(c=n(e,a))||c.enumerable});return o};var b=(o,e,t)=>(t=o!=null?p(l(o)):{},r(e||!o||!o.__esModule?s(t,"default",{value:o,enumerable:!0}):t,o)),m=o=>r(s({},"__esModule",{value:!0}),o);var y={};R(y,{useTooltipWrapper:()=>f});module.exports=m(y);var i=b(require("react"));function f(o){let e=i.useId(),t=!!o,c=i.useMemo(()=>t?{"aria-describedby":e}:{},[t,e]);return{tooltipId:e,hasTooltip:t,accessibilityProps:c}}
|
|
2
3
|
//# sourceMappingURL=use-tooltip-wrapper.js.map
|