@vitinnczk/onyx-ui 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +330 -2
- package/dist/components/Accordion/Accordion.d.ts +42 -0
- package/dist/components/Accordion/Accordion.js +105 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/Accordion.module.js +14 -0
- package/dist/components/Accordion/Accordion.module.js.map +1 -0
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/Alert/Alert.d.ts +26 -0
- package/dist/components/Alert/Alert.js +58 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/Alert/Alert.module.js +19 -0
- package/dist/components/Alert/Alert.module.js.map +1 -0
- package/dist/components/Alert/index.d.ts +2 -0
- package/dist/components/Avatar/Avatar.d.ts +16 -0
- package/dist/components/Avatar/Avatar.js +33 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.js +15 -0
- package/dist/components/Avatar/Avatar.module.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Badge/Badge.d.ts +15 -0
- package/dist/components/Badge/Badge.js +17 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/Badge.module.js +18 -0
- package/dist/components/Badge/Badge.module.js.map +1 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Breadcrumb/Breadcrumb.d.ts +26 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +44 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.js +11 -0
- package/dist/components/Breadcrumb/Breadcrumb.module.js.map +1 -0
- package/dist/components/Breadcrumb/index.d.ts +2 -0
- package/dist/components/Button/Button.d.ts +29 -0
- package/dist/components/Button/Button.js +40 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/Button.module.js +18 -0
- package/dist/components/Button/Button.module.js.map +1 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Card/Card.d.ts +24 -0
- package/dist/components/Card/Card.js +34 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/Card.module.js +17 -0
- package/dist/components/Card/Card.module.js.map +1 -0
- package/dist/components/Card/index.d.ts +2 -0
- package/dist/components/Checkbox/Checkbox.d.ts +21 -0
- package/dist/components/Checkbox/Checkbox.js +52 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.js +9 -0
- package/dist/components/Checkbox/Checkbox.module.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Divider/Divider.d.ts +18 -0
- package/dist/components/Divider/Divider.js +24 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Divider/Divider.module.js +12 -0
- package/dist/components/Divider/Divider.module.js.map +1 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Drawer/Drawer.d.ts +18 -0
- package/dist/components/Drawer/Drawer.js +27 -0
- package/dist/components/Drawer/Drawer.js.map +1 -0
- package/dist/components/Drawer/Drawer.module.js +17 -0
- package/dist/components/Drawer/Drawer.module.js.map +1 -0
- package/dist/components/Drawer/index.d.ts +2 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +65 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +159 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.module.js +16 -0
- package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -0
- package/dist/components/DropdownMenu/index.d.ts +2 -0
- package/dist/components/EmptyState/EmptyState.d.ts +20 -0
- package/dist/components/EmptyState/EmptyState.js +36 -0
- package/dist/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/EmptyState/EmptyState.module.js +12 -0
- package/dist/components/EmptyState/EmptyState.module.js.map +1 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/FormField/FormField.d.ts +24 -0
- package/dist/components/FormField/FormField.js +49 -0
- package/dist/components/FormField/FormField.js.map +1 -0
- package/dist/components/FormField/FormField.module.js +10 -0
- package/dist/components/FormField/FormField.module.js.map +1 -0
- package/dist/components/FormField/formFieldContext.d.ts +24 -0
- package/dist/components/FormField/formFieldContext.js +18 -0
- package/dist/components/FormField/formFieldContext.js.map +1 -0
- package/dist/components/FormField/index.d.ts +2 -0
- package/dist/components/Heading/Heading.d.ts +14 -0
- package/dist/components/Heading/Heading.js +32 -0
- package/dist/components/Heading/Heading.js.map +1 -0
- package/dist/components/Heading/Heading.module.js +14 -0
- package/dist/components/Heading/Heading.module.js.map +1 -0
- package/dist/components/Heading/index.d.ts +2 -0
- package/dist/components/Icon/Icon.d.ts +16 -0
- package/dist/components/Icon/Icon.js +28 -0
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Icon/Icon.module.js +13 -0
- package/dist/components/Icon/Icon.module.js.map +1 -0
- package/dist/components/Icon/icons.d.ts +17 -0
- package/dist/components/Icon/icons.js +47 -0
- package/dist/components/Icon/icons.js.map +1 -0
- package/dist/components/Icon/index.d.ts +3 -0
- package/dist/components/IconButton/IconButton.d.ts +12 -0
- package/dist/components/IconButton/IconButton.js +25 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/IconButton/IconButton.module.js +11 -0
- package/dist/components/IconButton/IconButton.module.js.map +1 -0
- package/dist/components/IconButton/index.d.ts +2 -0
- package/dist/components/Input/Input.d.ts +18 -0
- package/dist/components/Input/Input.js +47 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/Input.module.js +5 -0
- package/dist/components/Input/Input.module.js.map +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Label/Label.d.ts +15 -0
- package/dist/components/Label/Label.js +22 -0
- package/dist/components/Label/Label.js.map +1 -0
- package/dist/components/Label/Label.module.js +10 -0
- package/dist/components/Label/Label.module.js.map +1 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Link/Link.d.ts +23 -0
- package/dist/components/Link/Link.js +27 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/Link.module.js +11 -0
- package/dist/components/Link/Link.module.js.map +1 -0
- package/dist/components/Link/index.d.ts +2 -0
- package/dist/components/Modal/DialogSurface.d.ts +39 -0
- package/dist/components/Modal/DialogSurface.js +69 -0
- package/dist/components/Modal/DialogSurface.js.map +1 -0
- package/dist/components/Modal/DialogSurface.module.js +16 -0
- package/dist/components/Modal/DialogSurface.module.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts +34 -0
- package/dist/components/Modal/Modal.js +44 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/Modal.module.js +13 -0
- package/dist/components/Modal/Modal.module.js.map +1 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/Pagination/Pagination.d.ts +46 -0
- package/dist/components/Pagination/Pagination.js +71 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.module.js +13 -0
- package/dist/components/Pagination/Pagination.module.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Popover/Popover.d.ts +46 -0
- package/dist/components/Popover/Popover.js +89 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/Popover.module.js +12 -0
- package/dist/components/Popover/Popover.module.js.map +1 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Portal/Portal.d.ts +10 -0
- package/dist/components/Portal/Portal.js +13 -0
- package/dist/components/Portal/Portal.js.map +1 -0
- package/dist/components/Portal/index.d.ts +2 -0
- package/dist/components/Progress/Progress.d.ts +28 -0
- package/dist/components/Progress/Progress.js +42 -0
- package/dist/components/Progress/Progress.js.map +1 -0
- package/dist/components/Progress/Progress.module.js +18 -0
- package/dist/components/Progress/Progress.module.js.map +1 -0
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +41 -0
- package/dist/components/RadioGroup/RadioGroup.js +112 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.module.js +16 -0
- package/dist/components/RadioGroup/RadioGroup.module.js.map +1 -0
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/Select/Select.d.ts +19 -0
- package/dist/components/Select/Select.js +44 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/Select.module.js +10 -0
- package/dist/components/Select/Select.module.js.map +1 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Skeleton/Skeleton.d.ts +22 -0
- package/dist/components/Skeleton/Skeleton.js +33 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.module.js +12 -0
- package/dist/components/Skeleton/Skeleton.module.js.map +1 -0
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/Slider/Slider.d.ts +38 -0
- package/dist/components/Slider/Slider.js +55 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/Slider.module.js +11 -0
- package/dist/components/Slider/Slider.module.js.map +1 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Spinner/Spinner.d.ts +22 -0
- package/dist/components/Spinner/Spinner.js +34 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/Spinner.module.js +17 -0
- package/dist/components/Spinner/Spinner.module.js.map +1 -0
- package/dist/components/Spinner/index.d.ts +2 -0
- package/dist/components/Switch/Switch.d.ts +17 -0
- package/dist/components/Switch/Switch.js +48 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/Switch.module.js +9 -0
- package/dist/components/Switch/Switch.module.js.map +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Table/Table.d.ts +84 -0
- package/dist/components/Table/Table.js +105 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Table/Table.module.js +23 -0
- package/dist/components/Table/Table.module.js.map +1 -0
- package/dist/components/Table/index.d.ts +2 -0
- package/dist/components/Tabs/Tabs.d.ts +41 -0
- package/dist/components/Tabs/Tabs.js +86 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/Tabs.module.js +14 -0
- package/dist/components/Tabs/Tabs.module.js.map +1 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Text/Text.d.ts +22 -0
- package/dist/components/Text/Text.js +37 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Text/Text.module.js +30 -0
- package/dist/components/Text/Text.module.js.map +1 -0
- package/dist/components/Text/index.d.ts +2 -0
- package/dist/components/Textarea/Textarea.d.ts +17 -0
- package/dist/components/Textarea/Textarea.js +36 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/Textarea.module.js +11 -0
- package/dist/components/Textarea/Textarea.module.js.map +1 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +39 -0
- package/dist/components/ThemeProvider/ThemeProvider.js +36 -0
- package/dist/components/ThemeProvider/ThemeProvider.js.map +1 -0
- package/dist/components/ThemeProvider/index.d.ts +2 -0
- package/dist/components/ThemeProvider/themeStore.d.ts +8 -0
- package/dist/components/ThemeProvider/themeStore.js +36 -0
- package/dist/components/ThemeProvider/themeStore.js.map +1 -0
- package/dist/components/Toast/Toast.d.ts +66 -0
- package/dist/components/Toast/Toast.js +166 -0
- package/dist/components/Toast/Toast.js.map +1 -0
- package/dist/components/Toast/Toast.module.js +27 -0
- package/dist/components/Toast/Toast.module.js.map +1 -0
- package/dist/components/Toast/index.d.ts +2 -0
- package/dist/components/Tooltip/Tooltip.d.ts +40 -0
- package/dist/components/Tooltip/Tooltip.js +63 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.module.js +8 -0
- package/dist/components/Tooltip/Tooltip.module.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +4 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js +16 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js +5 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -0
- package/dist/components/VisuallyHidden/index.d.ts +2 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/useClickOutside.d.ts +10 -0
- package/dist/hooks/useClickOutside.js +21 -0
- package/dist/hooks/useClickOutside.js.map +1 -0
- package/dist/hooks/useControllableState.d.ts +10 -0
- package/dist/hooks/useControllableState.js +16 -0
- package/dist/hooks/useControllableState.js.map +1 -0
- package/dist/hooks/useEscapeKey.d.ts +9 -0
- package/dist/hooks/useEscapeKey.js +21 -0
- package/dist/hooks/useEscapeKey.js.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +19 -0
- package/dist/hooks/useFocusTrap.js +42 -0
- package/dist/hooks/useFocusTrap.js.map +1 -0
- package/dist/hooks/useLatestRef.d.ts +1 -0
- package/dist/hooks/useLatestRef.js +12 -0
- package/dist/hooks/useLatestRef.js.map +1 -0
- package/dist/hooks/useScrollLock.d.ts +10 -0
- package/dist/hooks/useScrollLock.js +19 -0
- package/dist/hooks/useScrollLock.js.map +1 -0
- package/dist/hooks/useTimeout.d.ts +5 -0
- package/dist/hooks/useTimeout.js +16 -0
- package/dist/hooks/useTimeout.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.js +59 -0
- package/dist/styles/choice.module.js +15 -0
- package/dist/styles/choice.module.js.map +1 -0
- package/dist/styles/field.module.js +11 -0
- package/dist/styles/field.module.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/tokens/breakpoints.d.ts +12 -0
- package/dist/tokens/breakpoints.js +11 -0
- package/dist/tokens/breakpoints.js.map +1 -0
- package/dist/tokens/colors.d.ts +82 -0
- package/dist/tokens/colors.js +92 -0
- package/dist/tokens/colors.js.map +1 -0
- package/dist/tokens/focus.d.ts +4 -0
- package/dist/tokens/focus.js +8 -0
- package/dist/tokens/focus.js.map +1 -0
- package/dist/tokens/index.d.ts +22 -0
- package/dist/tokens/index.js +37 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/motion.d.ts +21 -0
- package/dist/tokens/motion.js +16 -0
- package/dist/tokens/motion.js.map +1 -0
- package/dist/tokens/radius.d.ts +9 -0
- package/dist/tokens/radius.js +13 -0
- package/dist/tokens/radius.js.map +1 -0
- package/dist/tokens/shadows.d.ts +12 -0
- package/dist/tokens/shadows.js +12 -0
- package/dist/tokens/shadows.js.map +1 -0
- package/dist/tokens/sizes.d.ts +22 -0
- package/dist/tokens/sizes.js +23 -0
- package/dist/tokens/sizes.js.map +1 -0
- package/dist/tokens/spacing.d.ts +19 -0
- package/dist/tokens/spacing.js +19 -0
- package/dist/tokens/spacing.js.map +1 -0
- package/dist/tokens/themes.d.ts +256 -0
- package/dist/tokens/themes.js +120 -0
- package/dist/tokens/themes.js.map +1 -0
- package/dist/tokens/typography.d.ts +37 -0
- package/dist/tokens/typography.js +35 -0
- package/dist/tokens/typography.js.map +1 -0
- package/dist/tokens/z-index.d.ts +8 -0
- package/dist/tokens/z-index.js +11 -0
- package/dist/tokens/z-index.js.map +1 -0
- package/dist/utils/cn.d.ts +8 -0
- package/dist/utils/cn.js +14 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/floating.d.ts +20 -0
- package/dist/utils/floating.js +31 -0
- package/dist/utils/floating.js.map +1 -0
- package/dist/utils/getElementRef.d.ts +3 -0
- package/dist/utils/getElementRef.js +8 -0
- package/dist/utils/getElementRef.js.map +1 -0
- package/dist/utils/mergeRefs.d.ts +2 -0
- package/dist/utils/mergeRefs.js +9 -0
- package/dist/utils/mergeRefs.js.map +1 -0
- package/dist/utils/polymorphic.d.ts +13 -0
- package/dist/utils/refocusIfLost.d.ts +6 -0
- package/dist/utils/refocusIfLost.js +10 -0
- package/dist/utils/refocusIfLost.js.map +1 -0
- package/package.json +106 -4
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export interface UseFocusTrapOptions {
|
|
3
|
+
/** @default true */
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
/** Element focused on activation. Defaults to the first tabbable element, then the container. */
|
|
6
|
+
initialFocus?: RefObject<HTMLElement | null>;
|
|
7
|
+
/**
|
|
8
|
+
* Moves focus back to the element that had it before the trap activated.
|
|
9
|
+
* @default true
|
|
10
|
+
*/
|
|
11
|
+
returnFocus?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function getTabbable(container: HTMLElement): HTMLElement[];
|
|
14
|
+
/**
|
|
15
|
+
* Keeps keyboard focus inside the element in `ref` while enabled. Give the container
|
|
16
|
+
* `tabIndex={-1}` so it can hold focus when it has nothing tabbable. Nested traps pause the
|
|
17
|
+
* outer one until they are disabled.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useFocusTrap(ref: RefObject<HTMLElement | null>, { enabled, initialFocus, returnFocus }?: UseFocusTrapOptions): void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useLatestRef as e } from "./useLatestRef.js";
|
|
2
|
+
import { refocusIfLost as t } from "../utils/refocusIfLost.js";
|
|
3
|
+
import { useEffect as n } from "react";
|
|
4
|
+
// src/hooks/useFocusTrap.ts
|
|
5
|
+
var r = "a[href],area[href],button,input:not([type=\"hidden\"]),select,textarea,iframe,audio[controls],video[controls],summary,[contenteditable]:not([contenteditable=\"false\"]),[tabindex]";
|
|
6
|
+
function i(e) {
|
|
7
|
+
return [...e.querySelectorAll(r)].filter((e) => e.tabIndex >= 0 && !e.matches(":disabled") && !e.closest("[inert]") && (e.checkVisibility?.({ visibilityProperty: !0 }) ?? !0));
|
|
8
|
+
}
|
|
9
|
+
var a = [];
|
|
10
|
+
function o(r, { enabled: o = !0, initialFocus: s, returnFocus: c = !0 } = {}) {
|
|
11
|
+
let l = e({
|
|
12
|
+
initialFocus: s,
|
|
13
|
+
returnFocus: c
|
|
14
|
+
});
|
|
15
|
+
n(() => {
|
|
16
|
+
let e = r.current;
|
|
17
|
+
if (!o || !e) return;
|
|
18
|
+
let n = {};
|
|
19
|
+
a.push(n);
|
|
20
|
+
let s = document.activeElement, c = null, u = () => (l.current.initialFocus?.current ?? i(e)[0] ?? e).focus(), d = () => {
|
|
21
|
+
l.current.returnFocus && s instanceof HTMLElement && (s.isConnected && s.focus(), t(s));
|
|
22
|
+
};
|
|
23
|
+
e.contains(document.activeElement) || u();
|
|
24
|
+
let f = (t) => {
|
|
25
|
+
a.at(-1) === n && (e.contains(t.target) ? c = t.target : c && e.contains(c) ? c.focus() : u());
|
|
26
|
+
}, p = (t) => {
|
|
27
|
+
if (t.key !== "Tab" || a.at(-1) !== n) return;
|
|
28
|
+
let r = i(e), o = r[0], s = r.at(-1), c = document.activeElement;
|
|
29
|
+
!o || !s ? t.preventDefault() : t.shiftKey && (c === o || c === e) ? (t.preventDefault(), s.focus()) : !t.shiftKey && c === s && (t.preventDefault(), o.focus());
|
|
30
|
+
};
|
|
31
|
+
return document.addEventListener("focusin", f), document.addEventListener("keydown", p), () => {
|
|
32
|
+
document.removeEventListener("focusin", f), document.removeEventListener("keydown", p), a.splice(a.indexOf(n), 1), d();
|
|
33
|
+
};
|
|
34
|
+
}, [
|
|
35
|
+
o,
|
|
36
|
+
r,
|
|
37
|
+
l
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
export { i as getTabbable, o as useFocusTrap };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=useFocusTrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFocusTrap.js","names":["tabbableSelector","getTabbable","container","element","traps","useFocusTrap","options","useLatestRef","ref","enabled","trap","previouslyFocused","lastFocused","focusFirst","restoreFocus","refocusIfLost","onFocusIn","event","onKeyDown","tabbable","first","last","active"],"sources":["../../src/hooks/useFocusTrap.ts"],"sourcesContent":["import { useEffect, type RefObject } from 'react';\nimport { refocusIfLost } from '@/utils/refocusIfLost';\nimport { useLatestRef } from './useLatestRef';\n\nexport interface UseFocusTrapOptions {\n /** @default true */\n enabled?: boolean;\n /** Element focused on activation. Defaults to the first tabbable element, then the container. */\n initialFocus?: RefObject<HTMLElement | null>;\n /**\n * Moves focus back to the element that had it before the trap activated.\n * @default true\n */\n returnFocus?: boolean;\n}\n\nconst tabbableSelector = [\n 'a[href]',\n 'area[href]',\n 'button',\n 'input:not([type=\"hidden\"])',\n 'select',\n 'textarea',\n 'iframe',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n '[contenteditable]:not([contenteditable=\"false\"])',\n '[tabindex]',\n].join(',');\n\nexport function getTabbable(container: HTMLElement): HTMLElement[] {\n return [...container.querySelectorAll<HTMLElement>(tabbableSelector)].filter(\n (element) =>\n element.tabIndex >= 0 &&\n !element.matches(':disabled') &&\n !element.closest('[inert]') &&\n (element.checkVisibility?.({ visibilityProperty: true }) ?? true),\n );\n}\n\nconst traps: object[] = [];\n\n/**\n * Keeps keyboard focus inside the element in `ref` while enabled. Give the container\n * `tabIndex={-1}` so it can hold focus when it has nothing tabbable. Nested traps pause the\n * outer one until they are disabled.\n */\nexport function useFocusTrap(\n ref: RefObject<HTMLElement | null>,\n { enabled = true, initialFocus, returnFocus = true }: UseFocusTrapOptions = {},\n): void {\n const options = useLatestRef({ initialFocus, returnFocus });\n\n useEffect(() => {\n const container = ref.current;\n if (!enabled || !container) return;\n\n const trap = {};\n traps.push(trap);\n const previouslyFocused = document.activeElement;\n let lastFocused: HTMLElement | null = null;\n\n const focusFirst = () =>\n (options.current.initialFocus?.current ?? getTabbable(container)[0] ?? container).focus();\n\n const restoreFocus = () => {\n if (!options.current.returnFocus || !(previouslyFocused instanceof HTMLElement)) return;\n if (previouslyFocused.isConnected) previouslyFocused.focus();\n refocusIfLost(previouslyFocused);\n };\n\n if (!container.contains(document.activeElement)) focusFirst();\n\n const onFocusIn = (event: FocusEvent) => {\n if (traps.at(-1) !== trap) return;\n\n if (container.contains(event.target as Node)) {\n lastFocused = event.target as HTMLElement;\n } else if (lastFocused && container.contains(lastFocused)) {\n lastFocused.focus();\n } else {\n focusFirst();\n }\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Tab' || traps.at(-1) !== trap) return;\n\n const tabbable = getTabbable(container);\n const first = tabbable[0];\n const last = tabbable.at(-1);\n const active = document.activeElement;\n\n if (!first || !last) {\n event.preventDefault();\n } else if (event.shiftKey && (active === first || active === container)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener('focusin', onFocusIn);\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('focusin', onFocusIn);\n document.removeEventListener('keydown', onKeyDown);\n traps.splice(traps.indexOf(trap), 1);\n restoreFocus();\n };\n }, [enabled, ref, options]);\n}\n"],"mappings":";;;;AAgBA,IAAMA,IAAmB;AAezB,SAAgBC,EAAY,GAAuC;CACjE,OAAO,CAAC,GAAGC,EAAU,iBAA8BF,CAAgB,CAAC,CAAC,CAAC,QACnE,MACCG,EAAQ,YAAY,KACpB,CAACA,EAAQ,QAAQ,WAAW,KAC5B,CAACA,EAAQ,QAAQ,SAAS,MACzBA,EAAQ,kBAAkB,EAAE,oBAAoB,GAAK,CAAC,KAAK,GAChE;AACF;AAEA,IAAMC,IAAkB,CAAC;AAOzB,SAAgBC,EACd,GACA,EAAE,aAAU,IAAM,iBAAc,iBAAc,OAA8B,CAAC,GACvE;CACN,IAAMC,IAAUC,EAAa;EAAE;EAAc;CAAY,CAAC;CAE1D,QAAgB;EACd,IAAML,IAAYM,EAAI;EACtB,IAAI,CAACC,KAAW,CAACP,GAAW;EAE5B,IAAMQ,IAAO,CAAC;EACd,EAAM,KAAKA,CAAI;EACf,IAAMC,IAAoB,SAAS,eAC/BC,IAAkC,MAEhCC,WACHP,EAAQ,QAAQ,cAAc,WAAWL,EAAYC,CAAS,CAAC,CAAC,MAAMA,EAAA,CAAW,MAAM,GAEpFY,UAAqB;GACzB,AAAKR,EAAQ,QAAQ,eAAiBK,aAA6B,gBAC/DA,EAAkB,eAAaA,EAAkB,MAAM,GAC3DI,EAAcJ,CAAiB;EACjC;EAEA,AAAKT,EAAU,SAAS,SAAS,aAAa,KAAGW,EAAW;EAE5D,IAAMG,KAAa,MAAsB;GACvC,AAAIZ,EAAM,GAAG,EAAE,MAAMM,MAEjBR,EAAU,SAASe,EAAM,MAAc,IACzC,IAAcA,EAAM,SACXL,KAAeV,EAAU,SAASU,CAAW,IACtDA,EAAY,MAAM,IAElBC,EAAW;EAEf,GAEMK,KAAa,MAAyB;GAC1C,IAAID,EAAM,QAAQ,SAASb,EAAM,GAAG,EAAE,MAAMM,GAAM;GAElD,IAAMS,IAAWlB,EAAYC,CAAS,GAChCkB,IAAQD,EAAS,IACjBE,IAAOF,EAAS,GAAG,EAAE,GACrBG,IAAS,SAAS;GAExB,AAAI,CAACF,KAAS,CAACC,IACbJ,EAAM,eAAe,IACZA,EAAM,aAAaK,MAAWF,KAASE,MAAWpB,MAC3De,EAAM,eAAe,GACrBI,EAAK,MAAM,KACF,CAACJ,EAAM,YAAYK,MAAWD,MACvCJ,EAAM,eAAe,GACrBG,EAAM,MAAM;EAEhB;EAIA,OAFA,SAAS,iBAAiB,WAAWJ,CAAS,GAC9C,SAAS,iBAAiB,WAAWE,CAAS,SACjC;GAIX,AAHA,SAAS,oBAAoB,WAAWF,CAAS,GACjD,SAAS,oBAAoB,WAAWE,CAAS,GACjDd,EAAM,OAAOA,EAAM,QAAQM,CAAI,GAAG,CAAC,GACnCI,EAAa;EACf;CACF,GAAG;EAACL;EAASD;EAAKF;CAAO,CAAC;AAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useLatestRef<T>(value: T): import('react').RefObject<T>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useEffect as e, useLayoutEffect as t, useRef as n } from "react";
|
|
2
|
+
// src/hooks/useLatestRef.ts
|
|
3
|
+
var r = typeof window > "u" ? e : t;
|
|
4
|
+
function i(e) {
|
|
5
|
+
let t = n(e);
|
|
6
|
+
return r(() => {
|
|
7
|
+
t.current = e;
|
|
8
|
+
}), t;
|
|
9
|
+
}
|
|
10
|
+
export { i as useLatestRef };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=useLatestRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLatestRef.js","names":["useIsomorphicLayoutEffect","useEffect","useLayoutEffect","useLatestRef","ref","useRef","value"],"sources":["../../src/hooks/useLatestRef.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nexport function useLatestRef<T>(value: T) {\n const ref = useRef(value);\n\n useIsomorphicLayoutEffect(() => {\n ref.current = value;\n });\n\n return ref;\n}\n"],"mappings":";;AAEA,IAAMA,IAA4B,OAAO,SAAW,MAAcC,IAAYC;AAE9E,SAAgBC,EAAgB,GAAU;CACxC,IAAMC,IAAMC,EAAOC,CAAK;CAMxB,OAJAN,QAAgC;EAC9B,EAAI,UAAUM;CAChB,CAAC,GAEMF;AACT"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface UseScrollLockOptions {
|
|
2
|
+
/** @default true */
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Stops the page from scrolling while enabled, keeping the layout from shifting when the
|
|
7
|
+
* scrollbar disappears. Several locks can be active at once; the page scrolls again after the
|
|
8
|
+
* last one is released.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useScrollLock({ enabled }?: UseScrollLockOptions): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useEffect as e } from "react";
|
|
2
|
+
// src/hooks/useScrollLock.ts
|
|
3
|
+
var t = 0, n;
|
|
4
|
+
function r() {
|
|
5
|
+
let { body: e, documentElement: t } = document, n = window.innerWidth - t.clientWidth, { overflow: r, paddingRight: i } = e.style, a = parseFloat(getComputedStyle(e).paddingRight) || 0;
|
|
6
|
+
return e.style.overflow = "hidden", n > 0 && (e.style.paddingRight = `${a + n}px`), () => {
|
|
7
|
+
e.style.overflow = r, e.style.paddingRight = i;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function i({ enabled: i = !0 } = {}) {
|
|
11
|
+
e(() => {
|
|
12
|
+
if (i) return t++ === 0 && (n = r()), () => {
|
|
13
|
+
--t === 0 && n?.();
|
|
14
|
+
};
|
|
15
|
+
}, [i]);
|
|
16
|
+
}
|
|
17
|
+
export { i as useScrollLock };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=useScrollLock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScrollLock.js","names":["locks","restore","lock","scrollbarWidth","documentElement","body","currentPadding","overflow","paddingRight","useScrollLock","enabled"],"sources":["../../src/hooks/useScrollLock.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport interface UseScrollLockOptions {\n /** @default true */\n enabled?: boolean;\n}\n\nlet locks = 0;\nlet restore: (() => void) | undefined;\n\nfunction lock() {\n const { body, documentElement } = document;\n const scrollbarWidth = window.innerWidth - documentElement.clientWidth;\n const { overflow, paddingRight } = body.style;\n const currentPadding = parseFloat(getComputedStyle(body).paddingRight) || 0;\n\n body.style.overflow = 'hidden';\n if (scrollbarWidth > 0) body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;\n\n return () => {\n body.style.overflow = overflow;\n body.style.paddingRight = paddingRight;\n };\n}\n\n/**\n * Stops the page from scrolling while enabled, keeping the layout from shifting when the\n * scrollbar disappears. Several locks can be active at once; the page scrolls again after the\n * last one is released.\n */\nexport function useScrollLock({ enabled = true }: UseScrollLockOptions = {}): void {\n useEffect(() => {\n if (!enabled) return;\n\n if (locks++ === 0) restore = lock();\n return () => {\n if (--locks === 0) restore?.();\n };\n }, [enabled]);\n}\n"],"mappings":";;AAOA,IAAIA,IAAQ,GACRC;AAEJ,SAASC,IAAO;CACd,IAAM,EAAE,SAAM,uBAAoB,UAC5BC,IAAiB,OAAO,aAAaC,EAAgB,aACrD,EAAE,aAAU,oBAAiBC,EAAK,OAClCC,IAAiB,WAAW,iBAAiBD,CAAI,CAAC,CAAC,YAAY,KAAK;CAK1E,OAHA,EAAK,MAAM,WAAW,UAClBF,IAAiB,MAAG,EAAK,MAAM,eAAe,GAAGG,IAAiBH,EAAe,YAExE;EAEX,AADA,EAAK,MAAM,WAAWI,GACtB,EAAK,MAAM,eAAeC;CAC5B;AACF;AAOA,SAAgBC,EAAc,EAAE,aAAU,OAA+B,CAAC,GAAS;CACjF,QAAgB;EACd,IAAKC,GAGL,OADI,QAAY,MAAG,IAAUR,EAAK,UACrB;GACX,AAAI,EAAEF,MAAU,KAAGC,IAAU;EAC/B;CACF,GAAG,CAACS,CAAO,CAAC;AACd"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useEffect as e, useMemo as t, useRef as n } from "react";
|
|
2
|
+
// src/hooks/useTimeout.ts
|
|
3
|
+
function r() {
|
|
4
|
+
let r = n(void 0);
|
|
5
|
+
return e(() => () => clearTimeout(r.current), []), t(() => ({
|
|
6
|
+
set(e, t) {
|
|
7
|
+
clearTimeout(r.current), r.current = setTimeout(e, t);
|
|
8
|
+
},
|
|
9
|
+
clear() {
|
|
10
|
+
clearTimeout(r.current);
|
|
11
|
+
}
|
|
12
|
+
}), []);
|
|
13
|
+
}
|
|
14
|
+
export { r as useTimeout };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=useTimeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTimeout.js","names":["useTimeout","timer","useRef","useEffect","useMemo","callback","delay"],"sources":["../../src/hooks/useTimeout.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\n\n/** One pending timeout at a time, cleared on unmount. */\nexport function useTimeout() {\n const timer = useRef<ReturnType<typeof setTimeout>>(undefined);\n\n useEffect(() => () => clearTimeout(timer.current), []);\n\n return useMemo(\n () => ({\n set(callback: () => void, delay: number) {\n clearTimeout(timer.current);\n timer.current = setTimeout(callback, delay);\n },\n clear() {\n clearTimeout(timer.current);\n },\n }),\n [],\n );\n}\n"],"mappings":";;AAGA,SAAgBA,IAAa;CAC3B,IAAMC,IAAQC,EAAsC,KAAA,CAAS;CAI7D,OAFAC,cAAsB,aAAaF,EAAM,OAAO,GAAG,CAAC,CAAC,GAE9CG,SACE;EACL,IAAI,GAAsB,GAAe;GAEvC,AADA,aAAaH,EAAM,OAAO,GAC1B,EAAM,UAAU,WAAWI,GAAUC,CAAK;EAC5C;EACA,QAAQ;GACN,aAAaL,EAAM,OAAO;EAC5B;CACF,IACA,CAAC,CACH;AACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from './components/Accordion/index.js';
|
|
2
|
+
export type { AccordionContentProps, AccordionItemProps, AccordionProps, AccordionTriggerProps, } from './components/Accordion/index.js';
|
|
3
|
+
export { Alert } from './components/Alert/index.js';
|
|
4
|
+
export type { AlertIntent, AlertProps } from './components/Alert/index.js';
|
|
5
|
+
export { Avatar } from './components/Avatar/index.js';
|
|
6
|
+
export type { AvatarProps, AvatarSize } from './components/Avatar/index.js';
|
|
7
|
+
export { Badge } from './components/Badge/index.js';
|
|
8
|
+
export type { BadgeIntent, BadgeProps, BadgeVariant } from './components/Badge/index.js';
|
|
9
|
+
export { Breadcrumb, BreadcrumbItem, BreadcrumbLink } from './components/Breadcrumb/index.js';
|
|
10
|
+
export type { BreadcrumbItemProps, BreadcrumbLinkOwnProps, BreadcrumbLinkProps, BreadcrumbProps, } from './components/Breadcrumb/index.js';
|
|
11
|
+
export { Button } from './components/Button/index.js';
|
|
12
|
+
export type { ButtonProps, ButtonSize, ButtonVariant } from './components/Button/index.js';
|
|
13
|
+
export { Card, CardBody, CardFooter, CardHeader } from './components/Card/index.js';
|
|
14
|
+
export type { CardOwnProps, CardProps, CardSectionProps } from './components/Card/index.js';
|
|
15
|
+
export { Checkbox } from './components/Checkbox/index.js';
|
|
16
|
+
export type { CheckboxProps, ChoiceSize } from './components/Checkbox/index.js';
|
|
17
|
+
export { Divider } from './components/Divider/index.js';
|
|
18
|
+
export type { DividerProps } from './components/Divider/index.js';
|
|
19
|
+
export { Drawer } from './components/Drawer/index.js';
|
|
20
|
+
export type { DrawerPlacement, DrawerProps, DrawerSize } from './components/Drawer/index.js';
|
|
21
|
+
export { DropdownMenu, DropdownMenuGroup, DropdownMenuItem, DropdownMenuSeparator, } from './components/DropdownMenu/index.js';
|
|
22
|
+
export type { DropdownMenuGroupProps, DropdownMenuItemProps, DropdownMenuPlacement, DropdownMenuProps, } from './components/DropdownMenu/index.js';
|
|
23
|
+
export { EmptyState } from './components/EmptyState/index.js';
|
|
24
|
+
export type { EmptyStateProps } from './components/EmptyState/index.js';
|
|
25
|
+
export { FormField } from './components/FormField/index.js';
|
|
26
|
+
export type { FormFieldProps } from './components/FormField/index.js';
|
|
27
|
+
export { Heading } from './components/Heading/index.js';
|
|
28
|
+
export type { HeadingLevel, HeadingProps, HeadingSize } from './components/Heading/index.js';
|
|
29
|
+
export { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CloseIcon, ErrorIcon, ExternalLinkIcon, Icon, InfoIcon, MinusIcon, MoreHorizontalIcon, SuccessIcon, WarningIcon, } from './components/Icon/index.js';
|
|
30
|
+
export type { IconProps, IconSize } from './components/Icon/index.js';
|
|
31
|
+
export { IconButton } from './components/IconButton/index.js';
|
|
32
|
+
export type { IconButtonProps } from './components/IconButton/index.js';
|
|
33
|
+
export { Input } from './components/Input/index.js';
|
|
34
|
+
export type { FieldSize, InputProps } from './components/Input/index.js';
|
|
35
|
+
export { Label } from './components/Label/index.js';
|
|
36
|
+
export type { LabelProps } from './components/Label/index.js';
|
|
37
|
+
export { Link } from './components/Link/index.js';
|
|
38
|
+
export type { LinkOwnProps, LinkProps, LinkVariant } from './components/Link/index.js';
|
|
39
|
+
export { Modal } from './components/Modal/index.js';
|
|
40
|
+
export type { DialogOptions, DialogStateProps, ModalProps, ModalSize } from './components/Modal/index.js';
|
|
41
|
+
export { getPaginationItems, Pagination } from './components/Pagination/index.js';
|
|
42
|
+
export type { PaginationItem, PaginationProps } from './components/Pagination/index.js';
|
|
43
|
+
export { Popover } from './components/Popover/index.js';
|
|
44
|
+
export type { PopoverPlacement, PopoverProps } from './components/Popover/index.js';
|
|
45
|
+
export { Portal } from './components/Portal/index.js';
|
|
46
|
+
export type { PortalProps } from './components/Portal/index.js';
|
|
47
|
+
export { Progress } from './components/Progress/index.js';
|
|
48
|
+
export type { ProgressIntent, ProgressProps } from './components/Progress/index.js';
|
|
49
|
+
export { Radio, RadioGroup } from './components/RadioGroup/index.js';
|
|
50
|
+
export type { RadioGroupProps, RadioProps } from './components/RadioGroup/index.js';
|
|
51
|
+
export { Select } from './components/Select/index.js';
|
|
52
|
+
export type { SelectProps } from './components/Select/index.js';
|
|
53
|
+
export { Skeleton } from './components/Skeleton/index.js';
|
|
54
|
+
export type { SkeletonProps } from './components/Skeleton/index.js';
|
|
55
|
+
export { Slider } from './components/Slider/index.js';
|
|
56
|
+
export type { SliderProps } from './components/Slider/index.js';
|
|
57
|
+
export { Spinner } from './components/Spinner/index.js';
|
|
58
|
+
export type { SpinnerProps, SpinnerSize } from './components/Spinner/index.js';
|
|
59
|
+
export { Switch } from './components/Switch/index.js';
|
|
60
|
+
export type { SwitchProps } from './components/Switch/index.js';
|
|
61
|
+
export { Table } from './components/Table/index.js';
|
|
62
|
+
export type { SortDirection, TableColumn, TableProps, TableSort } from './components/Table/index.js';
|
|
63
|
+
export { Tab, TabList, TabPanel, Tabs } from './components/Tabs/index.js';
|
|
64
|
+
export type { TabListProps, TabPanelProps, TabProps, TabsProps } from './components/Tabs/index.js';
|
|
65
|
+
export { Text } from './components/Text/index.js';
|
|
66
|
+
export type { TextOwnProps, TextProps, TextSize, TextTone, TextWeight } from './components/Text/index.js';
|
|
67
|
+
export { Textarea } from './components/Textarea/index.js';
|
|
68
|
+
export type { TextareaProps } from './components/Textarea/index.js';
|
|
69
|
+
export { ThemeProvider, useTheme } from './components/ThemeProvider/index.js';
|
|
70
|
+
export { ToastProvider, useToast } from './components/Toast/index.js';
|
|
71
|
+
export type { ToastContextValue, ToastIntent, ToastOptions, ToastPlacement, ToastProviderProps, } from './components/Toast/index.js';
|
|
72
|
+
export { Tooltip } from './components/Tooltip/index.js';
|
|
73
|
+
export type { TooltipPlacement, TooltipProps } from './components/Tooltip/index.js';
|
|
74
|
+
export type { ResolvedTheme, Theme, ThemeContextValue, ThemeProviderProps, } from './components/ThemeProvider/index.js';
|
|
75
|
+
export { VisuallyHidden } from './components/VisuallyHidden/index.js';
|
|
76
|
+
export type { VisuallyHiddenProps } from './components/VisuallyHidden/index.js';
|
|
77
|
+
export { useClickOutside, useControllableState, useEscapeKey, useFocusTrap, useScrollLock, } from './hooks/index.js';
|
|
78
|
+
export type { UseClickOutsideOptions, UseControllableStateProps, UseEscapeKeyOptions, UseFocusTrapOptions, UseScrollLockOptions, } from './hooks/index.js';
|
|
79
|
+
export { baseColors, borderWidth, breakpoints, cssVariables, darkColors, duration, easing, focusRing, fontFamily, fontSize, fontWeight, letterSpacing, lightColors, lineHeight, palette, paletteSteps, radius, reducedMotionDuration, reducedMotionVariables, shadows, sizes, spacing, themes, themeVariables, zIndex, } from './tokens/index.js';
|
|
80
|
+
export type { CssVariable, PaletteColor, PaletteScale, PaletteStep, SemanticColor, ThemeName, ThemeTokens, } from './tokens/index.js';
|
|
81
|
+
export { cn } from './utils/cn.js';
|
|
82
|
+
export type { ClassValue } from './utils/cn.js';
|
|
83
|
+
export type { PolymorphicComponent, PolymorphicProps, PolymorphicPropsWithRef, PolymorphicRef, } from './utils/polymorphic.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import { useControllableState as e } from "./hooks/useControllableState.js";
|
|
3
|
+
import { cn as t } from "./utils/cn.js";
|
|
4
|
+
import { Icon as n } from "./components/Icon/Icon.js";
|
|
5
|
+
import { ArrowDownIcon as r, ArrowUpDownIcon as i, ArrowUpIcon as a, CheckIcon as o, ChevronDownIcon as s, ChevronLeftIcon as c, ChevronRightIcon as l, ChevronUpIcon as u, CloseIcon as d, ErrorIcon as f, ExternalLinkIcon as p, InfoIcon as m, MinusIcon as h, MoreHorizontalIcon as g, SuccessIcon as _, WarningIcon as v } from "./components/Icon/icons.js";
|
|
6
|
+
import { Accordion as y, AccordionContent as b, AccordionItem as x, AccordionTrigger as S } from "./components/Accordion/Accordion.js";
|
|
7
|
+
import { VisuallyHidden as C } from "./components/VisuallyHidden/VisuallyHidden.js";
|
|
8
|
+
import { Spinner as w } from "./components/Spinner/Spinner.js";
|
|
9
|
+
import { Button as T } from "./components/Button/Button.js";
|
|
10
|
+
import { IconButton as E } from "./components/IconButton/IconButton.js";
|
|
11
|
+
import { Alert as D } from "./components/Alert/Alert.js";
|
|
12
|
+
import { Avatar as O } from "./components/Avatar/Avatar.js";
|
|
13
|
+
import { Badge as k } from "./components/Badge/Badge.js";
|
|
14
|
+
import { Breadcrumb as A, BreadcrumbItem as j, BreadcrumbLink as M } from "./components/Breadcrumb/Breadcrumb.js";
|
|
15
|
+
import { Card as N, CardBody as P, CardFooter as F, CardHeader as I } from "./components/Card/Card.js";
|
|
16
|
+
import { Checkbox as L } from "./components/Checkbox/Checkbox.js";
|
|
17
|
+
import { Divider as R } from "./components/Divider/Divider.js";
|
|
18
|
+
import { useClickOutside as z } from "./hooks/useClickOutside.js";
|
|
19
|
+
import { useEscapeKey as B } from "./hooks/useEscapeKey.js";
|
|
20
|
+
import { useFocusTrap as V } from "./hooks/useFocusTrap.js";
|
|
21
|
+
import { useScrollLock as H } from "./hooks/useScrollLock.js";
|
|
22
|
+
import { Portal as U } from "./components/Portal/Portal.js";
|
|
23
|
+
import { Modal as W } from "./components/Modal/Modal.js";
|
|
24
|
+
import { Drawer as G } from "./components/Drawer/Drawer.js";
|
|
25
|
+
import { DropdownMenu as K, DropdownMenuGroup as q, DropdownMenuItem as J, DropdownMenuSeparator as Y } from "./components/DropdownMenu/DropdownMenu.js";
|
|
26
|
+
import { EmptyState as X } from "./components/EmptyState/EmptyState.js";
|
|
27
|
+
import { Label as Z } from "./components/Label/Label.js";
|
|
28
|
+
import { FormField as Q } from "./components/FormField/FormField.js";
|
|
29
|
+
import { Heading as $ } from "./components/Heading/Heading.js";
|
|
30
|
+
import { Input as ee } from "./components/Input/Input.js";
|
|
31
|
+
import { Link as te } from "./components/Link/Link.js";
|
|
32
|
+
import { Pagination as ne, getPaginationItems as re } from "./components/Pagination/Pagination.js";
|
|
33
|
+
import { Popover as ie } from "./components/Popover/Popover.js";
|
|
34
|
+
import { Progress as ae } from "./components/Progress/Progress.js";
|
|
35
|
+
import { Radio as oe, RadioGroup as se } from "./components/RadioGroup/RadioGroup.js";
|
|
36
|
+
import { Select as ce } from "./components/Select/Select.js";
|
|
37
|
+
import { Skeleton as le } from "./components/Skeleton/Skeleton.js";
|
|
38
|
+
import { Slider as ue } from "./components/Slider/Slider.js";
|
|
39
|
+
import { Switch as de } from "./components/Switch/Switch.js";
|
|
40
|
+
import { Table as fe } from "./components/Table/Table.js";
|
|
41
|
+
import { Tab as pe, TabList as me, TabPanel as he, Tabs as ge } from "./components/Tabs/Tabs.js";
|
|
42
|
+
import { Text as _e } from "./components/Text/Text.js";
|
|
43
|
+
import { Textarea as ve } from "./components/Textarea/Textarea.js";
|
|
44
|
+
import { ThemeProvider as ye, useTheme as be } from "./components/ThemeProvider/ThemeProvider.js";
|
|
45
|
+
import { ToastProvider as xe, useToast as Se } from "./components/Toast/Toast.js";
|
|
46
|
+
import { Tooltip as Ce } from "./components/Tooltip/Tooltip.js";
|
|
47
|
+
import { breakpoints as we } from "./tokens/breakpoints.js";
|
|
48
|
+
import { baseColors as Te, palette as Ee, paletteSteps as De } from "./tokens/colors.js";
|
|
49
|
+
import { focusRing as Oe } from "./tokens/focus.js";
|
|
50
|
+
import { duration as ke, easing as Ae, reducedMotionDuration as je } from "./tokens/motion.js";
|
|
51
|
+
import { radius as Me } from "./tokens/radius.js";
|
|
52
|
+
import { shadows as Ne } from "./tokens/shadows.js";
|
|
53
|
+
import { borderWidth as Pe, sizes as Fe } from "./tokens/sizes.js";
|
|
54
|
+
import { spacing as Ie } from "./tokens/spacing.js";
|
|
55
|
+
import { darkColors as Le, lightColors as Re, themes as ze } from "./tokens/themes.js";
|
|
56
|
+
import { fontFamily as Be, fontSize as Ve, fontWeight as He, letterSpacing as Ue, lineHeight as We } from "./tokens/typography.js";
|
|
57
|
+
import { zIndex as Ge } from "./tokens/z-index.js";
|
|
58
|
+
import { cssVariables as Ke, reducedMotionVariables as qe, themeVariables as Je } from "./tokens/index.js";
|
|
59
|
+
export { y as Accordion, b as AccordionContent, x as AccordionItem, S as AccordionTrigger, D as Alert, r as ArrowDownIcon, i as ArrowUpDownIcon, a as ArrowUpIcon, O as Avatar, k as Badge, A as Breadcrumb, j as BreadcrumbItem, M as BreadcrumbLink, T as Button, N as Card, P as CardBody, F as CardFooter, I as CardHeader, o as CheckIcon, L as Checkbox, s as ChevronDownIcon, c as ChevronLeftIcon, l as ChevronRightIcon, u as ChevronUpIcon, d as CloseIcon, R as Divider, G as Drawer, K as DropdownMenu, q as DropdownMenuGroup, J as DropdownMenuItem, Y as DropdownMenuSeparator, X as EmptyState, f as ErrorIcon, p as ExternalLinkIcon, Q as FormField, $ as Heading, n as Icon, E as IconButton, m as InfoIcon, ee as Input, Z as Label, te as Link, h as MinusIcon, W as Modal, g as MoreHorizontalIcon, ne as Pagination, ie as Popover, U as Portal, ae as Progress, oe as Radio, se as RadioGroup, ce as Select, le as Skeleton, ue as Slider, w as Spinner, _ as SuccessIcon, de as Switch, pe as Tab, me as TabList, he as TabPanel, fe as Table, ge as Tabs, _e as Text, ve as Textarea, ye as ThemeProvider, xe as ToastProvider, Ce as Tooltip, C as VisuallyHidden, v as WarningIcon, Te as baseColors, Pe as borderWidth, we as breakpoints, t as cn, Ke as cssVariables, Le as darkColors, ke as duration, Ae as easing, Oe as focusRing, Be as fontFamily, Ve as fontSize, He as fontWeight, re as getPaginationItems, Ue as letterSpacing, Re as lightColors, We as lineHeight, Ee as palette, De as paletteSteps, Me as radius, je as reducedMotionDuration, qe as reducedMotionVariables, Ne as shadows, Fe as sizes, Ie as spacing, Je as themeVariables, ze as themes, z as useClickOutside, e as useControllableState, B as useEscapeKey, V as useFocusTrap, H as useScrollLock, be as useTheme, Se as useToast, Ge as zIndex };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/styles/choice.module.css
|
|
2
|
+
var e = "onyx-choice-ZJ3V6", t = "onyx-sm-C4FIn", n = "onyx-md-hq13T", r = "onyx-lg-eMNQ7", i = "onyx-control-TEWO0", a = "onyx-input-085uP", o = "onyx-box-G7X3z", s = "onyx-label-a8cIo", c = "onyx-description-H5VVb", l = {
|
|
3
|
+
choice: e,
|
|
4
|
+
sm: t,
|
|
5
|
+
md: n,
|
|
6
|
+
lg: r,
|
|
7
|
+
control: i,
|
|
8
|
+
input: a,
|
|
9
|
+
box: o,
|
|
10
|
+
label: s,
|
|
11
|
+
description: c
|
|
12
|
+
};
|
|
13
|
+
export { o as box, e as choice, i as control, l as default, c as description, a as input, s as label, r as lg, n as md, t as sm };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=choice.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choice.module.js","names":["choice","sm","md","lg","control","input","box","label","description","choice_module_default"],"sources":["../../src/styles/choice.module.css"],"sourcesContent":[".choice {\n --choice-size: var(--size-icon-sm);\n\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: var(--space-2);\n align-items: start;\n color: var(--color-text);\n}\n\n.sm {\n --choice-size: var(--size-icon-sm);\n\n font-size: var(--font-size-sm);\n}\n\n.md {\n --choice-size: var(--size-icon-md);\n\n font-size: var(--font-size-md);\n}\n\n.lg {\n --choice-size: var(--size-icon-lg);\n\n font-size: var(--font-size-lg);\n}\n\n.control {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 1lh;\n}\n\n.input {\n position: absolute;\n inset: 0;\n z-index: 1;\n margin: 0;\n cursor: pointer;\n opacity: 0;\n}\n\n.input:disabled {\n cursor: not-allowed;\n}\n\n.box {\n display: grid;\n place-items: center;\n width: var(--choice-size);\n height: var(--choice-size);\n color: var(--color-on-primary);\n background-color: var(--color-surface);\n border: var(--border-width-thin) solid var(--color-border-strong);\n transition-timing-function: var(--easing-standard);\n transition-duration: var(--duration-fast);\n transition-property: background-color, border-color;\n}\n\n.input:hover:not(:disabled) + .box {\n border-color: var(--color-text-muted);\n}\n\n.input:focus-visible + .box {\n outline: var(--focus-ring-width) solid var(--color-focus);\n outline-offset: var(--focus-ring-offset);\n}\n\n.input:is(:checked, [type='checkbox']:indeterminate) + .box {\n background-color: var(--color-primary);\n border-color: var(--color-primary);\n}\n\n.input:is(:checked, [type='checkbox']:indeterminate):hover:not(:disabled) + .box {\n background-color: var(--color-primary-hover);\n border-color: var(--color-primary-hover);\n}\n\n.input:is(:checked, [type='checkbox']:indeterminate):active:not(:disabled) + .box {\n background-color: var(--color-primary-active);\n border-color: var(--color-primary-active);\n}\n\n.input[aria-invalid='true'] + .box {\n border-color: var(--color-danger);\n}\n\n.input:disabled + .box,\n.input:disabled:is(:checked, [type='checkbox']:indeterminate) + .box {\n color: var(--color-text-disabled);\n background-color: var(--color-bg-muted);\n border-color: var(--color-border);\n}\n\n.label {\n cursor: pointer;\n}\n\n.description {\n grid-column: 2;\n font-size: var(--font-size-sm);\n color: var(--color-text-muted);\n}\n\n.choice:has(.input:disabled) .label {\n color: var(--color-text-disabled);\n cursor: not-allowed;\n}\n\n@media (pointer: coarse) {\n .choice {\n align-content: center;\n min-height: var(--size-touch-target);\n }\n\n .input {\n inset: calc((1lh - var(--size-touch-target)) / 2)\n calc((var(--choice-size) - var(--size-touch-target)) / 2);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// src/styles/field.module.css
|
|
2
|
+
var e = "onyx-control-ZGiHH", t = "onyx-sm-aXs1W", n = "onyx-md-jEzCM", r = "onyx-lg-x7h-R", i = "onyx-adornment-gUZBa", a = {
|
|
3
|
+
control: e,
|
|
4
|
+
sm: t,
|
|
5
|
+
md: n,
|
|
6
|
+
lg: r,
|
|
7
|
+
adornment: i
|
|
8
|
+
};
|
|
9
|
+
export { i as adornment, e as control, a as default, r as lg, n as md, t as sm };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=field.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.module.js","names":["control","sm","md","lg","adornment","field_module_default"],"sources":["../../src/styles/field.module.css"],"sourcesContent":[".control {\n display: flex;\n gap: var(--space-2);\n align-items: center;\n width: 100%;\n min-width: 0;\n padding-inline: var(--space-3);\n color: var(--color-text);\n background-color: var(--color-surface);\n border: var(--border-width-thin) solid var(--color-border-strong);\n border-radius: var(--radius-md);\n transition-timing-function: var(--easing-standard);\n transition-duration: var(--duration-fast);\n transition-property: border-color, background-color;\n}\n\n.control:hover {\n border-color: var(--color-text-muted);\n}\n\n.control:is(:focus-visible, :has(:focus-visible)) {\n outline: var(--focus-ring-width) solid var(--color-focus);\n outline-offset: var(--focus-ring-offset);\n}\n\n.control[data-invalid] {\n border-color: var(--color-danger);\n}\n\n.control[data-disabled],\n.control:disabled {\n color: var(--color-text-disabled);\n cursor: not-allowed;\n background-color: var(--color-bg-muted);\n border-color: var(--color-border);\n}\n\n.control::placeholder,\n.control ::placeholder {\n color: var(--color-text-muted);\n opacity: 1;\n}\n\n.control[data-disabled] ::placeholder,\n.control:disabled::placeholder {\n color: var(--color-text-disabled);\n}\n\n.sm {\n min-height: var(--size-control-sm);\n font-size: var(--font-size-sm);\n}\n\n.md {\n min-height: var(--size-control-md);\n font-size: var(--font-size-sm);\n}\n\n.lg {\n min-height: var(--size-control-lg);\n font-size: var(--font-size-md);\n}\n\n.adornment {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n color: var(--color-text-muted);\n}\n\n@media (pointer: coarse) {\n .control {\n min-height: var(--size-touch-target);\n }\n}\n"],"mappings":""}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
:root{--color-white:#fff;--color-black:#000;--color-neutral-50:#fafafa;--color-neutral-100:#f4f4f5;--color-neutral-200:#e4e4e7;--color-neutral-300:#d4d4d8;--color-neutral-400:#a1a1aa;--color-neutral-500:#71717a;--color-neutral-600:#52525b;--color-neutral-700:#3f3f46;--color-neutral-800:#27272a;--color-neutral-900:#18181b;--color-primary-50:#eef2ff;--color-primary-100:#e0e7ff;--color-primary-200:#c7d2fe;--color-primary-300:#a5b4fc;--color-primary-400:#818cf8;--color-primary-500:#6366f1;--color-primary-600:#4f46e5;--color-primary-700:#4338ca;--color-primary-800:#3730a3;--color-primary-900:#312e81;--color-success-50:#f0fdf4;--color-success-100:#dcfce7;--color-success-200:#bbf7d0;--color-success-300:#86efac;--color-success-400:#4ade80;--color-success-500:#22c55e;--color-success-600:#16a34a;--color-success-700:#15803d;--color-success-800:#166534;--color-success-900:#14532d;--color-warning-50:#fffbeb;--color-warning-100:#fef3c7;--color-warning-200:#fde68a;--color-warning-300:#fcd34d;--color-warning-400:#fbbf24;--color-warning-500:#f59e0b;--color-warning-600:#d97706;--color-warning-700:#b45309;--color-warning-800:#92400e;--color-warning-900:#78350f;--color-danger-50:#fef2f2;--color-danger-100:#fee2e2;--color-danger-200:#fecaca;--color-danger-300:#fca5a5;--color-danger-400:#f87171;--color-danger-500:#ef4444;--color-danger-600:#dc2626;--color-danger-700:#b91c1c;--color-danger-800:#991b1b;--color-danger-900:#7f1d1d;--color-info-50:#f0f9ff;--color-info-100:#e0f2fe;--color-info-200:#bae6fd;--color-info-300:#7dd3fc;--color-info-400:#38bdf8;--color-info-500:#0ea5e9;--color-info-600:#0284c7;--color-info-700:#0369a1;--color-info-800:#075985;--color-info-900:#0c4a6e;--font-family-base:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-md:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--font-size-5xl:3rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-none:1;--line-height-tight:1.25;--line-height-snug:1.375;--line-height-normal:1.5;--line-height-relaxed:1.625;--letter-spacing-tighter:-.05em;--letter-spacing-tight:-.025em;--letter-spacing-normal:0;--letter-spacing-wide:.025em;--letter-spacing-wider:.05em;--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-none:0;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px;--radius-full:9999px;--shadow-none:none;--shadow-xs:0 1px 2px 0 rgb(var(--shadow-color) / .05);--shadow-sm:0 1px 3px 0 rgb(var(--shadow-color) / .1), 0 1px 2px -1px rgb(var(--shadow-color) / .1);--shadow-md:0 4px 6px -1px rgb(var(--shadow-color) / .1), 0 2px 4px -2px rgb(var(--shadow-color) / .1);--shadow-lg:0 10px 15px -3px rgb(var(--shadow-color) / .1), 0 4px 6px -4px rgb(var(--shadow-color) / .1);--shadow-xl:0 20px 25px -5px rgb(var(--shadow-color) / .1), 0 8px 10px -6px rgb(var(--shadow-color) / .1);--duration-instant:0s;--duration-fast:.1s;--duration-normal:.2s;--duration-slow:.3s;--duration-slower:.5s;--easing-linear:linear;--easing-standard:cubic-bezier(.2, 0, 0, 1);--easing-enter:cubic-bezier(0, 0, .2, 1);--easing-exit:cubic-bezier(.4, 0, 1, 1)}@media (prefers-reduced-motion:reduce){:root{--duration-instant:.01ms;--duration-fast:.01ms;--duration-normal:.01ms;--duration-slow:.01ms;--duration-slower:.01ms}}:root{--z-index-dropdown:1000;--z-index-overlay:1100;--z-index-modal:1200;--z-index-toast:1300;--z-index-tooltip:1400;--breakpoint-sm:640px;--breakpoint-md:768px;--breakpoint-lg:1024px;--breakpoint-xl:1280px;--breakpoint-2xl:1536px;--focus-ring-width:2px;--focus-ring-offset:2px;--size-icon-xs:.75rem;--size-icon-sm:1rem;--size-icon-md:1.25rem;--size-icon-lg:1.5rem;--size-icon-xl:2rem;--size-control-sm:2rem;--size-control-md:2.5rem;--size-control-lg:3rem;--size-touch-target:2.75rem;--size-tooltip:20rem;--size-menu:12rem;--size-overlay-sm:24rem;--size-overlay-md:32rem;--size-overlay-lg:48rem;--border-width-thin:1px;--border-width-thick:2px}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:var(--color-white);--color-bg-subtle:var(--color-neutral-50);--color-bg-muted:var(--color-neutral-100);--color-bg-inverse:var(--color-neutral-900);--color-surface:var(--color-white);--color-surface-raised:var(--color-white);--color-backdrop:color-mix(in srgb, var(--color-neutral-900) 50%, transparent);--color-text:var(--color-neutral-900);--color-text-muted:var(--color-neutral-600);--color-text-disabled:var(--color-neutral-400);--color-text-inverse:var(--color-white);--color-border:var(--color-neutral-200);--color-border-strong:var(--color-neutral-500);--color-focus:var(--color-primary-600);--color-state-hover:color-mix(in srgb, var(--color-neutral-900) 6%, transparent);--color-state-active:color-mix(in srgb, var(--color-neutral-900) 12%, transparent);--color-primary:var(--color-primary-600);--color-primary-hover:var(--color-primary-700);--color-primary-active:var(--color-primary-800);--color-on-primary:var(--color-white);--color-primary-subtle:var(--color-primary-50);--color-primary-text:var(--color-primary-700);--color-primary-border:var(--color-primary-200);--color-success:var(--color-success-700);--color-success-hover:var(--color-success-800);--color-success-active:var(--color-success-900);--color-on-success:var(--color-white);--color-success-subtle:var(--color-success-50);--color-success-text:var(--color-success-800);--color-success-border:var(--color-success-200);--color-warning:var(--color-warning-700);--color-warning-hover:var(--color-warning-800);--color-warning-active:var(--color-warning-900);--color-on-warning:var(--color-white);--color-warning-subtle:var(--color-warning-50);--color-warning-text:var(--color-warning-800);--color-warning-border:var(--color-warning-200);--color-danger:var(--color-danger-600);--color-danger-hover:var(--color-danger-700);--color-danger-active:var(--color-danger-800);--color-on-danger:var(--color-white);--color-danger-subtle:var(--color-danger-50);--color-danger-text:var(--color-danger-700);--color-danger-border:var(--color-danger-200);--color-info:var(--color-info-700);--color-info-hover:var(--color-info-800);--color-info-active:var(--color-info-900);--color-on-info:var(--color-white);--color-info-subtle:var(--color-info-50);--color-info-text:var(--color-info-800);--color-info-border:var(--color-info-200);--shadow-color:24 24 27}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:var(--color-neutral-900);--color-bg-subtle:var(--color-neutral-800);--color-bg-muted:var(--color-neutral-700);--color-bg-inverse:var(--color-neutral-50);--color-surface:var(--color-neutral-900);--color-surface-raised:var(--color-neutral-800);--color-backdrop:color-mix(in srgb, var(--color-black) 60%, transparent);--color-text:var(--color-neutral-50);--color-text-muted:var(--color-neutral-300);--color-text-disabled:var(--color-neutral-500);--color-text-inverse:var(--color-neutral-900);--color-border:var(--color-neutral-700);--color-border-strong:var(--color-neutral-400);--color-focus:var(--color-primary-300);--color-state-hover:color-mix(in srgb, var(--color-white) 8%, transparent);--color-state-active:color-mix(in srgb, var(--color-white) 14%, transparent);--color-primary:var(--color-primary-400);--color-primary-hover:var(--color-primary-300);--color-primary-active:var(--color-primary-200);--color-on-primary:var(--color-neutral-900);--color-primary-subtle:var(--color-primary-900);--color-primary-text:var(--color-primary-300);--color-primary-border:var(--color-primary-700);--color-success:var(--color-success-400);--color-success-hover:var(--color-success-300);--color-success-active:var(--color-success-200);--color-on-success:var(--color-neutral-900);--color-success-subtle:var(--color-success-900);--color-success-text:var(--color-success-300);--color-success-border:var(--color-success-700);--color-warning:var(--color-warning-400);--color-warning-hover:var(--color-warning-300);--color-warning-active:var(--color-warning-200);--color-on-warning:var(--color-neutral-900);--color-warning-subtle:var(--color-warning-900);--color-warning-text:var(--color-warning-300);--color-warning-border:var(--color-warning-700);--color-danger:var(--color-danger-400);--color-danger-hover:var(--color-danger-300);--color-danger-active:var(--color-danger-200);--color-on-danger:var(--color-neutral-900);--color-danger-subtle:var(--color-danger-900);--color-danger-text:var(--color-danger-300);--color-danger-border:var(--color-danger-700);--color-info:var(--color-info-400);--color-info-hover:var(--color-info-300);--color-info-active:var(--color-info-200);--color-on-info:var(--color-neutral-900);--color-info-subtle:var(--color-info-900);--color-info-text:var(--color-info-300);--color-info-border:var(--color-info-700);--shadow-color:0 0 0}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}img,picture,video,canvas,svg{max-width:100%;display:block}img,video{height:auto}input,button,textarea,select{font:inherit;color:inherit;letter-spacing:inherit}textarea{resize:vertical}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}[hidden]:not([hidden=until-found]){display:none!important}body{font-family:var(--font-family-base);font-size:var(--font-size-md);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-bg)}code,kbd,samp,pre{font-family:var(--font-family-mono)}.onyx-icon-szG-X{vertical-align:middle;flex-shrink:0;display:inline-block}.onyx-inherit-k1qag{width:1em;height:1em}.onyx-xs-mghPd{width:var(--size-icon-xs);height:var(--size-icon-xs)}.onyx-sm-sfJ0-{width:var(--size-icon-sm);height:var(--size-icon-sm)}.onyx-md-nlSCK{width:var(--size-icon-md);height:var(--size-icon-md)}.onyx-lg-56VkH{width:var(--size-icon-lg);height:var(--size-icon-lg)}.onyx-xl-0lQu8{width:var(--size-icon-xl);height:var(--size-icon-xl)}.onyx-accordion-LVhhv{border-block:var(--border-width-thin) solid var(--color-border);flex-direction:column;min-width:0;display:flex}.onyx-item-7ryVk+.onyx-item-7ryVk{border-top:var(--border-width-thin) solid var(--color-border)}.onyx-heading-6PDIo{font-size:inherit;font-weight:inherit;margin:0}.onyx-trigger-9BYFY{--focus-ring-offset:calc(var(--focus-ring-width) * -1);gap:var(--space-3);width:100%;min-height:var(--size-control-lg);padding:var(--space-3) var(--space-2);font:inherit;font-weight:var(--font-weight-medium);color:var(--color-text);text-align:start;cursor:pointer;border-radius:var(--radius-md);transition:background-color var(--duration-fast) var(--easing-standard);background:0 0;border:0;align-items:center;display:flex}.onyx-trigger-9BYFY:hover:not(:disabled){background-color:var(--color-state-hover)}.onyx-trigger-9BYFY:active:not(:disabled,[aria-disabled=true]){background-color:var(--color-state-active)}.onyx-trigger-9BYFY[aria-disabled=true]{cursor:default}.onyx-trigger-9BYFY:disabled{color:var(--color-text-disabled);cursor:not-allowed}.onyx-label-Ss7uW{flex:1;min-width:0}.onyx-chevron-i-HVZ{font-size:var(--size-icon-md);color:var(--color-text-muted);transition:rotate var(--duration-normal) var(--easing-standard);flex-shrink:0}.onyx-trigger-9BYFY[aria-expanded=true] .onyx-chevron-i-HVZ{rotate:180deg}.onyx-trigger-9BYFY:disabled .onyx-chevron-i-HVZ{color:inherit}.onyx-inner-fuFSv{padding:0 var(--space-2) var(--space-4);font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text-muted);animation:onyx-content-in-0q8Ku var(--duration-normal) var(--easing-enter)}@keyframes onyx-content-in-0q8Ku{0%{opacity:0;translate:0 calc(var(--space-1) * -1)}}.onyx-visuallyHidden-KiAzg{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.onyx-spinner-GpFZS{vertical-align:middle;flex-shrink:0;display:inline-flex}.onyx-svg-XPHwn{fill:none;stroke:currentColor;stroke-width:3px;width:100%;height:100%;animation:onyx-spin-LFfLH calc(var(--duration-slower) * 1.5) var(--easing-linear) infinite}.onyx-track-AnRwm{opacity:.25}.onyx-arc-e1vFG{stroke-linecap:round}.onyx-inherit-lyj9z{width:1em;height:1em}.onyx-xs-p8BFI{width:var(--size-icon-xs);height:var(--size-icon-xs)}.onyx-sm-3sIoD{width:var(--size-icon-sm);height:var(--size-icon-sm)}.onyx-md-M2sPj{width:var(--size-icon-md);height:var(--size-icon-md)}.onyx-lg-IxTw2{width:var(--size-icon-lg);height:var(--size-icon-lg)}.onyx-xl-cgwqq{width:var(--size-icon-xl);height:var(--size-icon-xl)}@keyframes onyx-spin-LFfLH{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.onyx-svg-XPHwn{animation:none}}.onyx-button-2ZuB7{font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border-width-thin) solid transparent;border-radius:var(--radius-md);transition-timing-function:var(--easing-standard);transition-duration:var(--duration-fast);background-color:#0000;flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;transition-property:background-color,border-color,color;display:inline-flex;position:relative}.onyx-content-EKXmF{gap:var(--space-2);justify-content:center;align-items:center;min-width:0;display:inline-flex}.onyx-button-2ZuB7[data-loading]{cursor:progress}.onyx-button-2ZuB7[data-loading] .onyx-content-EKXmF{opacity:0}.onyx-spinner-ZExvW{margin:auto;position:absolute;inset:0}.onyx-sm-NhG0g{min-height:var(--size-control-sm);padding-inline:var(--space-3);font-size:var(--font-size-sm)}.onyx-md-hH4h3{min-height:var(--size-control-md);padding-inline:var(--space-4);font-size:var(--font-size-sm)}.onyx-lg-2plQf{min-height:var(--size-control-lg);padding-inline:var(--space-5);font-size:var(--font-size-md)}.onyx-fullWidth-36oJT{width:100%}.onyx-primary-s1sM6{color:var(--color-on-primary);background-color:var(--color-primary)}.onyx-primary-s1sM6:hover:not(:disabled,[aria-disabled=true]){background-color:var(--color-primary-hover)}.onyx-primary-s1sM6:active:not(:disabled,[aria-disabled=true]){background-color:var(--color-primary-active)}.onyx-danger-V4fX8{color:var(--color-on-danger);background-color:var(--color-danger)}.onyx-danger-V4fX8:hover:not(:disabled,[aria-disabled=true]){background-color:var(--color-danger-hover)}.onyx-danger-V4fX8:active:not(:disabled,[aria-disabled=true]){background-color:var(--color-danger-active)}.onyx-secondary-R0waJ{color:var(--color-text);background-color:var(--color-bg-muted)}.onyx-outline-F5jq-{color:var(--color-text);border-color:var(--color-border-strong)}.onyx-ghost-1KINV{color:var(--color-text)}:is(.onyx-secondary-R0waJ,.onyx-outline-F5jq-,.onyx-ghost-1KINV):hover:not(:disabled,[aria-disabled=true]){background-image:linear-gradient(var(--color-state-hover), var(--color-state-hover))}:is(.onyx-secondary-R0waJ,.onyx-outline-F5jq-,.onyx-ghost-1KINV):active:not(:disabled,[aria-disabled=true]){background-image:linear-gradient(var(--color-state-active), var(--color-state-active))}.onyx-button-2ZuB7:disabled{color:var(--color-text-disabled);cursor:not-allowed;background-color:var(--color-bg-muted);border-color:#0000}:is(.onyx-outline-F5jq-,.onyx-ghost-1KINV):disabled{background-color:#0000}.onyx-outline-F5jq-:disabled{border-color:var(--color-border)}@media (pointer:coarse){.onyx-button-2ZuB7{min-height:var(--size-touch-target)}}.onyx-iconButton-JAF-a{padding-inline:0}.onyx-icon-2DDWy{display:inline-flex}.onyx-sm--tgrW{min-width:var(--size-control-sm);font-size:var(--size-icon-sm)}.onyx-md-Rq8Ph{min-width:var(--size-control-md);font-size:var(--size-icon-md)}.onyx-lg-n8cv7{min-width:var(--size-control-lg);font-size:var(--size-icon-lg)}@media (pointer:coarse){.onyx-iconButton-JAF-a{min-width:var(--size-touch-target)}}.onyx-alert-7cYyI{gap:var(--space-3);padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);line-height:var(--line-height-normal);border:var(--border-width-thin) solid transparent;border-radius:var(--radius-lg);align-items:flex-start;display:flex}.onyx-info-9r3r1{--alert-solid:var(--color-info);--alert-on-solid:var(--color-on-info);--alert-subtle:var(--color-info-subtle);--alert-text:var(--color-info-text);--alert-border:var(--color-info-border)}.onyx-success-1bzoB{--alert-solid:var(--color-success);--alert-on-solid:var(--color-on-success);--alert-subtle:var(--color-success-subtle);--alert-text:var(--color-success-text);--alert-border:var(--color-success-border)}.onyx-warning-q-j1Q{--alert-solid:var(--color-warning);--alert-on-solid:var(--color-on-warning);--alert-subtle:var(--color-warning-subtle);--alert-text:var(--color-warning-text);--alert-border:var(--color-warning-border)}.onyx-danger-CiZkW{--alert-solid:var(--color-danger);--alert-on-solid:var(--color-on-danger);--alert-subtle:var(--color-danger-subtle);--alert-text:var(--color-danger-text);--alert-border:var(--color-danger-border)}.onyx-subtle-XhGd-{color:var(--color-text);background-color:var(--alert-subtle);border-color:var(--alert-border)}.onyx-subtle-XhGd- .onyx-icon-Zg6SB,.onyx-subtle-XhGd- .onyx-title-abGgF{color:var(--alert-text)}.onyx-solid-s-oW5{color:var(--alert-on-solid);background-color:var(--alert-solid)}.onyx-icon-Zg6SB{flex-shrink:0;align-items:center;height:1lh;display:inline-flex}.onyx-icon-Zg6SB>svg{width:var(--size-icon-md);height:var(--size-icon-md)}.onyx-content-UXnmZ{gap:var(--space-1);flex:1;min-width:0;display:grid}.onyx-title-abGgF{font-weight:var(--font-weight-semibold);margin:0}.onyx-description-pXPvw{min-width:0}.onyx-description-pXPvw>:where(p){margin:0}.onyx-action-WeFR6{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.onyx-dismiss-dQPPE{margin-block:calc(var(--space-1) * -1);color:inherit;margin-inline-end:calc(var(--space-2) * -1)}.onyx-avatar-3xMuZ{font-weight:var(--font-weight-medium);line-height:var(--line-height-none);color:var(--color-primary-text);vertical-align:middle;-webkit-user-select:none;user-select:none;background-color:var(--color-primary-subtle);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.onyx-circle-O2tJa{border-radius:var(--radius-full)}.onyx-square-KXudv{border-radius:var(--radius-md)}.onyx-image-ieqGp{object-fit:cover;width:100%;height:100%}.onyx-xs-oSaLL{width:var(--space-6);height:var(--space-6);font-size:var(--font-size-xs)}.onyx-sm-sZ2bk{width:var(--size-control-sm);height:var(--size-control-sm);font-size:var(--font-size-xs)}.onyx-md-Fdkbz{width:var(--size-control-md);height:var(--size-control-md);font-size:var(--font-size-sm)}.onyx-lg-pTTUA{width:var(--size-control-lg);height:var(--size-control-lg);font-size:var(--font-size-md)}.onyx-xl-mW58F{width:var(--space-16);height:var(--space-16);font-size:var(--font-size-xl)}.onyx-badge-RsuMz{gap:var(--space-1);max-width:100%;font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);white-space:nowrap;vertical-align:middle;border:var(--border-width-thin) solid transparent;border-radius:var(--radius-full);align-items:center;display:inline-flex}.onyx-sm-LYsCn{padding:0 var(--space-2);font-size:var(--font-size-xs)}.onyx-md-4Or8q{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.onyx-neutral-lulSm{--badge-solid:var(--color-bg-inverse);--badge-on-solid:var(--color-text-inverse);--badge-subtle:var(--color-bg-muted);--badge-text:var(--color-text);--badge-border:var(--color-border-strong)}.onyx-primary-S0WCS{--badge-solid:var(--color-primary);--badge-on-solid:var(--color-on-primary);--badge-subtle:var(--color-primary-subtle);--badge-text:var(--color-primary-text);--badge-border:var(--color-primary)}.onyx-success-u9JiS{--badge-solid:var(--color-success);--badge-on-solid:var(--color-on-success);--badge-subtle:var(--color-success-subtle);--badge-text:var(--color-success-text);--badge-border:var(--color-success)}.onyx-warning-nsGp-{--badge-solid:var(--color-warning);--badge-on-solid:var(--color-on-warning);--badge-subtle:var(--color-warning-subtle);--badge-text:var(--color-warning-text);--badge-border:var(--color-warning)}.onyx-danger-PD2hz{--badge-solid:var(--color-danger);--badge-on-solid:var(--color-on-danger);--badge-subtle:var(--color-danger-subtle);--badge-text:var(--color-danger-text);--badge-border:var(--color-danger)}.onyx-info-na6DQ{--badge-solid:var(--color-info);--badge-on-solid:var(--color-on-info);--badge-subtle:var(--color-info-subtle);--badge-text:var(--color-info-text);--badge-border:var(--color-info)}.onyx-subtle-boe3x{color:var(--badge-text);background-color:var(--badge-subtle)}.onyx-solid-0Leug{color:var(--badge-on-solid);background-color:var(--badge-solid)}.onyx-outline-x06HL{color:var(--badge-text);border-color:var(--badge-border)}.onyx-breadcrumb-TVagK{min-width:0;font-size:var(--font-size-sm)}.onyx-list-0leIR{row-gap:var(--space-1);flex-wrap:wrap;align-items:center;margin:0;padding:0;list-style:none;display:flex}.onyx-item-ZczhA{align-items:center;min-width:0;display:inline-flex}.onyx-separator-qrUX-{margin-inline:var(--space-2);color:var(--color-text-muted);display:inline-flex}.onyx-item-ZczhA:first-child .onyx-separator-qrUX-{display:none}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .onyx-separator-qrUX->svg{scale:-1 1}.onyx-link-nDu8Y{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--easing-standard);text-decoration-line:none;overflow:hidden}.onyx-link-nDu8Y:is(a[href]):hover{color:var(--color-text);text-underline-offset:.2em;text-decoration-line:underline}.onyx-link-nDu8Y[aria-current=page]{font-weight:var(--font-weight-medium);color:var(--color-text)}@media (pointer:coarse){.onyx-link-nDu8Y{line-height:var(--size-touch-target);display:inline-block}}.onyx-card-Cb1o4{--card-padding:var(--space-5);min-width:0;color:var(--color-text);border:var(--border-width-thin) solid transparent;border-radius:var(--radius-xl);flex-direction:column;display:flex;overflow:hidden}.onyx-outline-5JlQf{background-color:var(--color-surface);border-color:var(--color-border)}.onyx-elevated-5VEDw{background-color:var(--color-surface-raised);border-color:var(--color-border);box-shadow:var(--shadow-md)}.onyx-filled-wikYw{background-color:var(--color-bg-subtle)}.onyx-none-GcNRH{--card-padding:0}.onyx-sm-J1U3g{--card-padding:var(--space-3)}.onyx-md-hGw-i{--card-padding:var(--space-5)}.onyx-lg-Qu3G6{--card-padding:var(--space-8)}.onyx-header-PTXf2,.onyx-body-W441Z,.onyx-footer-Mu-JC{padding:var(--card-padding)}.onyx-header-PTXf2{gap:var(--space-2) var(--space-4);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;display:flex}.onyx-header-PTXf2+.onyx-body-W441Z{padding-top:0}.onyx-body-W441Z{gap:var(--space-3);flex:1;align-content:start;display:grid}.onyx-footer-Mu-JC{gap:var(--space-3);border-top:var(--border-width-thin) solid var(--color-border);flex-wrap:wrap;justify-content:flex-end;align-items:center;display:flex}.onyx-choice-ZJ3V6{--choice-size:var(--size-icon-sm);column-gap:var(--space-2);color:var(--color-text);grid-template-columns:auto 1fr;align-items:start;display:grid}.onyx-sm-C4FIn{--choice-size:var(--size-icon-sm);font-size:var(--font-size-sm)}.onyx-md-hq13T{--choice-size:var(--size-icon-md);font-size:var(--font-size-md)}.onyx-lg-eMNQ7{--choice-size:var(--size-icon-lg);font-size:var(--font-size-lg)}.onyx-control-TEWO0{justify-content:center;align-items:center;height:1lh;display:inline-flex;position:relative}.onyx-input-085uP{z-index:1;cursor:pointer;opacity:0;margin:0;position:absolute;inset:0}.onyx-input-085uP:disabled{cursor:not-allowed}.onyx-box-G7X3z{width:var(--choice-size);height:var(--choice-size);color:var(--color-on-primary);background-color:var(--color-surface);border:var(--border-width-thin) solid var(--color-border-strong);transition-timing-function:var(--easing-standard);transition-duration:var(--duration-fast);place-items:center;transition-property:background-color,border-color;display:grid}.onyx-input-085uP:hover:not(:disabled)+.onyx-box-G7X3z{border-color:var(--color-text-muted)}.onyx-input-085uP:focus-visible+.onyx-box-G7X3z{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}.onyx-input-085uP:is(:checked,[type=checkbox]:indeterminate)+.onyx-box-G7X3z{background-color:var(--color-primary);border-color:var(--color-primary)}.onyx-input-085uP:is(:checked,[type=checkbox]:indeterminate):hover:not(:disabled)+.onyx-box-G7X3z{background-color:var(--color-primary-hover);border-color:var(--color-primary-hover)}.onyx-input-085uP:is(:checked,[type=checkbox]:indeterminate):active:not(:disabled)+.onyx-box-G7X3z{background-color:var(--color-primary-active);border-color:var(--color-primary-active)}.onyx-input-085uP[aria-invalid=true]+.onyx-box-G7X3z{border-color:var(--color-danger)}.onyx-input-085uP:disabled+.onyx-box-G7X3z,.onyx-input-085uP:disabled:is(:checked,[type=checkbox]:indeterminate)+.onyx-box-G7X3z{color:var(--color-text-disabled);background-color:var(--color-bg-muted);border-color:var(--color-border)}.onyx-label-a8cIo{cursor:pointer}.onyx-description-H5VVb{font-size:var(--font-size-sm);color:var(--color-text-muted);grid-column:2}.onyx-choice-ZJ3V6:has(.onyx-input-085uP:disabled) .onyx-label-a8cIo{color:var(--color-text-disabled);cursor:not-allowed}@media (pointer:coarse){.onyx-choice-ZJ3V6{min-height:var(--size-touch-target);align-content:center}.onyx-input-085uP{inset:calc((1lh - var(--size-touch-target)) / 2) calc((var(--choice-size) - var(--size-touch-target)) / 2)}}.onyx-box-OCPee{border-radius:var(--radius-sm)}.onyx-check-4HYWn,.onyx-dash-5Dkdl{stroke-width:3px;visibility:hidden;grid-area:1/1;width:80%;height:80%}:checked:not(:indeterminate)+.onyx-box-OCPee .onyx-check-4HYWn,:indeterminate+.onyx-box-OCPee .onyx-dash-5Dkdl{visibility:visible}.onyx-divider-KSGsi{background-color:var(--color-border);border:0;flex-shrink:0;margin:0}.onyx-horizontal-pZ05Y{height:var(--border-width-thin);align-self:stretch}.onyx-vertical-p-jD4{width:var(--border-width-thin);align-self:stretch;min-height:1em}.onyx-horizontal-pZ05Y.onyx-sm-6hSBB{margin-block:var(--space-2)}.onyx-horizontal-pZ05Y.onyx-md-qfZah{margin-block:var(--space-4)}.onyx-horizontal-pZ05Y.onyx-lg-Azo4z{margin-block:var(--space-8)}.onyx-vertical-p-jD4.onyx-sm-6hSBB{margin-inline:var(--space-2)}.onyx-vertical-p-jD4.onyx-md-qfZah{margin-inline:var(--space-4)}.onyx-vertical-p-jD4.onyx-lg-Azo4z{margin-inline:var(--space-8)}.onyx-root-t1dl-{z-index:var(--z-index-modal);display:flex;position:fixed;inset:0}.onyx-backdrop-VCObC{background-color:var(--color-backdrop);animation:onyx-fade-in-vHYBw var(--duration-normal) var(--easing-enter);position:absolute;inset:0}.onyx-panel-kvRPN{max-height:100%;color:var(--color-text);background-color:var(--color-surface-raised);box-shadow:var(--shadow-xl);outline:none;flex-direction:column;display:flex;position:relative}.onyx-panel-kvRPN:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:calc(var(--focus-ring-width) * -1)}.onyx-header-lv6WX{gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-3) var(--space-6);flex-shrink:0;justify-content:space-between;align-items:flex-start;display:flex}.onyx-title-lB-A8{padding-top:var(--space-1);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);margin:0}.onyx-close-5HTP4{flex-shrink:0}.onyx-body-Sllai{gap:var(--space-4);min-height:0;padding:0 var(--space-6) var(--space-6);font-size:var(--font-size-sm);line-height:var(--line-height-normal);flex:1;align-content:start;display:grid;overflow-y:auto}.onyx-description--yJR3{color:var(--color-text-muted);margin:0}.onyx-footer-duSFf{gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:var(--border-width-thin) solid var(--color-border);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;display:flex}@keyframes onyx-fade-in-vHYBw{0%{opacity:0}}.onyx-root-ytPLl{padding:var(--space-4);justify-content:center;align-items:center}.onyx-panel-lp9I7{border-radius:var(--radius-xl);width:100%;animation:onyx-modal-in-dIaud var(--duration-normal) var(--easing-enter)}.onyx-sm-K5k3W{max-width:var(--size-overlay-sm)}.onyx-md-gvyR7{max-width:var(--size-overlay-md)}.onyx-lg-BgB1a{max-width:var(--size-overlay-lg)}.onyx-full-z-yai{max-width:none;height:100%}@keyframes onyx-modal-in-dIaud{0%{opacity:0;scale:.96}}@media (width<640px){.onyx-root-ytPLl{align-items:flex-end;padding:0}.onyx-panel-lp9I7{border-end-end-radius:0;border-end-start-radius:0;max-width:none}.onyx-full-z-yai{border-radius:0}}.onyx-root-guW1o{--drawer-size:var(--size-overlay-sm);--drawer-from:translate(100%, 0)}.onyx-panel-wUX0N{animation:onyx-drawer-in-2TCEt var(--duration-slow) var(--easing-enter)}.onyx-start-MS4bt{--drawer-from:translate(-100%, 0);justify-content:flex-start}.onyx-end-aJxa5{justify-content:flex-end}.onyx-top-7rGCn{--drawer-from:translate(0, -100%);flex-direction:column;justify-content:flex-start}.onyx-bottom-zd-25{--drawer-from:translate(0, 100%);flex-direction:column;justify-content:flex-end}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .onyx-start-MS4bt{--drawer-from:translate(100%, 0)}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .onyx-end-aJxa5{--drawer-from:translate(-100%, 0)}:is(.onyx-start-MS4bt,.onyx-end-aJxa5) .onyx-panel-wUX0N{width:min(var(--drawer-size), 100%);height:100%}:is(.onyx-top-7rGCn,.onyx-bottom-zd-25) .onyx-panel-wUX0N{width:100%;height:min(var(--drawer-size), 100%)}.onyx-start-MS4bt .onyx-panel-wUX0N{border-start-end-radius:var(--radius-xl);border-end-end-radius:var(--radius-xl)}.onyx-end-aJxa5 .onyx-panel-wUX0N{border-start-start-radius:var(--radius-xl);border-end-start-radius:var(--radius-xl)}.onyx-top-7rGCn .onyx-panel-wUX0N{border-end-end-radius:var(--radius-xl);border-end-start-radius:var(--radius-xl)}.onyx-bottom-zd-25 .onyx-panel-wUX0N{border-start-start-radius:var(--radius-xl);border-start-end-radius:var(--radius-xl)}.onyx-sm-AQ96e{--drawer-size:var(--size-overlay-sm)}.onyx-md--2Ihw{--drawer-size:var(--size-overlay-md)}.onyx-lg-gWSe1{--drawer-size:var(--size-overlay-lg)}.onyx-full-Dbag5{--drawer-size:100%}.onyx-full-Dbag5.onyx-panel-wUX0N{border-radius:0}@keyframes onyx-drawer-in-2TCEt{0%{transform:var(--drawer-from)}}.onyx-menu--RiRW{z-index:var(--z-index-dropdown);min-width:var(--size-menu);max-width:var(--size-overlay-sm);padding:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text);background-color:var(--color-surface-raised);border:var(--border-width-thin) solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:onyx-menu-in-1KJYp var(--duration-fast) var(--easing-enter);outline:none;flex-direction:column;display:flex;overflow-y:auto}.onyx-item-T-QPZ{gap:var(--space-2);width:100%;min-height:var(--size-control-sm);padding:var(--space-1) var(--space-2);font:inherit;color:inherit;text-align:start;cursor:pointer;border-radius:var(--radius-md);background:0 0;border:0;outline:none;align-items:center;display:flex}.onyx-item-T-QPZ:focus{background-color:var(--color-state-hover)}.onyx-item-T-QPZ:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:calc(var(--focus-ring-width) * -1)}.onyx-item-T-QPZ:active:not([aria-disabled=true]){background-color:var(--color-state-active)}.onyx-item-T-QPZ[aria-disabled=true]{color:var(--color-text-disabled);cursor:not-allowed}.onyx-destructive-3XWwH:not([aria-disabled=true]){color:var(--color-danger-text)}.onyx-icon-zOP3d{font-size:var(--size-icon-sm);color:var(--color-text-muted);flex-shrink:0;display:inline-flex}.onyx-destructive-3XWwH .onyx-icon-zOP3d{color:inherit}.onyx-label-6yP76{flex:1;min-width:0}.onyx-shortcut-NBjlt{font-family:inherit;font-size:var(--font-size-xs);color:var(--color-text-muted);letter-spacing:var(--letter-spacing-wide);margin-inline-start:var(--space-4)}.onyx-group-CHr24{flex-direction:column;display:flex}.onyx-groupLabel-FVGET{padding:var(--space-2) var(--space-2) var(--space-1);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted)}.onyx-separator-RimQa{height:var(--border-width-thin);margin:var(--space-1) calc(var(--space-1) * -1);background-color:var(--color-border)}@keyframes onyx-menu-in-1KJYp{0%{opacity:0;scale:.96}}@media (pointer:coarse){.onyx-item-T-QPZ{min-height:var(--size-touch-target)}}.onyx-emptyState-OlmHA{gap:var(--space-2);max-width:var(--size-overlay-md);padding:var(--space-12) var(--space-6);text-align:center;flex-direction:column;align-items:center;margin-inline:auto;display:flex}.onyx-sm-bnLtD{padding:var(--space-6) var(--space-4)}.onyx-icon-qVCyh{width:var(--space-12);height:var(--space-12);margin-bottom:var(--space-2);font-size:var(--size-icon-lg);color:var(--color-text-muted);background-color:var(--color-bg-muted);border-radius:var(--radius-full);place-items:center;display:grid}.onyx-sm-bnLtD .onyx-icon-qVCyh{width:var(--size-control-md);height:var(--size-control-md);font-size:var(--size-icon-md)}.onyx-title-xPfUf{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);color:var(--color-text);margin:0}.onyx-sm-bnLtD .onyx-title-xPfUf{font-size:var(--font-size-md)}.onyx-description-oWwH1{font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text-muted);text-wrap:pretty;margin:0}.onyx-action-dqxw1{gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;justify-content:center;display:flex}.onyx-label-RaRvM{gap:var(--space-1);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal);color:var(--color-text);align-items:baseline;display:inline-flex}.onyx-sm-65Zjw{font-size:var(--font-size-xs)}.onyx-md-Ukw-y{font-size:var(--font-size-sm)}.onyx-label-RaRvM[data-disabled]{color:var(--color-text-disabled)}.onyx-required-Ggrzc{color:var(--color-danger-text)}.onyx-field-NXQSy{gap:var(--space-1);min-width:0;display:grid}.onyx-helper-JuBZ6,.onyx-error-4SHKr{font-size:var(--font-size-sm);line-height:var(--line-height-normal);margin:0}.onyx-helper-JuBZ6{color:var(--color-text-muted)}.onyx-error-4SHKr{gap:var(--space-1);color:var(--color-danger-text);align-items:center;display:flex}.onyx-errorIcon-bd5lg{flex-shrink:0}.onyx-heading-2pnHW{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text);text-wrap:balance;margin:0}.onyx-sm-0p2sS{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.onyx-md--B-e3{font-size:var(--font-size-md);line-height:var(--line-height-normal)}.onyx-lg-LZdYs{font-size:var(--font-size-lg);line-height:var(--line-height-snug)}.onyx-xl-1WQmT{font-size:var(--font-size-xl);line-height:var(--line-height-snug)}.onyx-size2xl-LnbpV{font-size:var(--font-size-2xl)}.onyx-size3xl-mYwix{font-size:var(--font-size-3xl);letter-spacing:var(--letter-spacing-tight)}.onyx-size4xl-holtr{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight)}.onyx-control-ZGiHH{gap:var(--space-2);width:100%;min-width:0;padding-inline:var(--space-3);color:var(--color-text);background-color:var(--color-surface);border:var(--border-width-thin) solid var(--color-border-strong);border-radius:var(--radius-md);transition-timing-function:var(--easing-standard);transition-duration:var(--duration-fast);align-items:center;transition-property:border-color,background-color;display:flex}.onyx-control-ZGiHH:hover{border-color:var(--color-text-muted)}.onyx-control-ZGiHH:is(:focus-visible,:has(:focus-visible)){outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}.onyx-control-ZGiHH[data-invalid]{border-color:var(--color-danger)}.onyx-control-ZGiHH[data-disabled],.onyx-control-ZGiHH:disabled{color:var(--color-text-disabled);cursor:not-allowed;background-color:var(--color-bg-muted);border-color:var(--color-border)}.onyx-control-ZGiHH::placeholder,.onyx-control-ZGiHH ::placeholder{color:var(--color-text-muted);opacity:1}.onyx-control-ZGiHH[data-disabled] ::placeholder,.onyx-control-ZGiHH:disabled::placeholder{color:var(--color-text-disabled)}.onyx-sm-aXs1W{min-height:var(--size-control-sm);font-size:var(--font-size-sm)}.onyx-md-jEzCM{min-height:var(--size-control-md);font-size:var(--font-size-sm)}.onyx-lg-x7h-R{min-height:var(--size-control-lg);font-size:var(--font-size-md)}.onyx-adornment-gUZBa{color:var(--color-text-muted);flex-shrink:0;align-items:center;display:inline-flex}@media (pointer:coarse){.onyx-control-ZGiHH{min-height:var(--size-touch-target)}}.onyx-input-WjT81{min-width:0;color:inherit;background:0 0;border:0;outline:none;flex:1;align-self:stretch;padding:0}.onyx-input-WjT81:disabled{cursor:not-allowed}.onyx-link-Ly-e3{text-decoration-line:underline;text-decoration-thickness:var(--border-width-thin);text-underline-offset:.2em;cursor:pointer;border-radius:var(--radius-sm);transition-timing-function:var(--easing-standard);transition-duration:var(--duration-fast);transition-property:color,text-decoration-color,text-decoration-thickness}.onyx-link-Ly-e3:hover{text-decoration-thickness:var(--border-width-thick)}.onyx-default-RuJIr{color:var(--color-primary-text)}.onyx-default-RuJIr:active{color:var(--color-text)}.onyx-muted-fS2v1{color:var(--color-text-muted)}.onyx-muted-fS2v1:hover{color:var(--color-text)}.onyx-inherit-5mXEJ{color:inherit}.onyx-externalIcon-5jtwn{font-size:.875em}.onyx-pagination-icb-v{--pagination-size:var(--size-control-md)}.onyx-sm-I5fYv{--pagination-size:var(--size-control-sm)}.onyx-list-9X-O7{gap:var(--space-1);flex-wrap:wrap;align-items:center;margin:0;padding:0;list-style:none;display:flex}.onyx-button---Saq{min-width:var(--pagination-size);height:var(--pagination-size);padding-inline:var(--space-2);font:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;color:var(--color-text);cursor:pointer;border:var(--border-width-thin) solid transparent;border-radius:var(--radius-md);transition-timing-function:var(--easing-standard);transition-duration:var(--duration-fast);background:0 0;justify-content:center;align-items:center;transition-property:background-color,border-color,color;display:inline-flex}.onyx-button---Saq:hover:not([aria-disabled=true],[aria-current=page]){background-color:var(--color-state-hover)}.onyx-button---Saq:active:not([aria-disabled=true],[aria-current=page]){background-color:var(--color-state-active)}.onyx-button---Saq[aria-current=page]{color:var(--color-on-primary);cursor:default;background-color:var(--color-primary)}.onyx-button---Saq[aria-disabled=true]{color:var(--color-text-disabled);cursor:not-allowed}.onyx-step-B5YFK{border-color:var(--color-border)}.onyx-icon-2iCyv{font-size:var(--size-icon-sm)}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .onyx-icon-2iCyv{scale:-1 1}.onyx-ellipsis-V294k{min-width:var(--pagination-size);color:var(--color-text-muted);justify-content:center;align-items:center;display:inline-flex}@media (pointer:coarse){.onyx-pagination-icb-v{--pagination-size:var(--size-touch-target)}}.onyx-popover-E9K9X{z-index:var(--z-index-dropdown);width:max-content;max-width:min(var(--size-overlay-sm), calc(100vw - var(--space-4)));font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-surface-raised);border:var(--border-width-thin) solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:onyx-popover-in-NFEj3 var(--duration-fast) var(--easing-enter);flex-direction:column;display:flex;overflow:auto}.onyx-popover-E9K9X:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}.onyx-header-u8-jn{gap:var(--space-2);padding:var(--space-3) var(--space-3) 0 var(--space-4);justify-content:space-between;align-items:flex-start;display:flex}.onyx-title-hAl5w{padding-top:var(--space-1);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);line-height:var(--line-height-snug);margin:0}.onyx-close-8JGfL{flex-shrink:0;margin-inline-start:auto}.onyx-body-d6SIw{gap:var(--space-3);padding:var(--space-3) var(--space-4) var(--space-4);display:grid}@keyframes onyx-popover-in-NFEj3{0%{opacity:0;scale:.96}}.onyx-progress-kXacs{--progress-height:var(--space-2);--progress-fill:var(--color-primary);gap:var(--space-2);min-width:0;display:grid}.onyx-sm-dJVor{--progress-height:var(--space-1)}.onyx-lg-O8QuY{--progress-height:var(--space-3)}.onyx-success-gWJ8U{--progress-fill:var(--color-success)}.onyx-warning-DGkPO{--progress-fill:var(--color-warning)}.onyx-danger-gfwHh{--progress-fill:var(--color-danger)}.onyx-header-8GZza{gap:var(--space-2);font-size:var(--font-size-sm);justify-content:space-between;align-items:baseline;display:flex}.onyx-label-qqHJM{font-weight:var(--font-weight-medium);color:var(--color-text)}.onyx-value-ZM8Yk{font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.onyx-track-RVIao{height:var(--progress-height);background-color:var(--color-bg-muted);border-radius:var(--radius-full);position:relative;overflow:hidden}.onyx-bar-uC-0x{--progress-value:0;width:calc(var(--progress-value) * 100%);background-color:var(--progress-fill);border-radius:inherit;height:100%;transition:width var(--duration-slow) var(--easing-standard)}.onyx-track-RVIao[data-indeterminate] .onyx-bar-uC-0x{width:40%;animation:onyx-indeterminate-HojUj calc(var(--duration-slower) * 3) var(--easing-standard) infinite}@keyframes onyx-indeterminate-HojUj{0%{translate:-100%}to{translate:250%}}@media (prefers-reduced-motion:reduce){.onyx-track-RVIao[data-indeterminate] .onyx-bar-uC-0x{opacity:.5;width:100%;animation:none}}.onyx-group-YXEnI{gap:var(--space-2);min-width:0;display:grid}.onyx-label-MxI-w{gap:var(--space-1);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);display:inline-flex}.onyx-label-MxI-w[data-disabled]{color:var(--color-text-disabled)}.onyx-required-9kFI3{color:var(--color-danger-text)}.onyx-description-8L4Im{font-size:var(--font-size-sm);color:var(--color-text-muted)}.onyx-options-Ijq3w{gap:var(--space-2);display:flex}.onyx-vertical-VIcHp{flex-direction:column}.onyx-horizontal-vsHUV{column-gap:var(--space-6);flex-wrap:wrap}.onyx-error-lrqsC{gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-danger-text);align-items:center;display:flex}.onyx-errorIcon-irE1w{flex-shrink:0}.onyx-box-jJzYW{border-radius:var(--radius-full)}.onyx-box-jJzYW[data-invalid]{border-color:var(--color-danger)}.onyx-box-jJzYW:after{content:"";border-radius:var(--radius-full);width:40%;height:40%;transition:transform var(--duration-fast) var(--easing-standard);background-color:currentColor;transform:scale(0)}:checked+.onyx-box-jJzYW:after{transform:scale(1)}.onyx-wrapper-KS2K3{width:100%;min-width:0;display:flex;position:relative}.onyx-select-cjdcr{text-overflow:ellipsis;cursor:pointer;appearance:none;padding-inline-end:calc(var(--space-3) * 2 + var(--size-icon-sm))}.onyx-select-cjdcr:has(option[value=""]:checked){color:var(--color-text-muted)}.onyx-select-cjdcr option{color:var(--color-text)}.onyx-multiple-cwGEC{padding-block:var(--space-2);padding-inline-end:var(--space-3)}.onyx-chevron-PLUsh{width:var(--size-icon-sm);height:100%;color:var(--color-text-muted);pointer-events:none;position:absolute;inset-block:0;inset-inline-end:var(--space-3)}.onyx-select-cjdcr:disabled+.onyx-chevron-PLUsh{color:var(--color-text-disabled)}.onyx-skeleton-CB4uF{background-color:var(--color-bg-muted);background-image:linear-gradient(90deg, transparent, color-mix(in srgb, var(--color-surface) 60%, transparent), transparent);animation:onyx-shimmer-lXHal calc(var(--duration-slower) * 3) var(--easing-standard) infinite;background-repeat:no-repeat;background-size:50% 100%;display:block}.onyx-text--A8IF{border-radius:var(--radius-sm);background-clip:content-box;width:100%;height:1lh;padding-block:.2lh}.onyx-rect-do1uR{width:100%;height:var(--space-24);border-radius:var(--radius-md)}.onyx-circle-DYcl8{width:var(--size-control-md);height:var(--size-control-md);border-radius:var(--radius-full)}.onyx-lines-AvXPO{display:block}.onyx-lines-AvXPO>.onyx-text--A8IF:last-child:not(:first-child){width:60%}@keyframes onyx-shimmer-lXHal{0%{background-position:-100% 0}to{background-position:200% 0}}@media (prefers-reduced-motion:reduce){.onyx-skeleton-CB4uF{background-image:none;animation:none}}.onyx-slider-fNm-S{--slider-progress:0%;--slider-track:var(--space-1);--slider-thumb:var(--size-icon-md);--slider-fill:var(--color-primary);--slider-ring:0 0 0 var(--focus-ring-offset) var(--color-surface), 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--color-focus);gap:var(--space-3);align-items:center;width:100%;min-width:0;display:flex}.onyx-sm-ZHpcb{--slider-track:var(--space-1);--slider-thumb:var(--size-icon-sm)}.onyx-lg-qZ1wE{--slider-track:var(--space-2);--slider-thumb:var(--size-icon-lg)}.onyx-input-J48Um{min-width:0;height:var(--slider-thumb);cursor:pointer;appearance:none;background:0 0;flex:1;margin:0}.onyx-input-J48Um:focus-visible{outline:none}.onyx-input-J48Um::-webkit-slider-runnable-track{height:var(--slider-track);background:linear-gradient(to right, var(--slider-fill) var(--slider-progress), var(--color-bg-muted) var(--slider-progress));border-radius:var(--radius-full)}.onyx-input-J48Um::-moz-range-track{height:var(--slider-track);background-color:var(--color-bg-muted);border-radius:var(--radius-full)}.onyx-input-J48Um::-moz-range-progress{height:var(--slider-track);background-color:var(--slider-fill);border-radius:var(--radius-full)}.onyx-input-J48Um::-webkit-slider-thumb{width:var(--slider-thumb);height:var(--slider-thumb);margin-top:calc((var(--slider-track) - var(--slider-thumb)) / 2);background-color:var(--color-surface);border:var(--border-width-thick) solid var(--slider-fill);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);transition:transform var(--duration-fast) var(--easing-standard);appearance:none}.onyx-input-J48Um::-moz-range-thumb{box-sizing:border-box;width:var(--slider-thumb);height:var(--slider-thumb);background-color:var(--color-surface);border:var(--border-width-thick) solid var(--slider-fill);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);transition:transform var(--duration-fast) var(--easing-standard)}.onyx-input-J48Um:hover:not(:disabled)::-webkit-slider-thumb{transform:scale(1.1)}.onyx-input-J48Um:hover:not(:disabled)::-moz-range-thumb{transform:scale(1.1)}.onyx-input-J48Um:focus-visible::-webkit-slider-thumb{box-shadow:var(--slider-ring)}.onyx-input-J48Um:focus-visible::-moz-range-thumb{box-shadow:var(--slider-ring)}.onyx-input-J48Um:active:not(:disabled)::-webkit-slider-thumb{background-color:var(--color-primary-subtle)}.onyx-input-J48Um:active:not(:disabled)::-moz-range-thumb{background-color:var(--color-primary-subtle)}.onyx-slider-fNm-S:has(.onyx-input-J48Um[data-invalid]){--slider-fill:var(--color-danger)}.onyx-slider-fNm-S:has(.onyx-input-J48Um:disabled){--slider-fill:var(--color-text-disabled)}.onyx-input-J48Um:disabled{cursor:not-allowed}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .onyx-input-J48Um::-webkit-slider-runnable-track{background:linear-gradient(to left, var(--slider-fill) var(--slider-progress), var(--color-bg-muted) var(--slider-progress))}.onyx-value--33zj{min-width:3ch;font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;color:var(--color-text);text-align:end}@media (pointer:coarse){.onyx-input-J48Um{height:var(--size-touch-target)}}.onyx-switch-hgdMu{--switch-gap:var(--border-width-thick);--switch-width:calc(var(--choice-size) * 1.8);--switch-thumb:calc(var(--choice-size) - var(--switch-gap) * 2);--switch-travel:calc(var(--switch-width) - var(--switch-thumb) - var(--switch-gap) * 2)}.onyx-track-7ObdZ{width:var(--switch-width);padding-inline:var(--switch-gap);background-color:var(--color-border-strong);border-radius:var(--radius-full);border:0;justify-items:start}.onyx-thumb--FTeK{width:var(--switch-thumb);height:var(--switch-thumb);background-color:var(--color-surface);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);transition:translate var(--duration-normal) var(--easing-standard)}:checked+.onyx-track-7ObdZ .onyx-thumb--FTeK{translate:var(--switch-travel)}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) :checked+.onyx-track-7ObdZ .onyx-thumb--FTeK{translate:calc(var(--switch-travel) * -1)}:hover:not(:disabled,:checked)+.onyx-track-7ObdZ{background-color:var(--color-text-muted)}:disabled+.onyx-track-7ObdZ{background-color:var(--color-bg-muted)}:disabled+.onyx-track-7ObdZ .onyx-thumb--FTeK{background-color:var(--color-text-disabled);box-shadow:none}.onyx-wrapper-Qd7Cl{background-color:var(--color-surface);border:var(--border-width-thin) solid var(--color-border);border-radius:var(--radius-lg);max-width:100%;overflow:auto}.onyx-wrapper-Qd7Cl:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}.onyx-table-Dkosn{--table-cell-y:var(--space-3);--table-cell-x:var(--space-4);width:100%;font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text);border-collapse:separate;border-spacing:0}.onyx-compact-haE8n{--table-cell-y:var(--space-2);--table-cell-x:var(--space-3)}.onyx-caption-9vU1I{padding:var(--space-3) var(--table-cell-x);font-weight:var(--font-weight-semibold);text-align:start;caption-side:top}.onyx-hidden-3k90-{width:var(--border-width-thin);height:var(--border-width-thin);clip-path:inset(50%);white-space:nowrap;position:absolute;overflow:hidden}.onyx-headerCell-vZciR{padding:var(--table-cell-y) var(--table-cell-x);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-align:start;white-space:nowrap;background-color:var(--color-bg-subtle);border-bottom:var(--border-width-thin) solid var(--color-border)}.onyx-sticky-QfxLu .onyx-headerCell-vZciR{z-index:1;position:sticky;top:0}.onyx-headerCell-vZciR:has(.onyx-sortButton-V9clQ){padding:0}.onyx-sortButton-V9clQ{--focus-ring-offset:calc(var(--focus-ring-width) * -1);gap:var(--space-1);width:100%;min-height:var(--size-control-md);padding:var(--table-cell-y) var(--table-cell-x);font:inherit;color:inherit;text-align:inherit;cursor:pointer;transition:color var(--duration-fast) var(--easing-standard);background:0 0;border:0;align-items:center;display:inline-flex}.onyx-sortButton-V9clQ:hover{color:var(--color-text);background-color:var(--color-state-hover)}.onyx-sortButton-V9clQ:active{background-color:var(--color-state-active)}.onyx-end-eOUuQ .onyx-sortButton-V9clQ{flex-direction:row-reverse}.onyx-center-kj838 .onyx-sortButton-V9clQ{justify-content:center}.onyx-sortIcon-V3-dH{font-size:var(--size-icon-sm);opacity:.6;flex-shrink:0}.onyx-sortIconActive-zctsc{color:var(--color-primary-text);opacity:1}.onyx-cell-nJrDK{padding:var(--table-cell-y) var(--table-cell-x);text-align:start;vertical-align:middle;border-bottom:var(--border-width-thin) solid var(--color-border)}.onyx-rowHeader-BTDF0{font-weight:var(--font-weight-medium)}.onyx-row-DD8Km:last-child .onyx-cell-nJrDK{border-bottom:0}.onyx-row-DD8Km:hover{background-color:var(--color-state-hover)}.onyx-striped-5BaG7 .onyx-row-DD8Km:nth-child(2n){background-color:var(--color-bg-subtle)}.onyx-striped-5BaG7 .onyx-row-DD8Km:nth-child(2n):hover{background-image:linear-gradient(var(--color-state-hover), var(--color-state-hover))}.onyx-center-kj838{text-align:center}.onyx-end-eOUuQ{text-align:end;font-variant-numeric:tabular-nums}.onyx-empty-O1nyD{padding:var(--space-8) var(--table-cell-x);color:var(--color-text-muted);text-align:center}.onyx-table-Dkosn[aria-busy=true] tbody{opacity:.6}@media (pointer:coarse){.onyx-sortButton-V9clQ{min-height:var(--size-touch-target)}}.onyx-focusRing-qmcYD:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}.onyx-tabs-QzIkz{--tabs-height:var(--size-control-md);gap:var(--space-4);flex-direction:column;min-width:0;display:flex}.onyx-vertical-W3hzW{flex-direction:row}.onyx-sm-b6EPY{--tabs-height:var(--size-control-sm)}.onyx-list-qRVME{scrollbar-width:thin;min-width:0;display:flex;overflow-x:auto}.onyx-vertical-W3hzW .onyx-list-qRVME{flex-direction:column;flex-shrink:0;overflow:visible}.onyx-tab-IdDYc{--focus-ring-offset:calc(var(--focus-ring-width) * -1);gap:var(--space-2);min-height:var(--tabs-height);padding-inline:var(--space-4);font:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);white-space:nowrap;cursor:pointer;border-radius:var(--radius-md);transition-timing-function:var(--easing-standard);transition-duration:var(--duration-fast);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;transition-property:color,background-color,box-shadow;display:inline-flex;position:relative}.onyx-tab-IdDYc:hover:not(:disabled),.onyx-tab-IdDYc[aria-selected=true]{color:var(--color-text)}.onyx-tab-IdDYc:disabled{color:var(--color-text-disabled);cursor:not-allowed}.onyx-line-TQjAo .onyx-list-qRVME{gap:var(--space-1);box-shadow:inset 0 calc(var(--border-width-thin) * -1) 0 var(--color-border)}.onyx-line-TQjAo .onyx-tab-IdDYc{border-radius:var(--radius-md) var(--radius-md) 0 0}.onyx-line-TQjAo .onyx-tab-IdDYc:hover:not(:disabled){background-color:var(--color-state-hover)}.onyx-line-TQjAo .onyx-tab-IdDYc[aria-selected=true]{box-shadow:inset 0 calc(var(--border-width-thick) * -1) 0 var(--color-primary)}.onyx-line-TQjAo.onyx-vertical-W3hzW .onyx-list-qRVME{box-shadow:inset calc(var(--border-width-thin) * -1) 0 0 var(--color-border)}.onyx-line-TQjAo.onyx-vertical-W3hzW .onyx-tab-IdDYc{border-radius:var(--radius-md) 0 0 var(--radius-md);justify-content:flex-start}.onyx-line-TQjAo.onyx-vertical-W3hzW .onyx-tab-IdDYc[aria-selected=true]{box-shadow:inset calc(var(--border-width-thick) * -1) 0 0 var(--color-primary)}.onyx-solid-OvGOc .onyx-list-qRVME{gap:var(--space-1);max-width:100%;padding:var(--space-1);background-color:var(--color-bg-muted);border-radius:var(--radius-lg);align-self:flex-start}.onyx-solid-OvGOc .onyx-tab-IdDYc:hover:not(:disabled,[aria-selected=true]){background-color:var(--color-state-hover)}.onyx-solid-OvGOc .onyx-tab-IdDYc[aria-selected=true]{background-color:var(--color-surface);box-shadow:var(--shadow-sm)}.onyx-panel-08i9c{border-radius:var(--radius-md);flex:1;min-width:0}.onyx-panel-08i9c:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}@media (pointer:coarse){.onyx-tab-IdDYc{min-height:var(--size-touch-target)}}.onyx-text-78lq0{--text-lines:2;margin:0}.onyx-sizeInherit-G4GMi{font-size:inherit}.onyx-sizeXs-9Ok-b{font-size:var(--font-size-xs);line-height:var(--line-height-normal)}.onyx-sizeSm-2Oiat{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.onyx-sizeMd-k9dGF{font-size:var(--font-size-md);line-height:var(--line-height-normal)}.onyx-sizeLg-7aFQL{font-size:var(--font-size-lg);line-height:var(--line-height-relaxed)}.onyx-sizeXl-LpJtS{font-size:var(--font-size-xl);line-height:var(--line-height-relaxed)}.onyx-regular-Lo8tB{font-weight:var(--font-weight-regular)}.onyx-medium-xqpTE{font-weight:var(--font-weight-medium)}.onyx-semibold-yUnFf{font-weight:var(--font-weight-semibold)}.onyx-bold-lOfLu{font-weight:var(--font-weight-bold)}.onyx-toneDefault-7B4RK{color:var(--color-text)}.onyx-toneMuted-MN5MD{color:var(--color-text-muted)}.onyx-toneInherit-rraUC{color:inherit}.onyx-tonePrimary-pBMCm{color:var(--color-primary-text)}.onyx-toneSuccess-DtrGc{color:var(--color-success-text)}.onyx-toneWarning-F8qKI{color:var(--color-warning-text)}.onyx-toneDanger-rEOI6{color:var(--color-danger-text)}.onyx-toneInfo-meG5F{color:var(--color-info-text)}.onyx-start-du0tX{text-align:start}.onyx-center-AiQMQ{text-align:center}.onyx-end-BY5dh{text-align:end}.onyx-truncate-WVdAt{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.onyx-clamp-KKAQd{-webkit-line-clamp:var(--text-lines);line-clamp:var(--text-lines);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.onyx-textarea-Z-y6g{--textarea-rows:3;padding-block:var(--space-2);line-height:var(--line-height-normal);display:block}.onyx-none-nYidn{resize:none}.onyx-vertical-J6yKE{resize:vertical}.onyx-both-gSk8o{resize:both}.onyx-autoResize-VaNSp{field-sizing:content;min-height:calc(var(--textarea-rows) * 1lh + var(--space-2) * 2)}.onyx-viewport-5YhJF{z-index:var(--z-index-toast);width:min(var(--size-overlay-sm), calc(100% - var(--space-4) * 2));max-height:100dvh;padding:var(--space-4);pointer-events:none;box-sizing:content-box;display:flex;position:fixed}.onyx-topStart-0XZdj,.onyx-topCenter-zZRNd,.onyx-topEnd-FVWcz{top:0}.onyx-bottomStart-6E4W-,.onyx-bottomCenter-F5vQK,.onyx-bottomEnd-L7DQ-{bottom:0}.onyx-topStart-0XZdj,.onyx-bottomStart-6E4W-{inset-inline-start:0}.onyx-topEnd-FVWcz,.onyx-bottomEnd-L7DQ-{inset-inline-end:0}.onyx-topCenter-zZRNd,.onyx-bottomCenter-F5vQK{left:50%;translate:-50%}.onyx-list-f-3zk{gap:var(--space-2);flex-direction:column;flex:1;margin:0;padding:0;list-style:none;display:flex}:is(.onyx-bottomStart-6E4W-,.onyx-bottomCenter-F5vQK,.onyx-bottomEnd-L7DQ-) .onyx-list-f-3zk{justify-content:flex-end}.onyx-toast-FLdHz{--toast-accent:var(--color-text-muted);gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text);pointer-events:auto;background-color:var(--color-surface-raised);border:var(--border-width-thin) solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:onyx-toast-in-s3-NH var(--duration-normal) var(--easing-enter);align-items:flex-start;display:flex}.onyx-toast-FLdHz:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}.onyx-info-eq5bQ{--toast-accent:var(--color-info-text)}.onyx-success-Oy694{--toast-accent:var(--color-success-text)}.onyx-warning-84GC8{--toast-accent:var(--color-warning-text)}.onyx-danger-zx8Tv{--toast-accent:var(--color-danger-text)}.onyx-icon-VwvE1{height:1lh;color:var(--toast-accent);flex-shrink:0;align-items:center;display:inline-flex}.onyx-icon-VwvE1>svg{width:var(--size-icon-md);height:var(--size-icon-md)}.onyx-content-U6Xwq{gap:var(--space-1);flex:1;min-width:0;display:grid}.onyx-title--H6R2{font-weight:var(--font-weight-semibold);margin:0}.onyx-description--QwfC{color:var(--color-text-muted)}.onyx-action--b4jg{margin-top:var(--space-1);justify-self:start}.onyx-dismiss-fj0MP{margin-block:calc(var(--space-1) * -1)}@keyframes onyx-toast-in-s3-NH{0%{opacity:0;translate:0 var(--space-2)}}:is(.onyx-topStart-0XZdj,.onyx-topCenter-zZRNd,.onyx-topEnd-FVWcz) .onyx-toast-FLdHz{animation-name:onyx-toast-in-top-jN2e1}@keyframes onyx-toast-in-top-jN2e1{0%{opacity:0;translate:0 calc(var(--space-2) * -1)}}.onyx-tooltip-UA7H9{z-index:var(--z-index-tooltip);max-width:var(--size-tooltip);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs);line-height:var(--line-height-normal);color:var(--color-text-inverse);overflow-wrap:break-word;background-color:var(--color-bg-inverse);border-radius:var(--radius-md);box-shadow:var(--shadow-md);animation:onyx-tooltip-in-mJXdG var(--duration-fast) var(--easing-enter)}@keyframes onyx-tooltip-in-mJXdG{0%{opacity:0}}
|
|
2
|
+
/*$vite$:1*/
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimum viewport widths. CSS custom properties can't be read inside `@media`, so the
|
|
3
|
+
* `--breakpoint-*` variables are for reference and JavaScript (`matchMedia`); media queries
|
|
4
|
+
* have to repeat these values.
|
|
5
|
+
*/
|
|
6
|
+
export declare const breakpoints: {
|
|
7
|
+
readonly sm: "640px";
|
|
8
|
+
readonly md: "768px";
|
|
9
|
+
readonly lg: "1024px";
|
|
10
|
+
readonly xl: "1280px";
|
|
11
|
+
readonly '2xl': "1536px";
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.js","names":["breakpoints"],"sources":["../../src/tokens/breakpoints.ts"],"sourcesContent":["/**\n * Minimum viewport widths. CSS custom properties can't be read inside `@media`, so the\n * `--breakpoint-*` variables are for reference and JavaScript (`matchMedia`); media queries\n * have to repeat these values.\n */\nexport const breakpoints = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n} as const;\n"],"mappings":";AAKA,IAAaA,IAAc;CACzB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;AACT"}
|