@coderabbitai/carrot-ui 0.1.21 → 0.1.23

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
@@ -1,5 +1,6 @@
1
1
  import { Accordion as Accordion_2 } from '@base-ui/react/accordion';
2
2
  import { AlertDialog as AlertDialog_2 } from '@base-ui/react/alert-dialog';
3
+ import { AlertDialogDescriptionProps as AlertDialogDescriptionProps_2 } from '@base-ui/react';
3
4
  import { Button as Button_2 } from '@base-ui/react/button';
4
5
  import { Checkbox as Checkbox_2 } from '@base-ui/react/checkbox';
5
6
  import { ClassValue } from 'clsx';
@@ -150,29 +151,18 @@ export declare interface AppHeaderActionsProps {
150
151
  className?: string;
151
152
  }
152
153
 
154
+ /**
155
+ * AppHeader breadcrumb — renders a Logo link followed by breadcrumb segments.
156
+ *
157
+ * Delegates to the standalone Breadcrumb component for the segment rendering.
158
+ * The Logo + first separator is AppHeader-specific.
159
+ */
153
160
  declare function AppHeaderBreadcrumb({ items, linkComponent: LinkEl, className, }: AppHeaderBreadcrumbProps): JSX.Element;
154
161
 
155
- declare interface AppHeaderBreadcrumbItem {
156
- label: string;
157
- icon?: ReactNode;
158
- href?: string;
159
- selector?: boolean;
160
- options?: AppHeaderBreadcrumbOption[];
161
- onSelect?: (value: string) => void;
162
- value?: string;
163
- }
164
-
165
- declare interface AppHeaderBreadcrumbOption {
166
- value: string;
167
- label: string;
168
- icon?: ReactNode;
169
- [key: string]: unknown;
170
- }
171
-
172
162
  export declare interface AppHeaderBreadcrumbProps {
173
- items: AppHeaderBreadcrumbItem[];
163
+ items: BreadcrumbItem[];
174
164
  /** Custom link component (e.g. TanStack Router's Link, Next.js Link, etc.). Defaults to <a>. */
175
- linkComponent?: LinkComponent;
165
+ linkComponent?: LinkComponent_2;
176
166
  className?: string;
177
167
  }
178
168
 
@@ -239,6 +229,60 @@ export declare type BadgeSize = keyof typeof sizeStyles_5;
239
229
 
240
230
  export declare type BadgeVariant = keyof typeof variantStyles_2;
241
231
 
232
+ /**
233
+ * Breadcrumb navigation with support for links, selectors, and icons.
234
+ *
235
+ * Each segment can be:
236
+ * - **Static text** — plain label (last segment, current page)
237
+ * - **Link** — clickable label that navigates to a parent page
238
+ * - **Selector** — label + chevron dropdown to switch between siblings
239
+ * (e.g. switch repos). The label can also be a link independently.
240
+ *
241
+ * Usage:
242
+ * ```tsx
243
+ * <Breadcrumb
244
+ * items={[
245
+ * { label: "Repositories", href: "/repositories" },
246
+ * { label: "landing", href: "/repos/landing", selector: true, options: repos, value: "landing" },
247
+ * { label: "Settings" },
248
+ * ]}
249
+ * />
250
+ * ```
251
+ */
252
+ export declare function Breadcrumb({ items, linkComponent: LinkEl, className, }: BreadcrumbProps): JSX.Element;
253
+
254
+ export declare interface BreadcrumbItem {
255
+ /** Display label for this segment */
256
+ readonly label: string;
257
+ /** Optional icon rendered before the label */
258
+ readonly icon?: ReactNode;
259
+ /** Link URL — makes the label a clickable link */
260
+ readonly href?: string;
261
+ /** Enable a dropdown selector (ChevronUpDown trigger) */
262
+ readonly selector?: boolean;
263
+ /** Options for the selector dropdown */
264
+ readonly options?: BreadcrumbOption[];
265
+ /** Callback when a selector option is chosen */
266
+ readonly onSelect?: (value: string) => void;
267
+ /** Currently selected value for the selector */
268
+ readonly value?: string;
269
+ }
270
+
271
+ export declare interface BreadcrumbOption {
272
+ readonly value: string;
273
+ readonly label: string;
274
+ readonly icon?: ReactNode;
275
+ readonly [key: string]: unknown;
276
+ }
277
+
278
+ export declare interface BreadcrumbProps {
279
+ /** Breadcrumb segments */
280
+ readonly items: BreadcrumbItem[];
281
+ /** Custom link component (e.g. TanStack Router's Link, Next.js Link). Defaults to <a>. */
282
+ readonly linkComponent?: LinkComponent;
283
+ readonly className?: string;
284
+ }
285
+
242
286
  /**
243
287
  * Button component built on Base UI with Tailwind CSS styling.
244
288
  *
@@ -295,6 +339,8 @@ export declare const Card: ReturnType<typeof forwardRef<HTMLDivElement, CardProp
295
339
  Section: typeof CardSection;
296
340
  };
297
341
 
342
+ declare function Card_2({ value, title, description, icon, disabled, className, }: RadioGroupCardProps): JSX.Element;
343
+
298
344
  declare const CardBody: ForwardRefExoticComponent<CardBodyProps & RefAttributes<HTMLDivElement>>;
299
345
 
300
346
  export declare interface CardBodyProps {
@@ -415,6 +461,28 @@ export declare interface ComboboxContentProps {
415
461
  className?: string;
416
462
  }
417
463
 
464
+ /**
465
+ * Groups related combobox items with an optional label.
466
+ * Wraps Base UI's Combobox.Group.
467
+ */
468
+ export declare const ComboboxGroup: ForwardRefExoticComponent<ComboboxGroupProps & RefAttributes<HTMLDivElement>>;
469
+
470
+ /**
471
+ * Accessible label automatically associated with its parent group.
472
+ * Renders via Menu.GroupLabel for consistent styling.
473
+ */
474
+ export declare const ComboboxGroupLabel: ForwardRefExoticComponent<ComboboxGroupLabelProps & RefAttributes<HTMLDivElement>>;
475
+
476
+ export declare interface ComboboxGroupLabelProps {
477
+ readonly className?: string;
478
+ readonly children: ReactNode;
479
+ }
480
+
481
+ export declare interface ComboboxGroupProps {
482
+ readonly className?: string;
483
+ readonly children: ReactNode;
484
+ }
485
+
418
486
  export declare interface ComboboxItem {
419
487
  readonly value: string;
420
488
  readonly label: string;
@@ -450,6 +518,16 @@ export declare interface ComboboxProps {
450
518
  readonly className?: string;
451
519
  }
452
520
 
521
+ /**
522
+ * Visual separator between combobox groups.
523
+ * Renders via Menu.Separator for consistent styling.
524
+ */
525
+ export declare const ComboboxSeparator: ForwardRefExoticComponent<ComboboxSeparatorProps & RefAttributes<HTMLDivElement>>;
526
+
527
+ export declare interface ComboboxSeparatorProps {
528
+ readonly className?: string;
529
+ }
530
+
453
531
  /**
454
532
  * Fully composable trigger. Renders whatever children you give it as the
455
533
  * element that opens the combobox popup.
@@ -528,7 +606,7 @@ export declare const createTooltipHandle: typeof Tooltip_2.createHandle;
528
606
  * For simple static tables, use `Table` directly. Use `DataTable` when you
529
607
  * need interactive features.
530
608
  */
531
- export declare function DataTable<TData>({ columns, data, sortable, paginated, pageSize, pageSizeOptions, selectable, rowSelection: controlledRowSelection, onRowSelectionChange, onRowClick, emptyMessage, className, tableOptions, }: DataTableProps<TData>): JSX.Element;
609
+ export declare function DataTable<TData>({ columns, data, sortable, paginated, pageSize, pageSizeOptions, selectable, rowSelection: controlledRowSelection, onRowSelectionChange, onRowClick, loading, loadingRows, emptyMessage, className, tableOptions, }: DataTableProps<TData>): JSX.Element;
532
610
 
533
611
  /**
534
612
  * A faceted filter button for DataTable, inspired by shadcn's Tasks example.
@@ -588,6 +666,10 @@ export declare interface DataTableProps<TData> {
588
666
  onRowSelectionChange?: (selection: RowSelectionState) => void;
589
667
  /** Called when a row is clicked */
590
668
  onRowClick?: (row: Row<TData>) => void;
669
+ /** Show skeleton loading state. Default false. */
670
+ loading?: boolean;
671
+ /** Number of skeleton rows to show when loading. Default 5. */
672
+ loadingRows?: number;
591
673
  /** Message shown when data is empty. Default "No results." */
592
674
  emptyMessage?: string | ReactNode;
593
675
  /** Additional class on the outer wrapper */
@@ -666,10 +748,11 @@ export declare const Dialog: {
666
748
  Content: typeof DialogContent;
667
749
  Panel: ForwardRefExoticComponent<DialogPanelProps & RefAttributes<HTMLDivElement>>;
668
750
  Title: ForwardRefExoticComponent<Omit<DialogTitleProps, "ref"> & RefAttributes<HTMLHeadingElement>>;
751
+ /** @deprecated Use a plain `<p>` inside Dialog.Body instead. */
752
+ Description: ForwardRefExoticComponent<Omit<AlertDialogDescriptionProps_2, "ref"> & RefAttributes<HTMLParagraphElement>>;
669
753
  Body: ForwardRefExoticComponent<DialogBodyProps & RefAttributes<HTMLDivElement>>;
670
754
  Footer: ForwardRefExoticComponent<DialogFooterProps & RefAttributes<HTMLDivElement>>;
671
755
  Close: ForwardRefExoticComponent<Omit<DialogCloseProps, "ref"> & RefAttributes<HTMLButtonElement>>;
672
- Description: ForwardRefExoticComponent<Omit<DialogDescriptionProps, "ref"> & RefAttributes<HTMLParagraphElement>>;
673
756
  };
674
757
 
675
758
  export declare interface DialogBackdropProps extends ComponentProps<typeof Dialog_2.Backdrop> {
@@ -689,9 +772,6 @@ export declare interface DialogContentProps extends ComponentProps<typeof Dialog
689
772
  size?: DialogSize;
690
773
  }
691
774
 
692
- export declare interface DialogDescriptionProps extends ComponentProps<typeof Dialog_2.Description> {
693
- }
694
-
695
775
  export declare interface DialogFooterProps {
696
776
  className?: string;
697
777
  children: ReactNode;
@@ -956,7 +1036,7 @@ export declare interface FormTextareaProps extends ComponentProps<typeof Field.C
956
1036
  * When `active`, renders its own static background with the press inset
957
1037
  * effect (same as standalone active state). The group pill handles hover.
958
1038
  */
959
- export declare function Hover({ children, active, background, backgroundClassName, borderRadius, focus, interactive, instantHover, disabled, fullWidth, className, }: HoverProps): JSX.Element;
1039
+ export declare function Hover({ children, active, background, backgroundClassName, borderRadius, focus, interactive, instantHover, disabled, fullWidth, className, ...rest }: HoverProps): JSX.Element;
960
1040
 
961
1041
  export declare function HoverGroup({ children, background, borderRadius, className, }: HoverGroupProps): JSX.Element;
962
1042
 
@@ -969,7 +1049,7 @@ export declare interface HoverGroupProps {
969
1049
  className?: string;
970
1050
  }
971
1051
 
972
- export declare interface HoverProps {
1052
+ export declare interface HoverProps extends Omit<ComponentProps<"div">, "children"> {
973
1053
  children: ReactNode;
974
1054
  /** Force the hover background visible (e.g. active/selected state) */
975
1055
  active?: boolean;
@@ -990,7 +1070,6 @@ export declare interface HoverProps {
990
1070
  disabled?: boolean;
991
1071
  /** Stretch to full width */
992
1072
  fullWidth?: boolean;
993
- className?: string;
994
1073
  }
995
1074
 
996
1075
  declare type LinkComponent = ComponentType<{
@@ -1000,6 +1079,13 @@ declare type LinkComponent = ComponentType<{
1000
1079
  children?: ReactNode;
1001
1080
  }>;
1002
1081
 
1082
+ declare type LinkComponent_2 = ComponentType<{
1083
+ to?: string;
1084
+ href?: string;
1085
+ className?: string;
1086
+ children?: ReactNode;
1087
+ }>;
1088
+
1003
1089
  /**
1004
1090
  * CodeRabbit logo mark.
1005
1091
  */
@@ -1059,23 +1145,9 @@ export declare interface NavLinksProps {
1059
1145
  * Full-page layout shell with a sidebar and content area.
1060
1146
  *
1061
1147
  * Structure: sidebar (fixed width) + content panel (flex-1).
1148
+ * The content panel renders as a rounded card on bg-cui-base-0.
1062
1149
  */
1063
1150
  export declare const PageLayout: ForwardRefExoticComponent<PageLayoutProps & RefAttributes<HTMLDivElement>> & {
1064
- Sidebar: (({ defaultCollapsed, className, children, }: SidebarRootProps) => JSX.Element) & {
1065
- Header: ForwardRefExoticComponent<Omit<SidebarHeaderProps, "ref"> & RefAttributes<HTMLDivElement>>;
1066
- CollapseButton: ({ className }: SidebarCollapseButtonProps) => JSX.Element | null;
1067
- BackButton: ({ onClick, className, children, }: SidebarBackButtonProps) => JSX.Element;
1068
- Label: ForwardRefExoticComponent<Omit<SidebarLabelProps, "ref"> & RefAttributes<HTMLSpanElement>>;
1069
- Search: ({ label, icon, onClick, className, }: SidebarSearchProps) => JSX.Element;
1070
- Nav: ({ className, children }: SidebarNavProps) => JSX.Element;
1071
- NavItem: ({ active, nested, icon, href, onClick, className, children, }: SidebarNavItemProps) => JSX.Element;
1072
- Footer: ForwardRefExoticComponent<Omit<SidebarFooterProps, "ref"> & RefAttributes<HTMLDivElement>>;
1073
- };
1074
- SidebarHeader: ForwardRefExoticComponent<Omit<SidebarHeaderProps, "ref"> & RefAttributes<HTMLDivElement>>;
1075
- SidebarSearch: ({ label, icon, onClick, className, }: SidebarSearchProps) => JSX.Element;
1076
- SidebarNav: ({ className, children }: SidebarNavProps) => JSX.Element;
1077
- SidebarNavItem: ({ active, nested, icon, href, onClick, className, children, }: SidebarNavItemProps) => JSX.Element;
1078
- SidebarFooter: ForwardRefExoticComponent<Omit<SidebarFooterProps, "ref"> & RefAttributes<HTMLDivElement>>;
1079
1151
  Header: ForwardRefExoticComponent<Omit<PageLayoutHeaderProps, "ref"> & RefAttributes<HTMLDivElement>>;
1080
1152
  Body: ForwardRefExoticComponent<Omit<PageLayoutBodyProps, "ref"> & RefAttributes<HTMLDivElement>>;
1081
1153
  };
@@ -1087,7 +1159,7 @@ export declare interface PageLayoutHeaderProps extends ComponentProps<"div"> {
1087
1159
  }
1088
1160
 
1089
1161
  export declare interface PageLayoutProps {
1090
- /** Sidebar content (typically PageLayout.Sidebar) */
1162
+ /** Sidebar content */
1091
1163
  readonly sidebar?: ReactNode;
1092
1164
  readonly className?: string;
1093
1165
  readonly children: ReactNode;
@@ -1219,8 +1291,23 @@ export declare interface PopoverTriggerProps extends ComponentProps<typeof Popov
1219
1291
  export declare const RadioGroup: {
1220
1292
  Root: ForwardRefExoticComponent<Omit<RadioGroupRootProps, "ref"> & RefAttributes<HTMLDivElement>>;
1221
1293
  Item: ForwardRefExoticComponent<Omit<RadioGroupItemProps, "ref"> & RefAttributes<HTMLSpanElement>>;
1294
+ Card: typeof Card_2;
1222
1295
  };
1223
1296
 
1297
+ declare interface RadioGroupCardProps {
1298
+ /** Unique value identifying this card */
1299
+ readonly value: string;
1300
+ /** Card title */
1301
+ readonly title: string;
1302
+ /** Optional description below the title */
1303
+ readonly description?: string;
1304
+ /** Optional icon rendered to the left of the text */
1305
+ readonly icon?: ReactNode;
1306
+ /** Disable this card */
1307
+ readonly disabled?: boolean;
1308
+ readonly className?: string;
1309
+ }
1310
+
1224
1311
  export declare interface RadioGroupItemProps extends ComponentProps<typeof Radio.Root> {
1225
1312
  /** Size of the radio indicator */
1226
1313
  size?: RadioGroupItemSize;
@@ -1231,6 +1318,8 @@ export declare interface RadioGroupItemProps extends ComponentProps<typeof Radio
1231
1318
  export declare type RadioGroupItemSize = keyof typeof sizeStyles_10;
1232
1319
 
1233
1320
  export declare interface RadioGroupRootProps extends ComponentProps<typeof RadioGroup_2> {
1321
+ /** Layout direction. Default "vertical". */
1322
+ orientation?: "horizontal" | "vertical";
1234
1323
  }
1235
1324
 
1236
1325
  export { Row }
@@ -1501,95 +1590,146 @@ export declare interface SettingsRowProps {
1501
1590
  }
1502
1591
 
1503
1592
  export declare const Sidebar: typeof SidebarRoot & {
1504
- Header: ForwardRefExoticComponent<Omit<SidebarHeaderProps, "ref"> & RefAttributes<HTMLDivElement>>;
1593
+ Section: typeof SidebarSection;
1594
+ Header: typeof SidebarHeader;
1595
+ Label: ForwardRefExoticComponent<Omit<SidebarLabelProps, "ref"> & RefAttributes<HTMLDivElement>>;
1596
+ Link: typeof SidebarLink;
1597
+ BackLink: typeof SidebarBackLink;
1505
1598
  CollapseButton: typeof SidebarCollapseButton;
1506
- BackButton: typeof SidebarBackButton;
1507
- Label: ForwardRefExoticComponent<Omit<SidebarLabelProps, "ref"> & RefAttributes<HTMLSpanElement>>;
1508
- Search: typeof SidebarSearch;
1509
- Nav: typeof SidebarNav;
1510
- NavItem: typeof SidebarNavItem;
1511
- Footer: ForwardRefExoticComponent<Omit<SidebarFooterProps, "ref"> & RefAttributes<HTMLDivElement>>;
1599
+ Layers: typeof SidebarLayers;
1512
1600
  };
1513
1601
 
1514
- /**
1515
- * Back navigation row for nested sidebar contexts.
1516
- * Replaces the org switcher header when drilling into a sub-section.
1517
- * Shows ArrowLeftIcon + section title when expanded, just the arrow when collapsed.
1518
- */
1519
- declare function SidebarBackButton({ onClick, className, children, }: SidebarBackButtonProps): JSX.Element;
1602
+ declare function SidebarBackLink({ name, onClick, className }: SidebarBackLinkProps): JSX.Element;
1520
1603
 
1521
- export declare interface SidebarBackButtonProps {
1522
- /** Click handler — typically navigates back to the parent route */
1604
+ export declare interface SidebarBackLinkProps {
1605
+ /** Display name */
1606
+ readonly name: string;
1607
+ /** Click handler */
1523
1608
  readonly onClick?: () => void;
1524
1609
  readonly className?: string;
1525
- /** Section title displayed next to the back arrow */
1526
- readonly children: ReactNode;
1527
1610
  }
1528
1611
 
1529
- /**
1530
- * Toggle button for collapsing/expanding the sidebar.
1531
- * Chevron direction flips based on collapsed state.
1532
- */
1533
- declare function SidebarCollapseButton({ className }: SidebarCollapseButtonProps): JSX.Element | null;
1612
+ declare function SidebarCollapseButton({ className }: SidebarCollapseButtonProps): JSX.Element;
1534
1613
 
1535
1614
  export declare interface SidebarCollapseButtonProps {
1536
1615
  readonly className?: string;
1537
1616
  }
1538
1617
 
1539
- export declare interface SidebarContextValue {
1618
+ declare interface SidebarContextValue {
1540
1619
  readonly collapsed: boolean;
1541
1620
  readonly toggle: () => void;
1542
1621
  }
1543
1622
 
1544
- export declare interface SidebarFooterProps extends ComponentProps<"div"> {
1545
- }
1623
+ /**
1624
+ * Header row that smoothly hides its children when the sidebar collapses.
1625
+ *
1626
+ * Matches the Vue DSidebar header pattern:
1627
+ * - `AnimatePresence mode="popLayout"` keeps CollapseButton stable in layout
1628
+ * - Children slide out with `x: -320, scale: 0.5` spring animation
1629
+ * - Row uses `justify-center` so CollapseButton centers when collapsed
1630
+ * - Padding `px-2` only applied when expanded
1631
+ *
1632
+ * Usage:
1633
+ * ```tsx
1634
+ * <Sidebar.Header>
1635
+ * <Logo />
1636
+ * <span>CodeRabbit</span>
1637
+ * </Sidebar.Header>
1638
+ * ```
1639
+ * The `CollapseButton` is rendered automatically at the end of the row.
1640
+ */
1641
+ declare function SidebarHeader({ className, children }: SidebarHeaderProps): JSX.Element;
1546
1642
 
1547
- export declare interface SidebarHeaderProps extends ComponentProps<"div"> {
1643
+ declare interface SidebarHeaderProps {
1644
+ readonly className?: string;
1645
+ readonly children: ReactNode;
1548
1646
  }
1549
1647
 
1550
- export declare interface SidebarLabelProps extends ComponentProps<"span"> {
1648
+ export declare interface SidebarLabelProps extends ComponentProps<"div"> {
1551
1649
  }
1552
1650
 
1553
- declare function SidebarNav({ className, children }: SidebarNavProps): JSX.Element;
1554
-
1555
- declare function SidebarNavItem({ active, nested, icon, href, onClick, className, children, }: SidebarNavItemProps): JSX.Element;
1651
+ /**
1652
+ * Wraps sidebar content in directional slide animations.
1653
+ *
1654
+ * When `activeKey` changes, the old content slides out and new content
1655
+ * slides in. `direction="forward"` slides left (drilling in),
1656
+ * `direction="back"` slides right (going up).
1657
+ *
1658
+ * Usage:
1659
+ * ```tsx
1660
+ * <Sidebar.Layers activeKey={currentSection} direction={navDirection}>
1661
+ * {currentSection === "main" ? <MainNav /> : <SettingsNav />}
1662
+ * </Sidebar.Layers>
1663
+ * ```
1664
+ */
1665
+ declare function SidebarLayers({ activeKey, direction, className, children, }: SidebarLayersProps): JSX.Element;
1556
1666
 
1557
- export declare interface SidebarNavItemProps {
1558
- readonly active?: boolean;
1559
- /** Show a trailing chevron indicating this item navigates to a nested section */
1560
- readonly nested?: boolean;
1561
- readonly icon?: ReactNode;
1562
- readonly href?: string;
1563
- readonly onClick?: () => void;
1667
+ export declare interface SidebarLayersProps {
1668
+ /** Unique key for the current layer — changes trigger the animation */
1669
+ readonly activeKey: string;
1670
+ /** Direction of the transition: forward drills in, back goes up */
1671
+ readonly direction?: "forward" | "back";
1564
1672
  readonly className?: string;
1565
1673
  readonly children: ReactNode;
1566
1674
  }
1567
1675
 
1568
- export declare interface SidebarNavProps {
1676
+ declare function SidebarLink({ name, href, as, active, icon, nested, external, showIndicator, onClick, className, }: SidebarLinkProps): JSX.Element;
1677
+
1678
+ export declare interface SidebarLinkProps {
1679
+ /** Display name */
1680
+ readonly name: string;
1681
+ /** Link URL (renders as <a>) or omit for button */
1682
+ readonly href?: string;
1683
+ /** Render as "div" when nested inside an interactive container (e.g. DropdownMenu.Trigger) to avoid nested <button> */
1684
+ readonly as?: "div";
1685
+ /** Whether this link is currently active */
1686
+ readonly active?: boolean;
1687
+ /** Icon component rendered before the name */
1688
+ readonly icon?: ReactNode;
1689
+ /** Show a trailing chevron indicating navigation to a nested layer */
1690
+ readonly nested?: boolean;
1691
+ /** Show an external link arrow and open in new tab */
1692
+ readonly external?: boolean;
1693
+ /** Show a pulsing activity indicator dot */
1694
+ readonly showIndicator?: boolean;
1695
+ /** Click handler */
1696
+ readonly onClick?: () => void;
1569
1697
  readonly className?: string;
1570
- readonly children: ReactNode;
1571
1698
  }
1572
1699
 
1573
1700
  /**
1574
- * Sidebar panel with collapsible state.
1575
- * Provides collapsed/toggle context to all sub-components.
1701
+ * Sidebar with collapsible state and directional layer transitions.
1702
+ *
1703
+ * Supports both uncontrolled (`defaultCollapsed`) and controlled
1704
+ * (`collapsed` + `onCollapsedChange`) modes. Use controlled mode
1705
+ * to persist state across route changes or sync with external storage.
1706
+ *
1707
+ * Sub-components:
1708
+ * - `Sidebar.Section` — groups related links
1709
+ * - `Sidebar.Label` — section label that collapses smoothly
1710
+ * - `Sidebar.Link` — nav link with Hover + Tooltip
1711
+ * - `Sidebar.BackLink` — back navigation with directional slide
1712
+ * - `Sidebar.CollapseButton` — toggle sidebar width
1713
+ * - `Sidebar.Layers` — directional animation container for nested sidebars
1576
1714
  */
1577
- declare function SidebarRoot({ defaultCollapsed, className, children, }: SidebarRootProps): JSX.Element;
1715
+ declare function SidebarRoot({ defaultCollapsed, collapsed: controlledCollapsed, onCollapsedChange, className, children, }: SidebarRootProps): JSX.Element;
1578
1716
 
1579
1717
  export declare interface SidebarRootProps {
1580
- /** Start in collapsed state */
1718
+ /** Start in collapsed state (uncontrolled) */
1581
1719
  readonly defaultCollapsed?: boolean;
1720
+ /** Controlled collapsed state */
1721
+ readonly collapsed?: boolean;
1722
+ /** Callback when collapsed state changes (controlled mode) */
1723
+ readonly onCollapsedChange?: (collapsed: boolean) => void;
1582
1724
  readonly className?: string;
1583
1725
  readonly children: ReactNode;
1584
1726
  }
1585
1727
 
1586
- declare function SidebarSearch({ label, icon, onClick, className, }: SidebarSearchProps): JSX.Element;
1728
+ declare function SidebarSection({ className, children }: SidebarSectionProps): JSX.Element;
1587
1729
 
1588
- export declare interface SidebarSearchProps {
1589
- readonly label?: string;
1590
- readonly icon?: ReactNode;
1591
- readonly onClick?: () => void;
1730
+ export declare interface SidebarSectionProps {
1592
1731
  readonly className?: string;
1732
+ readonly children: ReactNode;
1593
1733
  }
1594
1734
 
1595
1735
  declare const sizeStyles: {
@@ -1756,6 +1896,7 @@ export declare const Table: ReturnType<typeof forwardRef<HTMLDivElement, TablePr
1756
1896
  Row: typeof TableRow;
1757
1897
  HeaderCell: typeof TableHeaderCell;
1758
1898
  Cell: typeof TableCell;
1899
+ Skeleton: typeof TableSkeleton;
1759
1900
  };
1760
1901
 
1761
1902
  declare const TableBody: ForwardRefExoticComponent<TableBodyProps & RefAttributes<HTMLTableSectionElement>>;
@@ -1808,6 +1949,27 @@ export declare interface TableRowProps extends Omit<ComponentProps<"tr">, "child
1808
1949
  children: ReactNode;
1809
1950
  }
1810
1951
 
1952
+ /**
1953
+ * Skeleton loading rows for the Table.
1954
+ * Renders inside a `<tbody>` with the specified number of rows and columns.
1955
+ *
1956
+ * ```tsx
1957
+ * <Table>
1958
+ * <Table.Header>...</Table.Header>
1959
+ * {loading ? <Table.Skeleton columns={3} /> : <Table.Body>...</Table.Body>}
1960
+ * </Table>
1961
+ * ```
1962
+ */
1963
+ declare function TableSkeleton({ columns, rows, className }: TableSkeletonProps): JSX.Element;
1964
+
1965
+ declare interface TableSkeletonProps {
1966
+ /** Number of columns to render */
1967
+ readonly columns: number;
1968
+ /** Number of skeleton rows. Default 5. */
1969
+ readonly rows?: number;
1970
+ readonly className?: string;
1971
+ }
1972
+
1811
1973
  export declare const Tabs: {
1812
1974
  Root: ForwardRefExoticComponent<Omit<TabsRootProps, "ref"> & RefAttributes<HTMLDivElement>>;
1813
1975
  List: ForwardRefExoticComponent<Omit<TabsListProps, "ref"> & RefAttributes<HTMLDivElement>>;