@01.software/ui 0.2.0 → 0.2.3

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 CHANGED
@@ -1,5 +1,30 @@
1
1
  # @01.software/ui
2
2
 
3
+ ## 0.2.3
4
+
5
+ ### Patch Changes
6
+
7
+ - c621ec1: Unify keyboard focus around shared width, color and offset tokens: a muted 1px
8
+ outline with a 2px outer offset, inset menu indicators and destructive invalid
9
+ fields. Preserve existing `--ui-focus` and `--ui-focus-on-solid` color overrides and
10
+ preserve the system high-contrast fallback.
11
+
12
+ ## 0.2.2
13
+
14
+ ### Patch Changes
15
+
16
+ - 4e22218: Use a muted 1px inset keyboard focus indicator, with compact-control and checked-state contrast handling. Preserve invalid-field focus and system high-contrast visibility. Document card focus ownership and the existing TabsContent tabIndex opt-out.
17
+
18
+ Align compact tab triggers with the default 28px minimum height and let long labels wrap without overflowing their inner highlight. Apply the shared inset focus treatment to standalone command-menu triggers as well as composed controls.
19
+
20
+ Keep dropdown, context and menubar submenus within Radix’s available width on narrow screens.
21
+
22
+ ## 0.2.1
23
+
24
+ ### Patch Changes
25
+
26
+ - f27ede2: Keep the newly opened `Menubar` menu open when the pointer moves between open menus while the previous menu plays its exit motion.
27
+
3
28
  ## 0.2.0
4
29
 
5
30
  ### Minor Changes
package/README.md CHANGED
@@ -95,8 +95,21 @@ and Button heights align at 32px; compact Button/Select sizes are 28px. Let
95
95
  long labels wrap and use responsive Field layout where labels need more room.
96
96
 
97
97
  Tabs use a compact segmented tray by default; `variant="line"` and vertical
98
- orientation support denser settings/navigation. All interactive primitives keep
99
- visible keyboard focus. Typography remains inherited from the consumer.
98
+ orientation support denser settings/navigation. Both default and
99
+ `visual="compact"` triggers have a 28px minimum height; longer labels may wrap
100
+ and grow instead of overflowing. The compact inner highlight stays within its
101
+ trigger. All interactive primitives keep visible keyboard focus: a muted 1px outline
102
+ with a 2px outer offset. Menu/list items use a -1px inset so the indicator
103
+ stays inside the popup. Invalid fields, including checked controls, use the
104
+ destructive focus color. Forced colors use a system-colored 2px outline.
105
+ Typography remains inherited from the consumer. The package does not install
106
+ global input listeners; applications may choose their own modality policy.
107
+
108
+ Informational cards do not need `tabIndex`. Use a native link or button when the
109
+ whole card is an action, with no nested interactive controls. When a card has
110
+ inner actions, only those controls participate in Tab navigation. `TabsContent`
111
+ remains focusable by default for text-only content; use `tabIndex={-1}` on a
112
+ panel whose content already provides an appropriate first focus target.
100
113
 
101
114
  ## Styles, themes and overrides
102
115
 
@@ -112,8 +125,15 @@ scale/height travel while preserving opacity feedback. The `--ui-surface` token
112
125
  surface in dark mode; consumers can override it alongside the existing palette.
113
126
  Public theme tokens are
114
127
  `--foreground`, `--background`, `--muted-foreground`, `--border`,
115
- `--destructive`, `--paper`, `--ink` and `--ink-muted`. Token names and default
116
- states are subject to semver.
128
+ `--destructive`, `--paper`, `--ink`, `--ink-muted`, plus
129
+ `--focus-ring-width`, `--focus-ring-color`, `--focus-ring-offset` and
130
+ `--focus-ring-inset-offset`. The default color mixes ink 65% with paper in both
131
+ themes. Primitives read the public `--ui-focus` color and checked/indeterminate
132
+ Checkbox and checked Switch read `--ui-focus-on-solid`. Both default to
133
+ `--focus-ring-color`, so existing overrides on the root, a theme or a control
134
+ continue to work. Invalid fields retain `--destructive` instead of the solid
135
+ customization. Set the canonical default color on the root/theme alongside its
136
+ aliases, or override the public color variables directly for a subtree. Token names and default states are subject to semver.
117
137
 
118
138
  This is a global stylesheet with unprefixed utility/token names; coexistence
119
139
  with another system defining the same names is outside the support boundary.
@@ -153,3 +173,6 @@ LICENSE and THIRD_PARTY_NOTICES.md contain the existing MIT distribution and
153
173
  shadcn/Tailwind attribution. Consumer-installed peers/dependencies retain their
154
174
  licenses. Web fonts are not distributed. Source/tag evidence is not an npm
155
175
  provenance attestation for this private repository.
176
+
177
+ Submenus constrain both their minimum and maximum width to the space Radix
178
+ reports as available, so nested menus remain inside narrow viewports.
package/dist/accordion.js CHANGED
@@ -8,7 +8,7 @@ function AccordionItem({ className, ...props }) {
8
8
  return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn('rounded-sm', className), ...props }));
9
9
  }
10
10
  function AccordionTrigger({ className, children, ...props }) {
11
- return (_jsx(AccordionPrimitive.Header, { "data-slot": "accordion-header", className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn('group hover:bg-foreground/5 flex min-h-8 flex-1 items-center justify-between gap-3 rounded-sm px-2 py-2 text-left text-xs font-medium hover:no-underline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:pointer-events-none disabled:opacity-50', className), ...props, children: [children, _jsx(ChevronDown, { "aria-hidden": "true", className: "text-muted-foreground size-3 shrink-0 transition-transform group-data-[state=open]:rotate-180 motion-reduce:transition-none" })] }) }));
11
+ return (_jsx(AccordionPrimitive.Header, { "data-slot": "accordion-header", className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn('group hover:bg-foreground/5 flex min-h-8 flex-1 items-center justify-between gap-3 rounded-sm px-2 py-2 text-left text-xs font-medium hover:no-underline focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:pointer-events-none disabled:opacity-50', className), ...props, children: [children, _jsx(ChevronDown, { "aria-hidden": "true", className: "text-muted-foreground size-3 shrink-0 transition-transform group-data-[state=open]:rotate-180 motion-reduce:transition-none" })] }) }));
12
12
  }
13
13
  function AccordionContent({ className, children, ...props }) {
14
14
  return (_jsx(AccordionPrimitive.Content, { "data-slot": "accordion-content", className: "motion-collapse", ...props, children: _jsx("div", { className: cn('text-muted-foreground px-2 pt-1 pb-3 text-xs leading-relaxed', className), children: children }) }));
package/dist/badge.js CHANGED
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Slot } from 'radix-ui';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { cn } from './internal/cn.js';
5
- const badgeVariants = cva('inline-flex min-h-5 w-fit shrink-0 items-center justify-center gap-1 rounded-sm px-1.5 py-0.5 text-[0.6875rem] leading-none font-medium whitespace-nowrap [&_svg]:size-3 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)]', {
5
+ const badgeVariants = cva('inline-flex min-h-5 w-fit shrink-0 items-center justify-center gap-1 rounded-sm px-1.5 py-0.5 text-[0.6875rem] leading-none font-medium whitespace-nowrap [&_svg]:size-3 [&_svg]:shrink-0 focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)]', {
6
6
  variants: {
7
7
  variant: {
8
8
  default: 'bg-foreground/10 text-foreground',
package/dist/button.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cva } from 'class-variance-authority';
3
3
  import { cn } from './internal/cn.js';
4
- const buttonVariants = cva("no-underline hover:no-underline inline-flex items-center justify-center gap-1 rounded-sm text-xs leading-none whitespace-nowrap transition-colors active:opacity-100 [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] disabled:pointer-events-none disabled:opacity-50", {
4
+ const buttonVariants = cva("no-underline hover:no-underline inline-flex items-center justify-center gap-1 rounded-sm text-xs leading-none whitespace-nowrap transition-colors active:opacity-100 [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5 focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] disabled:pointer-events-none disabled:opacity-50", {
5
5
  variants: {
6
6
  variant: {
7
7
  default: 'bg-[color-mix(in_oklab,var(--ink)_14%,transparent)] font-medium text-[var(--ink)] hover:bg-[color-mix(in_oklab,var(--ink)_18%,transparent)]',
package/dist/checkbox.js CHANGED
@@ -4,6 +4,6 @@ import { Checkbox as CheckboxPrimitive } from 'radix-ui';
4
4
  import { Check, Minus } from 'lucide-react';
5
5
  import { cn } from './internal/cn.js';
6
6
  function Checkbox({ className, ...props }) {
7
- return (_jsx(CheckboxPrimitive.Root, { "data-slot": "checkbox", className: cn("peer border-foreground/50 text-background aria-invalid:border-destructive aria-invalid:data-[state=checked]:border-destructive aria-invalid:data-[state=indeterminate]:border-destructive data-[state=checked]:border-foreground data-[state=checked]:bg-foreground data-[state=indeterminate]:border-foreground data-[state=indeterminate]:bg-foreground relative grid size-4 shrink-0 place-items-center rounded-sm border bg-[var(--paper)] shadow-xs transition-colors outline-none before:absolute before:-inset-1 before:content-[''] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)] motion-reduce:transition-none", className), ...props, children: _jsxs(CheckboxPrimitive.Indicator, { "data-slot": "checkbox-indicator", className: "group/indicator grid place-items-center", children: [_jsx(Check, { "aria-hidden": "true", className: "size-3 group-data-[state=indeterminate]/indicator:hidden" }), _jsx(Minus, { "aria-hidden": "true", className: "size-3 group-data-[state=checked]/indicator:hidden" })] }) }));
7
+ return (_jsx(CheckboxPrimitive.Root, { "data-slot": "checkbox", className: cn("peer border-foreground/50 text-background aria-invalid:border-destructive aria-invalid:data-[state=checked]:border-destructive aria-invalid:data-[state=indeterminate]:border-destructive data-[state=checked]:border-foreground data-[state=checked]:bg-foreground data-[state=indeterminate]:border-foreground data-[state=indeterminate]:bg-foreground relative grid size-4 shrink-0 place-items-center rounded-sm border bg-[var(--paper)] shadow-xs transition-colors outline-none before:absolute before:-inset-1 before:content-[''] focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)] data-[state=checked]:focus-visible:outline-[var(--ui-focus-on-solid)] aria-invalid:data-[state=checked]:focus-visible:outline-[var(--destructive)] data-[state=indeterminate]:focus-visible:outline-[var(--ui-focus-on-solid)] aria-invalid:data-[state=indeterminate]:focus-visible:outline-[var(--destructive)] motion-reduce:transition-none", className), ...props, children: _jsxs(CheckboxPrimitive.Indicator, { "data-slot": "checkbox-indicator", className: "group/indicator grid place-items-center", children: [_jsx(Check, { "aria-hidden": "true", className: "size-3 group-data-[state=indeterminate]/indicator:hidden" }), _jsx(Minus, { "aria-hidden": "true", className: "size-3 group-data-[state=checked]/indicator:hidden" })] }) }));
8
8
  }
9
9
  export { Checkbox };
@@ -6,7 +6,7 @@ export declare function CommandMenuRoot({ mode, children, }: {
6
6
  mode?: Mode;
7
7
  children: ReactNode;
8
8
  }): import("react/jsx-runtime").JSX.Element;
9
- export declare function CommandMenuTrigger(props: ComponentProps<typeof DropdownMenu.Trigger>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function CommandMenuTrigger({ className, ...props }: ComponentProps<typeof DropdownMenu.Trigger>): import("react/jsx-runtime").JSX.Element;
10
10
  export declare function CommandMenuContent({ className, children, ...props }: ComponentProps<typeof ContextMenu.Content>): import("react/jsx-runtime").JSX.Element;
11
11
  export declare function CommandMenuItem({ className, inset, variant, ...props }: ComponentProps<typeof DropdownMenu.Item> & {
12
12
  inset?: boolean;
@@ -12,9 +12,9 @@ export function CommandMenuRoot({ mode = 'dropdown', children, }) {
12
12
  const Root = mode === 'context' ? ContextMenu.Root : DropdownMenu.Root;
13
13
  return (_jsx(ModeContext.Provider, { value: mode, children: _jsx(Root, { children: children }) }));
14
14
  }
15
- export function CommandMenuTrigger(props) {
15
+ export function CommandMenuTrigger({ className, ...props }) {
16
16
  const P = useParts();
17
- return _jsx(P.Trigger, { "data-slot": "command-menu-trigger", ...props });
17
+ return (_jsx(P.Trigger, { "data-slot": "command-menu-trigger", className: cn('focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid', className), ...props }));
18
18
  }
19
19
  export function CommandMenuContent({ className, children, ...props }) {
20
20
  const mode = useContext(ModeContext);
@@ -64,6 +64,6 @@ export function CommandMenuSubContent({ className, ...props }) {
64
64
  const mode = useContext(ModeContext);
65
65
  const P = useParts();
66
66
  return (_jsx(P.Portal, { children: _jsx(P.SubContent, { "data-slot": "command-menu-sub-content", collisionPadding: 16, sideOffset: 4, className: cn(menuContentClassName, mode === 'context'
67
- ? 'max-h-(--radix-context-menu-content-available-height)'
68
- : 'max-h-(--radix-dropdown-menu-content-available-height)', className), ...props }) }));
67
+ ? 'max-h-(--radix-context-menu-content-available-height) max-w-[min(20rem,var(--radix-context-menu-content-available-width))] min-w-[min(12rem,var(--radix-context-menu-content-available-width))] [overflow-wrap:anywhere]'
68
+ : 'max-h-(--radix-dropdown-menu-content-available-height) max-w-[min(20rem,var(--radix-dropdown-menu-content-available-width))] min-w-[min(12rem,var(--radix-dropdown-menu-content-available-width))] [overflow-wrap:anywhere]', className), ...props }) }));
69
69
  }
package/dist/dialog.js CHANGED
@@ -11,7 +11,7 @@ function DialogOverlay({ className, ...props }) {
11
11
  return (_jsx(DialogPrimitive.Overlay, { "data-slot": "dialog-overlay", className: cn('motion-fade fixed inset-0 z-50 bg-black/40', className), ...props }));
12
12
  }
13
13
  function DialogContent({ className, children, showCloseButton = true, closeLabel = '닫기', ...props }) {
14
- return (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn('motion-modal border-foreground/10 fixed top-1/2 left-1/2 z-50 grid max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto rounded-lg border bg-[var(--ui-surface,var(--paper))] p-5 text-xs [overflow-wrap:anywhere] shadow-xl outline-none', className), ...props, children: [children, showCloseButton && (_jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", type: "button", "aria-label": closeLabel, className: "text-muted-foreground hover:bg-foreground/5 hover:text-foreground absolute top-3 right-3 grid size-7 place-items-center rounded-sm hover:no-underline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--ink)] focus-visible:outline-solid", children: _jsx(X, { "aria-hidden": "true", className: "size-3.5" }) }))] })] }));
14
+ return (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn('motion-modal border-foreground/10 fixed top-1/2 left-1/2 z-50 grid max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto rounded-lg border bg-[var(--ui-surface,var(--paper))] p-5 text-xs [overflow-wrap:anywhere] shadow-xl outline-none', className), ...props, children: [children, showCloseButton && (_jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", type: "button", "aria-label": closeLabel, className: "text-muted-foreground hover:bg-foreground/5 hover:text-foreground absolute top-3 right-3 grid size-7 place-items-center rounded-sm hover:no-underline focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid", children: _jsx(X, { "aria-hidden": "true", className: "size-3.5" }) }))] })] }));
15
15
  }
16
16
  function DialogHeader({ className, ...props }) {
17
17
  return (_jsx("div", { "data-slot": "dialog-header", className: cn('grid gap-1.5 pr-6', className), ...props }));
package/dist/input.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cn } from './internal/cn.js';
3
3
  function Input({ className, type, ...props }) {
4
- return (_jsx("input", { type: type, "data-slot": "input", className: cn('border-border placeholder:text-muted-foreground focus-visible:border-foreground aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive bg-foreground/[0.03] hover:bg-foreground/5 h-8 w-full min-w-0 rounded-sm border px-2 py-1 text-xs outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)]', className), ...props }));
4
+ return (_jsx("input", { type: type, "data-slot": "input", className: cn('border-border placeholder:text-muted-foreground aria-invalid:border-destructive aria-invalid:focus-visible:border-destructive bg-foreground/[0.03] hover:bg-foreground/5 h-8 w-full min-w-0 rounded-sm border px-2 py-1 text-xs outline-none focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)]', className), ...props }));
5
5
  }
6
6
  export { Input };
@@ -1,3 +1,3 @@
1
1
  /** Shared neutral menu surfaces; geometry belongs to each Radix positioning primitive. `motion-*` hooks live in motion.css. */
2
- export declare const menuItemClassName = "data-[highlighted]:bg-foreground/[0.08] relative flex min-h-7 cursor-default items-center gap-2 rounded-sm px-2 py-0.5 leading-relaxed no-underline outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
2
+ export declare const menuItemClassName = "data-[highlighted]:bg-foreground/[0.08] relative flex min-h-7 cursor-default items-center gap-2 rounded-sm px-2 py-0.5 leading-relaxed no-underline outline-none focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid focus-visible:outline-offset-[var(--focus-ring-inset-offset)] focus-visible:outline-[var(--ui-focus)] select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
3
3
  export declare const menuContentClassName = "motion-pop border-foreground/10 z-50 max-w-[min(20rem,calc(100vw-2rem))] min-w-48 overflow-y-auto rounded-md border bg-[var(--ui-surface,var(--paper))] p-0.5 text-xs shadow-lg outline-none";
@@ -1,3 +1,3 @@
1
1
  /** Shared neutral menu surfaces; geometry belongs to each Radix positioning primitive. `motion-*` hooks live in motion.css. */
2
- export const menuItemClassName = 'data-[highlighted]:bg-foreground/[0.08] relative flex min-h-7 cursor-default items-center gap-2 rounded-sm px-2 py-0.5 leading-relaxed no-underline outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50';
2
+ export const menuItemClassName = 'data-[highlighted]:bg-foreground/[0.08] relative flex min-h-7 cursor-default items-center gap-2 rounded-sm px-2 py-0.5 leading-relaxed no-underline outline-none focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid focus-visible:outline-offset-[var(--focus-ring-inset-offset)] focus-visible:outline-[var(--ui-focus)] select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50';
3
3
  export const menuContentClassName = 'motion-pop border-foreground/10 z-50 max-w-[min(20rem,calc(100vw-2rem))] min-w-48 overflow-y-auto rounded-md border bg-[var(--ui-surface,var(--paper))] p-0.5 text-xs shadow-lg outline-none';
package/dist/menubar.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ComponentProps } from 'react';
1
+ import { type ComponentProps } from 'react';
2
2
  import { Menubar as MenubarPrimitive } from 'radix-ui';
3
3
  declare const MenubarMenu: typeof MenubarPrimitive.Menu;
4
4
  declare const MenubarGroup: import("react").ForwardRefExoticComponent<MenubarPrimitive.MenubarGroupProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -6,7 +6,7 @@ declare const MenubarRadioGroup: import("react").ForwardRefExoticComponent<Menub
6
6
  declare const MenubarSub: import("react").FC<MenubarPrimitive.MenubarSubProps>;
7
7
  declare function Menubar({ className, ...props }: ComponentProps<typeof MenubarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
8
8
  declare function MenubarTrigger({ className, ...props }: ComponentProps<typeof MenubarPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
9
- declare function MenubarContent({ className, portalLabel, align, sideOffset, collisionPadding, ...props }: ComponentProps<typeof MenubarPrimitive.Content> & {
9
+ declare function MenubarContent({ className, portalLabel, align, sideOffset, collisionPadding, ref: forwardedRef, onFocusOutside, onPointerDownOutside, ...props }: ComponentProps<typeof MenubarPrimitive.Content> & {
10
10
  portalLabel?: string;
11
11
  }): import("react/jsx-runtime").JSX.Element;
12
12
  declare function MenubarItem({ className, inset, variant, ...props }: ComponentProps<typeof MenubarPrimitive.Item> & {
package/dist/menubar.js CHANGED
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useRef, } from 'react';
3
4
  import { Menubar as MenubarPrimitive } from 'radix-ui';
4
5
  import { Check, ChevronRight } from 'lucide-react';
5
6
  import { cn } from './internal/cn.js';
@@ -15,10 +16,47 @@ function Menubar({ className, ...props }) {
15
16
  return (_jsx(MenubarPrimitive.Root, { "data-slot": "menubar", className: cn('bg-foreground/[0.035] flex min-w-0 flex-wrap items-center gap-0.5 rounded-md px-2 py-1 text-xs outline-none', className), ...props }));
16
17
  }
17
18
  function MenubarTrigger({ className, ...props }) {
18
- return (_jsx(MenubarPrimitive.Trigger, { "data-slot": "menubar-trigger", className: cn('data-[state=open]:bg-foreground/10 focus-visible:bg-foreground/10 min-h-6 cursor-default rounded-sm px-2 py-0.5 no-underline outline-none hover:no-underline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:opacity-40', className), ...props }));
19
+ return (_jsx(MenubarPrimitive.Trigger, { "data-slot": "menubar-trigger", className: cn('data-[state=open]:bg-foreground/10 focus-visible:bg-foreground/10 min-h-6 cursor-default rounded-sm px-2 py-0.5 no-underline outline-none hover:no-underline focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:opacity-40', className), ...props }));
19
20
  }
20
- function MenubarContent({ className, portalLabel, align = 'start', sideOffset = 4, collisionPadding = 16, ...props }) {
21
- return (_jsx(MenuContentPortal, { label: portalLabel, children: _jsx(MenubarPrimitive.Content, { "data-slot": "menubar-content", align: align, sideOffset: sideOffset, collisionPadding: collisionPadding, className: cn(menuContentClassName, 'max-h-(--radix-menubar-content-available-height)', className), ...props }) }));
21
+ /**
22
+ * Presence keeps a closing menu mounted during its exit motion. Moving between
23
+ * open menus must not let that closing layer dismiss the menu replacing it.
24
+ */
25
+ function useClosingLayerGuard(forwardedRef) {
26
+ const content = useRef(null);
27
+ // Stable, cleanup-preserving composition like Radix composeRefs.
28
+ const ref = useCallback((node) => {
29
+ content.current = node;
30
+ if (typeof forwardedRef === 'function') {
31
+ const cleanup = forwardedRef(node);
32
+ return () => {
33
+ content.current = null;
34
+ if (typeof cleanup === 'function')
35
+ cleanup();
36
+ else
37
+ forwardedRef(null);
38
+ };
39
+ }
40
+ if (forwardedRef)
41
+ forwardedRef.current = node;
42
+ return () => {
43
+ content.current = null;
44
+ if (forwardedRef)
45
+ forwardedRef.current = null;
46
+ };
47
+ }, [forwardedRef]);
48
+ function guard(handler) {
49
+ return (event) => {
50
+ handler?.(event);
51
+ if (content.current?.dataset.state === 'closed')
52
+ event.preventDefault();
53
+ };
54
+ }
55
+ return { ref, guard };
56
+ }
57
+ function MenubarContent({ className, portalLabel, align = 'start', sideOffset = 4, collisionPadding = 16, ref: forwardedRef, onFocusOutside, onPointerDownOutside, ...props }) {
58
+ const { ref, guard } = useClosingLayerGuard(forwardedRef);
59
+ return (_jsx(MenuContentPortal, { label: portalLabel, children: _jsx(MenubarPrimitive.Content, { ref: ref, "data-slot": "menubar-content", align: align, sideOffset: sideOffset, collisionPadding: collisionPadding, onFocusOutside: guard(onFocusOutside), onPointerDownOutside: guard(onPointerDownOutside), className: cn(menuContentClassName, 'max-h-(--radix-menubar-content-available-height)', className), ...props }) }));
22
60
  }
23
61
  function MenubarItem({ className, inset = false, variant = 'default', ...props }) {
24
62
  return (_jsx(MenubarPrimitive.Item, { "data-slot": "menubar-item", className: cn(menuItemClassName, inset && 'pl-7', variant === 'destructive' && 'text-destructive', className), ...props }));
@@ -39,7 +77,7 @@ function MenubarSubTrigger({ className, children, inset = false, ...props }) {
39
77
  return (_jsxs(MenubarPrimitive.SubTrigger, { "data-slot": "menubar-sub-trigger", className: cn(menuItemClassName, 'data-[state=open]:bg-foreground/[0.08]', inset && 'pl-7', className), ...props, children: [children, _jsx(ChevronRight, { "aria-hidden": "true", className: "ml-auto size-3 shrink-0" })] }));
40
78
  }
41
79
  function MenubarSubContent({ className, portalLabel, sideOffset = 4, collisionPadding = 16, ...props }) {
42
- return (_jsx(MenuContentPortal, { label: portalLabel, children: _jsx(MenubarPrimitive.SubContent, { "data-slot": "menubar-sub-content", sideOffset: sideOffset, collisionPadding: collisionPadding, className: cn(menuContentClassName, 'max-h-(--radix-menubar-content-available-height)', className), ...props }) }));
80
+ return (_jsx(MenuContentPortal, { label: portalLabel, children: _jsx(MenubarPrimitive.SubContent, { "data-slot": "menubar-sub-content", sideOffset: sideOffset, collisionPadding: collisionPadding, className: cn(menuContentClassName, 'max-h-(--radix-menubar-content-available-height) max-w-[min(20rem,var(--radix-menubar-content-available-width))] min-w-[min(12rem,var(--radix-menubar-content-available-width))] [overflow-wrap:anywhere]', className), ...props }) }));
43
81
  }
44
82
  function MenubarShortcut({ className, ...props }) {
45
83
  return (_jsx("span", { "data-slot": "menubar-shortcut", "aria-hidden": "true", className: cn('text-muted-foreground ml-auto shrink-0 pl-5 text-xs whitespace-nowrap tabular-nums', className), ...props }));
@@ -6,6 +6,6 @@ function RadioGroup({ className, ...props }) {
6
6
  return (_jsx(RadioGroupPrimitive.Root, { "data-slot": "radio-group", className: cn('grid gap-3', className), ...props }));
7
7
  }
8
8
  function RadioGroupItem({ className, children, ...props }) {
9
- return (_jsx(RadioGroupPrimitive.Item, { "data-slot": "radio-group-item", className: cn('text-foreground data-[state=checked]:border-foreground grid size-4 shrink-0 place-items-center rounded-full border border-[var(--ink-muted)] bg-transparent transition-colors outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50', className), ...props, children: children ?? (_jsx(RadioGroupPrimitive.Indicator, { "data-slot": "radio-group-indicator", className: "size-2 rounded-full bg-current" })) }));
9
+ return (_jsx(RadioGroupPrimitive.Item, { "data-slot": "radio-group-item", className: cn('text-foreground data-[state=checked]:border-foreground grid size-4 shrink-0 place-items-center rounded-full border border-[var(--ink-muted)] bg-transparent transition-colors outline-none focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50', className), ...props, children: children ?? (_jsx(RadioGroupPrimitive.Indicator, { "data-slot": "radio-group-indicator", className: "size-2 rounded-full bg-current" })) }));
10
10
  }
11
11
  export { RadioGroup, RadioGroupItem };
package/dist/select.js CHANGED
@@ -13,7 +13,7 @@ function SelectValue({ ...props }) {
13
13
  return _jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
14
14
  }
15
15
  function SelectTrigger({ className, size = 'default', children, ...props }) {
16
- return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn('border-border aria-invalid:border-destructive data-placeholder:text-muted-foreground hover:bg-foreground/5 bg-foreground/[0.03] flex w-full items-center justify-between gap-2 rounded-sm border px-2 py-1 text-xs whitespace-nowrap outline-none hover:no-underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)] data-[size=default]:h-8 data-[size=sm]:h-7', className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDown, { "aria-hidden": "true", className: "text-muted-foreground size-3.5 shrink-0" }) })] }));
16
+ return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn('border-border aria-invalid:border-destructive data-placeholder:text-muted-foreground hover:bg-foreground/5 bg-foreground/[0.03] flex w-full items-center justify-between gap-2 rounded-sm border px-2 py-1 text-xs whitespace-nowrap outline-none hover:no-underline focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)] data-[size=default]:h-8 data-[size=sm]:h-7', className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDown, { "aria-hidden": "true", className: "text-muted-foreground size-3.5 shrink-0" }) })] }));
17
17
  }
18
18
  function SelectContent({ className, children, position = 'popper', align = 'start', sideOffset = 4, ...props }) {
19
19
  return (_jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Content, { "data-slot": "select-content", className: cn('motion-pop border-border text-foreground border-foreground/10 relative z-50 max-h-(--radix-select-content-available-height) min-w-32 overflow-x-hidden overflow-y-auto rounded-md border bg-[var(--ui-surface,var(--paper))] shadow-lg', position === 'popper' && 'min-w-(--radix-select-trigger-width)', className), position: position, align: align, sideOffset: sideOffset, ...props, children: _jsx(SelectPrimitive.Viewport, { className: "p-0.5", children: children }) }) }));
@@ -22,7 +22,7 @@ function SelectLabel({ className, ...props }) {
22
22
  return (_jsx(SelectPrimitive.Label, { "data-slot": "select-label", className: cn('text-muted-foreground px-1.5 py-1 text-xs', className), ...props }));
23
23
  }
24
24
  function SelectItem({ className, children, ...props }) {
25
- return (_jsxs(SelectPrimitive.Item, { "data-slot": "select-item", className: cn('data-[highlighted]:bg-foreground/10 data-[highlighted]:text-foreground hover:text-foreground relative flex min-h-7 w-full cursor-default items-center rounded-sm py-1 pr-2 pl-6 text-xs outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[state=checked]:font-semibold', className), ...props, children: [_jsx(SelectPrimitive.ItemIndicator, { className: "absolute left-1.5 inline-flex items-center", children: _jsx(Check, { "aria-hidden": "true", className: "size-3" }) }), _jsx(SelectPrimitive.ItemText, { children: children })] }));
25
+ return (_jsxs(SelectPrimitive.Item, { "data-slot": "select-item", className: cn('data-[highlighted]:bg-foreground/10 data-[highlighted]:text-foreground hover:text-foreground relative flex min-h-7 w-full cursor-default items-center rounded-sm py-1 pr-2 pl-6 text-xs outline-none select-none focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-inset-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid data-disabled:pointer-events-none data-disabled:opacity-50 data-[state=checked]:font-semibold', className), ...props, children: [_jsx(SelectPrimitive.ItemIndicator, { className: "absolute left-1.5 inline-flex items-center", children: _jsx(Check, { "aria-hidden": "true", className: "size-3" }) }), _jsx(SelectPrimitive.ItemText, { children: children })] }));
26
26
  }
27
27
  function SelectSeparator({ className, ...props }) {
28
28
  return (_jsx(SelectPrimitive.Separator, { "data-slot": "select-separator", className: cn('bg-border h-px', className), ...props }));
package/dist/slider.js CHANGED
@@ -12,6 +12,6 @@ function Slider({ className, defaultValue, value, min = 0, max = 100, disabled =
12
12
  ? undefined
13
13
  : labelledBy && values.length > 1
14
14
  ? `${labelledBy} ${id}-thumb-${index}`
15
- : labelledBy, className: "border-foreground/40 block size-3.5 shrink-0 rounded-full border bg-[var(--paper)] shadow-xs focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid" })] }, index)))] }));
15
+ : labelledBy, className: "border-foreground/40 block size-3.5 shrink-0 rounded-full border bg-[var(--paper)] shadow-xs focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid" })] }, index)))] }));
16
16
  }
17
17
  export { Slider };
package/dist/styles.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-content:""}}}@layer theme{:root,:host{--color-black:#000;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base{:where([data-slot=button],[data-slot=input],[data-slot^=field],[data-slot^=select-],[data-slot^=radio-group],[data-slot^=tabs],[data-slot=label],[data-slot^=accordion-],[data-slot^=alert],[data-slot=badge],[data-slot^=checkbox],[data-slot^=dialog-],[data-slot^=popover-],[data-slot^=progress],[data-slot=separator],[data-slot=skeleton],[data-slot^=slider],[data-slot^=switch],[data-slot=textarea],[data-slot=tooltip-content],[data-slot^=menubar],[data-slot^=command-menu-],[data-slot=dropdown-menu-content],[data-slot=context-menu-content]){box-sizing:border-box;border:0 solid var(--border)}:where([data-slot=button],[data-slot=select-trigger],[data-slot=select-scroll-up-button],[data-slot=select-scroll-down-button],[data-slot=radio-group-item],[data-slot=tabs-trigger],[data-slot=input],[data-slot=textarea],[data-slot=accordion-trigger],[data-slot=checkbox],[data-slot=dialog-close],[data-slot=slider-thumb],[data-slot=switch],[data-slot=menubar-trigger],[data-slot=command-menu-trigger]){font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;text-transform:none;background-color:#0000;border-radius:0;margin:0;padding:0}button:where([data-slot=button],[data-slot=select-trigger],[data-slot=select-scroll-up-button],[data-slot=select-scroll-down-button],[data-slot=radio-group-item],[data-slot=tabs-trigger],[data-slot=accordion-trigger],[data-slot=checkbox],[data-slot=dialog-close],[data-slot=slider-thumb],[data-slot=switch],[data-slot=menubar-trigger],[data-slot=command-menu-trigger]){appearance:button}:where([data-slot=field-set]){min-width:0;margin:0;padding:0}:where([data-slot=field-legend]){padding:0}:where([data-slot=field-description],[data-slot=field-error] ul){margin:0;padding:0}:where([data-slot=accordion-header],[data-slot=alert-title],[data-slot=dialog-title],[data-slot=popover-title]){font-size:inherit;font-weight:inherit;margin:0}:where([data-slot=dialog-description],[data-slot=popover-description],[data-slot=alert-description] p){margin:0}:where([data-slot=select-trigger],[data-slot=select-content],[data-slot=accordion-trigger],[data-slot=alert],[data-slot=badge],[data-slot=checkbox],[data-slot=dialog-content],[data-slot^=menubar],[data-slot^=command-menu-]) svg{vertical-align:middle;display:block}}@layer components{:root{--motion-ease-out:cubic-bezier(.22, 1, .36, 1);--motion-duration-enter:.16s;--motion-duration-exit:.11s;--motion-duration-modal-enter:.2s;--motion-duration-modal-exit:.14s;--motion-duration-collapse:.2s;--motion-pop-scale:.97;--motion-pop-exit-scale:.99;--motion-modal-scale:.96;--motion-modal-exit-scale:.98}@keyframes motion-fade-in{0%{opacity:0}}@keyframes motion-fade-out{to{opacity:0}}@keyframes motion-pop-in{0%{opacity:0;scale:var(--motion-pop-scale)}}@keyframes motion-pop-out{to{opacity:0;scale:var(--motion-pop-exit-scale)}}@keyframes motion-modal-in{0%{opacity:0;scale:var(--motion-modal-scale)}}@keyframes motion-modal-out{to{opacity:0;scale:var(--motion-modal-exit-scale)}}@keyframes motion-collapse-open{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes motion-collapse-close{0%{height:var(--radix-accordion-content-height)}to{height:0}}.motion-pop{transform-origin:var(--radix-popover-content-transform-origin,var(--radix-tooltip-content-transform-origin,var(--radix-menubar-content-transform-origin,var(--radix-dropdown-menu-content-transform-origin,var(--radix-context-menu-content-transform-origin,center)))))}.motion-pop:is([data-state=open],[data-state=delayed-open]){animation:motion-pop-in var(--motion-duration-enter) var(--motion-ease-out)}.motion-pop[data-state=closed]{animation:motion-pop-out var(--motion-duration-exit) var(--motion-ease-out) forwards}.motion-fade[data-state=open]{animation:motion-fade-in var(--motion-duration-modal-enter) var(--motion-ease-out)}.motion-fade[data-state=closed]{animation:motion-fade-out var(--motion-duration-modal-exit) var(--motion-ease-out) forwards}.motion-modal[data-state=open]{animation:motion-modal-in var(--motion-duration-modal-enter) var(--motion-ease-out)}.motion-modal[data-state=closed]{animation:motion-modal-out var(--motion-duration-modal-exit) var(--motion-ease-out) forwards}.motion-collapse{overflow:hidden}.motion-collapse[data-state=open]{animation:motion-collapse-open var(--motion-duration-collapse) var(--motion-ease-out)}.motion-collapse[data-state=closed]{animation:motion-collapse-close var(--motion-duration-collapse) var(--motion-ease-out)}@media (prefers-reduced-motion:reduce){:root{--motion-pop-scale:1;--motion-pop-exit-scale:1;--motion-modal-scale:1;--motion-modal-exit-scale:1}.motion-collapse{animation:none!important}}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.right-3{right:calc(var(--spacing) * 3)}.left-1\.5{left:calc(var(--spacing) * 1.5)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.z-50{z-index:50}.mx-1{margin-inline:calc(var(--spacing) * 1)}.my-1{margin-block:calc(var(--spacing) * 1)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-5{height:calc(var(--spacing) * 5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-11{height:calc(var(--spacing) * 11)}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-menubar-content-available-height\){max-height:var(--radix-menubar-content-available-height)}.max-h-\(--radix-popover-content-available-height\){max-height:var(--radix-popover-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-20{min-height:calc(var(--spacing) * 20)}.w-1\/2{width:50%}.w-8{width:calc(var(--spacing) * 8)}.w-64{width:calc(var(--spacing) * 64)}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-\[min\(16rem\,calc\(100vw-2rem\)\)\]{max-width:min(16rem,100vw - 2rem)}.max-w-\[min\(20rem\,calc\(100vw-2rem\)\)\]{max-width:min(20rem,100vw - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-\(--radix-select-trigger-width\){min-width:var(--radix-select-trigger-width)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-48{min-width:calc(var(--spacing) * 48)}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.cursor-default{cursor:default}.touch-none{touch-action:none}.resize-y{resize:vertical}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[var\(--ink-muted\)\]{border-color:var(--ink-muted)}.border-border{border-color:var(--border)}.border-foreground\/10{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/10{border-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.border-foreground\/40{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/40{border-color:color-mix(in oklab, var(--foreground) 40%, transparent)}}.border-foreground\/50{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/50{border-color:color-mix(in oklab, var(--foreground) 50%, transparent)}}.bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]{background-color:color-mix(in oklab,var(--ink) 8%,transparent)}}.bg-\[color-mix\(in_oklab\,var\(--ink\)_14\%\,transparent\)\]{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklab\,var\(--ink\)_14\%\,transparent\)\]{background-color:color-mix(in oklab,var(--ink) 14%,transparent)}}.bg-\[var\(--paper\)\]{background-color:var(--paper)}.bg-\[var\(--ui-surface\,var\(--paper\)\)\]{background-color:var(--ui-surface,var(--paper))}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-border{background-color:var(--border)}.bg-current{background-color:currentColor}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-foreground\/5{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/5{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}.bg-foreground\/10{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/10{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.bg-foreground\/60{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/60{background-color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.bg-foreground\/65{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/65{background-color:color-mix(in oklab, var(--foreground) 65%, transparent)}}.bg-foreground\/\[0\.03\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.03\]{background-color:color-mix(in oklab, var(--foreground) 3%, transparent)}}.bg-foreground\/\[0\.06\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.06\]{background-color:color-mix(in oklab, var(--foreground) 6%, transparent)}}.bg-foreground\/\[0\.07\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.07\]{background-color:color-mix(in oklab, var(--foreground) 7.0%, transparent)}}.bg-foreground\/\[0\.035\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.035\]{background-color:color-mix(in oklab, var(--foreground) 3.5%, transparent)}}.bg-transparent{background-color:#0000}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-3{padding:calc(var(--spacing) * 3)}.p-5{padding:calc(var(--spacing) * 5)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-px{padding-inline:1px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.text-left{text-align:left}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6875rem\]{font-size:.6875rem}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--ink\)\]{color:var(--ink)}.text-background{color:var(--background)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/field\:opacity-50:is(:where(.group\/field)[data-disabled=true] *){opacity:.5}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:items-stretch:is(:where(.group\/tabs)[data-orientation=vertical] *){align-items:stretch}.group-data-\[orientation\=vertical\]\/tabs\:border-r:is(:where(.group\/tabs)[data-orientation=vertical] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[orientation\=vertical\]\/tabs\:border-b-0:is(:where(.group\/tabs)[data-orientation=vertical] *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-data-\[state\=active\]\:bg-foreground\/10:is(:where(.group)[data-state=active] *){background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.group-data-\[state\=active\]\:bg-foreground\/10:is(:where(.group)[data-state=active] *){background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.group-data-\[state\=active\]\:font-medium:is(:where(.group)[data-state=active] *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-data-\[state\=active\]\:text-foreground:is(:where(.group)[data-state=active] *){color:var(--foreground)}.group-data-\[state\=checked\]\/indicator\:hidden:is(:where(.group\/indicator)[data-state=checked] *),.group-data-\[state\=indeterminate\]\/indicator\:hidden:is(:where(.group\/indicator)[data-state=indeterminate] *){display:none}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=line\]\/tabs-list\:rounded-none:is(:where(.group\/tabs-list)[data-variant=line] *){border-radius:0}.group-data-\[variant\=line\]\/tabs-list\:border-b-2:is(:where(.group\/tabs-list)[data-variant=line] *){border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.group-data-\[variant\=line\]\/tabs-list\:border-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){border-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:px-2:is(:where(.group\/tabs-list)[data-variant=line] *){padding-inline:calc(var(--spacing) * 2)}.group-data-\[variant\=line\]\/tabs-list\:py-2:is(:where(.group\/tabs-list)[data-variant=line] *){padding-block:calc(var(--spacing) * 2)}.group-data-\[variant\=line\]\/tabs-list\:group-data-\[orientation\=vertical\]\/tabs\:border-r-2:is(:where(.group\/tabs-list)[data-variant=line] *):is(:where(.group\/tabs)[data-orientation=vertical] *){border-right-style:var(--tw-border-style);border-right-width:2px}.group-data-\[variant\=line\]\/tabs-list\:group-data-\[orientation\=vertical\]\/tabs\:border-b-0:is(:where(.group\/tabs-list)[data-variant=line] *):is(:where(.group\/tabs)[data-orientation=vertical] *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:-inset-1:before{content:var(--tw-content);inset:calc(var(--spacing) * -1)}.before\:inset-x-0:before{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.before\:-inset-y-0\.5:before{content:var(--tw-content);inset-block:calc(var(--spacing) * -.5)}.before\:hidden:before{content:var(--tw-content);display:none}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.group-data-\[variant\=line\]\/tabs-list\:before\:hidden:is(:where(.group\/tabs-list)[data-variant=line] *):before,.after\:hidden:after,.group-data-\[variant\=line\]\/tabs-list\:after\:hidden:is(:where(.group\/tabs-list)[data-variant=line] *):after{content:var(--tw-content);display:none}@media (hover:hover){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]:hover{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]:hover{background-color:color-mix(in oklab,var(--ink) 8%,transparent)}}.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_11\%\,transparent\)\]:hover{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_11\%\,transparent\)\]:hover{background-color:color-mix(in oklab,var(--ink) 11%,transparent)}}.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_18\%\,transparent\)\]:hover{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_18\%\,transparent\)\]:hover{background-color:color-mix(in oklab,var(--ink) 18%,transparent)}}.hover\:bg-foreground\/5:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/5:hover{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:no-underline:hover{text-decoration-line:none}}.focus-visible\:border-foreground:focus-visible{border-color:var(--foreground)}.focus-visible\:bg-foreground\/10:focus-visible{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-foreground\/10:focus-visible{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-offset-\[-2px\]:focus-visible{outline-offset:-2px}.focus-visible\:outline-\[var\(--ink\)\]:focus-visible{outline-color:var(--ink)}.focus-visible\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.active\:opacity-100:active{opacity:1}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\[data-visual\=compact\]\]\:rounded-none:has([data-visual=compact]){border-radius:0}.has-\[\[data-visual\=compact\]\]\:bg-transparent:has([data-visual=compact]){background-color:#0000}.has-\[\[data-visual\=compact\]\]\:p-0:has([data-visual=compact]){padding:calc(var(--spacing) * 0)}.aria-invalid\:border-destructive[aria-invalid=true],.aria-invalid\:focus-visible\:border-destructive[aria-invalid=true]:focus-visible{border-color:var(--destructive)}.aria-invalid\:focus-visible\:outline-\[var\(--destructive\)\][aria-invalid=true]:focus-visible{outline-color:var(--destructive)}.data-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\:opacity-50[data-disabled]{opacity:.5}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-foreground\/10[data-highlighted]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-foreground\/10[data-highlighted]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.data-\[highlighted\]\:bg-foreground\/\[0\.08\][data-highlighted]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-foreground\/\[0\.08\][data-highlighted]{background-color:color-mix(in oklab, var(--foreground) 8%, transparent)}}.data-\[highlighted\]\:text-foreground[data-highlighted]{color:var(--foreground)}.data-\[orientation\=horizontal\]\:h-1[data-orientation=horizontal]{height:calc(var(--spacing) * 1)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:flex[data-orientation=vertical]{display:flex}.data-\[orientation\=vertical\]\:h-32[data-orientation=vertical]{height:calc(var(--spacing) * 32)}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-0[data-orientation=vertical]{min-height:calc(var(--spacing) * 0)}.data-\[orientation\=vertical\]\:w-1[data-orientation=vertical]{width:calc(var(--spacing) * 1)}.data-\[orientation\=vertical\]\:w-6[data-orientation=vertical]{width:calc(var(--spacing) * 6)}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[orientation\=vertical\]\:items-start[data-orientation=vertical]{align-items:flex-start}.data-\[orientation\=vertical\]\:gap-4[data-orientation=vertical]{gap:calc(var(--spacing) * 4)}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[state\=active\]\:bg-\[var\(--ui-surface\,var\(--paper\)\)\][data-state=active]{background-color:var(--ui-surface,var(--paper))}.data-\[state\=active\]\:bg-transparent[data-state=active]{background-color:#0000}.data-\[state\=active\]\:font-medium[data-state=active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[state\=active\]\:font-normal[data-state=active]{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-foreground:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{border-color:var(--foreground)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-3[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-foreground[data-state=checked]{border-color:var(--foreground)}.data-\[state\=checked\]\:bg-\[var\(--paper\)\][data-state=checked]{background-color:var(--paper)}.data-\[state\=checked\]\:bg-foreground[data-state=checked]{background-color:var(--foreground)}.data-\[state\=checked\]\:font-semibold[data-state=checked]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.aria-invalid\:data-\[state\=checked\]\:border-destructive[aria-invalid=true][data-state=checked]{border-color:var(--destructive)}.data-\[state\=inactive\]\:text-muted-foreground[data-state=inactive]{color:var(--muted-foreground)}.data-\[state\=indeterminate\]\:border-foreground[data-state=indeterminate]{border-color:var(--foreground)}.data-\[state\=indeterminate\]\:bg-foreground[data-state=indeterminate]{background-color:var(--foreground)}.aria-invalid\:data-\[state\=indeterminate\]\:border-destructive[aria-invalid=true][data-state=indeterminate]{border-color:var(--destructive)}.data-\[state\=open\]\:bg-foreground\/10[data-state=open]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:bg-foreground\/10[data-state=open]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.data-\[state\=open\]\:bg-foreground\/\[0\.08\][data-state=open]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:bg-foreground\/\[0\.08\][data-state=open]{background-color:color-mix(in oklab, var(--foreground) 8%, transparent)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:gap-3{gap:calc(var(--spacing) * 3)}}.\[\&_p\]\:not-last\:mb-2 p:not(:last-child){margin-bottom:calc(var(--spacing) * 2)}.\[\&_svg\]\:size-3 svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\:has\(\>svg\)\]\:pl-10:has(>svg){padding-left:calc(var(--spacing) * 10)}.\[\&\>\[data-slot\=field-content\]\]\:min-w-0>[data-slot=field-content]{min-width:calc(var(--spacing) * 0)}.\[\&\>\[data-slot\=field-content\]\]\:flex-1>[data-slot=field-content]{flex:1}@media (min-width:40rem){.sm\:\[\&\>\[data-slot\=field-content\]\]\:flex-1>[data-slot=field-content]{flex:1}}.\[\&\>\[data-slot\=field-label\]\]\:mb-0>[data-slot=field-label]{margin-bottom:calc(var(--spacing) * 0)}.\[\&\>\[data-slot\=field-label\]\]\:shrink-0>[data-slot=field-label]{flex-shrink:0}.\[\&\>\[data-slot\=field-label\]\]\:pt-1\.5>[data-slot=field-label]{padding-top:calc(var(--spacing) * 1.5)}@media (min-width:40rem){.sm\:\[\&\>\[data-slot\=field-label\]\]\:mb-0>[data-slot=field-label]{margin-bottom:calc(var(--spacing) * 0)}.sm\:\[\&\>\[data-slot\=field-label\]\]\:shrink-0>[data-slot=field-label]{flex-shrink:0}.sm\:\[\&\>\[data-slot\=field-label\]\]\:pt-1\.5>[data-slot=field-label]{padding-top:calc(var(--spacing) * 1.5)}}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:top-3>svg{top:calc(var(--spacing) * 3)}.\[\&\>svg\]\:left-3>svg{left:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}:root,[data-theme=light]{--foreground:#121212;--background:#efefef;--muted-foreground:#646464;--border:#12121224;--destructive:#7b2626;--paper:#fafafa;--ui-surface:#fafafa;--ink:#1a1a1a;--ink-muted:#6f6f6f}[data-theme=dark]{--foreground:#ececec;--background:#0d0d0d;--muted-foreground:#969696;--border:#ececec24;--destructive:#d47a7a;--paper:#0d0d0d;--ui-surface:#1a1a1a;--ink:#ececec;--ink-muted:#9a9a9a}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-content:""}}}@layer theme{:root,:host{--color-black:#000;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base{:where([data-slot=button],[data-slot=input],[data-slot^=field],[data-slot^=select-],[data-slot^=radio-group],[data-slot^=tabs],[data-slot=label],[data-slot^=accordion-],[data-slot^=alert],[data-slot=badge],[data-slot^=checkbox],[data-slot^=dialog-],[data-slot^=popover-],[data-slot^=progress],[data-slot=separator],[data-slot=skeleton],[data-slot^=slider],[data-slot^=switch],[data-slot=textarea],[data-slot=tooltip-content],[data-slot^=menubar],[data-slot^=command-menu-],[data-slot=dropdown-menu-content],[data-slot=context-menu-content]){box-sizing:border-box;border:0 solid var(--border)}:where([data-slot=button],[data-slot=select-trigger],[data-slot=select-scroll-up-button],[data-slot=select-scroll-down-button],[data-slot=radio-group-item],[data-slot=tabs-trigger],[data-slot=input],[data-slot=textarea],[data-slot=accordion-trigger],[data-slot=checkbox],[data-slot=dialog-close],[data-slot=slider-thumb],[data-slot=switch],[data-slot=menubar-trigger],[data-slot=command-menu-trigger]){font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;text-transform:none;background-color:#0000;border-radius:0;margin:0;padding:0}button:where([data-slot=button],[data-slot=select-trigger],[data-slot=select-scroll-up-button],[data-slot=select-scroll-down-button],[data-slot=radio-group-item],[data-slot=tabs-trigger],[data-slot=accordion-trigger],[data-slot=checkbox],[data-slot=dialog-close],[data-slot=slider-thumb],[data-slot=switch],[data-slot=menubar-trigger],[data-slot=command-menu-trigger]){appearance:button}:where([data-slot=field-set]){min-width:0;margin:0;padding:0}:where([data-slot=field-legend]){padding:0}:where([data-slot=field-description],[data-slot=field-error] ul){margin:0;padding:0}:where([data-slot=accordion-header],[data-slot=alert-title],[data-slot=dialog-title],[data-slot=popover-title]){font-size:inherit;font-weight:inherit;margin:0}:where([data-slot=dialog-description],[data-slot=popover-description],[data-slot=alert-description] p){margin:0}:where([data-slot=select-trigger],[data-slot=select-content],[data-slot=accordion-trigger],[data-slot=alert],[data-slot=badge],[data-slot=checkbox],[data-slot=dialog-content],[data-slot^=menubar],[data-slot^=command-menu-]) svg{vertical-align:middle;display:block}}@layer components{:root{--motion-ease-out:cubic-bezier(.22, 1, .36, 1);--motion-duration-enter:.16s;--motion-duration-exit:.11s;--motion-duration-modal-enter:.2s;--motion-duration-modal-exit:.14s;--motion-duration-collapse:.2s;--motion-pop-scale:.97;--motion-pop-exit-scale:.99;--motion-modal-scale:.96;--motion-modal-exit-scale:.98}@keyframes motion-fade-in{0%{opacity:0}}@keyframes motion-fade-out{to{opacity:0}}@keyframes motion-pop-in{0%{opacity:0;scale:var(--motion-pop-scale)}}@keyframes motion-pop-out{to{opacity:0;scale:var(--motion-pop-exit-scale)}}@keyframes motion-modal-in{0%{opacity:0;scale:var(--motion-modal-scale)}}@keyframes motion-modal-out{to{opacity:0;scale:var(--motion-modal-exit-scale)}}@keyframes motion-collapse-open{0%{height:0}to{height:var(--radix-accordion-content-height)}}@keyframes motion-collapse-close{0%{height:var(--radix-accordion-content-height)}to{height:0}}.motion-pop{transform-origin:var(--radix-popover-content-transform-origin,var(--radix-tooltip-content-transform-origin,var(--radix-menubar-content-transform-origin,var(--radix-dropdown-menu-content-transform-origin,var(--radix-context-menu-content-transform-origin,center)))))}.motion-pop:is([data-state=open],[data-state=delayed-open]){animation:motion-pop-in var(--motion-duration-enter) var(--motion-ease-out)}.motion-pop[data-state=closed]{animation:motion-pop-out var(--motion-duration-exit) var(--motion-ease-out) forwards}.motion-fade[data-state=open]{animation:motion-fade-in var(--motion-duration-modal-enter) var(--motion-ease-out)}.motion-fade[data-state=closed]{animation:motion-fade-out var(--motion-duration-modal-exit) var(--motion-ease-out) forwards}.motion-modal[data-state=open]{animation:motion-modal-in var(--motion-duration-modal-enter) var(--motion-ease-out)}.motion-modal[data-state=closed]{animation:motion-modal-out var(--motion-duration-modal-exit) var(--motion-ease-out) forwards}.motion-collapse{overflow:hidden}.motion-collapse[data-state=open]{animation:motion-collapse-open var(--motion-duration-collapse) var(--motion-ease-out)}.motion-collapse[data-state=closed]{animation:motion-collapse-close var(--motion-duration-collapse) var(--motion-ease-out)}@media (prefers-reduced-motion:reduce){:root{--motion-pop-scale:1;--motion-pop-exit-scale:1;--motion-modal-scale:1;--motion-modal-exit-scale:1}.motion-collapse{animation:none!important}}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.right-3{right:calc(var(--spacing) * 3)}.left-1\.5{left:calc(var(--spacing) * 1.5)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.z-50{z-index:50}.mx-1{margin-inline:calc(var(--spacing) * 1)}.my-1{margin-block:calc(var(--spacing) * 1)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-5{height:calc(var(--spacing) * 5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-menubar-content-available-height\){max-height:var(--radix-menubar-content-available-height)}.max-h-\(--radix-popover-content-available-height\){max-height:var(--radix-popover-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-20{min-height:calc(var(--spacing) * 20)}.w-1\/2{width:50%}.w-8{width:calc(var(--spacing) * 8)}.w-64{width:calc(var(--spacing) * 64)}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-\[min\(16rem\,calc\(100vw-2rem\)\)\]{max-width:min(16rem,100vw - 2rem)}.max-w-\[min\(20rem\,calc\(100vw-2rem\)\)\]{max-width:min(20rem,100vw - 2rem)}.max-w-\[min\(20rem\,var\(--radix-context-menu-content-available-width\)\)\]{max-width:min(20rem, var(--radix-context-menu-content-available-width))}.max-w-\[min\(20rem\,var\(--radix-dropdown-menu-content-available-width\)\)\]{max-width:min(20rem, var(--radix-dropdown-menu-content-available-width))}.max-w-\[min\(20rem\,var\(--radix-menubar-content-available-width\)\)\]{max-width:min(20rem, var(--radix-menubar-content-available-width))}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-\(--radix-select-trigger-width\){min-width:var(--radix-select-trigger-width)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-\[min\(12rem\,var\(--radix-context-menu-content-available-width\)\)\]{min-width:min(12rem, var(--radix-context-menu-content-available-width))}.min-w-\[min\(12rem\,var\(--radix-dropdown-menu-content-available-width\)\)\]{min-width:min(12rem, var(--radix-dropdown-menu-content-available-width))}.min-w-\[min\(12rem\,var\(--radix-menubar-content-available-width\)\)\]{min-width:min(12rem, var(--radix-menubar-content-available-width))}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.cursor-default{cursor:default}.touch-none{touch-action:none}.resize-y{resize:vertical}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[var\(--ink-muted\)\]{border-color:var(--ink-muted)}.border-border{border-color:var(--border)}.border-foreground\/10{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/10{border-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.border-foreground\/40{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/40{border-color:color-mix(in oklab, var(--foreground) 40%, transparent)}}.border-foreground\/50{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/50{border-color:color-mix(in oklab, var(--foreground) 50%, transparent)}}.bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]{background-color:color-mix(in oklab,var(--ink) 8%,transparent)}}.bg-\[color-mix\(in_oklab\,var\(--ink\)_14\%\,transparent\)\]{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.bg-\[color-mix\(in_oklab\,var\(--ink\)_14\%\,transparent\)\]{background-color:color-mix(in oklab,var(--ink) 14%,transparent)}}.bg-\[var\(--paper\)\]{background-color:var(--paper)}.bg-\[var\(--ui-surface\,var\(--paper\)\)\]{background-color:var(--ui-surface,var(--paper))}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-border{background-color:var(--border)}.bg-current{background-color:currentColor}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-foreground\/5{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/5{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}.bg-foreground\/10{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/10{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.bg-foreground\/60{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/60{background-color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.bg-foreground\/65{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/65{background-color:color-mix(in oklab, var(--foreground) 65%, transparent)}}.bg-foreground\/\[0\.03\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.03\]{background-color:color-mix(in oklab, var(--foreground) 3%, transparent)}}.bg-foreground\/\[0\.06\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.06\]{background-color:color-mix(in oklab, var(--foreground) 6%, transparent)}}.bg-foreground\/\[0\.07\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.07\]{background-color:color-mix(in oklab, var(--foreground) 7.0%, transparent)}}.bg-foreground\/\[0\.035\]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/\[0\.035\]{background-color:color-mix(in oklab, var(--foreground) 3.5%, transparent)}}.bg-transparent{background-color:#0000}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-3{padding:calc(var(--spacing) * 3)}.p-5{padding:calc(var(--spacing) * 5)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-px{padding-inline:1px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.text-left{text-align:left}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6875rem\]{font-size:.6875rem}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--ink\)\]{color:var(--ink)}.text-background{color:var(--background)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/field\:opacity-50:is(:where(.group\/field)[data-disabled=true] *){opacity:.5}.group-data-\[orientation\=vertical\]\/tabs\:flex-col:is(:where(.group\/tabs)[data-orientation=vertical] *){flex-direction:column}.group-data-\[orientation\=vertical\]\/tabs\:items-stretch:is(:where(.group\/tabs)[data-orientation=vertical] *){align-items:stretch}.group-data-\[orientation\=vertical\]\/tabs\:border-r:is(:where(.group\/tabs)[data-orientation=vertical] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[orientation\=vertical\]\/tabs\:border-b-0:is(:where(.group\/tabs)[data-orientation=vertical] *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-data-\[state\=active\]\:bg-foreground\/10:is(:where(.group)[data-state=active] *){background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.group-data-\[state\=active\]\:bg-foreground\/10:is(:where(.group)[data-state=active] *){background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.group-data-\[state\=active\]\:font-medium:is(:where(.group)[data-state=active] *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-data-\[state\=active\]\:text-foreground:is(:where(.group)[data-state=active] *){color:var(--foreground)}.group-data-\[state\=checked\]\/indicator\:hidden:is(:where(.group\/indicator)[data-state=checked] *),.group-data-\[state\=indeterminate\]\/indicator\:hidden:is(:where(.group\/indicator)[data-state=indeterminate] *){display:none}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[variant\=line\]\/tabs-list\:rounded-none:is(:where(.group\/tabs-list)[data-variant=line] *){border-radius:0}.group-data-\[variant\=line\]\/tabs-list\:border-b-2:is(:where(.group\/tabs-list)[data-variant=line] *){border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.group-data-\[variant\=line\]\/tabs-list\:border-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){border-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:px-2:is(:where(.group\/tabs-list)[data-variant=line] *){padding-inline:calc(var(--spacing) * 2)}.group-data-\[variant\=line\]\/tabs-list\:py-2:is(:where(.group\/tabs-list)[data-variant=line] *){padding-block:calc(var(--spacing) * 2)}.group-data-\[variant\=line\]\/tabs-list\:group-data-\[orientation\=vertical\]\/tabs\:border-r-2:is(:where(.group\/tabs-list)[data-variant=line] *):is(:where(.group\/tabs)[data-orientation=vertical] *){border-right-style:var(--tw-border-style);border-right-width:2px}.group-data-\[variant\=line\]\/tabs-list\:group-data-\[orientation\=vertical\]\/tabs\:border-b-0:is(:where(.group\/tabs-list)[data-variant=line] *):is(:where(.group\/tabs)[data-orientation=vertical] *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:-inset-1:before{content:var(--tw-content);inset:calc(var(--spacing) * -1)}.before\:inset-x-0:before{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.before\:-inset-y-0\.5:before{content:var(--tw-content);inset-block:calc(var(--spacing) * -.5)}.before\:hidden:before{content:var(--tw-content);display:none}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.group-data-\[variant\=line\]\/tabs-list\:before\:hidden:is(:where(.group\/tabs-list)[data-variant=line] *):before,.after\:hidden:after,.group-data-\[variant\=line\]\/tabs-list\:after\:hidden:is(:where(.group\/tabs-list)[data-variant=line] *):after{content:var(--tw-content);display:none}@media (hover:hover){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]:hover{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_8\%\,transparent\)\]:hover{background-color:color-mix(in oklab,var(--ink) 8%,transparent)}}.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_11\%\,transparent\)\]:hover{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_11\%\,transparent\)\]:hover{background-color:color-mix(in oklab,var(--ink) 11%,transparent)}}.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_18\%\,transparent\)\]:hover{background-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklab\,var\(--ink\)_18\%\,transparent\)\]:hover{background-color:color-mix(in oklab,var(--ink) 18%,transparent)}}.hover\:bg-foreground\/5:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/5:hover{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:no-underline:hover{text-decoration-line:none}}.focus-visible\:bg-foreground\/10:focus-visible{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:bg-foreground\/10:focus-visible{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.focus-visible\:outline-\[length\:var\(--focus-ring-width\)\]:focus-visible{outline-style:var(--tw-outline-style);outline-width:var(--focus-ring-width)}.focus-visible\:outline-offset-\[var\(--focus-ring-inset-offset\)\]:focus-visible{outline-offset:var(--focus-ring-inset-offset)}.focus-visible\:outline-offset-\[var\(--focus-ring-offset\)\]:focus-visible{outline-offset:var(--focus-ring-offset)}.focus-visible\:outline-\[var\(--ui-focus\)\]:focus-visible{outline-color:var(--ui-focus)}.focus-visible\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.active\:opacity-100:active{opacity:1}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\[data-visual\=compact\]\]\:rounded-none:has([data-visual=compact]){border-radius:0}.has-\[\[data-visual\=compact\]\]\:bg-transparent:has([data-visual=compact]){background-color:#0000}.has-\[\[data-visual\=compact\]\]\:p-0:has([data-visual=compact]){padding:calc(var(--spacing) * 0)}.aria-invalid\:border-destructive[aria-invalid=true],.aria-invalid\:focus-visible\:border-destructive[aria-invalid=true]:focus-visible{border-color:var(--destructive)}.aria-invalid\:focus-visible\:outline-\[var\(--destructive\)\][aria-invalid=true]:focus-visible{outline-color:var(--destructive)}.data-disabled\:pointer-events-none[data-disabled]{pointer-events:none}.data-disabled\:opacity-50[data-disabled]{opacity:.5}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-foreground\/10[data-highlighted]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-foreground\/10[data-highlighted]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.data-\[highlighted\]\:bg-foreground\/\[0\.08\][data-highlighted]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-foreground\/\[0\.08\][data-highlighted]{background-color:color-mix(in oklab, var(--foreground) 8%, transparent)}}.data-\[highlighted\]\:text-foreground[data-highlighted]{color:var(--foreground)}.data-\[orientation\=horizontal\]\:h-1[data-orientation=horizontal]{height:calc(var(--spacing) * 1)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:flex[data-orientation=vertical]{display:flex}.data-\[orientation\=vertical\]\:h-32[data-orientation=vertical]{height:calc(var(--spacing) * 32)}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-0[data-orientation=vertical]{min-height:calc(var(--spacing) * 0)}.data-\[orientation\=vertical\]\:w-1[data-orientation=vertical]{width:calc(var(--spacing) * 1)}.data-\[orientation\=vertical\]\:w-6[data-orientation=vertical]{width:calc(var(--spacing) * 6)}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[orientation\=vertical\]\:items-start[data-orientation=vertical]{align-items:flex-start}.data-\[orientation\=vertical\]\:gap-4[data-orientation=vertical]{gap:calc(var(--spacing) * 4)}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[state\=active\]\:bg-\[var\(--ui-surface\,var\(--paper\)\)\][data-state=active]{background-color:var(--ui-surface,var(--paper))}.data-\[state\=active\]\:bg-transparent[data-state=active]{background-color:#0000}.data-\[state\=active\]\:font-medium[data-state=active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[state\=active\]\:font-normal[data-state=active]{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-foreground:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{border-color:var(--foreground)}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *)[data-state=active]{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-3[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-foreground[data-state=checked]{border-color:var(--foreground)}.data-\[state\=checked\]\:bg-\[var\(--paper\)\][data-state=checked]{background-color:var(--paper)}.data-\[state\=checked\]\:bg-foreground[data-state=checked]{background-color:var(--foreground)}.data-\[state\=checked\]\:font-semibold[data-state=checked]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[state\=checked\]\:focus-visible\:outline-\[var\(--ui-focus-on-solid\)\][data-state=checked]:focus-visible{outline-color:var(--ui-focus-on-solid)}.aria-invalid\:data-\[state\=checked\]\:border-destructive[aria-invalid=true][data-state=checked]{border-color:var(--destructive)}.aria-invalid\:data-\[state\=checked\]\:focus-visible\:outline-\[var\(--destructive\)\][aria-invalid=true][data-state=checked]:focus-visible{outline-color:var(--destructive)}.data-\[state\=inactive\]\:text-muted-foreground[data-state=inactive]{color:var(--muted-foreground)}.data-\[state\=indeterminate\]\:border-foreground[data-state=indeterminate]{border-color:var(--foreground)}.data-\[state\=indeterminate\]\:bg-foreground[data-state=indeterminate]{background-color:var(--foreground)}.data-\[state\=indeterminate\]\:focus-visible\:outline-\[var\(--ui-focus-on-solid\)\][data-state=indeterminate]:focus-visible{outline-color:var(--ui-focus-on-solid)}.aria-invalid\:data-\[state\=indeterminate\]\:border-destructive[aria-invalid=true][data-state=indeterminate]{border-color:var(--destructive)}.aria-invalid\:data-\[state\=indeterminate\]\:focus-visible\:outline-\[var\(--destructive\)\][aria-invalid=true][data-state=indeterminate]:focus-visible{outline-color:var(--destructive)}.data-\[state\=open\]\:bg-foreground\/10[data-state=open]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:bg-foreground\/10[data-state=open]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.data-\[state\=open\]\:bg-foreground\/\[0\.08\][data-state=open]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[state\=open\]\:bg-foreground\/\[0\.08\][data-state=open]{background-color:color-mix(in oklab, var(--foreground) 8%, transparent)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}}@media (prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:gap-3{gap:calc(var(--spacing) * 3)}}.\[\&_p\]\:not-last\:mb-2 p:not(:last-child){margin-bottom:calc(var(--spacing) * 2)}.\[\&_svg\]\:size-3 svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\:has\(\>svg\)\]\:pl-10:has(>svg){padding-left:calc(var(--spacing) * 10)}.\[\&\>\[data-slot\=field-content\]\]\:min-w-0>[data-slot=field-content]{min-width:calc(var(--spacing) * 0)}.\[\&\>\[data-slot\=field-content\]\]\:flex-1>[data-slot=field-content]{flex:1}@media (min-width:40rem){.sm\:\[\&\>\[data-slot\=field-content\]\]\:flex-1>[data-slot=field-content]{flex:1}}.\[\&\>\[data-slot\=field-label\]\]\:mb-0>[data-slot=field-label]{margin-bottom:calc(var(--spacing) * 0)}.\[\&\>\[data-slot\=field-label\]\]\:shrink-0>[data-slot=field-label]{flex-shrink:0}.\[\&\>\[data-slot\=field-label\]\]\:pt-1\.5>[data-slot=field-label]{padding-top:calc(var(--spacing) * 1.5)}@media (min-width:40rem){.sm\:\[\&\>\[data-slot\=field-label\]\]\:mb-0>[data-slot=field-label]{margin-bottom:calc(var(--spacing) * 0)}.sm\:\[\&\>\[data-slot\=field-label\]\]\:shrink-0>[data-slot=field-label]{flex-shrink:0}.sm\:\[\&\>\[data-slot\=field-label\]\]\:pt-1\.5>[data-slot=field-label]{padding-top:calc(var(--spacing) * 1.5)}}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:top-3>svg{top:calc(var(--spacing) * 3)}.\[\&\>svg\]\:left-3>svg{left:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}@media (forced-colors:active){[data-slot]:not([tabindex="-1"]:not(:is(a[href],button,input,textarea,select,summary,[role=button],[role=tab],[role=radio],[role=checkbox],[role=switch],[role=slider],[role=menuitem],[role=menuitemradio],[role=menuitemcheckbox],[role=option]))):focus-visible{outline-offset:2px!important;outline:2px solid highlight!important}}}:root,[data-theme=light]{--foreground:#121212;--background:#efefef;--muted-foreground:#646464;--border:#12121224;--destructive:#7b2626;--paper:#fafafa;--ui-surface:#fafafa;--ink:#1a1a1a;--ink-muted:#6f6f6f}[data-theme=dark]{--foreground:#ececec;--background:#0d0d0d;--muted-foreground:#969696;--border:#ececec24;--destructive:#d47a7a;--paper:#0d0d0d;--ui-surface:#1a1a1a;--ink:#ececec;--ink-muted:#9a9a9a}:root,[data-theme=light],[data-theme=dark]{--focus-ring-width:1px;--focus-ring-color:var(--ink)}@supports (color:color-mix(in lab, red, red)){:root,[data-theme=light],[data-theme=dark]{--focus-ring-color:color-mix(in srgb, var(--ink) 65%, var(--paper))}}:root,[data-theme=light],[data-theme=dark]{--focus-ring-offset:2px;--focus-ring-inset-offset:-1px;--ui-focus:var(--focus-ring-color);--ui-focus-on-solid:var(--focus-ring-color)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
package/dist/switch.js CHANGED
@@ -3,6 +3,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { Switch as SwitchPrimitive } from 'radix-ui';
4
4
  import { cn } from './internal/cn.js';
5
5
  function Switch({ className, ...props }) {
6
- return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", className: cn("peer border-border bg-foreground/10 aria-invalid:border-destructive aria-invalid:data-[state=checked]:border-destructive data-[state=checked]:border-foreground data-[state=checked]:bg-foreground relative inline-flex h-5 w-8 shrink-0 items-center rounded-full border px-px transition-colors outline-none before:absolute before:inset-x-0 before:-inset-y-0.5 before:content-[''] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)] motion-reduce:transition-none", className), ...props, children: _jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: "bg-foreground/60 pointer-events-none block size-4 rounded-full shadow-xs transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-[var(--paper)] motion-reduce:transition-none" }) }));
6
+ return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", className: cn("peer border-border bg-foreground/10 aria-invalid:border-destructive aria-invalid:data-[state=checked]:border-destructive data-[state=checked]:border-foreground data-[state=checked]:bg-foreground relative inline-flex h-5 w-8 shrink-0 items-center rounded-full border px-px transition-colors outline-none before:absolute before:inset-x-0 before:-inset-y-0.5 before:content-[''] focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)] data-[state=checked]:focus-visible:outline-[var(--ui-focus-on-solid)] aria-invalid:data-[state=checked]:focus-visible:outline-[var(--destructive)] motion-reduce:transition-none", className), ...props, children: _jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: "bg-foreground/60 pointer-events-none block size-4 rounded-full shadow-xs transition-transform data-[state=checked]:translate-x-3 data-[state=checked]:bg-[var(--paper)] data-[state=checked]:focus-visible:outline-[var(--ui-focus-on-solid)] aria-invalid:data-[state=checked]:focus-visible:outline-[var(--destructive)] motion-reduce:transition-none" }) }));
7
7
  }
8
8
  export { Switch };
package/dist/tabs.js CHANGED
@@ -21,11 +21,11 @@ function TabsList({ className, variant = 'default', ...props }) {
21
21
  return (_jsx(TabsPrimitive.List, { "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className), ...props }));
22
22
  }
23
23
  function TabsTrigger({ className, visual = 'default', children, ...props }) {
24
- return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", "data-visual": visual, className: cn('inline-flex items-center justify-center px-0 py-0 text-xs transition-colors focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:pointer-events-none disabled:opacity-50', visual === 'compact'
25
- ? 'group h-11 flex-none before:hidden after:hidden data-[state=active]:bg-transparent data-[state=active]:font-normal'
26
- : 'data-[state=active]:text-foreground min-h-7 rounded-sm px-2.5 py-1 data-[state=active]:bg-[var(--ui-surface,var(--paper))] data-[state=active]:font-medium data-[state=active]:shadow-sm', 'data-[state=inactive]:text-muted-foreground hover:text-foreground', 'group-data-[variant=line]/tabs-list:data-[state=active]:border-foreground group-data-[variant=line]/tabs-list:rounded-none group-data-[variant=line]/tabs-list:border-b-2 group-data-[variant=line]/tabs-list:border-transparent group-data-[variant=line]/tabs-list:px-2 group-data-[variant=line]/tabs-list:py-2 group-data-[variant=line]/tabs-list:group-data-[orientation=vertical]/tabs:border-r-2 group-data-[variant=line]/tabs-list:group-data-[orientation=vertical]/tabs:border-b-0 group-data-[variant=line]/tabs-list:before:hidden group-data-[variant=line]/tabs-list:after:hidden group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none', className), ...props, children: visual === 'compact' ? (_jsx("span", { className: "group-data-[state=active]:bg-foreground/10 group-data-[state=active]:text-foreground rounded-sm px-2 py-1.5 group-data-[state=active]:font-medium", children: children })) : (children) }));
24
+ return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", "data-visual": visual, className: cn('inline-flex items-center justify-center px-0 py-0 text-xs transition-colors focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:pointer-events-none disabled:opacity-50', visual === 'compact'
25
+ ? 'group min-h-7 max-w-full min-w-0 flex-none before:hidden after:hidden data-[state=active]:bg-transparent data-[state=active]:font-normal'
26
+ : 'data-[state=active]:text-foreground min-h-7 rounded-sm px-2.5 py-1 data-[state=active]:bg-[var(--ui-surface,var(--paper))] data-[state=active]:font-medium data-[state=active]:shadow-sm', 'data-[state=inactive]:text-muted-foreground hover:text-foreground', 'group-data-[variant=line]/tabs-list:data-[state=active]:border-foreground group-data-[variant=line]/tabs-list:rounded-none group-data-[variant=line]/tabs-list:border-b-2 group-data-[variant=line]/tabs-list:border-transparent group-data-[variant=line]/tabs-list:px-2 group-data-[variant=line]/tabs-list:py-2 group-data-[variant=line]/tabs-list:group-data-[orientation=vertical]/tabs:border-r-2 group-data-[variant=line]/tabs-list:group-data-[orientation=vertical]/tabs:border-b-0 group-data-[variant=line]/tabs-list:before:hidden group-data-[variant=line]/tabs-list:after:hidden group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none', className), ...props, children: visual === 'compact' ? (_jsx("span", { className: "group-data-[state=active]:bg-foreground/10 group-data-[state=active]:text-foreground min-w-0 rounded-sm px-2 py-1 leading-4 [overflow-wrap:anywhere] whitespace-normal group-data-[state=active]:font-medium", children: children })) : (children) }));
27
27
  }
28
28
  function TabsContent({ className, ...props }) {
29
- return (_jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn('text-xs outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid', className), ...props }));
29
+ return (_jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn('text-xs outline-none focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid', className), ...props }));
30
30
  }
31
31
  export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
package/dist/textarea.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cn } from './internal/cn.js';
3
3
  function Textarea({ className, ...props }) {
4
- return (_jsx("textarea", { "data-slot": "textarea", className: cn('border-border placeholder:text-muted-foreground aria-invalid:border-destructive bg-foreground/[0.03] min-h-20 w-full min-w-0 resize-y rounded-sm border px-2 py-1.5 text-xs leading-relaxed outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)]', className), ...props }));
4
+ return (_jsx("textarea", { "data-slot": "textarea", className: cn('border-border placeholder:text-muted-foreground aria-invalid:border-destructive bg-foreground/[0.03] min-h-20 w-full min-w-0 resize-y rounded-sm border px-2 py-1.5 text-xs leading-relaxed outline-none focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-offset-[var(--focus-ring-offset)] focus-visible:outline-[var(--ui-focus)] focus-visible:outline-solid disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:focus-visible:outline-[var(--destructive)]', className), ...props }));
5
5
  }
6
6
  export { Textarea };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@01.software/ui",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
4
4
  "description": "Browser UI primitives and precompiled theme styles for React 19.",
5
5
  "type": "module",
6
6
  "sideEffects": [