@evinvest/uikit 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,10 +34,10 @@ Requires Node ≥ 20 and React 18 or 19. `dist/` is built on publish, not commit
34
34
 
35
35
  ## Design tokens — the theme contract
36
36
 
37
- Every component's Tailwind classes reference design tokens (`bg-primary`,
38
- `text-card-foreground`, `border-input`, `ring-ring`, `bg-main-accent-t2`, …).
39
- Those tokens are **shipped with the package** and must be imported into your
40
- Tailwind v4 entrypoint — this is the load-bearing part of the kit:
37
+ Every component's Tailwind classes reference design tokens and nothing else, so
38
+ a consumer re-themes the whole kit by writing values, never by overriding
39
+ classes. The tokens are **shipped with the package** and must be imported into
40
+ your Tailwind v4 entrypoint — this is the load-bearing part of the kit:
41
41
 
42
42
  ```css
43
43
  /* app.css — your Tailwind v4 entrypoint */
@@ -45,10 +45,40 @@ Tailwind v4 entrypoint — this is the load-bearing part of the kit:
45
45
  @import "@evinvest/uikit/styles/tokens.css";
46
46
  ```
47
47
 
48
+ | group | names |
49
+ |---|---|
50
+ | scope | `:root` · `.dark` · `.light` — a consumer defines one or both |
51
+ | surfaces | `background` `card` `popover` `muted` `hover` |
52
+ | ink | `ink` `ink-mid` `ink-soft` — hierarchy, loudest first |
53
+ | lines | `border` `input` `ring` |
54
+ | roles | `brand` `primary` `secondary` `positive` `accent-trace` `accent-debug` `accent-info` `accent-warn` `accent-error`, each with `on-*` where it gets filled |
55
+ | scalars | `radius` `control-radius` `control-py` `display-scale` `band-py` `page-max` `page-px` `shadow-*` `font-*` |
56
+ | charts | `chart-1` … `chart-5` |
57
+
58
+ Custom properties inherit, so a scope class on a `<section>` re-themes its
59
+ subtree — `bg-card text-ink` is correct on both polarities with no prop. That is
60
+ what `<Section polarity="dark">` does.
61
+
62
+ A surface takes its ink from the scope, so it carries no `-foreground`. A
63
+ **filled role** does not — gold wants black and navy wants white regardless of
64
+ polarity — so `on-{role}` exists exactly there.
65
+
66
+ Accents are decorative and **ordered by significance**, quiet to loud. Pick a
67
+ rung by how loud the thing should be, never by what it means; see
68
+ [`docs/spec/accents.md`](../../docs/spec/accents.md). Every consumer defines all
69
+ five, binding rungs it does not distinguish to the same value, which is what
70
+ lets a kit component reference an accent at all.
71
+
48
72
  `styles/tokens.css` is copied at pack time from the repo-root `tokens.css` shared
49
- with the Rust feature; it defines a single **dark** palette via `:root` and wires it into
50
- Tailwind utilities via `@theme inline`. (The kit drops `dark:*` utility variants
51
- because the palette is dark by default — see [Limitations](#limitations).)
73
+ with the Rust feature, and carries EV's values: a single dark palette on
74
+ `:root, .dark`. A consumer with two polarities writes its own sheet against the
75
+ same names.
76
+
77
+ `styles/tokens-legacy.css` is the pre-0.11 vocabulary layered on top —
78
+ `text-main-mist`, `bg-sidebar`, `text-muted-foreground` and the rest keep
79
+ working, and the current tokens are re-pointed at the old values so rendered
80
+ colour is unchanged. Import it instead while migrating; it goes away once every
81
+ consumer has moved.
52
82
 
53
83
  ## Usage
54
84
 
package/dist/index.d.ts CHANGED
@@ -7,6 +7,10 @@ import * as React from 'react';
7
7
  * conflicting utilities so the rightmost wins (`cn("p-4", "p-2") === "p-2"`). A
8
8
  * caller's `className` override, passed last, therefore beats the base classes.
9
9
  *
10
+ * `twMerge` parses every utility on every render, and the overwhelmingly common
11
+ * call is one kit constant plus a `className` override that is absent — so that
12
+ * call returns the constant untouched.
13
+ *
10
14
  * The Rust mirror is the `cn!` macro in `ev_lib::uikit` (`tailwind_fuse::tw_merge!`).
11
15
  */
12
16
  declare function cn(...inputs: ClassValue[]): string;
@@ -163,8 +167,8 @@ declare function useHoverIntent(opts: {
163
167
  declare function mergeRefs<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T>;
164
168
 
165
169
  declare const alertVariants: {
166
- readonly default: "bg-card text-card-foreground";
167
- readonly destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90";
170
+ readonly default: "bg-card text-ink";
171
+ readonly destructive: "text-accent-error bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-accent-error/90";
168
172
  };
169
173
  type AlertVariant = keyof typeof alertVariants;
170
174
 
@@ -180,11 +184,11 @@ declare function AvatarImage({ className, onError, ...props }: React.ComponentPr
180
184
  declare function AvatarFallback({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
181
185
 
182
186
  declare const badgeVariants: {
183
- readonly default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90";
184
- readonly secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90";
185
- readonly destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20";
186
- readonly outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground";
187
- readonly success: "border-transparent bg-main-accent-t2/20 text-main-accent-t2";
187
+ readonly default: "border-transparent bg-primary text-on-primary [a&]:hover:bg-primary/90";
188
+ readonly secondary: "border-transparent bg-secondary text-on-secondary [a&]:hover:bg-secondary/90";
189
+ readonly destructive: "border-transparent bg-accent-error text-on-accent-error [a&]:hover:bg-accent-error/90 focus-visible:ring-accent-error/20";
190
+ readonly outline: "text-ink [a&]:hover:bg-hover [a&]:hover:text-ink";
191
+ readonly success: "border-transparent bg-positive/20 text-positive";
188
192
  };
189
193
  type BadgeVariant = keyof typeof badgeVariants;
190
194
 
@@ -206,21 +210,25 @@ declare function BreadcrumbSeparator({ children, className, ...props }: React.Co
206
210
  declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
207
211
 
208
212
  declare const buttonVariantClasses: {
209
- readonly default: "bg-primary text-primary-foreground hover:bg-primary/90";
210
- readonly secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80";
211
- readonly outline: "border bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground";
212
- readonly ghost: "hover:bg-accent hover:text-accent-foreground";
213
- readonly destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20";
213
+ readonly default: "bg-primary text-on-primary hover:bg-primary/90";
214
+ readonly secondary: "bg-secondary text-on-secondary hover:bg-secondary/80";
215
+ readonly outline: "border bg-transparent shadow-xs hover:bg-hover hover:text-ink";
216
+ readonly ghost: "hover:bg-hover hover:text-ink";
217
+ readonly destructive: "bg-accent-error text-on-accent-error hover:bg-accent-error/90 focus-visible:ring-accent-error/20";
214
218
  readonly link: "text-primary underline-offset-4 hover:underline";
215
219
  };
216
220
  type ButtonVariant = keyof typeof buttonVariantClasses;
217
221
  declare const buttonSizeClasses: {
218
- readonly default: "h-9 px-4 py-2 has-[>svg]:px-3";
219
- readonly sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5";
220
- readonly lg: "h-10 rounded-md px-6 has-[>svg]:px-4";
222
+ readonly default: "h-9 px-4 py-[var(--control-py)] has-[>svg]:px-3";
223
+ readonly xs: "h-7 gap-1 px-2 text-xs has-[>svg]:px-1.5";
224
+ readonly sm: "h-8 gap-1.5 px-3 has-[>svg]:px-2.5";
225
+ readonly lg: "h-10 px-6 has-[>svg]:px-4";
226
+ readonly xl: "px-[var(--control-px)] py-[var(--control-py)] text-[length:var(--control-text)]";
221
227
  readonly icon: "h-9 aspect-square px-0";
228
+ readonly "icon-xs": "h-7 aspect-square px-0";
222
229
  readonly "icon-sm": "h-8 aspect-square px-0";
223
230
  readonly "icon-lg": "h-10 aspect-square px-0";
231
+ readonly "icon-xl": "aspect-square p-[var(--control-py)]";
224
232
  };
225
233
  type ButtonSize = keyof typeof buttonSizeClasses;
226
234
 
@@ -239,8 +247,11 @@ interface ButtonProps extends React.ComponentProps<"button"> {
239
247
  variant?: ButtonVariant;
240
248
  size?: ButtonSize;
241
249
  asChild?: boolean;
250
+ /** Renders an `<a>` wearing the button's classes — a link that looks like a
251
+ * call to action is still a link. */
252
+ href?: string;
242
253
  }
243
- declare function Button({ className, variant, size, asChild, ...props }: ButtonProps): React.JSX.Element;
254
+ declare function Button({ className, variant, size, asChild, href, ...props }: ButtonProps): React.JSX.Element;
244
255
 
245
256
  declare const buttonGroupOrientationClasses: {
246
257
  readonly horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none";
@@ -268,7 +279,7 @@ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">
268
279
 
269
280
  declare const emptyMediaVariants: {
270
281
  readonly default: "bg-transparent";
271
- readonly icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6";
282
+ readonly icon: "bg-muted text-ink flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6";
272
283
  };
273
284
  type EmptyMediaVariant = keyof typeof emptyMediaVariants;
274
285
 
@@ -324,14 +335,11 @@ interface SectionDescriptorProps extends Omit<React.ComponentProps<"section">, "
324
335
  declare function SectionDescriptor({ title, icon, collapsible, defaultOpen, className, children, ...props }: SectionDescriptorProps): React.JSX.Element;
325
336
 
326
337
  /**
327
- * The EV brand chrome footer, ported from site_conductor: a 12-col grid —
328
- * brand 3 | sitemap groups 2 each | Offices 3 | Newsletter 2 — over the dark
329
- * field, with the legal links and copyright line. On mobile the sitemap
330
- * columns sit side by side. All copy is parameterized with the EV defaults so
331
- * a bare `<Footer nav={…} />` matches the site; only the sitemap groups (and
332
- * the newsletter form, when wanted) come from the app. `children` render right
333
- * after the `<footer>` tag — the slot for app-side extras like the
334
- * build-version easter egg.
338
+ * A 12-col footer grid — brand 3 | sitemap groups 2 each | offices 3 |
339
+ * newsletter 2 — with the legal links and copyright line. On mobile the sitemap
340
+ * columns sit side by side. Every string is the caller's; the `offices` and
341
+ * `newsletter` columns are omitted when empty. `children` render right after the
342
+ * `<footer>` tag — the slot for app-side extras like a build-version easter egg.
335
343
  *
336
344
  * `linkComponent` lets Next hosts pass `next/link`; everyone else gets `<a>`.
337
345
  */
@@ -348,20 +356,26 @@ interface FooterOffice {
348
356
  address: string;
349
357
  }
350
358
  interface FooterProps {
359
+ brand: string;
360
+ description: string;
361
+ copyright: string;
351
362
  nav: readonly FooterLinkGroup[];
352
- description?: string;
363
+ /** The mark beside the brand name. Sized by the caller. */
364
+ mark?: React.ReactNode;
365
+ tagline?: string;
353
366
  offices?: readonly FooterOffice[];
367
+ officesHeading?: string;
354
368
  legalLinks?: readonly FooterLink[];
355
- /** The newsletter form; the Newsletter column renders only when present. */
369
+ /** The newsletter form; the newsletter column renders only when present. */
356
370
  newsletter?: React.ReactNode;
371
+ newsletterHeading?: string;
357
372
  newsletterBlurb?: string;
358
373
  version?: string;
359
374
  commitHref?: string;
360
- tagline?: string;
361
375
  linkComponent?: React.ElementType;
362
376
  children?: React.ReactNode;
363
377
  }
364
- declare function Footer({ nav, description, offices, legalLinks, newsletter, newsletterBlurb, version, commitHref, tagline, linkComponent, children, }: FooterProps): React.JSX.Element;
378
+ declare function Footer({ brand, description, copyright, nav, mark, tagline, offices, officesHeading, legalLinks, newsletter, newsletterHeading, newsletterBlurb, version, commitHref, linkComponent, children, }: FooterProps): React.JSX.Element;
365
379
 
366
380
  declare function Input({ className, type, ...props }: React.ComponentProps<"input">): React.JSX.Element;
367
381
 
@@ -446,25 +460,6 @@ declare function ItemFooter({ className, ...props }: React.ComponentProps<"div">
446
460
  declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): React.JSX.Element;
447
461
  declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
448
462
 
449
- /**
450
- * The EV Investment mark, rendered as a CSS mask (`backgroundColor:
451
- * currentColor` + `maskImage`) so the monochrome lockup follows the
452
- * surrounding text color instead of the SVG's baked-in black. The SVG is
453
- * inlined as a URL-encoded `data:` URI so consumers need no asset pipeline;
454
- * `src` swaps in an externally hosted mark when one is preferred.
455
- *
456
- * `withBackground` paints the clean brand field generated from
457
- * OKLCH(0.256, 0.1, 260) behind the mark, keeping the chip consistent with
458
- * the favicon.
459
- */
460
- interface LogoProps {
461
- className?: string;
462
- withBackground?: boolean;
463
- /** Overrides the inlined data-URI mark with an external SVG URL. */
464
- src?: string;
465
- }
466
- declare function Logo({ className, withBackground, src }: LogoProps): React.JSX.Element;
467
-
468
463
  declare function Pagination({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
469
464
  declare function PaginationContent({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
470
465
  declare function PaginationItem(props: React.ComponentProps<"li">): React.JSX.Element;
@@ -487,8 +482,7 @@ declare function Skeleton({ className, ...props }: React.ComponentProps<"div">):
487
482
  declare function Spinner({ className, ...props }: React.ComponentProps<"svg">): React.JSX.Element;
488
483
 
489
484
  /**
490
- * The shared 404 / 403 / 500 status surface, ported from site_conductor so every
491
- * EV app (landing, cabinet) shows the same branded error pages.
485
+ * The shared 404 / 403 / 500 status surface.
492
486
  *
493
487
  * `StatusScreen` is the generic shell; `NotFound` / `Forbidden` / `ServerError`
494
488
  * are the ready-made pages with their copy baked in — a host renders those with
@@ -497,12 +491,10 @@ declare function Spinner({ className, ...props }: React.ComponentProps<"svg">):
497
491
  * soft navigation from a client boundary.
498
492
  */
499
493
  type StatusAccent = "teal" | "gold" | "red" | "blue";
500
- /** Class for a status CTA — shared by the nav links and the 500 retry button. */
501
- declare function statusButtonClass(accent: StatusAccent, variant: "filled" | "outline"): string;
502
494
  interface StatusLinkData {
503
495
  label: string;
504
496
  href: string;
505
- variant?: "filled" | "outline";
497
+ variant?: ButtonVariant;
506
498
  leadingArrow?: boolean;
507
499
  }
508
500
  interface StatusScreenProps {
@@ -593,6 +585,61 @@ type ContainerProps = React.ComponentProps<"div">;
593
585
  */
594
586
  declare function Container({ className, ...props }: ContainerProps): React.JSX.Element;
595
587
 
588
+ declare const polarityClasses: {
589
+ readonly light: "light";
590
+ readonly dark: "dark";
591
+ };
592
+ type Polarity = keyof typeof polarityClasses;
593
+ declare const surfaceClasses: {
594
+ readonly background: "bg-background text-ink";
595
+ readonly card: "bg-card text-ink";
596
+ readonly muted: "bg-muted text-ink";
597
+ readonly primary: "bg-primary text-on-primary";
598
+ };
599
+ type Surface = keyof typeof surfaceClasses;
600
+
601
+ /**
602
+ * Full-bleed page bands and the type vocabulary that goes in them. A page built
603
+ * from these writes no spacing or type-scale class of its own: the rhythm is
604
+ * `--band-py`, the gutter `--page-px` and the headline scale `--display-scale`,
605
+ * so a global retune is one edit in the consumer's tokens.
606
+ */
607
+ interface SectionProps extends React.ComponentProps<"section"> {
608
+ polarity?: Polarity;
609
+ surface?: Surface;
610
+ tight?: boolean;
611
+ }
612
+ /**
613
+ * `polarity` sets the token scope on the element, so everything inside reads
614
+ * `text-ink` / `border-border` / `text-ink-soft` and resolves correctly on
615
+ * either side. `tight` is the shorter vertical rhythm.
616
+ */
617
+ declare function Section({ polarity, surface, tight, className, ...props }: SectionProps): React.JSX.Element;
618
+ /** The label above a headline, in the interactive role's colour. */
619
+ declare function Eyebrow({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
620
+ /** The headline. One scale for every band on the site, so a retune is one number. */
621
+ declare function Display({ className, ...props }: React.ComponentProps<"h2">): React.JSX.Element;
622
+ interface SectionHeadProps extends Omit<React.ComponentProps<"div">, "title"> {
623
+ eyebrow: React.ReactNode;
624
+ title: React.ReactNode;
625
+ lede?: React.ReactNode;
626
+ }
627
+ /** Eyebrow → headline → lede, the head a band shares. */
628
+ declare function SectionHead({ eyebrow, title, lede, className, ...props }: SectionHeadProps): React.JSX.Element;
629
+ /** Body copy at the reading measure. */
630
+ declare function Prose({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
631
+ interface StatProps extends React.ComponentProps<"span"> {
632
+ figure: React.ReactNode;
633
+ label: React.ReactNode;
634
+ }
635
+ /** A figure with its label beside it. */
636
+ declare function Stat({ figure, label, className, ...props }: StatProps): React.JSX.Element;
637
+ /**
638
+ * The affirmative tick. Positive is a valence, not a significance rung — see the
639
+ * kit's `docs/spec/accents.md`.
640
+ */
641
+ declare function Check({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
642
+
596
643
  type TabsOrientation = "horizontal" | "vertical";
597
644
  interface TabsProps extends Omit<React.ComponentProps<"div">, "onChange"> {
598
645
  value?: string;
@@ -618,13 +665,15 @@ declare function TabsContent({ className, value, children, ...props }: TabsConte
618
665
 
619
666
  declare const toggleVariantClasses: {
620
667
  readonly default: "bg-transparent";
621
- readonly outline: "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground";
668
+ readonly outline: "border border-input bg-transparent shadow-xs hover:bg-hover hover:text-ink";
622
669
  };
623
670
  type ToggleVariant = keyof typeof toggleVariantClasses;
624
671
  declare const toggleSizeClasses: {
625
672
  readonly default: "h-9 px-2 min-w-9";
673
+ readonly xs: "h-7 px-1 min-w-7";
626
674
  readonly sm: "h-8 px-1.5 min-w-8";
627
675
  readonly lg: "h-10 px-2.5 min-w-10";
676
+ readonly xl: "h-12 px-3 min-w-12";
628
677
  };
629
678
  type ToggleSize = keyof typeof toggleSizeClasses;
630
679
 
@@ -713,14 +762,9 @@ interface ScrollBarProps extends React.ComponentProps<"div"> {
713
762
  }
714
763
  declare function ScrollBar({ className, orientation, ...props }: ScrollBarProps): React.JSX.Element;
715
764
 
716
- declare const sidebarMenuButtonVariantClasses: {
717
- readonly default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground";
718
- readonly outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]";
719
- };
720
- type SidebarMenuButtonVariant = keyof typeof sidebarMenuButtonVariantClasses;
721
765
  declare const sidebarMenuButtonSizeClasses: {
766
+ readonly xs: "h-7 text-xs";
722
767
  readonly default: "h-8 text-sm";
723
- readonly sm: "h-7 text-xs";
724
768
  readonly lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!";
725
769
  };
726
770
  type SidebarMenuButtonSize = keyof typeof sidebarMenuButtonSizeClasses;
@@ -762,7 +806,7 @@ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<"
762
806
  interface SidebarMenuButtonProps extends React.ComponentProps<"button"> {
763
807
  asChild?: boolean;
764
808
  isActive?: boolean;
765
- variant?: SidebarMenuButtonVariant;
809
+ variant?: ButtonVariant;
766
810
  size?: SidebarMenuButtonSize;
767
811
  }
768
812
  declare function SidebarMenuButton({ asChild, isActive, variant, size, className, ...props }: SidebarMenuButtonProps): React.JSX.Element;
@@ -1161,10 +1205,10 @@ declare function SheetTitle({ className, ...props }: React.ComponentProps<"h2">)
1161
1205
  declare function SheetDescription({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
1162
1206
 
1163
1207
  declare const drawerDirectionClasses: {
1164
- readonly bottom: "inset-x-0 bottom-0 mt-24 max-h-[80vh] flex-col rounded-t-lg border-b-0";
1165
- readonly top: "inset-x-0 top-0 mb-24 max-h-[80vh] flex-col rounded-b-lg border-t-0";
1166
- readonly left: "inset-y-0 left-0 w-3/4 flex-row border-r sm:max-w-sm";
1167
- readonly right: "inset-y-0 right-0 w-3/4 flex-row border-l sm:max-w-sm";
1208
+ readonly bottom: "data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom inset-x-0 bottom-0 mt-24 max-h-[80vh] flex-col rounded-t-lg border-b-0";
1209
+ readonly top: "data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top inset-x-0 top-0 mb-24 max-h-[80vh] flex-col rounded-b-lg border-t-0";
1210
+ readonly left: "data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left inset-y-0 left-0 w-3/4 flex-row border-r sm:max-w-sm";
1211
+ readonly right: "data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right inset-y-0 right-0 w-3/4 flex-row border-l sm:max-w-sm";
1168
1212
  };
1169
1213
  type DrawerDirection = keyof typeof drawerDirectionClasses;
1170
1214
 
@@ -1322,11 +1366,11 @@ interface CalendarProps {
1322
1366
  declare function Calendar({ selected, onSelect, month, defaultMonth, onMonthChange, today, className, }: CalendarProps): React.JSX.Element;
1323
1367
 
1324
1368
  declare const toastVariantClasses: {
1325
- readonly default: "bg-popover text-popover-foreground border-border";
1326
- readonly success: "bg-popover text-popover-foreground border-main-accent-t2/40";
1327
- readonly error: "bg-popover text-popover-foreground border-destructive/50";
1328
- readonly info: "bg-popover text-popover-foreground border-border";
1329
- readonly warning: "bg-popover text-popover-foreground border-border";
1369
+ readonly default: "bg-popover text-ink border-border";
1370
+ readonly success: "bg-popover text-ink border-positive/40";
1371
+ readonly error: "bg-popover text-ink border-accent-error/50";
1372
+ readonly info: "bg-popover text-ink border-border";
1373
+ readonly warning: "bg-popover text-ink border-border";
1330
1374
  };
1331
1375
  type ToastVariant = keyof typeof toastVariantClasses;
1332
1376
  declare const positionClasses: {
@@ -1425,4 +1469,4 @@ interface ResizableHandleProps extends React.ComponentProps<"div"> {
1425
1469
  }
1426
1470
  declare function ResizableHandle({ className, index, withHandle, children, ...props }: ResizableHandleProps): React.JSX.Element;
1427
1471
 
1428
- export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, type AlertDialogCancelProps, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, type AlertDialogOverlayProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AlertTitle, type AlertVariant, type Align, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, type BadgeVariant, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, type ButtonGroupTextProps, type ButtonProps, type ButtonSize, type ButtonVariant, type ButtonVariantsOptions, Calendar, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselEdgeFade, CarouselItem, CarouselNext, CarouselPrevious, type CarouselProps, type ChartConfig, ChartContainer, type ChartItem, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleTrigger, Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, type CommandGroupProps, CommandInput, CommandItem, type CommandItemProps, CommandList, type CommandProps, CommandSeparator, CommandShortcut, Container, type ContainerProps, ContextMenu, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, ContextMenuGroup, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuPortal, type ContextMenuProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, Dialog, DialogClose, type DialogCloseProps, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, type DialogOverlayProps, DialogPortal, type DialogPortalProps, type DialogProps, DialogTitle, DialogTrigger, type DialogTriggerProps, Drawer, DrawerClose, type DrawerCloseProps, DrawerContent, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, DrawerOverlay, type DrawerProps, DrawerTitle, DrawerTrigger, type DrawerTriggerProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, type DropdownMenuProps, DropdownMenuRadioGroup, type DropdownMenuRadioGroupProps, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, type DropdownMenuSubProps, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyMediaProps, type EmptyMediaVariant, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, type FieldOrientation, FieldSeparator, FieldSet, FieldTitle, type FloatingResult, Footer, type FooterLink, type FooterLinkGroup, type FooterOffice, type FooterProps, Forbidden, Form, FormControl, FormDescription, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, type HoverCardContentProps, type HoverCardProps, HoverCardTrigger, type HoverCardTriggerProps, type HoverIntentHandlers, InfoTip, InfoTipContent, type InfoTipContentProps, type InfoTipProps, InfoTipTrigger, type InfoTipTriggerProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonAlign, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupButtonSize, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, type InputOTPProps, InputOTPSeparator, InputOTPSlot, type InputOTPSlotProps, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, type ItemMediaProps, type ItemMediaVariant, type ItemProps, ItemSeparator, type ItemSize, ItemTitle, type ItemVariant, Kbd, KbdGroup, Label, Logo, type LogoProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, type MenubarMenuProps, MenubarRadioGroup, type MenubarRadioGroupProps, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, type MenubarSubProps, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, type NavigationMenuItemProps, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFound, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, type PaginationLinkProps, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, type PopoverAnchorProps, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Portal, type PortalProps, Progress, type ProgressProps, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type ResizableDirection, ResizableHandle, type ResizableHandleProps, ResizablePanel, ResizablePanelGroup, type ResizablePanelGroupProps, type ResizablePanelProps, ScrollArea, ScrollBar, type ScrollBarOrientation, type ScrollBarProps, SectionDescriptor, type SectionDescriptorProps, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectProps, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, type SelectValueProps, Separator, type SeparatorOrientation, type SeparatorProps, ServerError, type ServerErrorProps, Sheet, SheetClose, type SheetCloseProps, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, type SheetOverlayProps, type SheetProps, SheetTitle, SheetTrigger, type SheetTriggerProps, type Side, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, type SidebarGroupLabelProps, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, type SidebarMenuButtonProps, type SidebarMenuButtonSize, type SidebarMenuButtonVariant, SidebarMenuItem, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, type SliderProps, Slot, type SlotProps, Spinner, type StatusAccent, type StatusLinkData, type StatusPageProps, StatusScreen, type StatusScreenProps, Switch, type SwitchProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsProps, TabsTrigger, type TabsTriggerProps, Textarea, type Toast, type ToastFn, type ToastOptions, type ToastPosition, type ToastState, type ToastVariant, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, type ToggleSize, type ToggleVariant, type ToggleVariantsOptions, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, type TooltipProviderProps, TooltipTrigger, type TooltipTriggerProps, buttonVariants, cn, mergeRefs, navigationMenuTriggerStyle, statusButtonClass, toast, toggleVariants, useControllableState, useDismissableLayer, useFloating, useFocusScope, useHoverIntent, usePresence, useRovingFocus, useSidebar };
1472
+ export { Accordion, AccordionContent, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, type AlertDialogCancelProps, AlertDialogContent, type AlertDialogContentProps, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, type AlertDialogOverlayProps, type AlertDialogProps, AlertDialogTitle, AlertDialogTrigger, type AlertDialogTriggerProps, type AlertProps, AlertTitle, type AlertVariant, type Align, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, type BadgeVariant, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, type ButtonGroupTextProps, type ButtonProps, type ButtonSize, type ButtonVariant, type ButtonVariantsOptions, Calendar, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselEdgeFade, CarouselItem, CarouselNext, CarouselPrevious, type CarouselProps, type ChartConfig, ChartContainer, type ChartItem, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Check, Checkbox, type CheckboxProps, Collapsible, CollapsibleContent, type CollapsibleProps, CollapsibleTrigger, Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, type CommandGroupProps, CommandInput, CommandItem, type CommandItemProps, CommandList, type CommandProps, CommandSeparator, CommandShortcut, Container, type ContainerProps, ContextMenu, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, ContextMenuGroup, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuPortal, type ContextMenuProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, Dialog, DialogClose, type DialogCloseProps, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, type DialogOverlayProps, DialogPortal, type DialogPortalProps, type DialogProps, DialogTitle, DialogTrigger, type DialogTriggerProps, Display, Drawer, DrawerClose, type DrawerCloseProps, DrawerContent, DrawerDescription, type DrawerDirection, DrawerFooter, DrawerHeader, DrawerOverlay, type DrawerProps, DrawerTitle, DrawerTrigger, type DrawerTriggerProps, DropdownMenu, DropdownMenuCheckboxItem, type DropdownMenuCheckboxItemProps, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, type DropdownMenuProps, DropdownMenuRadioGroup, type DropdownMenuRadioGroupProps, DropdownMenuRadioItem, type DropdownMenuRadioItemProps, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, type DropdownMenuSubProps, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, type DropdownMenuTriggerProps, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyMediaProps, type EmptyMediaVariant, EmptyTitle, Eyebrow, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, type FieldOrientation, FieldSeparator, FieldSet, FieldTitle, type FloatingResult, Footer, type FooterLink, type FooterLinkGroup, type FooterOffice, type FooterProps, Forbidden, Form, FormControl, FormDescription, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, type HoverCardContentProps, type HoverCardProps, HoverCardTrigger, type HoverCardTriggerProps, type HoverIntentHandlers, InfoTip, InfoTipContent, type InfoTipContentProps, type InfoTipProps, InfoTipTrigger, type InfoTipTriggerProps, Input, InputGroup, InputGroupAddon, type InputGroupAddonAlign, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupButtonSize, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, type InputOTPProps, InputOTPSeparator, InputOTPSlot, type InputOTPSlotProps, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, type ItemMediaProps, type ItemMediaVariant, type ItemProps, ItemSeparator, type ItemSize, ItemTitle, type ItemVariant, Kbd, KbdGroup, Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, type MenubarMenuProps, MenubarRadioGroup, type MenubarRadioGroupProps, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, type MenubarSubProps, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, type NavigationMenuItemProps, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NotFound, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, type PaginationLinkProps, PaginationNext, PaginationPrevious, type Polarity, Popover, PopoverAnchor, type PopoverAnchorProps, PopoverContent, type PopoverContentProps, type PopoverProps, PopoverTrigger, type PopoverTriggerProps, Portal, type PortalProps, Progress, type ProgressProps, Prose, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, type ResizableDirection, ResizableHandle, type ResizableHandleProps, ResizablePanel, ResizablePanelGroup, type ResizablePanelGroupProps, type ResizablePanelProps, ScrollArea, ScrollBar, type ScrollBarOrientation, type ScrollBarProps, Section, SectionDescriptor, type SectionDescriptorProps, SectionHead, type SectionHeadProps, type SectionProps, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, type SelectProps, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, type SelectValueProps, Separator, type SeparatorOrientation, type SeparatorProps, ServerError, type ServerErrorProps, Sheet, SheetClose, type SheetCloseProps, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, type SheetOverlayProps, type SheetProps, SheetTitle, SheetTrigger, type SheetTriggerProps, type Side, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, type SidebarGroupLabelProps, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuButton, type SidebarMenuButtonProps, type SidebarMenuButtonSize, SidebarMenuItem, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, type SliderProps, Slot, type SlotProps, Spinner, Stat, type StatProps, type StatusAccent, type StatusLinkData, type StatusPageProps, StatusScreen, type StatusScreenProps, type Surface, Switch, type SwitchProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsProps, TabsTrigger, type TabsTriggerProps, Textarea, type Toast, type ToastFn, type ToastOptions, type ToastPosition, type ToastState, type ToastVariant, Toaster, type ToasterProps, Toggle, ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleProps, type ToggleSize, type ToggleVariant, type ToggleVariantsOptions, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, type TooltipProviderProps, TooltipTrigger, type TooltipTriggerProps, buttonVariants, cn, mergeRefs, navigationMenuTriggerStyle, toast, toggleVariants, useControllableState, useDismissableLayer, useFloating, useFocusScope, useHoverIntent, usePresence, useRovingFocus, useSidebar };