@01.software/ui 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @01.software/ui
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8bfc797: Export `menubarControlClassName` from the menubar subpath for ordinary navigation links next to menus. Menu triggers share its 28px minimum height and 8px horizontal / 2px vertical padding.
8
+
9
+ ## 0.2.3
10
+
11
+ ### Patch Changes
12
+
13
+ - c621ec1: Unify keyboard focus around shared width, color and offset tokens: a muted 1px
14
+ outline with a 2px outer offset, inset menu indicators and destructive invalid
15
+ fields. Preserve existing `--ui-focus` and `--ui-focus-on-solid` color overrides and
16
+ preserve the system high-contrast fallback.
17
+
18
+ ## 0.2.2
19
+
20
+ ### Patch Changes
21
+
22
+ - 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.
23
+
24
+ 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.
25
+
26
+ Keep dropdown, context and menubar submenus within Radix’s available width on narrow screens.
27
+
3
28
  ## 0.2.1
4
29
 
5
30
  ### Patch Changes
package/README.md CHANGED
@@ -72,6 +72,33 @@ an explicit label. `DialogContent` accepts `closeLabel` for the built-in close
72
72
  button (default `닫기`); `showCloseButton={false}` omits that button while
73
73
  preserving Escape dismissal. Button has no `asChild` or built-in loading state.
74
74
 
75
+ ### Links alongside menus
76
+
77
+ `menubarControlClassName` from `@01.software/ui/menubar` shares the menu
78
+ trigger's default padding (8px horizontal, 2px vertical), 28px minimum height,
79
+ and keyboard focus treatment with ordinary navigation links. The precompiled
80
+ stylesheet includes these styles; consumers do not need to scan package source.
81
+ Keep links as siblings of `Menubar` in a wrapping navigation row with a 2px gap:
82
+ links retain native Tab/Enter navigation, while menus retain arrow-key navigation.
83
+
84
+ ```tsx
85
+ import { Menubar, menubarControlClassName } from '@01.software/ui/menubar'
86
+
87
+ function SiteNavigation() {
88
+ return (
89
+ <nav
90
+ className="flex flex-wrap items-center gap-0.5"
91
+ aria-label="Site navigation"
92
+ >
93
+ <a href="/pricing" className={menubarControlClassName}>
94
+ Pricing
95
+ </a>
96
+ <Menubar className="bg-transparent p-0">{/* menu children */}</Menubar>
97
+ </nav>
98
+ )
99
+ }
100
+ ```
101
+
75
102
  ## Dashboard and SaaS composition
76
103
 
77
104
  Start with `Getting started` and `Recipes` in the package catalogue on port 6008. Copy the desired AppShell, DataList or SettingsForm source and
@@ -95,8 +122,21 @@ and Button heights align at 32px; compact Button/Select sizes are 28px. Let
95
122
  long labels wrap and use responsive Field layout where labels need more room.
96
123
 
97
124
  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.
125
+ orientation support denser settings/navigation. Both default and
126
+ `visual="compact"` triggers have a 28px minimum height; longer labels may wrap
127
+ and grow instead of overflowing. The compact inner highlight stays within its
128
+ trigger. All interactive primitives keep visible keyboard focus: a muted 1px outline
129
+ with a 2px outer offset. Menu/list items use a -1px inset so the indicator
130
+ stays inside the popup. Invalid fields, including checked controls, use the
131
+ destructive focus color. Forced colors use a system-colored 2px outline.
132
+ Typography remains inherited from the consumer. The package does not install
133
+ global input listeners; applications may choose their own modality policy.
134
+
135
+ Informational cards do not need `tabIndex`. Use a native link or button when the
136
+ whole card is an action, with no nested interactive controls. When a card has
137
+ inner actions, only those controls participate in Tab navigation. `TabsContent`
138
+ remains focusable by default for text-only content; use `tabIndex={-1}` on a
139
+ panel whose content already provides an appropriate first focus target.
100
140
 
101
141
  ## Styles, themes and overrides
102
142
 
@@ -112,8 +152,15 @@ scale/height travel while preserving opacity feedback. The `--ui-surface` token
112
152
  surface in dark mode; consumers can override it alongside the existing palette.
113
153
  Public theme tokens are
114
154
  `--foreground`, `--background`, `--muted-foreground`, `--border`,
115
- `--destructive`, `--paper`, `--ink` and `--ink-muted`. Token names and default
116
- states are subject to semver.
155
+ `--destructive`, `--paper`, `--ink`, `--ink-muted`, plus
156
+ `--focus-ring-width`, `--focus-ring-color`, `--focus-ring-offset` and
157
+ `--focus-ring-inset-offset`. The default color mixes ink 65% with paper in both
158
+ themes. Primitives read the public `--ui-focus` color and checked/indeterminate
159
+ Checkbox and checked Switch read `--ui-focus-on-solid`. Both default to
160
+ `--focus-ring-color`, so existing overrides on the root, a theme or a control
161
+ continue to work. Invalid fields retain `--destructive` instead of the solid
162
+ customization. Set the canonical default color on the root/theme alongside its
163
+ aliases, or override the public color variables directly for a subtree. Token names and default states are subject to semver.
117
164
 
118
165
  This is a global stylesheet with unprefixed utility/token names; coexistence
119
166
  with another system defining the same names is outside the support boundary.
@@ -153,3 +200,6 @@ LICENSE and THIRD_PARTY_NOTICES.md contain the existing MIT distribution and
153
200
  shadcn/Tailwind attribution. Consumer-installed peers/dependencies retain their
154
201
  licenses. Web fonts are not distributed. Source/tag evidence is not an npm
155
202
  provenance attestation for this private repository.
203
+
204
+ Submenus constrain both their minimum and maximum width to the space Radix
205
+ 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
@@ -4,6 +4,8 @@ declare const MenubarMenu: typeof MenubarPrimitive.Menu;
4
4
  declare const MenubarGroup: import("react").ForwardRefExoticComponent<MenubarPrimitive.MenubarGroupProps & import("react").RefAttributes<HTMLDivElement>>;
5
5
  declare const MenubarRadioGroup: import("react").ForwardRefExoticComponent<MenubarPrimitive.MenubarRadioGroupProps & import("react").RefAttributes<HTMLDivElement>>;
6
6
  declare const MenubarSub: import("react").FC<MenubarPrimitive.MenubarSubProps>;
7
+ /** Shared geometry for menu triggers and adjacent, ordinary navigation links. */
8
+ declare const menubarControlClassName = "box-border inline-flex min-h-7 items-center justify-center gap-1 rounded-sm px-2 py-0.5 text-xs no-underline outline-none hover:no-underline focus-visible:bg-foreground/10 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";
7
9
  declare function Menubar({ className, ...props }: ComponentProps<typeof MenubarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
8
10
  declare function MenubarTrigger({ className, ...props }: ComponentProps<typeof MenubarPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
9
11
  declare function MenubarContent({ className, portalLabel, align, sideOffset, collisionPadding, ref: forwardedRef, onFocusOutside, onPointerDownOutside, ...props }: ComponentProps<typeof MenubarPrimitive.Content> & {
@@ -26,4 +28,4 @@ declare function MenubarSubContent({ className, portalLabel, sideOffset, collisi
26
28
  portalLabel?: string;
27
29
  }): import("react/jsx-runtime").JSX.Element;
28
30
  declare function MenubarShortcut({ className, ...props }: ComponentProps<'span'>): import("react/jsx-runtime").JSX.Element;
29
- export { Menubar, MenubarMenu, MenubarGroup, MenubarLabel, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, MenubarShortcut, MenubarTrigger, MenubarContent, MenubarItem, MenubarCheckboxItem, MenubarSeparator, };
31
+ export { menubarControlClassName, Menubar, MenubarMenu, MenubarGroup, MenubarLabel, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, MenubarShortcut, MenubarTrigger, MenubarContent, MenubarItem, MenubarCheckboxItem, MenubarSeparator, };
package/dist/menubar.js CHANGED
@@ -9,6 +9,8 @@ const MenubarMenu = MenubarPrimitive.Menu;
9
9
  const MenubarGroup = MenubarPrimitive.Group;
10
10
  const MenubarRadioGroup = MenubarPrimitive.RadioGroup;
11
11
  const MenubarSub = MenubarPrimitive.Sub;
12
+ /** Shared geometry for menu triggers and adjacent, ordinary navigation links. */
13
+ const menubarControlClassName = 'box-border inline-flex min-h-7 items-center justify-center gap-1 rounded-sm px-2 py-0.5 text-xs no-underline outline-none hover:no-underline focus-visible:bg-foreground/10 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';
12
14
  function MenuContentPortal({ children, label, }) {
13
15
  return (_jsx(MenubarPrimitive.Portal, { children: label ? _jsx("section", { "aria-label": label, children: children }) : children }));
14
16
  }
@@ -16,7 +18,7 @@ function Menubar({ className, ...props }) {
16
18
  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 }));
17
19
  }
18
20
  function MenubarTrigger({ 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-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--ink)] focus-visible:outline-solid disabled:opacity-40', className), ...props }));
21
+ return (_jsx(MenubarPrimitive.Trigger, { "data-slot": "menubar-trigger", className: cn(menubarControlClassName, 'data-[state=open]:bg-foreground/10 cursor-default disabled:opacity-40', className), ...props }));
20
22
  }
21
23
  /**
22
24
  * Presence keeps a closing menu mounted during its exit motion. Moving between
@@ -77,9 +79,9 @@ function MenubarSubTrigger({ className, children, inset = false, ...props }) {
77
79
  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" })] }));
78
80
  }
79
81
  function MenubarSubContent({ className, portalLabel, sideOffset = 4, collisionPadding = 16, ...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)', className), ...props }) }));
82
+ 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 }) }));
81
83
  }
82
84
  function MenubarShortcut({ className, ...props }) {
83
85
  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 }));
84
86
  }
85
- export { Menubar, MenubarMenu, MenubarGroup, MenubarLabel, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, MenubarShortcut, MenubarTrigger, MenubarContent, MenubarItem, MenubarCheckboxItem, MenubarSeparator, };
87
+ export { menubarControlClassName, Menubar, MenubarMenu, MenubarGroup, MenubarLabel, MenubarRadioGroup, MenubarRadioItem, MenubarSub, MenubarSubTrigger, MenubarSubContent, MenubarShortcut, MenubarTrigger, MenubarContent, MenubarItem, MenubarCheckboxItem, MenubarSeparator, };
@@ -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}.box-border{box-sizing:border-box}.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.1",
3
+ "version": "0.3.0",
4
4
  "description": "Browser UI primitives and precompiled theme styles for React 19.",
5
5
  "type": "module",
6
6
  "sideEffects": [