twico-ui 1.43.0 → 1.45.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/dist/index.d.cts CHANGED
@@ -1951,6 +1951,65 @@ interface DatatableProps<T = any> extends Omit<React.HTMLAttributes<HTMLDivEleme
1951
1951
  * This prop is the initial state — when enabled, users can hide/show the column from the toolbar's
1952
1952
  * **Columns** panel ("Row number"). @default false */
1953
1953
  rowNumbers?: boolean;
1954
+ /**
1955
+ * #481: style a whole row from its own state — the row-level counterpart to a column's `cellStyle`.
1956
+ * Without it, marking a row meant assigning `cellStyle` to **every** column: O(columns) for a
1957
+ * row-level fact, hand-composed against whatever else already used `cellStyle`, and with no fixed
1958
+ * column list to decorate at all when the columns come from a schema.
1959
+ *
1960
+ * Called `(row, index)`, the same shape as `rowKey`. **`index` is the row's 0-based position among
1961
+ * the rows currently rendered** — after sorting and filtering, and **within the current page**. It is
1962
+ * therefore *not* the number the `rowNumbers` column shows, which continues across pages; if you need
1963
+ * an absolute position, read it off `row` rather than from this argument.
1964
+ *
1965
+ * A `background` (or `backgroundColor`) is forwarded to the row's CELLS through the `--twc-dt-row-bg`
1966
+ * custom property, because `.twc-dt__td` paints an opaque surface of its own — without that it would
1967
+ * be invisible — and is **removed** from what reaches the `<tr>`, since a row box paints below its
1968
+ * cells and a leftover copy there would composite with the tint rather than hide behind it. Every
1969
+ * other declaration lands on the `<tr>`, except `border` (ignored on row boxes under
1970
+ * `border-collapse: separate`) and `backgroundImage` (painted under the cells' opaque surface) — both
1971
+ * need {@link getRowClassName} and a `… .twc-dt__td` rule. Sticky positioning and measured row height
1972
+ * are applied after yours, so a hook cannot break row pinning or row resizing.
1973
+ *
1974
+ * **Layering — one rule, not a bespoke order:** the row tint is the **bottom** layer above the
1975
+ * cell's plain surface, and **every** built-in state background covers it. The base `.twc-dt__td`
1976
+ * rule is the lowest-specificity background in the component, so hover, row selection,
1977
+ * `activeRowId`, a pinned row, a grabbed row, the diff add/remove/modify washes, cell
1978
+ * selection/active and inline editing all outrank it — and an inline per-cell `cellStyle` outranks
1979
+ * those. A row tint is a *data-derived* wash; nothing data-derived should be able to hide an
1980
+ * interaction state. So selection still reads on a tinted row, hover feedback is never lost, and a
1981
+ * per-cell state wins with nothing to compose on your side.
1982
+ *
1983
+ * Need a tint that survives hover? Use {@link getRowClassName} with a rule outranking `(0,3,0)` —
1984
+ * note `.twc-dt__row.my-row .twc-dt__td` is itself `(0,3,0)`, a tie decided by source order, so add
1985
+ * an element: `tr.twc-dt__row.my-row .twc-dt__td` is `(0,3,1)`, and `… .twc-dt__td[data-pin]` is
1986
+ * `(0,4,1)` for the pinned-column twins. You are then choosing to cover the hover cue on those rows.
1987
+ *
1988
+ * **Stripes:** there are none to layer against. Datatable does not zebra-stripe its data rows —
1989
+ * the only `data-zebra` rules in the component style the PIVOT grid's cells, and the hook does not
1990
+ * apply to pivot rows. So a row tint never has to compete with a stripe.
1991
+ *
1992
+ * **Which rows:** every data row. That includes rows pinned with the row ⋮ menu (the hook runs and
1993
+ * the class/non-background declarations apply, though the pinned-row highlight covers a background
1994
+ * tint for as long as the row is pinned, exactly like selection), and cells in a pinned COLUMN pick
1995
+ * the tint up, so a tinted row shows no hole where a frozen column scrolls over it. NOT group-header
1996
+ * rows or the pivot grid's aggregate rows: those have no `row` object to pass. Skeleton rows shown
1997
+ * while `loading` are untouched.
1998
+ */
1999
+ getRowStyle?: (row: T, index: number) => React.CSSProperties | undefined;
2000
+ /**
2001
+ * #481: a class on the row's `<tr>`, appended to `twc-dt__row` (never replacing it). Same
2002
+ * `(row, index)` signature as {@link getRowStyle}.
2003
+ *
2004
+ * **Which to reach for.** `getRowStyle` is the default: its *background* does not land inline on the
2005
+ * cells — it is routed through `--twc-dt-row-bg` and read by the `(0,1,0)` base rule, so it is the
2006
+ * **lowest** layer and every built-in state covers it, which is almost always what a row tint should
2007
+ * do. (Its *non-background* declarations — opacity, font-weight, text-decoration — are ordinary
2008
+ * inline styles on the `<tr>` and do win.) Reach for `getRowClassName` when you deliberately want the
2009
+ * tint to **outrank** those cues, since your own rule picks its specificity: beat `(0,3,0)`, e.g.
2010
+ * `tr.twc-dt__row.my-row .twc-dt__td`. You are then choosing to cover the hover cue on those rows.
2011
+ */
2012
+ getRowClassName?: (row: T, index: number) => string | undefined;
1954
2013
  /** Restrict the toolbar quick-search to these column `field`s (client mode); defaults to every
1955
2014
  * visible column. Mirrors `runDatatableQuery`'s `options.searchFields`. */
1956
2015
  searchFields?: string[];
@@ -2624,6 +2683,20 @@ interface DatatableBatchAction<T = any> {
2624
2683
  /** #322: hide the action entirely when the predicate returns true (e.g. `(_, rows) => rows.every(r => r.isGroup)`
2625
2684
  * drops "Mark as new thread" when only group rows are selected). A static `true` always hides it. */
2626
2685
  hidden?: boolean | ((keys: Array<string | number>, rows: T[]) => boolean);
2686
+ /** #479: why the action is disabled, shown as the button's tooltip — the batch mirror of the row-action
2687
+ * `disabledReason` (#399/#419). It may be a **predicate over the selection**, because that is where the
2688
+ * answer usually lives: a batch is refused for selection-dependent reasons ("that selection is 5.1 GB; the
2689
+ * limit is 4 GB", "at most 50 items per batch") that the label cannot carry and the user cannot infer from
2690
+ * a greyed-out button.
2691
+ *
2692
+ * When a reason is present the button renders `aria-disabled` rather than native `disabled`, so it stays in
2693
+ * the tab order and the reason is reachable by hover AND keyboard; click and Enter/Space stay blocked. With
2694
+ * no reason the tooltip would only repeat the label, so the button stays natively disabled and out of the
2695
+ * tab order — the same rule as the row-action path. There is deliberately no `hiddenReason`: a hidden
2696
+ * action explains nothing. */
2697
+ disabledReason?:
2698
+ | React.ReactNode
2699
+ | ((keys: Array<string | number>, rows: T[]) => React.ReactNode);
2627
2700
  }
2628
2701
 
2629
2702
  declare function Datatable<T = any>(props: DatatableProps<T>): React.JSX.Element;
@@ -2688,8 +2761,19 @@ interface CardGridSortOption {
2688
2761
  interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
2689
2762
  /** The rows: the full set in client mode, or the current page in `serverMode`. */
2690
2763
  rows?: Row[];
2691
- /** Render one card for a row. Required. */
2692
- renderCard: (row: Row, index: number) => React.ReactNode;
2764
+ /**
2765
+ * Render one card for a row. Required.
2766
+ *
2767
+ * #478: with `checkboxSelection`, the third argument carries that card's selection state so a
2768
+ * consumer can put the control inside their own layout (set `selectionPlacement="none"` to drop the
2769
+ * grid's overlay) without re-implementing any selection state. It is `undefined` when
2770
+ * `checkboxSelection` is off.
2771
+ */
2772
+ renderCard: (
2773
+ row: Row,
2774
+ index: number,
2775
+ selection?: { selected: boolean; toggle: () => void },
2776
+ ) => React.ReactNode;
2693
2777
  /** Stable key per row: a field name or an accessor. @default "id" */
2694
2778
  rowKey?: string | ((row: Row) => React.Key);
2695
2779
  /** Min card width for the responsive auto-fill grid (Grid `minChildWidth`). @default "18rem" */
@@ -2752,6 +2836,86 @@ interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElem
2752
2836
  emptyState?: React.ReactNode;
2753
2837
  /** Optional heading above the grid. */
2754
2838
  label?: React.ReactNode;
2839
+
2840
+ /**
2841
+ * #478: show a selection checkbox on each card and a selection toolbar when anything is picked —
2842
+ * the same prop name, and the same behaviour, as `Datatable`. A card grid is what you reach for
2843
+ * when the rows are visual (assets, previews, renders), where "pick several and do one thing to
2844
+ * them" is most of the point.
2845
+ * @default false
2846
+ */
2847
+ checkboxSelection?: boolean;
2848
+ /**
2849
+ * Actions shown in the selection toolbar, with the same shape as `DatatableBatchAction` — including
2850
+ * `disabled` / `hidden` / `disabledReason` as predicates over the current selection (#479), and
2851
+ * `ctx.anchorEl` so an action can anchor a popover to its own button.
2852
+ */
2853
+ batchActions?: CardGridBatchAction<Row>[];
2854
+ /** Fired when the selection changes — `(keys, rows)`, matching `Datatable.onRowSelectionChange`. */
2855
+ onRowSelectionChange?: (keys: Array<string | number>, rows: Row[]) => void;
2856
+ /**
2857
+ * Where the grid draws its checkbox over each card. `"none"` suppresses the overlay entirely for
2858
+ * consumers who render the control themselves from `renderCard`'s third argument.
2859
+ * @default "top-start"
2860
+ */
2861
+ selectionPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "none";
2862
+ /**
2863
+ * Per-card `aria-label` for the checkbox. Worth setting: unlike a table row, a card's own content is
2864
+ * not necessarily announced with the control, so the default `"Select item"` is the same for every
2865
+ * card. @default (row, index) => "Select item"
2866
+ */
2867
+ selectionLabel?: (row: Row, index: number) => string;
2868
+ /** Show the page-scoped "Select all on this page" control. @default true */
2869
+ showSelectAll?: boolean;
2870
+ /**
2871
+ * Retain the row OBJECTS of off-page selections so `batchActions` and `onRowSelectionChange` receive
2872
+ * them for a selection spanning several pages. `keys` is always the authoritative cross-page
2873
+ * selection (as in `Datatable`); this exists because the grid only renders one page, which is the
2874
+ * `Map<id, row>` consumers were otherwise hand-rolling.
2875
+ *
2876
+ * Opt-in because it holds references the host may expect to be released, and **bounded**: `true`
2877
+ * retains up to 1000 rows, or pass a number for your own cap. Past the cap it stops retaining and
2878
+ * those keys simply resolve to nothing in `rows`, so re-fetch by key.
2879
+ * @default false
2880
+ */
2881
+ retainSelectedRows?: boolean | number;
2882
+ }
2883
+
2884
+ /** Extra context handed to a CardGrid batch action's `onClick`. */
2885
+ interface CardGridBatchActionContext {
2886
+ /** The toolbar button that was clicked — anchor a popover or panel to it. */
2887
+ anchorEl: HTMLElement;
2888
+ }
2889
+
2890
+ /** A batch action shown in CardGrid's selection toolbar. Mirrors `DatatableBatchAction`. */
2891
+ interface CardGridBatchAction<Row = any> {
2892
+ /** Button label. */
2893
+ label: string;
2894
+ /** Leading icon node. */
2895
+ icon?: React.ReactNode;
2896
+ /** Handler: `(selectedKeys, selectedRows, clearSelection, ctx)`. */
2897
+ onClick?: (
2898
+ keys: Array<string | number>,
2899
+ rows: Row[],
2900
+ clearSelection: () => void,
2901
+ ctx: CardGridBatchActionContext,
2902
+ ) => void;
2903
+ /** Render in danger color. */
2904
+ danger?: boolean;
2905
+ /** Disable the action — a static boolean, or a predicate over the current selection. */
2906
+ disabled?: boolean | ((keys: Array<string | number>, rows: Row[]) => boolean);
2907
+ /** Hide the action entirely — a static boolean, or a predicate over the current selection. */
2908
+ hidden?: boolean | ((keys: Array<string | number>, rows: Row[]) => boolean);
2909
+ /**
2910
+ * Why the action is disabled, shown as the button's tooltip (#479). May be a predicate over the
2911
+ * selection, because that is usually where the answer lives ("that selection is 5.1 GB; the limit is
2912
+ * 4 GB"). With a reason present the button renders `aria-disabled` rather than native `disabled`, so
2913
+ * it stays focusable and the reason is keyboard-reachable; without one it stays natively disabled and
2914
+ * out of the tab order.
2915
+ */
2916
+ disabledReason?:
2917
+ | React.ReactNode
2918
+ | ((keys: Array<string | number>, rows: Row[]) => React.ReactNode);
2755
2919
  }
2756
2920
 
2757
2921
  declare function CardGrid<Row = any>(props: CardGridProps<Row>): React.JSX.Element;
@@ -4961,4 +5125,4 @@ declare function useFilePicker(options?: UseFilePickerOptions): {
4961
5125
  getInputProps: () => React.InputHTMLAttributes<HTMLInputElement> & { ref: React.RefObject<HTMLInputElement | null> };
4962
5126
  };
4963
5127
 
4964
- export { Accordion, type AccordionItem, type AccordionProps, type ActionTone, Alert, type AlertProps, Anchor, type AnchorProps, AppShell, type AppShellProps, Avatar, AvatarMenu, type AvatarMenuProps, type AvatarProps, Badge, type BadgeProps, type BarTone, Box, type BoxOwnProps, type BoxProps, Boxplot, type BoxplotDatum, type BoxplotProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BubbleChart, type BubbleChartProps, Button, type ButtonProps, Candlestick, type CandlestickDatum, type CandlestickProps, Card, CardGrid, type CardGridFilter, type CardGridProps, type CardGridQuery, type CardGridSort, type CardGridSortOption, type CardProps, Carousel, type CarouselProps, Chart, type ChartDatum, type ChartProps, Checkbox, type CheckboxProps, Code, type CodeProps, ColorPicker, type ColorPickerProps, ColorSchemeScript, type ColorSchemeScriptOptions, type ColorSchemeScriptProps, Combobox, type ComboboxGroup, type ComboboxOption, type ComboboxProps, type Command, CommandPalette, type CommandPaletteProps, Container, type ContainerOwnProps, type ContainerProps, Currency, CurrencyField, type CurrencyFieldProps, type CurrencyOption, type CurrencyProps, Datatable, type DatatableBatchAction, type DatatableBatchActionContext, type DatatableBatchUpdateDetail, type DatatableColumn, type DatatableFilter, type DatatableFilterOp, type DatatableNumberOp, type DatatableProps, type DatatableQuery, type DatatableRowAction, type DatatableState, type DatatableStringOp, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, Dialog, type DialogProps, type DiffOp, DiffTable, type DiffTableColumn, type DiffTableProps, Divider, type DividerProps, DonutChart, type DonutChartDatum, type DonutChartProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, Field, type FieldProps, FileUpload, type FileUploadProps, FilterBar, type FilterBarProps, type FilterClause, type FilterField, type FilterFieldType, type FilterValues, Form, type FormProps, FunnelChart, type FunnelChartProps, type FunnelDatum, Gauge, type GaugeProps, type GaugeSeries, Grid, type GridOwnProps, type GridProps, Heading, type HeadingOwnProps, type HeadingProps, type HeadingSize, Heatmap, type HeatmapDatum, type HeatmapProps, IconButton, type IconButtonProps, Image, type ImageProps, ImageViewer, type ImageViewerControlsApi, type ImageViewerProps, type ImageViewerState, Input, type InputProps, Kanban, type KanbanCard, type KanbanColumn, type KanbanProps, Kbd, type KbdProps, Label, type LabelProps, List, type ListItemData, type ListProps, Menu, type MenuItemDef, type MenuProps, MultiSelect, type MultiSelectGroup, type MultiSelectOption, type MultiSelectProps, Navbar, type NavbarLink, type NavbarProps, type Option, type OptionGroup, Pagination, type PaginationProps, PieChart, type PieChartDatum, type PieChartProps, PolarAreaChart, type PolarAreaChartProps, type PolarAreaDatum, type PolymorphicAs, type PolymorphicComponent, type PolymorphicProps, type PolymorphicPropsWithRef, type PolymorphicRef, Popover, type PopoverProps, Portal, type PortalProps, Pre, type PreProps, Progress, type ProgressProps, RadarChart, type RadarChartProps, type RadarDatum, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, RangeChart, type RangeChartProps, type RangeDatum, Rating, type RatingProps, type ResponsiveColumns, ScatterChart, type ScatterChartProps, type ScatterPoint, type ScatterSeries, Select, type SelectGroup, type SelectOption, type SelectProps, Sidebar, type SidebarItem, type SidebarProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Sparkline, type SparklineDatum, type SparklineProps, Spinner, type SpinnerProps, Stack, type StackOwnProps, type StackProps, Stat, type StatProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, type Sx, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextOwnProps, type TextProps, type TextTone, Textarea, type TextareaProps, type Theme, ThemeProvider, type ThemeProviderProps, type ThemeTokens, TimePicker, type TimePickerProps, Timeline, type TimelineItem, type TimelineProps, Toast, type ToastApi, type ToastOptions, type ToastProps, ToastProvider, type ToastProviderProps, type ToastTone, ToastViewport, type ToastViewportProps, ToggleGroup, type ToggleGroupItem, type ToggleGroupProps, type Tone, Tooltip, type TooltipProps, type TreeNode, TreeView, type TreeViewProps, Treemap, type TreemapDatum, type TreemapProps, TwicoProvider, type TwicoProviderProps, type UseColorSchemeOptions, type UseFilePickerOptions, type UseFocusTrapOptions, type UseKeyPressOptions, type UseLocalStorageOptions, type UseMediaQueryOptions, type UseWindowSizeOptions, VisuallyHidden, type VisuallyHiddenProps, type WithSx, createTheme, getColorSchemeScript, runDatatableQuery, useClickOutside, useColorScheme, useControllableState, useCopyToClipboard, useDebouncedCallback, useDebouncedValue, useDisclosure, useEventListener, useFilePicker, useFocusTrap, useHover, useId, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyPress, useLocalStorage, useMediaQuery, useMounted, usePortal, usePrefersReducedMotion, usePrevious, useScrollLock, useTimeout, useToast, useToggle, useWindowSize };
5128
+ export { Accordion, type AccordionItem, type AccordionProps, type ActionTone, Alert, type AlertProps, Anchor, type AnchorProps, AppShell, type AppShellProps, Avatar, AvatarMenu, type AvatarMenuProps, type AvatarProps, Badge, type BadgeProps, type BarTone, Box, type BoxOwnProps, type BoxProps, Boxplot, type BoxplotDatum, type BoxplotProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BubbleChart, type BubbleChartProps, Button, type ButtonProps, Candlestick, type CandlestickDatum, type CandlestickProps, Card, CardGrid, type CardGridBatchAction, type CardGridBatchActionContext, type CardGridFilter, type CardGridProps, type CardGridQuery, type CardGridSort, type CardGridSortOption, type CardProps, Carousel, type CarouselProps, Chart, type ChartDatum, type ChartProps, Checkbox, type CheckboxProps, Code, type CodeProps, ColorPicker, type ColorPickerProps, ColorSchemeScript, type ColorSchemeScriptOptions, type ColorSchemeScriptProps, Combobox, type ComboboxGroup, type ComboboxOption, type ComboboxProps, type Command, CommandPalette, type CommandPaletteProps, Container, type ContainerOwnProps, type ContainerProps, Currency, CurrencyField, type CurrencyFieldProps, type CurrencyOption, type CurrencyProps, Datatable, type DatatableBatchAction, type DatatableBatchActionContext, type DatatableBatchUpdateDetail, type DatatableColumn, type DatatableFilter, type DatatableFilterOp, type DatatableNumberOp, type DatatableProps, type DatatableQuery, type DatatableRowAction, type DatatableState, type DatatableStringOp, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, Dialog, type DialogProps, type DiffOp, DiffTable, type DiffTableColumn, type DiffTableProps, Divider, type DividerProps, DonutChart, type DonutChartDatum, type DonutChartProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, Field, type FieldProps, FileUpload, type FileUploadProps, FilterBar, type FilterBarProps, type FilterClause, type FilterField, type FilterFieldType, type FilterValues, Form, type FormProps, FunnelChart, type FunnelChartProps, type FunnelDatum, Gauge, type GaugeProps, type GaugeSeries, Grid, type GridOwnProps, type GridProps, Heading, type HeadingOwnProps, type HeadingProps, type HeadingSize, Heatmap, type HeatmapDatum, type HeatmapProps, IconButton, type IconButtonProps, Image, type ImageProps, ImageViewer, type ImageViewerControlsApi, type ImageViewerProps, type ImageViewerState, Input, type InputProps, Kanban, type KanbanCard, type KanbanColumn, type KanbanProps, Kbd, type KbdProps, Label, type LabelProps, List, type ListItemData, type ListProps, Menu, type MenuItemDef, type MenuProps, MultiSelect, type MultiSelectGroup, type MultiSelectOption, type MultiSelectProps, Navbar, type NavbarLink, type NavbarProps, type Option, type OptionGroup, Pagination, type PaginationProps, PieChart, type PieChartDatum, type PieChartProps, PolarAreaChart, type PolarAreaChartProps, type PolarAreaDatum, type PolymorphicAs, type PolymorphicComponent, type PolymorphicProps, type PolymorphicPropsWithRef, type PolymorphicRef, Popover, type PopoverProps, Portal, type PortalProps, Pre, type PreProps, Progress, type ProgressProps, RadarChart, type RadarChartProps, type RadarDatum, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, RangeChart, type RangeChartProps, type RangeDatum, Rating, type RatingProps, type ResponsiveColumns, ScatterChart, type ScatterChartProps, type ScatterPoint, type ScatterSeries, Select, type SelectGroup, type SelectOption, type SelectProps, Sidebar, type SidebarItem, type SidebarProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Sparkline, type SparklineDatum, type SparklineProps, Spinner, type SpinnerProps, Stack, type StackOwnProps, type StackProps, Stat, type StatProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, type Sx, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextOwnProps, type TextProps, type TextTone, Textarea, type TextareaProps, type Theme, ThemeProvider, type ThemeProviderProps, type ThemeTokens, TimePicker, type TimePickerProps, Timeline, type TimelineItem, type TimelineProps, Toast, type ToastApi, type ToastOptions, type ToastProps, ToastProvider, type ToastProviderProps, type ToastTone, ToastViewport, type ToastViewportProps, ToggleGroup, type ToggleGroupItem, type ToggleGroupProps, type Tone, Tooltip, type TooltipProps, type TreeNode, TreeView, type TreeViewProps, Treemap, type TreemapDatum, type TreemapProps, TwicoProvider, type TwicoProviderProps, type UseColorSchemeOptions, type UseFilePickerOptions, type UseFocusTrapOptions, type UseKeyPressOptions, type UseLocalStorageOptions, type UseMediaQueryOptions, type UseWindowSizeOptions, VisuallyHidden, type VisuallyHiddenProps, type WithSx, createTheme, getColorSchemeScript, runDatatableQuery, useClickOutside, useColorScheme, useControllableState, useCopyToClipboard, useDebouncedCallback, useDebouncedValue, useDisclosure, useEventListener, useFilePicker, useFocusTrap, useHover, useId, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyPress, useLocalStorage, useMediaQuery, useMounted, usePortal, usePrefersReducedMotion, usePrevious, useScrollLock, useTimeout, useToast, useToggle, useWindowSize };
package/dist/index.d.ts CHANGED
@@ -1951,6 +1951,65 @@ interface DatatableProps<T = any> extends Omit<React.HTMLAttributes<HTMLDivEleme
1951
1951
  * This prop is the initial state — when enabled, users can hide/show the column from the toolbar's
1952
1952
  * **Columns** panel ("Row number"). @default false */
1953
1953
  rowNumbers?: boolean;
1954
+ /**
1955
+ * #481: style a whole row from its own state — the row-level counterpart to a column's `cellStyle`.
1956
+ * Without it, marking a row meant assigning `cellStyle` to **every** column: O(columns) for a
1957
+ * row-level fact, hand-composed against whatever else already used `cellStyle`, and with no fixed
1958
+ * column list to decorate at all when the columns come from a schema.
1959
+ *
1960
+ * Called `(row, index)`, the same shape as `rowKey`. **`index` is the row's 0-based position among
1961
+ * the rows currently rendered** — after sorting and filtering, and **within the current page**. It is
1962
+ * therefore *not* the number the `rowNumbers` column shows, which continues across pages; if you need
1963
+ * an absolute position, read it off `row` rather than from this argument.
1964
+ *
1965
+ * A `background` (or `backgroundColor`) is forwarded to the row's CELLS through the `--twc-dt-row-bg`
1966
+ * custom property, because `.twc-dt__td` paints an opaque surface of its own — without that it would
1967
+ * be invisible — and is **removed** from what reaches the `<tr>`, since a row box paints below its
1968
+ * cells and a leftover copy there would composite with the tint rather than hide behind it. Every
1969
+ * other declaration lands on the `<tr>`, except `border` (ignored on row boxes under
1970
+ * `border-collapse: separate`) and `backgroundImage` (painted under the cells' opaque surface) — both
1971
+ * need {@link getRowClassName} and a `… .twc-dt__td` rule. Sticky positioning and measured row height
1972
+ * are applied after yours, so a hook cannot break row pinning or row resizing.
1973
+ *
1974
+ * **Layering — one rule, not a bespoke order:** the row tint is the **bottom** layer above the
1975
+ * cell's plain surface, and **every** built-in state background covers it. The base `.twc-dt__td`
1976
+ * rule is the lowest-specificity background in the component, so hover, row selection,
1977
+ * `activeRowId`, a pinned row, a grabbed row, the diff add/remove/modify washes, cell
1978
+ * selection/active and inline editing all outrank it — and an inline per-cell `cellStyle` outranks
1979
+ * those. A row tint is a *data-derived* wash; nothing data-derived should be able to hide an
1980
+ * interaction state. So selection still reads on a tinted row, hover feedback is never lost, and a
1981
+ * per-cell state wins with nothing to compose on your side.
1982
+ *
1983
+ * Need a tint that survives hover? Use {@link getRowClassName} with a rule outranking `(0,3,0)` —
1984
+ * note `.twc-dt__row.my-row .twc-dt__td` is itself `(0,3,0)`, a tie decided by source order, so add
1985
+ * an element: `tr.twc-dt__row.my-row .twc-dt__td` is `(0,3,1)`, and `… .twc-dt__td[data-pin]` is
1986
+ * `(0,4,1)` for the pinned-column twins. You are then choosing to cover the hover cue on those rows.
1987
+ *
1988
+ * **Stripes:** there are none to layer against. Datatable does not zebra-stripe its data rows —
1989
+ * the only `data-zebra` rules in the component style the PIVOT grid's cells, and the hook does not
1990
+ * apply to pivot rows. So a row tint never has to compete with a stripe.
1991
+ *
1992
+ * **Which rows:** every data row. That includes rows pinned with the row ⋮ menu (the hook runs and
1993
+ * the class/non-background declarations apply, though the pinned-row highlight covers a background
1994
+ * tint for as long as the row is pinned, exactly like selection), and cells in a pinned COLUMN pick
1995
+ * the tint up, so a tinted row shows no hole where a frozen column scrolls over it. NOT group-header
1996
+ * rows or the pivot grid's aggregate rows: those have no `row` object to pass. Skeleton rows shown
1997
+ * while `loading` are untouched.
1998
+ */
1999
+ getRowStyle?: (row: T, index: number) => React.CSSProperties | undefined;
2000
+ /**
2001
+ * #481: a class on the row's `<tr>`, appended to `twc-dt__row` (never replacing it). Same
2002
+ * `(row, index)` signature as {@link getRowStyle}.
2003
+ *
2004
+ * **Which to reach for.** `getRowStyle` is the default: its *background* does not land inline on the
2005
+ * cells — it is routed through `--twc-dt-row-bg` and read by the `(0,1,0)` base rule, so it is the
2006
+ * **lowest** layer and every built-in state covers it, which is almost always what a row tint should
2007
+ * do. (Its *non-background* declarations — opacity, font-weight, text-decoration — are ordinary
2008
+ * inline styles on the `<tr>` and do win.) Reach for `getRowClassName` when you deliberately want the
2009
+ * tint to **outrank** those cues, since your own rule picks its specificity: beat `(0,3,0)`, e.g.
2010
+ * `tr.twc-dt__row.my-row .twc-dt__td`. You are then choosing to cover the hover cue on those rows.
2011
+ */
2012
+ getRowClassName?: (row: T, index: number) => string | undefined;
1954
2013
  /** Restrict the toolbar quick-search to these column `field`s (client mode); defaults to every
1955
2014
  * visible column. Mirrors `runDatatableQuery`'s `options.searchFields`. */
1956
2015
  searchFields?: string[];
@@ -2624,6 +2683,20 @@ interface DatatableBatchAction<T = any> {
2624
2683
  /** #322: hide the action entirely when the predicate returns true (e.g. `(_, rows) => rows.every(r => r.isGroup)`
2625
2684
  * drops "Mark as new thread" when only group rows are selected). A static `true` always hides it. */
2626
2685
  hidden?: boolean | ((keys: Array<string | number>, rows: T[]) => boolean);
2686
+ /** #479: why the action is disabled, shown as the button's tooltip — the batch mirror of the row-action
2687
+ * `disabledReason` (#399/#419). It may be a **predicate over the selection**, because that is where the
2688
+ * answer usually lives: a batch is refused for selection-dependent reasons ("that selection is 5.1 GB; the
2689
+ * limit is 4 GB", "at most 50 items per batch") that the label cannot carry and the user cannot infer from
2690
+ * a greyed-out button.
2691
+ *
2692
+ * When a reason is present the button renders `aria-disabled` rather than native `disabled`, so it stays in
2693
+ * the tab order and the reason is reachable by hover AND keyboard; click and Enter/Space stay blocked. With
2694
+ * no reason the tooltip would only repeat the label, so the button stays natively disabled and out of the
2695
+ * tab order — the same rule as the row-action path. There is deliberately no `hiddenReason`: a hidden
2696
+ * action explains nothing. */
2697
+ disabledReason?:
2698
+ | React.ReactNode
2699
+ | ((keys: Array<string | number>, rows: T[]) => React.ReactNode);
2627
2700
  }
2628
2701
 
2629
2702
  declare function Datatable<T = any>(props: DatatableProps<T>): React.JSX.Element;
@@ -2688,8 +2761,19 @@ interface CardGridSortOption {
2688
2761
  interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
2689
2762
  /** The rows: the full set in client mode, or the current page in `serverMode`. */
2690
2763
  rows?: Row[];
2691
- /** Render one card for a row. Required. */
2692
- renderCard: (row: Row, index: number) => React.ReactNode;
2764
+ /**
2765
+ * Render one card for a row. Required.
2766
+ *
2767
+ * #478: with `checkboxSelection`, the third argument carries that card's selection state so a
2768
+ * consumer can put the control inside their own layout (set `selectionPlacement="none"` to drop the
2769
+ * grid's overlay) without re-implementing any selection state. It is `undefined` when
2770
+ * `checkboxSelection` is off.
2771
+ */
2772
+ renderCard: (
2773
+ row: Row,
2774
+ index: number,
2775
+ selection?: { selected: boolean; toggle: () => void },
2776
+ ) => React.ReactNode;
2693
2777
  /** Stable key per row: a field name or an accessor. @default "id" */
2694
2778
  rowKey?: string | ((row: Row) => React.Key);
2695
2779
  /** Min card width for the responsive auto-fill grid (Grid `minChildWidth`). @default "18rem" */
@@ -2752,6 +2836,86 @@ interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElem
2752
2836
  emptyState?: React.ReactNode;
2753
2837
  /** Optional heading above the grid. */
2754
2838
  label?: React.ReactNode;
2839
+
2840
+ /**
2841
+ * #478: show a selection checkbox on each card and a selection toolbar when anything is picked —
2842
+ * the same prop name, and the same behaviour, as `Datatable`. A card grid is what you reach for
2843
+ * when the rows are visual (assets, previews, renders), where "pick several and do one thing to
2844
+ * them" is most of the point.
2845
+ * @default false
2846
+ */
2847
+ checkboxSelection?: boolean;
2848
+ /**
2849
+ * Actions shown in the selection toolbar, with the same shape as `DatatableBatchAction` — including
2850
+ * `disabled` / `hidden` / `disabledReason` as predicates over the current selection (#479), and
2851
+ * `ctx.anchorEl` so an action can anchor a popover to its own button.
2852
+ */
2853
+ batchActions?: CardGridBatchAction<Row>[];
2854
+ /** Fired when the selection changes — `(keys, rows)`, matching `Datatable.onRowSelectionChange`. */
2855
+ onRowSelectionChange?: (keys: Array<string | number>, rows: Row[]) => void;
2856
+ /**
2857
+ * Where the grid draws its checkbox over each card. `"none"` suppresses the overlay entirely for
2858
+ * consumers who render the control themselves from `renderCard`'s third argument.
2859
+ * @default "top-start"
2860
+ */
2861
+ selectionPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "none";
2862
+ /**
2863
+ * Per-card `aria-label` for the checkbox. Worth setting: unlike a table row, a card's own content is
2864
+ * not necessarily announced with the control, so the default `"Select item"` is the same for every
2865
+ * card. @default (row, index) => "Select item"
2866
+ */
2867
+ selectionLabel?: (row: Row, index: number) => string;
2868
+ /** Show the page-scoped "Select all on this page" control. @default true */
2869
+ showSelectAll?: boolean;
2870
+ /**
2871
+ * Retain the row OBJECTS of off-page selections so `batchActions` and `onRowSelectionChange` receive
2872
+ * them for a selection spanning several pages. `keys` is always the authoritative cross-page
2873
+ * selection (as in `Datatable`); this exists because the grid only renders one page, which is the
2874
+ * `Map<id, row>` consumers were otherwise hand-rolling.
2875
+ *
2876
+ * Opt-in because it holds references the host may expect to be released, and **bounded**: `true`
2877
+ * retains up to 1000 rows, or pass a number for your own cap. Past the cap it stops retaining and
2878
+ * those keys simply resolve to nothing in `rows`, so re-fetch by key.
2879
+ * @default false
2880
+ */
2881
+ retainSelectedRows?: boolean | number;
2882
+ }
2883
+
2884
+ /** Extra context handed to a CardGrid batch action's `onClick`. */
2885
+ interface CardGridBatchActionContext {
2886
+ /** The toolbar button that was clicked — anchor a popover or panel to it. */
2887
+ anchorEl: HTMLElement;
2888
+ }
2889
+
2890
+ /** A batch action shown in CardGrid's selection toolbar. Mirrors `DatatableBatchAction`. */
2891
+ interface CardGridBatchAction<Row = any> {
2892
+ /** Button label. */
2893
+ label: string;
2894
+ /** Leading icon node. */
2895
+ icon?: React.ReactNode;
2896
+ /** Handler: `(selectedKeys, selectedRows, clearSelection, ctx)`. */
2897
+ onClick?: (
2898
+ keys: Array<string | number>,
2899
+ rows: Row[],
2900
+ clearSelection: () => void,
2901
+ ctx: CardGridBatchActionContext,
2902
+ ) => void;
2903
+ /** Render in danger color. */
2904
+ danger?: boolean;
2905
+ /** Disable the action — a static boolean, or a predicate over the current selection. */
2906
+ disabled?: boolean | ((keys: Array<string | number>, rows: Row[]) => boolean);
2907
+ /** Hide the action entirely — a static boolean, or a predicate over the current selection. */
2908
+ hidden?: boolean | ((keys: Array<string | number>, rows: Row[]) => boolean);
2909
+ /**
2910
+ * Why the action is disabled, shown as the button's tooltip (#479). May be a predicate over the
2911
+ * selection, because that is usually where the answer lives ("that selection is 5.1 GB; the limit is
2912
+ * 4 GB"). With a reason present the button renders `aria-disabled` rather than native `disabled`, so
2913
+ * it stays focusable and the reason is keyboard-reachable; without one it stays natively disabled and
2914
+ * out of the tab order.
2915
+ */
2916
+ disabledReason?:
2917
+ | React.ReactNode
2918
+ | ((keys: Array<string | number>, rows: Row[]) => React.ReactNode);
2755
2919
  }
2756
2920
 
2757
2921
  declare function CardGrid<Row = any>(props: CardGridProps<Row>): React.JSX.Element;
@@ -4961,4 +5125,4 @@ declare function useFilePicker(options?: UseFilePickerOptions): {
4961
5125
  getInputProps: () => React.InputHTMLAttributes<HTMLInputElement> & { ref: React.RefObject<HTMLInputElement | null> };
4962
5126
  };
4963
5127
 
4964
- export { Accordion, type AccordionItem, type AccordionProps, type ActionTone, Alert, type AlertProps, Anchor, type AnchorProps, AppShell, type AppShellProps, Avatar, AvatarMenu, type AvatarMenuProps, type AvatarProps, Badge, type BadgeProps, type BarTone, Box, type BoxOwnProps, type BoxProps, Boxplot, type BoxplotDatum, type BoxplotProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BubbleChart, type BubbleChartProps, Button, type ButtonProps, Candlestick, type CandlestickDatum, type CandlestickProps, Card, CardGrid, type CardGridFilter, type CardGridProps, type CardGridQuery, type CardGridSort, type CardGridSortOption, type CardProps, Carousel, type CarouselProps, Chart, type ChartDatum, type ChartProps, Checkbox, type CheckboxProps, Code, type CodeProps, ColorPicker, type ColorPickerProps, ColorSchemeScript, type ColorSchemeScriptOptions, type ColorSchemeScriptProps, Combobox, type ComboboxGroup, type ComboboxOption, type ComboboxProps, type Command, CommandPalette, type CommandPaletteProps, Container, type ContainerOwnProps, type ContainerProps, Currency, CurrencyField, type CurrencyFieldProps, type CurrencyOption, type CurrencyProps, Datatable, type DatatableBatchAction, type DatatableBatchActionContext, type DatatableBatchUpdateDetail, type DatatableColumn, type DatatableFilter, type DatatableFilterOp, type DatatableNumberOp, type DatatableProps, type DatatableQuery, type DatatableRowAction, type DatatableState, type DatatableStringOp, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, Dialog, type DialogProps, type DiffOp, DiffTable, type DiffTableColumn, type DiffTableProps, Divider, type DividerProps, DonutChart, type DonutChartDatum, type DonutChartProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, Field, type FieldProps, FileUpload, type FileUploadProps, FilterBar, type FilterBarProps, type FilterClause, type FilterField, type FilterFieldType, type FilterValues, Form, type FormProps, FunnelChart, type FunnelChartProps, type FunnelDatum, Gauge, type GaugeProps, type GaugeSeries, Grid, type GridOwnProps, type GridProps, Heading, type HeadingOwnProps, type HeadingProps, type HeadingSize, Heatmap, type HeatmapDatum, type HeatmapProps, IconButton, type IconButtonProps, Image, type ImageProps, ImageViewer, type ImageViewerControlsApi, type ImageViewerProps, type ImageViewerState, Input, type InputProps, Kanban, type KanbanCard, type KanbanColumn, type KanbanProps, Kbd, type KbdProps, Label, type LabelProps, List, type ListItemData, type ListProps, Menu, type MenuItemDef, type MenuProps, MultiSelect, type MultiSelectGroup, type MultiSelectOption, type MultiSelectProps, Navbar, type NavbarLink, type NavbarProps, type Option, type OptionGroup, Pagination, type PaginationProps, PieChart, type PieChartDatum, type PieChartProps, PolarAreaChart, type PolarAreaChartProps, type PolarAreaDatum, type PolymorphicAs, type PolymorphicComponent, type PolymorphicProps, type PolymorphicPropsWithRef, type PolymorphicRef, Popover, type PopoverProps, Portal, type PortalProps, Pre, type PreProps, Progress, type ProgressProps, RadarChart, type RadarChartProps, type RadarDatum, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, RangeChart, type RangeChartProps, type RangeDatum, Rating, type RatingProps, type ResponsiveColumns, ScatterChart, type ScatterChartProps, type ScatterPoint, type ScatterSeries, Select, type SelectGroup, type SelectOption, type SelectProps, Sidebar, type SidebarItem, type SidebarProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Sparkline, type SparklineDatum, type SparklineProps, Spinner, type SpinnerProps, Stack, type StackOwnProps, type StackProps, Stat, type StatProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, type Sx, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextOwnProps, type TextProps, type TextTone, Textarea, type TextareaProps, type Theme, ThemeProvider, type ThemeProviderProps, type ThemeTokens, TimePicker, type TimePickerProps, Timeline, type TimelineItem, type TimelineProps, Toast, type ToastApi, type ToastOptions, type ToastProps, ToastProvider, type ToastProviderProps, type ToastTone, ToastViewport, type ToastViewportProps, ToggleGroup, type ToggleGroupItem, type ToggleGroupProps, type Tone, Tooltip, type TooltipProps, type TreeNode, TreeView, type TreeViewProps, Treemap, type TreemapDatum, type TreemapProps, TwicoProvider, type TwicoProviderProps, type UseColorSchemeOptions, type UseFilePickerOptions, type UseFocusTrapOptions, type UseKeyPressOptions, type UseLocalStorageOptions, type UseMediaQueryOptions, type UseWindowSizeOptions, VisuallyHidden, type VisuallyHiddenProps, type WithSx, createTheme, getColorSchemeScript, runDatatableQuery, useClickOutside, useColorScheme, useControllableState, useCopyToClipboard, useDebouncedCallback, useDebouncedValue, useDisclosure, useEventListener, useFilePicker, useFocusTrap, useHover, useId, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyPress, useLocalStorage, useMediaQuery, useMounted, usePortal, usePrefersReducedMotion, usePrevious, useScrollLock, useTimeout, useToast, useToggle, useWindowSize };
5128
+ export { Accordion, type AccordionItem, type AccordionProps, type ActionTone, Alert, type AlertProps, Anchor, type AnchorProps, AppShell, type AppShellProps, Avatar, AvatarMenu, type AvatarMenuProps, type AvatarProps, Badge, type BadgeProps, type BarTone, Box, type BoxOwnProps, type BoxProps, Boxplot, type BoxplotDatum, type BoxplotProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, BubbleChart, type BubbleChartProps, Button, type ButtonProps, Candlestick, type CandlestickDatum, type CandlestickProps, Card, CardGrid, type CardGridBatchAction, type CardGridBatchActionContext, type CardGridFilter, type CardGridProps, type CardGridQuery, type CardGridSort, type CardGridSortOption, type CardProps, Carousel, type CarouselProps, Chart, type ChartDatum, type ChartProps, Checkbox, type CheckboxProps, Code, type CodeProps, ColorPicker, type ColorPickerProps, ColorSchemeScript, type ColorSchemeScriptOptions, type ColorSchemeScriptProps, Combobox, type ComboboxGroup, type ComboboxOption, type ComboboxProps, type Command, CommandPalette, type CommandPaletteProps, Container, type ContainerOwnProps, type ContainerProps, Currency, CurrencyField, type CurrencyFieldProps, type CurrencyOption, type CurrencyProps, Datatable, type DatatableBatchAction, type DatatableBatchActionContext, type DatatableBatchUpdateDetail, type DatatableColumn, type DatatableFilter, type DatatableFilterOp, type DatatableNumberOp, type DatatableProps, type DatatableQuery, type DatatableRowAction, type DatatableState, type DatatableStringOp, DatePicker, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerProps, DateTimePicker, type DateTimePickerProps, Dialog, type DialogProps, type DiffOp, DiffTable, type DiffTableColumn, type DiffTableProps, Divider, type DividerProps, DonutChart, type DonutChartDatum, type DonutChartProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, Field, type FieldProps, FileUpload, type FileUploadProps, FilterBar, type FilterBarProps, type FilterClause, type FilterField, type FilterFieldType, type FilterValues, Form, type FormProps, FunnelChart, type FunnelChartProps, type FunnelDatum, Gauge, type GaugeProps, type GaugeSeries, Grid, type GridOwnProps, type GridProps, Heading, type HeadingOwnProps, type HeadingProps, type HeadingSize, Heatmap, type HeatmapDatum, type HeatmapProps, IconButton, type IconButtonProps, Image, type ImageProps, ImageViewer, type ImageViewerControlsApi, type ImageViewerProps, type ImageViewerState, Input, type InputProps, Kanban, type KanbanCard, type KanbanColumn, type KanbanProps, Kbd, type KbdProps, Label, type LabelProps, List, type ListItemData, type ListProps, Menu, type MenuItemDef, type MenuProps, MultiSelect, type MultiSelectGroup, type MultiSelectOption, type MultiSelectProps, Navbar, type NavbarLink, type NavbarProps, type Option, type OptionGroup, Pagination, type PaginationProps, PieChart, type PieChartDatum, type PieChartProps, PolarAreaChart, type PolarAreaChartProps, type PolarAreaDatum, type PolymorphicAs, type PolymorphicComponent, type PolymorphicProps, type PolymorphicPropsWithRef, type PolymorphicRef, Popover, type PopoverProps, Portal, type PortalProps, Pre, type PreProps, Progress, type ProgressProps, RadarChart, type RadarChartProps, type RadarDatum, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, RangeChart, type RangeChartProps, type RangeDatum, Rating, type RatingProps, type ResponsiveColumns, ScatterChart, type ScatterChartProps, type ScatterPoint, type ScatterSeries, Select, type SelectGroup, type SelectOption, type SelectProps, Sidebar, type SidebarItem, type SidebarProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Sparkline, type SparklineDatum, type SparklineProps, Spinner, type SpinnerProps, Stack, type StackOwnProps, type StackProps, Stat, type StatProps, type Step, Stepper, type StepperProps, Switch, type SwitchProps, type Sx, type TabItem, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, type TagProps, Text, type TextOwnProps, type TextProps, type TextTone, Textarea, type TextareaProps, type Theme, ThemeProvider, type ThemeProviderProps, type ThemeTokens, TimePicker, type TimePickerProps, Timeline, type TimelineItem, type TimelineProps, Toast, type ToastApi, type ToastOptions, type ToastProps, ToastProvider, type ToastProviderProps, type ToastTone, ToastViewport, type ToastViewportProps, ToggleGroup, type ToggleGroupItem, type ToggleGroupProps, type Tone, Tooltip, type TooltipProps, type TreeNode, TreeView, type TreeViewProps, Treemap, type TreemapDatum, type TreemapProps, TwicoProvider, type TwicoProviderProps, type UseColorSchemeOptions, type UseFilePickerOptions, type UseFocusTrapOptions, type UseKeyPressOptions, type UseLocalStorageOptions, type UseMediaQueryOptions, type UseWindowSizeOptions, VisuallyHidden, type VisuallyHiddenProps, type WithSx, createTheme, getColorSchemeScript, runDatatableQuery, useClickOutside, useColorScheme, useControllableState, useCopyToClipboard, useDebouncedCallback, useDebouncedValue, useDisclosure, useEventListener, useFilePicker, useFocusTrap, useHover, useId, useIntersectionObserver, useInterval, useIsomorphicLayoutEffect, useKeyPress, useLocalStorage, useMediaQuery, useMounted, usePortal, usePrefersReducedMotion, usePrevious, useScrollLock, useTimeout, useToast, useToggle, useWindowSize };