@assure-one/design-system 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -149,13 +149,14 @@ declare const BreadcrumbSeparator: React$1.ForwardRefExoticComponent<BreadcrumbS
149
149
  * - outline → bordered surface (matches `.btn-ghost` from spec)
150
150
  * - link → text-accent (cyan) with underline-on-hover
151
151
  * - accent → bg-accent (cyan CTA per spec §6.2)
152
+ * - dashed → full-bleed "+ Add another" CTA, transparent fill + dashed border
152
153
  *
153
154
  * Sizes match shadcn convention; default `md` matches spec's 8px/14px padding.
154
155
  * Use `asChild` to render as a different element (e.g. an anchor / next/link).
155
156
  */
156
157
  declare const buttonVariants: (props?: ({
157
- variant?: "link" | "success" | "destructive" | "secondary" | "outline" | "primary" | "ghost" | "accent" | null | undefined;
158
- size?: "sm" | "md" | "lg" | "icon" | null | undefined;
158
+ variant?: "link" | "success" | "destructive" | "secondary" | "outline" | "primary" | "ghost" | "accent" | "dashed" | null | undefined;
159
+ size?: "sm" | "md" | "lg" | "icon" | "icon-xs" | "icon-sm" | null | undefined;
159
160
  } & class_variance_authority_types.ClassProp) | undefined) => string;
160
161
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
161
162
  /** Render as the child element via Radix `Slot` (shadcn pattern). */
@@ -386,6 +387,15 @@ declare const DialogFooter: {
386
387
  declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
387
388
  declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
388
389
 
390
+ declare const chipVariants: (props?: ({
391
+ variant?: "primary" | "neutral" | null | undefined;
392
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
393
+ interface DismissibleChipProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "onClick" | "children">, VariantProps<typeof chipVariants> {
394
+ label: React$1.ReactNode;
395
+ onDismiss: () => void;
396
+ }
397
+ declare const DismissibleChip: React$1.ForwardRefExoticComponent<DismissibleChipProps & React$1.RefAttributes<HTMLButtonElement>>;
398
+
389
399
  declare const DropdownMenu: React$1.FC<DropdownMenuPrimitive.DropdownMenuProps>;
390
400
  declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
391
401
  declare const DropdownMenuGroup: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -455,6 +465,34 @@ interface FormSuccessProps extends React.HTMLAttributes<HTMLParagraphElement> {
455
465
  */
456
466
  declare function FormSuccess({ children, className, ...props }: FormSuccessProps): react_jsx_runtime.JSX.Element;
457
467
 
468
+ /**
469
+ * FormSection — a single grouped block inside a settings/profile form.
470
+ *
471
+ * Renders a real `<fieldset>` + `<legend>` so assistive tech announces the
472
+ * group, and gives consumers a consistent place to hang a title, helper
473
+ * description, and (optionally) an action button on the trailing edge of
474
+ * the heading row.
475
+ *
476
+ * Use inside a parent `<form>` — repeat one `<FormSection>` per logical
477
+ * group (Contact, Address, Notifications, etc.). Slot whatever fields you
478
+ * want into `children`; FormSection does not impose a grid.
479
+ *
480
+ * For marketing-style centered section heads, prefer `<SectionHeader>`.
481
+ * For lower-level title+description blocks that aren't part of a form,
482
+ * use `<SectionHead>` from `./section`.
483
+ */
484
+ interface FormSectionProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, "title"> {
485
+ /** The section heading (renders as `<legend>` text). */
486
+ title: React.ReactNode;
487
+ /** Optional helper text shown directly under the title. */
488
+ description?: React.ReactNode;
489
+ /** Optional trailing slot for an action button or status. */
490
+ action?: React.ReactNode;
491
+ /** Space between the heading block and the fields. Default `mt-4`. */
492
+ headSpacing?: string;
493
+ }
494
+ declare const FormSection: React$1.ForwardRefExoticComponent<FormSectionProps & React$1.RefAttributes<HTMLFieldSetElement>>;
495
+
458
496
  declare const HoverCard: React$1.FC<HoverCardPrimitive.HoverCardProps>;
459
497
  declare const HoverCardTrigger: React$1.ForwardRefExoticComponent<HoverCardPrimitive.HoverCardTriggerProps & React$1.RefAttributes<HTMLAnchorElement>>;
460
498
  declare const HoverCardPortal: React$1.FC<HoverCardPrimitive.HoverCardPortalProps>;
@@ -600,6 +638,13 @@ declare function GoogleBrandIcon({ size, ...props }: IconProps): react_jsx_runti
600
638
  * with 2u gaps).
601
639
  */
602
640
  declare function MicrosoftBrandIcon({ size, ...props }: IconProps): react_jsx_runtime.JSX.Element;
641
+ /**
642
+ * FilterIcon — funnel mark used for filter popover triggers across list
643
+ * pages (clients, workflow, billing, organizers…). Renders the same
644
+ * lucide-style polygon at any size; pair with a corner notification dot
645
+ * to surface active filter count.
646
+ */
647
+ declare function FilterIcon({ size, ...props }: IconProps): react_jsx_runtime.JSX.Element;
603
648
 
604
649
  /**
605
650
  * Input variants. Mirrors the raw HTML `<input>` styled per Assure Pro tokens
@@ -626,7 +671,7 @@ interface LabelProps extends React$1.ComponentPropsWithoutRef<typeof LabelPrimit
626
671
  }
627
672
  declare const Label: React$1.ForwardRefExoticComponent<LabelProps & React$1.RefAttributes<HTMLLabelElement>>;
628
673
 
629
- type ButtonVariant = "primary" | "secondary" | "destructive" | "success" | "ghost" | "outline" | "link" | "accent";
674
+ type ButtonVariant = "primary" | "secondary" | "destructive" | "success" | "ghost" | "outline" | "link" | "accent" | "dashed";
630
675
  type ButtonSize = "sm" | "md" | "lg";
631
676
  interface LinkButtonProps$1 extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> {
632
677
  href: string;
@@ -636,13 +681,56 @@ interface LinkButtonProps$1 extends Omit<React.AnchorHTMLAttributes<HTMLAnchorEl
636
681
  iconRight?: React.ReactNode;
637
682
  children: React.ReactNode;
638
683
  className?: string;
684
+ /**
685
+ * Render a native `<a>` instead of `next/link`. Use for:
686
+ * - cross-origin URLs (e.g. https://other-app.example/sign-in)
687
+ * - same-origin `/api/*` route handlers that 302-redirect off-app
688
+ * (next/link tries to client-route, which doesn't follow the 302)
689
+ * - mailto: / tel: schemes
690
+ *
691
+ * When `target="_blank"` is also set and no explicit `rel` was passed,
692
+ * `rel="noopener noreferrer"` is applied automatically.
693
+ */
694
+ external?: boolean;
639
695
  }
640
696
  /**
641
- * LinkButton — visually identical to `<Button>` but renders a `next/link`.
697
+ * LinkButton — visually identical to `<Button>` but renders a link.
642
698
  * Shares `buttonVariants` so styling stays in lock-step.
699
+ *
700
+ * - Default: renders `next/link` (client-routed internal navigation).
701
+ * - `external`: renders a native `<a>` so the browser handles the request
702
+ * end-to-end. Required for cross-origin URLs and same-origin `/api/*`
703
+ * handlers that 302 off-app.
643
704
  */
644
705
  declare const LinkButton: React$1.ForwardRefExoticComponent<LinkButtonProps$1 & React$1.RefAttributes<HTMLAnchorElement>>;
645
706
 
707
+ /**
708
+ * LoadingRows — N repeating skeleton bars stacked vertically.
709
+ *
710
+ * Replaces the recurring `Array.from({length:N}).map((_, i) => <Skeleton/>)`
711
+ * snippet that surfaces in inboxes, document lists, settings tables, and
712
+ * any other list-shaped loading state. The primitive owns the `aria-busy`
713
+ * + `aria-label` semantics so each consumer doesn't reinvent them.
714
+ *
715
+ * For richer per-row composition (avatar + two text lines, table cells,
716
+ * card grids) keep using `<Skeleton>` / `<SkeletonCircle>` / `<SkeletonText>`
717
+ * directly inside your own list renderer. `LoadingRows` is the *uniform*
718
+ * row case.
719
+ */
720
+ interface LoadingRowsProps extends React.HTMLAttributes<HTMLDivElement> {
721
+ /** How many skeleton rows to render. */
722
+ count?: number;
723
+ /** Height of each row. Accepts any Tailwind height utility (`h-14`, `h-3.5`). Default `h-14`. */
724
+ rowHeight?: string;
725
+ /** Vertical gap between rows. Default `gap-2`. */
726
+ gap?: string;
727
+ /** Override the row Skeleton className (radius, width, etc). */
728
+ rowClassName?: string;
729
+ /** Accessible label announced to screen readers. */
730
+ label?: string;
731
+ }
732
+ declare const LoadingRows: React$1.ForwardRefExoticComponent<LoadingRowsProps & React$1.RefAttributes<HTMLDivElement>>;
733
+
646
734
  /**
647
735
  * Logo — Assure Pro wordmark. Per spec §4 and §6.2, the firm-app brand is
648
736
  * "Assure Pro": "Assure" in fg + "Pro" in pro-fg purple, set in Geist
@@ -1273,51 +1361,138 @@ interface ContentProps extends React.HTMLAttributes<HTMLDivElement> {
1273
1361
  }
1274
1362
  declare const Content: React$1.ForwardRefExoticComponent<ContentProps & React$1.RefAttributes<HTMLDivElement>>;
1275
1363
 
1276
- type SidebarProps = React.HTMLAttributes<HTMLElement>;
1364
+ type SidebarState = "expanded" | "rail";
1365
+ interface SidebarContextValue {
1366
+ state: SidebarState;
1367
+ setState: (next: SidebarState) => void;
1368
+ toggle: () => void;
1369
+ collapsible: boolean;
1370
+ }
1371
+ declare function useSidebarState(): SidebarContextValue;
1372
+ interface SidebarProviderProps {
1373
+ children?: React$1.ReactNode;
1374
+ state?: SidebarState;
1375
+ defaultState?: SidebarState;
1376
+ onStateChange?: (next: SidebarState) => void;
1377
+ /** Persist the user's intent across reloads under this localStorage key. */
1378
+ storageKey?: string;
1379
+ /** Global toggle shortcut. Pass `null` to disable. Defaults to `Mod+\`. */
1380
+ shortcut?: string | null;
1381
+ }
1382
+ declare function SidebarProvider({ children, state: controlled, defaultState, onStateChange, storageKey, shortcut, }: SidebarProviderProps): react_jsx_runtime.JSX.Element;
1383
+ declare namespace SidebarProvider {
1384
+ var displayName: string;
1385
+ }
1386
+ interface SidebarProps extends React$1.HTMLAttributes<HTMLElement> {
1387
+ /**
1388
+ * Opt into the rail / hover-peek behavior. When false (default), the
1389
+ * sidebar always renders expanded — the legacy behavior. When true,
1390
+ * the sidebar reads pinned state from <SidebarProvider>; if no
1391
+ * provider is mounted it still renders expanded, so dropping
1392
+ * `collapsible` alone is a no-op.
1393
+ */
1394
+ collapsible?: boolean;
1395
+ }
1277
1396
  declare const Sidebar: React$1.ForwardRefExoticComponent<SidebarProps & React$1.RefAttributes<HTMLElement>>;
1278
- type SidebarBrandProps = React.HTMLAttributes<HTMLDivElement>;
1397
+ interface SidebarTriggerProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
1398
+ expandLabel?: string;
1399
+ collapseLabel?: string;
1400
+ }
1401
+ declare const SidebarTrigger: React$1.ForwardRefExoticComponent<SidebarTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
1402
+ type SidebarBrandProps = React$1.HTMLAttributes<HTMLDivElement>;
1279
1403
  declare const SidebarBrand: React$1.ForwardRefExoticComponent<SidebarBrandProps & React$1.RefAttributes<HTMLDivElement>>;
1280
- interface SidebarSectionProps extends React.HTMLAttributes<HTMLDivElement> {
1281
- label?: React.ReactNode;
1404
+ /**
1405
+ * Text portion of the brand row. Hides itself when the sidebar
1406
+ * collapses to a rail. Use to wrap product names / wordmarks so the
1407
+ * logo glyph alone remains visible at 64px.
1408
+ */
1409
+ type SidebarBrandTextProps = React$1.HTMLAttributes<HTMLSpanElement>;
1410
+ declare const SidebarBrandText: React$1.ForwardRefExoticComponent<SidebarBrandTextProps & React$1.RefAttributes<HTMLSpanElement>>;
1411
+ interface SidebarSectionProps extends React$1.HTMLAttributes<HTMLDivElement> {
1412
+ label?: React$1.ReactNode;
1282
1413
  /**
1283
1414
  * Label color tone. Encodes the *meaning* of the section's
1284
1415
  * priority in the scan path:
1285
- * - `"pro"` (default) — Pro-purple, for primary day-to-day work
1286
- * (numbered sections like "01 — Today", "02 — Work").
1416
+ * - `"pro"` (default) — Pro-purple, for primary day-to-day work.
1287
1417
  * - `"muted"` — `text-fg-3`, for system-level or settings groups
1288
- * ("— Admin") that should sit lower in the visual hierarchy.
1418
+ * that should sit lower in the visual hierarchy.
1289
1419
  *
1290
1420
  * Mirrors the `tone` API on `<SidebarLinkBadge>`.
1291
1421
  */
1292
1422
  tone?: "pro" | "muted";
1293
1423
  }
1294
1424
  declare const SidebarSection: React$1.ForwardRefExoticComponent<SidebarSectionProps & React$1.RefAttributes<HTMLDivElement>>;
1295
- interface SidebarLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
1425
+ interface SidebarLinkProps extends React$1.AnchorHTMLAttributes<HTMLAnchorElement> {
1296
1426
  /** Required when rendered as `<a>`; ignored when `asChild` is true. */
1297
1427
  href?: string;
1298
- icon?: React.ReactNode;
1428
+ icon?: React$1.ReactNode;
1299
1429
  active?: boolean;
1300
1430
  /**
1301
1431
  * Render via Radix `<Slot>` so the consumer can wrap a router-aware
1302
- * component (e.g. Next.js `<Link>`, React Router `<NavLink>`) that owns
1303
- * `href` and prefetch behavior. Without this, sidebar clicks bypass
1304
- * client-side routing and trigger full page loads.
1432
+ * component (e.g. Next.js `<Link>`, React Router `<NavLink>`) that
1433
+ * owns `href` and prefetch behavior. Without this, sidebar clicks
1434
+ * bypass client-side routing and trigger full page loads.
1305
1435
  */
1306
1436
  asChild?: boolean;
1307
1437
  }
1308
1438
  declare const SidebarLink: React$1.ForwardRefExoticComponent<SidebarLinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
1439
+ /**
1440
+ * Label slot for `<SidebarLink asChild>` consumers.
1441
+ *
1442
+ * The default (non-`asChild`) `SidebarLink` already hides its label in rail
1443
+ * mode. When consumers opt into `asChild` to wrap a router-aware element,
1444
+ * the design system can't reach inside to apply that rule — so consumers
1445
+ * compose this atom around their label text. Removes the leaky requirement
1446
+ * that every consumer re-stamp `group-data-[labels=hide]/sidebar:hidden`
1447
+ * on their inner spans.
1448
+ */
1449
+ type SidebarLinkLabelProps = React$1.HTMLAttributes<HTMLSpanElement>;
1450
+ declare const SidebarLinkLabel: React$1.ForwardRefExoticComponent<SidebarLinkLabelProps & React$1.RefAttributes<HTMLSpanElement>>;
1451
+ /**
1452
+ * Optional trailing action inside a `<SidebarLink asChild>` (e.g. an
1453
+ * expand/collapse chevron for a nested section). Hides in rail because the
1454
+ * action is not meaningful when labels themselves are hidden.
1455
+ */
1456
+ type SidebarLinkActionProps = React$1.HTMLAttributes<HTMLSpanElement>;
1457
+ declare const SidebarLinkAction: React$1.ForwardRefExoticComponent<SidebarLinkActionProps & React$1.RefAttributes<HTMLSpanElement>>;
1309
1458
  declare const sidebarLinkBadgeVariants: (props?: ({
1310
- tone?: "warning" | "default" | "danger" | "neutral" | null | undefined;
1459
+ tone?: "warning" | "default" | "neutral" | "danger" | null | undefined;
1311
1460
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1312
1461
  type SidebarLinkBadgeVariants = VariantProps<typeof sidebarLinkBadgeVariants>;
1313
- interface SidebarLinkBadgeProps extends React.HTMLAttributes<HTMLSpanElement>, SidebarLinkBadgeVariants {
1462
+ interface SidebarLinkBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement>, SidebarLinkBadgeVariants {
1314
1463
  }
1315
1464
  declare const SidebarLinkBadge: React$1.ForwardRefExoticComponent<SidebarLinkBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
1316
- type SidebarFooterProps = React.HTMLAttributes<HTMLDivElement>;
1465
+ interface SidebarLinkGroupProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClick"> {
1466
+ /**
1467
+ * Stable id used for exclusive-mode coordination. Defaults to a
1468
+ * generated React id, which is stable across renders within a
1469
+ * single tree.
1470
+ */
1471
+ id?: string;
1472
+ icon?: React$1.ReactNode;
1473
+ label: React$1.ReactNode;
1474
+ /** Body href — the body row renders as `<a href>`. */
1475
+ href?: string;
1476
+ /** Highlights the body row. Independent of the open state. */
1477
+ active?: boolean;
1478
+ defaultOpen?: boolean;
1479
+ open?: boolean;
1480
+ onOpenChange?: (open: boolean) => void;
1481
+ /**
1482
+ * Called when the body row is clicked, before the open state is
1483
+ * updated and before the section's exclusive lock is claimed. Call
1484
+ * `e.preventDefault()` to opt out of both. Use for navigation that
1485
+ * needs to run *before* the accordion behavior (rare).
1486
+ */
1487
+ onActivate?: (e: React$1.MouseEvent<HTMLAnchorElement>) => void;
1488
+ children?: React$1.ReactNode;
1489
+ }
1490
+ declare const SidebarLinkGroup: React$1.ForwardRefExoticComponent<SidebarLinkGroupProps & React$1.RefAttributes<HTMLDivElement>>;
1491
+ type SidebarFooterProps = React$1.HTMLAttributes<HTMLDivElement>;
1317
1492
  declare const SidebarFooter: React$1.ForwardRefExoticComponent<SidebarFooterProps & React$1.RefAttributes<HTMLDivElement>>;
1318
- interface SidebarUserProps extends React.HTMLAttributes<HTMLDivElement> {
1493
+ interface SidebarUserProps extends React$1.HTMLAttributes<HTMLDivElement> {
1319
1494
  name: string;
1320
- subtitle?: React.ReactNode;
1495
+ subtitle?: React$1.ReactNode;
1321
1496
  avatarSrc?: string | null;
1322
1497
  }
1323
1498
  declare const SidebarUser: React$1.ForwardRefExoticComponent<SidebarUserProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -1357,20 +1532,35 @@ type AppHeaderActionsProps = React.HTMLAttributes<HTMLDivElement>;
1357
1532
  declare const AppHeaderActions: React$1.ForwardRefExoticComponent<AppHeaderActionsProps & React$1.RefAttributes<HTMLDivElement>>;
1358
1533
 
1359
1534
  /**
1360
- * PageHeader — top-of-page title block: eyebrow → headline → meta row.
1361
- * Ports `.page-header` rules from `_shared.css` (lines 486-498).
1535
+ * PageHeader — top-of-page title block: eyebrow → headline + actions row description → meta row.
1536
+ * Ports `.page-header` rules from `_shared.css` (lines 486-498) and
1537
+ * absorbs the trailing-edge `actions` slot pattern that 100+ consumer
1538
+ * files reinvent via `flex items-center justify-between`.
1362
1539
  *
1363
1540
  * `title` is a string per the consumer-side contract (see
1364
1541
  * `assure-pro-spec/from-lighttaxes-claude.md`, "Page header" section).
1365
1542
  * If a consumer needs richer markup in the headline they should compose
1366
1543
  * around PageHeader rather than via this prop.
1544
+ *
1545
+ * Layout rules:
1546
+ * - `eyebrow` sits above the title with a 6px gap.
1547
+ * - `actions` sits to the trailing edge of the title row. On viewports
1548
+ * below `sm`, the actions wrap underneath; consumers can override via
1549
+ * className.
1550
+ * - `description` is a fg-3 subtitle line under the title.
1551
+ * - `meta` is the existing pills/spec/separator slot, still rendered
1552
+ * below the description.
1367
1553
  */
1368
1554
  interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
1369
1555
  /** Slot above the title — usually `<Eyebrow numeric>`. */
1370
1556
  eyebrow?: React.ReactNode;
1371
1557
  /** Page title text. */
1372
1558
  title: string;
1373
- /** Slot below the title for pills, specs, separators. */
1559
+ /** Subtitle line under the title (e.g. one-sentence purpose statement). */
1560
+ description?: React.ReactNode;
1561
+ /** Trailing-edge slot for actions (Button, ButtonGroup, etc.). */
1562
+ actions?: React.ReactNode;
1563
+ /** Slot below the description for pills, specs, separators. */
1374
1564
  meta?: React.ReactNode;
1375
1565
  }
1376
1566
  declare const PageHeader: React$1.ForwardRefExoticComponent<PageHeaderProps & React$1.RefAttributes<HTMLElement>>;
@@ -1385,6 +1575,86 @@ type PageHeaderSepProps = React.HTMLAttributes<HTMLSpanElement>;
1385
1575
  /** PageHeaderSep — the `·` dot separator used between meta items. */
1386
1576
  declare const PageHeaderSep: React$1.ForwardRefExoticComponent<PageHeaderSepProps & React$1.RefAttributes<HTMLSpanElement>>;
1387
1577
 
1578
+ /**
1579
+ * MetadataGrid + DataItem — label / value pair grid.
1580
+ *
1581
+ * Used inside detail surfaces (Client > Overview, Engagement > Header,
1582
+ * Invoice > Summary) where the page needs to lay out a list of facts:
1583
+ *
1584
+ * EIN 12-3456789
1585
+ * Joined Aug 2022
1586
+ * Primary contact Liz Chen <liz@acme.test>
1587
+ * Tier Annual
1588
+ *
1589
+ * Replaces the recurring `<div className="grid grid-cols-2 gap-x-6 gap-y-3">`
1590
+ * + per-row `<div>label</div><div>value</div>` shape.
1591
+ *
1592
+ * `MetadataGrid` provides the grid; `DataItem` owns the label/value
1593
+ * typography. Both compose: a `DataItem` can take `span={2}` to occupy
1594
+ * a full row in a 2-column grid.
1595
+ */
1596
+ interface MetadataGridProps extends React.HTMLAttributes<HTMLDListElement> {
1597
+ /** Number of columns. Default 2. Use 1 for narrow surfaces (mobile cards). */
1598
+ columns?: 1 | 2 | 3 | 4;
1599
+ /** Horizontal gap between cells. Default `gap-x-6`. */
1600
+ gapX?: string;
1601
+ /** Vertical gap between rows. Default `gap-y-3`. */
1602
+ gapY?: string;
1603
+ }
1604
+ declare const MetadataGrid: React$1.ForwardRefExoticComponent<MetadataGridProps & React$1.RefAttributes<HTMLDListElement>>;
1605
+ interface DataItemProps {
1606
+ /** Label rendered as `<dt>`. Should be a noun phrase, sentence case. */
1607
+ label: React.ReactNode;
1608
+ /** Value rendered as `<dd>`. */
1609
+ value: React.ReactNode;
1610
+ /** Span this many grid columns. Useful for long string values inside a 2-col grid. */
1611
+ span?: 1 | 2 | 3 | 4;
1612
+ className?: string;
1613
+ }
1614
+ declare function DataItem({ label, value, span, className }: DataItemProps): react_jsx_runtime.JSX.Element;
1615
+
1616
+ /**
1617
+ * KpiCard — single-stat tile: label + value + optional tone + optional hint.
1618
+ *
1619
+ * Replaces the three different KPI / stat-card shapes that recur across
1620
+ * the dashboard, billing, and attention-queue surfaces:
1621
+ *
1622
+ * ┌──────────────┐
1623
+ * │ 🔵 247 │
1624
+ * │ Clients │
1625
+ * └──────────────┘
1626
+ *
1627
+ * - `value` is the big-typography figure (count, currency).
1628
+ * - `label` is the small caption.
1629
+ * - `tone` colors the icon tile / value via semantic tokens (info,
1630
+ * success, warning, destructive, accent, muted). Default `muted`.
1631
+ * - `icon` slot accepts any node; rendered inside a rounded tile.
1632
+ * - `hint` is an optional `text-xs text-fg-3` line under the value
1633
+ * ("+18 this month", "vs. last quarter").
1634
+ * - `action` is an optional trailing slot for a button or link.
1635
+ *
1636
+ * Renders as a `<Card>`. Wrap in a `<Link>` from the consumer side if
1637
+ * the tile should navigate.
1638
+ */
1639
+ type KpiTone = "info" | "success" | "warning" | "destructive" | "accent" | "muted";
1640
+ interface KpiCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
1641
+ /** Small caption above (or below, depending on layout) the value. */
1642
+ label: React.ReactNode;
1643
+ /** Main figure — count, currency, percentage. Renders as a 2xl bold. */
1644
+ value: React.ReactNode;
1645
+ /** Optional leading icon, rendered inside a colored tile. */
1646
+ icon?: React.ReactNode;
1647
+ /** Color family for the icon tile + (optional) the value. Default `muted`. */
1648
+ tone?: KpiTone;
1649
+ /** Optional subline below the value (e.g. `"+18 this month"`). */
1650
+ hint?: React.ReactNode;
1651
+ /** Optional trailing-edge slot for a button or link. */
1652
+ action?: React.ReactNode;
1653
+ /** When `true`, the value text picks up the tone color. Default `false` (value stays fg). */
1654
+ toneValue?: boolean;
1655
+ }
1656
+ declare const KpiCard: React$1.ForwardRefExoticComponent<KpiCardProps & React$1.RefAttributes<HTMLDivElement>>;
1657
+
1388
1658
  interface DataTableProps extends React.HTMLAttributes<HTMLDivElement> {
1389
1659
  /** When true, renders the table card with a flat top edge so it
1390
1660
  * visually attaches to a `<DataTableToolbar>` above it. */
@@ -1686,4 +1956,4 @@ declare const KbdHint: React$1.ForwardRefExoticComponent<KbdHintProps & React$1.
1686
1956
 
1687
1957
  declare function cn(...inputs: ClassValue[]): string;
1688
1958
 
1689
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, type ActivityDotVariant, ActivityItem, type ActivityItemProps, ActivityList, type ActivityListProps, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AlertTriangleIcon, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBreadcrumb, type AppHeaderBreadcrumbProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderTitle, type AppHeaderTitleProps, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, type BadgeProps, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, BriefcaseIcon, Building2Icon, BuildingIcon, Button, type ButtonProps, Calendar, type CalendarHighlight, type CalendarHighlightColor, CalendarIcon, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardVariants, ChatBubbleIcon, CheckCircle2Icon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, type ClientSelectOption, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, type ComingSoonProps, CommandIcon, type CommandItem, CommandPalette, ConfirmActionButton, type ConfirmActionButtonProps, Content, type ContentProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, type DangerActionProps, DataTable, DataTableBody, type DataTableBodyProps, DataTableCell, DataTableCellDue, type DataTableCellDueProps, DataTableCellId, DataTableCellMono, DataTableCellName, type DataTableCellProps, DataTableCheckbox, type DataTableCheckboxProps, DataTableHead, type DataTableHeadProps, DataTableHeader, type DataTableHeaderProps, DataTablePagination, type DataTablePaginationProps, type DataTableProps, DataTableResultsCount, type DataTableResultsCountProps, DataTableRow, type DataTableRowProps, DataTableSearch, type DataTableSearchProps, DataTableSpacer, type DataTableSpacerProps, DataTableToolbar, type DataTableToolbarProps, DatePicker, DetailGrid, type DetailGridProps, DetailMain, type DetailMainProps, DetailSpine, DetailSpineHeader, type DetailSpineHeaderProps, type DetailSpineProps, DetailSpineSection, type DetailSpineSectionProps, DetailSpineStats, type DetailSpineStatsProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, EyeIcon, EyeOffIcon, Eyebrow, type EyebrowProps, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, type FilterChipProps, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, type IconActionProps, InboxIcon, InfoIcon, Input, type InputVariants, ItalicIcon, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, KanbanIcon, type KanbanProps, KbdHint, type KbdHintProps, KeyIcon, KeyboardShortcutsDialog, Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, type LinkActionProps, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, type MainProps, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, type MutedSpecProps, Numeric, type NumericProps, OTPInput, PageHeader, type PageHeaderProps, PageHeaderSep, type PageHeaderSepProps, PageHeaderSpec, type PageHeaderSpecProps, Pagination, type PaginationProps, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, type PrimaryActionProps, ProgressBar, type ProgressBarProps, ProgressRing, type ProgressRingProps, RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, type SearchInputVariants, SearchSelect, type SearchSelectOption, SecondaryAction, type SecondaryActionProps, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, type SelectOption, type SelectProps, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, type ShellProps, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarFooter, type SidebarFooterProps, SidebarLink, SidebarLinkBadge, type SidebarLinkBadgeProps, type SidebarLinkBadgeVariants, type SidebarLinkProps, type SidebarProps, SidebarSection, type SidebarSectionProps, SidebarUser, type SidebarUserProps, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, type SortDirection, SparkleIcon, SparklesIcon, StarIcon, StarRating, type StarRatingProps, Stat, type Step, Stepper, type StepperProps, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, TableIcon, type TableProps, TableRow, type TableRowProps, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, type TextareaVariants, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, displayToIso, filterChipVariants, inputVariants, isoToDisplay, kanbanCardVariants, labelVariants, progressBarVariants, progressRingVariants, searchInputVariants, sidebarLinkBadgeVariants, starRatingVariants, textareaVariants, useToast };
1959
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, type ActivityDotVariant, ActivityItem, type ActivityItemProps, ActivityList, type ActivityListProps, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AlertTriangleIcon, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBreadcrumb, type AppHeaderBreadcrumbProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderTitle, type AppHeaderTitleProps, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, type BadgeProps, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, BriefcaseIcon, Building2Icon, BuildingIcon, Button, type ButtonProps, Calendar, type CalendarHighlight, type CalendarHighlightColor, CalendarIcon, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardVariants, ChatBubbleIcon, CheckCircle2Icon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, type ClientSelectOption, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, type ComingSoonProps, CommandIcon, type CommandItem, CommandPalette, ConfirmActionButton, type ConfirmActionButtonProps, Content, type ContentProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, type DangerActionProps, DataItem, DataTable, DataTableBody, type DataTableBodyProps, DataTableCell, DataTableCellDue, type DataTableCellDueProps, DataTableCellId, DataTableCellMono, DataTableCellName, type DataTableCellProps, DataTableCheckbox, type DataTableCheckboxProps, DataTableHead, type DataTableHeadProps, DataTableHeader, type DataTableHeaderProps, DataTablePagination, type DataTablePaginationProps, type DataTableProps, DataTableResultsCount, type DataTableResultsCountProps, DataTableRow, type DataTableRowProps, DataTableSearch, type DataTableSearchProps, DataTableSpacer, type DataTableSpacerProps, DataTableToolbar, type DataTableToolbarProps, DatePicker, DetailGrid, type DetailGridProps, DetailMain, type DetailMainProps, DetailSpine, DetailSpineHeader, type DetailSpineHeaderProps, type DetailSpineProps, DetailSpineSection, type DetailSpineSectionProps, DetailSpineStats, type DetailSpineStatsProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, EyeIcon, EyeOffIcon, Eyebrow, type EyebrowProps, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, type FilterChipProps, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, type IconActionProps, InboxIcon, InfoIcon, Input, type InputVariants, ItalicIcon, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, KanbanIcon, type KanbanProps, KbdHint, type KbdHintProps, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, type LinkActionProps, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, type MainProps, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, type MutedSpecProps, Numeric, type NumericProps, OTPInput, PageHeader, type PageHeaderProps, PageHeaderSep, type PageHeaderSepProps, PageHeaderSpec, type PageHeaderSpecProps, Pagination, type PaginationProps, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, type PrimaryActionProps, ProgressBar, type ProgressBarProps, ProgressRing, type ProgressRingProps, RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, type SearchInputVariants, SearchSelect, type SearchSelectOption, SecondaryAction, type SecondaryActionProps, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, type SelectOption, type SelectProps, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, type ShellProps, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarBrandText, type SidebarBrandTextProps, SidebarFooter, type SidebarFooterProps, SidebarLink, SidebarLinkAction, type SidebarLinkActionProps, SidebarLinkBadge, type SidebarLinkBadgeProps, type SidebarLinkBadgeVariants, SidebarLinkGroup, type SidebarLinkGroupProps, SidebarLinkLabel, type SidebarLinkLabelProps, type SidebarLinkProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarSection, type SidebarSectionProps, type SidebarState, SidebarTrigger, type SidebarTriggerProps, SidebarUser, type SidebarUserProps, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, type SortDirection, SparkleIcon, SparklesIcon, StarIcon, StarRating, type StarRatingProps, Stat, type Step, Stepper, type StepperProps, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, TableIcon, type TableProps, TableRow, type TableRowProps, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, type TextareaVariants, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, displayToIso, filterChipVariants, inputVariants, isoToDisplay, kanbanCardVariants, labelVariants, progressBarVariants, progressRingVariants, searchInputVariants, sidebarLinkBadgeVariants, starRatingVariants, textareaVariants, useSidebarState, useToast };