twico-ui 1.42.0 → 1.43.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
@@ -222,6 +222,20 @@ interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
222
222
  onOpenChange?: (values: string[]) => void;
223
223
  /** Heading level wrapping each trigger button (document-outline semantics). @default 3 */
224
224
  headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
225
+ /** #446: render each panel's `content` only once the item has first been opened, then keep it
226
+ * mounted so BOTH the open and close animations still have something to animate (the panel
227
+ * interpolates `grid-template-rows: 0fr -> 1fr` from its real content, so an emptied panel would
228
+ * collapse instantly). Cuts the DOM/hook cost of a page full of collapsed panels. Seeded from
229
+ * `open`/`defaultOpen`, so a restored "these were open last time" set is never open-but-blank.
230
+ * @default false */
231
+ mountOnOpen?: boolean;
232
+ /** #446: additionally unmount a panel's `content` again when it closes, trading the memory back
233
+ * for a slightly cheaper page. Implies `mountOnOpen`. The unmount waits out the collapse
234
+ * transition (in lockstep with `--duration-base`), so the close animation still plays. The wait is
235
+ * a fixed 240 ms matching the DEFAULT `--duration-base` (220 ms); if you override that token to
236
+ * something materially longer, the content is dropped before the panel finishes collapsing.
237
+ * @default false */
238
+ unmountOnClose?: boolean;
225
239
  }
226
240
 
227
241
  interface AccordionItem {
@@ -267,7 +281,7 @@ type PolymorphicAs = React.ElementType;
267
281
  * style (and win over the component's base style, MUI-style); any nested object — a
268
282
  * selector key (`"&:hover"`, `":focus-visible"`, `"& > .child"`) or an at-rule
269
283
  * (`"@media (min-width: 600px)"`, `"@supports …"`, `"@container …"`) — is compiled to a
270
- * scoped stylesheet. Use design tokens for values, e.g. `color: "var(--color-primary)"`.
284
+ * scoped stylesheet. Use design tokens for values, e.g. `color: "var(--color-primary-subtle-fg)"`.
271
285
  * See docs/sx.md.
272
286
  */
273
287
  type Sx = React.CSSProperties & {
@@ -410,7 +424,14 @@ interface MenuItemDef {
410
424
  * @startingPoint section="Overlay" subtitle="Dropdown menu with headings & shortcuts" viewport="700x360"
411
425
  */
412
426
  interface MenuProps extends React.HTMLAttributes<HTMLSpanElement> {
413
- /** Clickable trigger (e.g. a Button or IconButton). */
427
+ /** Clickable trigger (e.g. a Button or IconButton). **Pass a single focusable control** (a `Button`/`IconButton`, or any element
428
+ * that is already a button/link). A passed element is CLONED to carry `tabIndex`, `aria-expanded`,
429
+ * `aria-haspopup`, `aria-controls` and the open handler, and those are only valid on a control:
430
+ * `aria-expanded` is prohibited on a plain `div`'s implicit `role="generic"` (#447). A non-control
431
+ * element still works - it is given `role="button"` and Enter/Space - but wrapping the real button in
432
+ * a `Box`/`Stack` to overlay a badge produces TWO tab stops for one control, so put the decoration
433
+ * outside the trigger instead. An explicit `role` you set is always preserved. A wrapping `Tooltip`
434
+ * must go OUTSIDE this component, not inside `trigger` - see docs/overlays.md. */
414
435
  trigger: React.ReactNode;
415
436
  items: MenuItemDef[];
416
437
  /** Horizontal alignment to the trigger. @default "start" */
@@ -513,7 +534,11 @@ interface BreadcrumbItem {
513
534
  interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
514
535
  /** Ordered trail; the last item renders as the current page. */
515
536
  items: BreadcrumbItem[];
516
- /** Custom separator node (defaults to a chevron). */
537
+ /**
538
+ * Custom separator node (defaults to a chevron). The built-in chevron mirrors itself under
539
+ * `dir="rtl"`; a custom separator does NOT (#465) — it is rendered as given, so supply a
540
+ * direction-neutral glyph or handle the mirroring yourself.
541
+ */
517
542
  separator?: React.ReactNode;
518
543
  /** Collapse to first + last items past this count (0 = never). @default 0 */
519
544
  maxItems?: number;
@@ -2301,7 +2326,14 @@ interface DatatableQuery {
2301
2326
  /** `field`s of the columns currently shown (in column order) — the built-in Columns menu
2302
2327
  * is the source of truth. Use it to fetch/project only the visible columns server-side.
2303
2328
  * Always populated by the grid in `onServerChange`; optional so a hand-built query passed
2304
- * to `runDatatableQuery` (which ignores it) need not supply it. */
2329
+ * to `runDatatableQuery` (which ignores it) need not supply it.
2330
+ *
2331
+ * **Don't project purely by this list if any column has a per-row `editable` predicate (#436).** Such a
2332
+ * predicate runs client-side against the row object you sent, and usually reads a *different* field from the
2333
+ * one it gates. Drop that source field from the payload and it reads `undefined`, which typically evaluates
2334
+ * truthy — so the rule silently stops holding and the column becomes editable on every row. Always include the
2335
+ * fields your predicates read, whatever the user has hidden. (Hiding the gated column too does not help: a
2336
+ * hidden column is still offered by the batch editor and still written.) */
2305
2337
  visibleColumns?: string[];
2306
2338
  /** `field`s of the columns currently hidden via the Columns menu. Always populated in
2307
2339
  * `onServerChange`; optional for the same reason as `visibleColumns`. */
@@ -2445,7 +2477,17 @@ interface DatatableColumn<T = any> {
2445
2477
  /** Make this column's cells editable (double-click to edit). Overrides the grid `editMode`. #424: pass a
2446
2478
  * predicate `(row, { field }) => boolean` to make it editable only on the rows that satisfy it (like
2447
2479
  * `cellStyle`/`cellClassName`). A `false` result behaves exactly like `editable: false` for that cell — no
2448
- * editor on double-click/Enter/F2, and the cell is skipped by paste, cut and the batch editor. */
2480
+ * editor on double-click/Enter/F2, and the cell is skipped by paste, cut and the batch editor.
2481
+ *
2482
+ * **With server-side column projection (#436):** the predicate runs against the row object the grid holds, so
2483
+ * every field it *reads* must survive projection. A predicate typically gates one column from another
2484
+ * (`{ field: "B", editable: (row) => !isLocked(row.A) }`); if you project by `visibleColumns` and `A` is not
2485
+ * sent, `row.A` is `undefined` and the predicate usually evaluates truthy — i.e. **editable on every row**.
2486
+ * Keep the fields a predicate reads in the payload unconditionally, regardless of visibility.
2487
+ *
2488
+ * Note hiding the gated column does **not** protect it: a hidden column is still offered by the batch editor
2489
+ * (its list comes from all `columns`, not the visible ones) and is still written. That is deliberate — batch
2490
+ * -setting a column you keep off-screen is a supported use — so the projection is the thing to get right. */
2449
2491
  editable?: boolean | ((row: T, ctx: { field: string }) => boolean);
2450
2492
  /** Editor type. "select" (or any column with `valueOptions`) renders a dropdown; else a text/number input by column type. */
2451
2493
  editType?: "text" | "number" | "select";
@@ -2660,10 +2702,17 @@ interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElem
2660
2702
  pageSize?: number;
2661
2703
  /** Options for the "per page" selector. @default [12, 24, 48, 96] */
2662
2704
  pageSizeOptions?: number[];
2663
- /** Controlled 0-based page. */
2705
+ /**
2706
+ * Controlled 0-based page. If it points past the last page of the current result set — a refetch or
2707
+ * a deletion shrank `rows` — the grid clamps: it renders the last real page and reports the clamped
2708
+ * index through `onPageChange` (#461). Keep it controlled only if you apply that callback, otherwise
2709
+ * the grid and your state disagree. The clamp is skipped while `loading`, and in `serverMode`
2710
+ * without `rowCount`, because the total is not knowable there.
2711
+ */
2664
2712
  page?: number;
2665
2713
  /** Initial 0-based page when uncontrolled. @default 0 */
2666
2714
  defaultPage?: number;
2715
+ /** Fires on user paging AND when the grid clamps an out-of-range page back into range (#461). */
2667
2716
  onPageChange?: (page: number) => void;
2668
2717
  onPageSizeChange?: (pageSize: number) => void;
2669
2718
  /** Show the "per page" selector in the footer. @default true */
@@ -3617,7 +3666,14 @@ declare function Pagination(props: PaginationProps): React.JSX.Element;
3617
3666
  * outside-click / Esc. Use for rich content; for plain text use Tooltip.
3618
3667
  */
3619
3668
  interface PopoverProps extends React.HTMLAttributes<HTMLSpanElement> {
3620
- /** The clickable trigger element. */
3669
+ /** The clickable trigger. **Pass a single focusable control** (a `Button`/`IconButton`, or any element
3670
+ * that is already a button/link). A passed element is CLONED to carry `tabIndex`, `aria-expanded`,
3671
+ * `aria-haspopup`, `aria-controls` and the open handler, and those are only valid on a control:
3672
+ * `aria-expanded` is prohibited on a plain `div`'s implicit `role="generic"` (#447). A non-control
3673
+ * element still works - it is given `role="button"` and Enter/Space - but wrapping the real button in
3674
+ * a `Box`/`Stack` to overlay a badge produces TWO tab stops for one control, so put the decoration
3675
+ * outside the trigger instead. An explicit `role` you set is always preserved. A wrapping `Tooltip`
3676
+ * must go OUTSIDE this component, not inside `trigger` - see docs/overlays.md. */
3621
3677
  trigger: React.ReactNode;
3622
3678
  /** Optional bold title inside the panel. */
3623
3679
  title?: React.ReactNode;
@@ -4322,7 +4378,13 @@ interface ToastApi {
4322
4378
  /** Access the imperative toast API. Must be under a <ToastProvider>. */
4323
4379
  declare function useToast(): ToastApi;
4324
4380
 
4325
- interface ToastProviderProps {
4381
+ /**
4382
+ * #469: extends the viewport's props because ToastProvider collects `...viewportProps` and spreads
4383
+ * them onto the <ToastViewport> it renders. Declaring only children/limit/duration meant a TS
4384
+ * consumer got TS2322 for `className` / `style` / `aria-label` - the usual way to re-position or
4385
+ * restyle the toast stack - on props that have always worked at runtime.
4386
+ */
4387
+ interface ToastProviderProps extends Omit<ToastViewportProps, "limit" | "children"> {
4326
4388
  children?: React.ReactNode;
4327
4389
  /** Max toasts shown at once (most recent kept). @default 4 */
4328
4390
  limit?: number;
@@ -4623,6 +4685,10 @@ interface HeadingOwnProps {
4623
4685
  size?: HeadingSize;
4624
4686
  /** Convenience: render at the display size (`var(--text-display)`) regardless of level. @default false */
4625
4687
  display?: boolean;
4688
+ /**
4689
+ * CSS `text-align`. Prefer the LOGICAL keywords `"start"` / `"end"` over `"left"` / `"right"` so the
4690
+ * text mirrors under `dir="rtl"` like the rest of the library (#473); the physical values pin it.
4691
+ */
4626
4692
  align?: React.CSSProperties["textAlign"];
4627
4693
  /** Single-line ellipsis truncation (adds min-width:0 so it shrinks in a flex parent). @default false */
4628
4694
  truncate?: boolean;
@@ -4649,6 +4715,10 @@ interface TextOwnProps {
4649
4715
  tone?: TextTone;
4650
4716
  /** Font-weight token suffix (e.g. "medium", "semibold", "bold"). */
4651
4717
  weight?: "medium" | "semibold" | "bold" | string;
4718
+ /**
4719
+ * CSS `text-align`. Prefer the LOGICAL keywords `"start"` / `"end"` over `"left"` / `"right"` so the
4720
+ * text mirrors under `dir="rtl"` like the rest of the library (#473); the physical values pin it.
4721
+ */
4652
4722
  align?: React.CSSProperties["textAlign"];
4653
4723
  /** Single-line ellipsis truncation (adds min-width:0 so it shrinks in a flex parent). @default false */
4654
4724
  truncate?: boolean;
@@ -4724,6 +4794,11 @@ interface UseColorSchemeOptions {
4724
4794
  element?: HTMLElement | null;
4725
4795
  /** Disable CSS transitions during the switch so the UI re-themes instantly. @default true */
4726
4796
  disableTransitionsOnChange?: boolean;
4797
+ /**
4798
+ * Read the stored theme eagerly in the initializer. Client-only apps with no SSR; under SSR this
4799
+ * reintroduces the hydration mismatch #466 fixed. @default false
4800
+ */
4801
+ initializeWithValue?: boolean;
4727
4802
  }
4728
4803
 
4729
4804
  /** Light/dark theme state synced to `<html>` and persisted to localStorage. */
@@ -4764,10 +4839,22 @@ declare function useKeyPress(
4764
4839
  options?: UseKeyPressOptions
4765
4840
  ): void;
4766
4841
 
4767
- /** State persisted to localStorage (JSON-serialized), SSR-safe. */
4842
+ interface UseLocalStorageOptions {
4843
+ /**
4844
+ * Read storage eagerly in the initializer. Client-only apps with no SSR; under SSR this
4845
+ * reintroduces the hydration mismatch #466 fixed. @default false
4846
+ */
4847
+ initializeWithValue?: boolean;
4848
+ }
4849
+
4850
+ /**
4851
+ * State persisted to localStorage (JSON-serialized), SSR-safe: returns `initialValue` on the server
4852
+ * AND on the first client render, then reads storage in a layout effect before paint (#466).
4853
+ */
4768
4854
  declare function useLocalStorage<T>(
4769
4855
  key: string,
4770
- initialValue: T
4856
+ initialValue: T,
4857
+ options?: UseLocalStorageOptions
4771
4858
  ): [T, (value: T | ((prev: T) => T)) => void];
4772
4859
 
4773
4860
  /** Copy text to the clipboard with a `copied` flag that auto-resets. Uses the async Clipboard API in a
@@ -4793,8 +4880,19 @@ declare function useInterval(callback: () => void, delay: number | null): void;
4793
4880
  /** Run `callback` once after `delay` ms; pass `delay = null` to cancel. */
4794
4881
  declare function useTimeout(callback: () => void, delay: number | null): void;
4795
4882
 
4796
- /** The current window dimensions (0×0 on the server). */
4797
- declare function useWindowSize(): { width: number; height: number };
4883
+ interface UseWindowSizeOptions {
4884
+ /**
4885
+ * Measure eagerly in the initializer. Client-only apps with no SSR; under SSR this reintroduces
4886
+ * the hydration mismatch #466 fixed. @default false
4887
+ */
4888
+ initializeWithValue?: boolean;
4889
+ }
4890
+
4891
+ /**
4892
+ * The current window dimensions. 0×0 on the server AND on the first client render, then measured in
4893
+ * a layout effect before paint (#466) — so hydration never mismatches.
4894
+ */
4895
+ declare function useWindowSize(options?: UseWindowSizeOptions): { width: number; height: number };
4798
4896
 
4799
4897
  /** `true` while the pointer is over the element referenced by `ref`. */
4800
4898
  declare function useHover<T extends HTMLElement = HTMLElement>(ref: React.RefObject<T | null>): boolean;
@@ -4863,4 +4961,4 @@ declare function useFilePicker(options?: UseFilePickerOptions): {
4863
4961
  getInputProps: () => React.InputHTMLAttributes<HTMLInputElement> & { ref: React.RefObject<HTMLInputElement | null> };
4864
4962
  };
4865
4963
 
4866
- 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 UseMediaQueryOptions, 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 };
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 };
package/dist/index.d.ts CHANGED
@@ -222,6 +222,20 @@ interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
222
222
  onOpenChange?: (values: string[]) => void;
223
223
  /** Heading level wrapping each trigger button (document-outline semantics). @default 3 */
224
224
  headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
225
+ /** #446: render each panel's `content` only once the item has first been opened, then keep it
226
+ * mounted so BOTH the open and close animations still have something to animate (the panel
227
+ * interpolates `grid-template-rows: 0fr -> 1fr` from its real content, so an emptied panel would
228
+ * collapse instantly). Cuts the DOM/hook cost of a page full of collapsed panels. Seeded from
229
+ * `open`/`defaultOpen`, so a restored "these were open last time" set is never open-but-blank.
230
+ * @default false */
231
+ mountOnOpen?: boolean;
232
+ /** #446: additionally unmount a panel's `content` again when it closes, trading the memory back
233
+ * for a slightly cheaper page. Implies `mountOnOpen`. The unmount waits out the collapse
234
+ * transition (in lockstep with `--duration-base`), so the close animation still plays. The wait is
235
+ * a fixed 240 ms matching the DEFAULT `--duration-base` (220 ms); if you override that token to
236
+ * something materially longer, the content is dropped before the panel finishes collapsing.
237
+ * @default false */
238
+ unmountOnClose?: boolean;
225
239
  }
226
240
 
227
241
  interface AccordionItem {
@@ -267,7 +281,7 @@ type PolymorphicAs = React.ElementType;
267
281
  * style (and win over the component's base style, MUI-style); any nested object — a
268
282
  * selector key (`"&:hover"`, `":focus-visible"`, `"& > .child"`) or an at-rule
269
283
  * (`"@media (min-width: 600px)"`, `"@supports …"`, `"@container …"`) — is compiled to a
270
- * scoped stylesheet. Use design tokens for values, e.g. `color: "var(--color-primary)"`.
284
+ * scoped stylesheet. Use design tokens for values, e.g. `color: "var(--color-primary-subtle-fg)"`.
271
285
  * See docs/sx.md.
272
286
  */
273
287
  type Sx = React.CSSProperties & {
@@ -410,7 +424,14 @@ interface MenuItemDef {
410
424
  * @startingPoint section="Overlay" subtitle="Dropdown menu with headings & shortcuts" viewport="700x360"
411
425
  */
412
426
  interface MenuProps extends React.HTMLAttributes<HTMLSpanElement> {
413
- /** Clickable trigger (e.g. a Button or IconButton). */
427
+ /** Clickable trigger (e.g. a Button or IconButton). **Pass a single focusable control** (a `Button`/`IconButton`, or any element
428
+ * that is already a button/link). A passed element is CLONED to carry `tabIndex`, `aria-expanded`,
429
+ * `aria-haspopup`, `aria-controls` and the open handler, and those are only valid on a control:
430
+ * `aria-expanded` is prohibited on a plain `div`'s implicit `role="generic"` (#447). A non-control
431
+ * element still works - it is given `role="button"` and Enter/Space - but wrapping the real button in
432
+ * a `Box`/`Stack` to overlay a badge produces TWO tab stops for one control, so put the decoration
433
+ * outside the trigger instead. An explicit `role` you set is always preserved. A wrapping `Tooltip`
434
+ * must go OUTSIDE this component, not inside `trigger` - see docs/overlays.md. */
414
435
  trigger: React.ReactNode;
415
436
  items: MenuItemDef[];
416
437
  /** Horizontal alignment to the trigger. @default "start" */
@@ -513,7 +534,11 @@ interface BreadcrumbItem {
513
534
  interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
514
535
  /** Ordered trail; the last item renders as the current page. */
515
536
  items: BreadcrumbItem[];
516
- /** Custom separator node (defaults to a chevron). */
537
+ /**
538
+ * Custom separator node (defaults to a chevron). The built-in chevron mirrors itself under
539
+ * `dir="rtl"`; a custom separator does NOT (#465) — it is rendered as given, so supply a
540
+ * direction-neutral glyph or handle the mirroring yourself.
541
+ */
517
542
  separator?: React.ReactNode;
518
543
  /** Collapse to first + last items past this count (0 = never). @default 0 */
519
544
  maxItems?: number;
@@ -2301,7 +2326,14 @@ interface DatatableQuery {
2301
2326
  /** `field`s of the columns currently shown (in column order) — the built-in Columns menu
2302
2327
  * is the source of truth. Use it to fetch/project only the visible columns server-side.
2303
2328
  * Always populated by the grid in `onServerChange`; optional so a hand-built query passed
2304
- * to `runDatatableQuery` (which ignores it) need not supply it. */
2329
+ * to `runDatatableQuery` (which ignores it) need not supply it.
2330
+ *
2331
+ * **Don't project purely by this list if any column has a per-row `editable` predicate (#436).** Such a
2332
+ * predicate runs client-side against the row object you sent, and usually reads a *different* field from the
2333
+ * one it gates. Drop that source field from the payload and it reads `undefined`, which typically evaluates
2334
+ * truthy — so the rule silently stops holding and the column becomes editable on every row. Always include the
2335
+ * fields your predicates read, whatever the user has hidden. (Hiding the gated column too does not help: a
2336
+ * hidden column is still offered by the batch editor and still written.) */
2305
2337
  visibleColumns?: string[];
2306
2338
  /** `field`s of the columns currently hidden via the Columns menu. Always populated in
2307
2339
  * `onServerChange`; optional for the same reason as `visibleColumns`. */
@@ -2445,7 +2477,17 @@ interface DatatableColumn<T = any> {
2445
2477
  /** Make this column's cells editable (double-click to edit). Overrides the grid `editMode`. #424: pass a
2446
2478
  * predicate `(row, { field }) => boolean` to make it editable only on the rows that satisfy it (like
2447
2479
  * `cellStyle`/`cellClassName`). A `false` result behaves exactly like `editable: false` for that cell — no
2448
- * editor on double-click/Enter/F2, and the cell is skipped by paste, cut and the batch editor. */
2480
+ * editor on double-click/Enter/F2, and the cell is skipped by paste, cut and the batch editor.
2481
+ *
2482
+ * **With server-side column projection (#436):** the predicate runs against the row object the grid holds, so
2483
+ * every field it *reads* must survive projection. A predicate typically gates one column from another
2484
+ * (`{ field: "B", editable: (row) => !isLocked(row.A) }`); if you project by `visibleColumns` and `A` is not
2485
+ * sent, `row.A` is `undefined` and the predicate usually evaluates truthy — i.e. **editable on every row**.
2486
+ * Keep the fields a predicate reads in the payload unconditionally, regardless of visibility.
2487
+ *
2488
+ * Note hiding the gated column does **not** protect it: a hidden column is still offered by the batch editor
2489
+ * (its list comes from all `columns`, not the visible ones) and is still written. That is deliberate — batch
2490
+ * -setting a column you keep off-screen is a supported use — so the projection is the thing to get right. */
2449
2491
  editable?: boolean | ((row: T, ctx: { field: string }) => boolean);
2450
2492
  /** Editor type. "select" (or any column with `valueOptions`) renders a dropdown; else a text/number input by column type. */
2451
2493
  editType?: "text" | "number" | "select";
@@ -2660,10 +2702,17 @@ interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElem
2660
2702
  pageSize?: number;
2661
2703
  /** Options for the "per page" selector. @default [12, 24, 48, 96] */
2662
2704
  pageSizeOptions?: number[];
2663
- /** Controlled 0-based page. */
2705
+ /**
2706
+ * Controlled 0-based page. If it points past the last page of the current result set — a refetch or
2707
+ * a deletion shrank `rows` — the grid clamps: it renders the last real page and reports the clamped
2708
+ * index through `onPageChange` (#461). Keep it controlled only if you apply that callback, otherwise
2709
+ * the grid and your state disagree. The clamp is skipped while `loading`, and in `serverMode`
2710
+ * without `rowCount`, because the total is not knowable there.
2711
+ */
2664
2712
  page?: number;
2665
2713
  /** Initial 0-based page when uncontrolled. @default 0 */
2666
2714
  defaultPage?: number;
2715
+ /** Fires on user paging AND when the grid clamps an out-of-range page back into range (#461). */
2667
2716
  onPageChange?: (page: number) => void;
2668
2717
  onPageSizeChange?: (pageSize: number) => void;
2669
2718
  /** Show the "per page" selector in the footer. @default true */
@@ -3617,7 +3666,14 @@ declare function Pagination(props: PaginationProps): React.JSX.Element;
3617
3666
  * outside-click / Esc. Use for rich content; for plain text use Tooltip.
3618
3667
  */
3619
3668
  interface PopoverProps extends React.HTMLAttributes<HTMLSpanElement> {
3620
- /** The clickable trigger element. */
3669
+ /** The clickable trigger. **Pass a single focusable control** (a `Button`/`IconButton`, or any element
3670
+ * that is already a button/link). A passed element is CLONED to carry `tabIndex`, `aria-expanded`,
3671
+ * `aria-haspopup`, `aria-controls` and the open handler, and those are only valid on a control:
3672
+ * `aria-expanded` is prohibited on a plain `div`'s implicit `role="generic"` (#447). A non-control
3673
+ * element still works - it is given `role="button"` and Enter/Space - but wrapping the real button in
3674
+ * a `Box`/`Stack` to overlay a badge produces TWO tab stops for one control, so put the decoration
3675
+ * outside the trigger instead. An explicit `role` you set is always preserved. A wrapping `Tooltip`
3676
+ * must go OUTSIDE this component, not inside `trigger` - see docs/overlays.md. */
3621
3677
  trigger: React.ReactNode;
3622
3678
  /** Optional bold title inside the panel. */
3623
3679
  title?: React.ReactNode;
@@ -4322,7 +4378,13 @@ interface ToastApi {
4322
4378
  /** Access the imperative toast API. Must be under a <ToastProvider>. */
4323
4379
  declare function useToast(): ToastApi;
4324
4380
 
4325
- interface ToastProviderProps {
4381
+ /**
4382
+ * #469: extends the viewport's props because ToastProvider collects `...viewportProps` and spreads
4383
+ * them onto the <ToastViewport> it renders. Declaring only children/limit/duration meant a TS
4384
+ * consumer got TS2322 for `className` / `style` / `aria-label` - the usual way to re-position or
4385
+ * restyle the toast stack - on props that have always worked at runtime.
4386
+ */
4387
+ interface ToastProviderProps extends Omit<ToastViewportProps, "limit" | "children"> {
4326
4388
  children?: React.ReactNode;
4327
4389
  /** Max toasts shown at once (most recent kept). @default 4 */
4328
4390
  limit?: number;
@@ -4623,6 +4685,10 @@ interface HeadingOwnProps {
4623
4685
  size?: HeadingSize;
4624
4686
  /** Convenience: render at the display size (`var(--text-display)`) regardless of level. @default false */
4625
4687
  display?: boolean;
4688
+ /**
4689
+ * CSS `text-align`. Prefer the LOGICAL keywords `"start"` / `"end"` over `"left"` / `"right"` so the
4690
+ * text mirrors under `dir="rtl"` like the rest of the library (#473); the physical values pin it.
4691
+ */
4626
4692
  align?: React.CSSProperties["textAlign"];
4627
4693
  /** Single-line ellipsis truncation (adds min-width:0 so it shrinks in a flex parent). @default false */
4628
4694
  truncate?: boolean;
@@ -4649,6 +4715,10 @@ interface TextOwnProps {
4649
4715
  tone?: TextTone;
4650
4716
  /** Font-weight token suffix (e.g. "medium", "semibold", "bold"). */
4651
4717
  weight?: "medium" | "semibold" | "bold" | string;
4718
+ /**
4719
+ * CSS `text-align`. Prefer the LOGICAL keywords `"start"` / `"end"` over `"left"` / `"right"` so the
4720
+ * text mirrors under `dir="rtl"` like the rest of the library (#473); the physical values pin it.
4721
+ */
4652
4722
  align?: React.CSSProperties["textAlign"];
4653
4723
  /** Single-line ellipsis truncation (adds min-width:0 so it shrinks in a flex parent). @default false */
4654
4724
  truncate?: boolean;
@@ -4724,6 +4794,11 @@ interface UseColorSchemeOptions {
4724
4794
  element?: HTMLElement | null;
4725
4795
  /** Disable CSS transitions during the switch so the UI re-themes instantly. @default true */
4726
4796
  disableTransitionsOnChange?: boolean;
4797
+ /**
4798
+ * Read the stored theme eagerly in the initializer. Client-only apps with no SSR; under SSR this
4799
+ * reintroduces the hydration mismatch #466 fixed. @default false
4800
+ */
4801
+ initializeWithValue?: boolean;
4727
4802
  }
4728
4803
 
4729
4804
  /** Light/dark theme state synced to `<html>` and persisted to localStorage. */
@@ -4764,10 +4839,22 @@ declare function useKeyPress(
4764
4839
  options?: UseKeyPressOptions
4765
4840
  ): void;
4766
4841
 
4767
- /** State persisted to localStorage (JSON-serialized), SSR-safe. */
4842
+ interface UseLocalStorageOptions {
4843
+ /**
4844
+ * Read storage eagerly in the initializer. Client-only apps with no SSR; under SSR this
4845
+ * reintroduces the hydration mismatch #466 fixed. @default false
4846
+ */
4847
+ initializeWithValue?: boolean;
4848
+ }
4849
+
4850
+ /**
4851
+ * State persisted to localStorage (JSON-serialized), SSR-safe: returns `initialValue` on the server
4852
+ * AND on the first client render, then reads storage in a layout effect before paint (#466).
4853
+ */
4768
4854
  declare function useLocalStorage<T>(
4769
4855
  key: string,
4770
- initialValue: T
4856
+ initialValue: T,
4857
+ options?: UseLocalStorageOptions
4771
4858
  ): [T, (value: T | ((prev: T) => T)) => void];
4772
4859
 
4773
4860
  /** Copy text to the clipboard with a `copied` flag that auto-resets. Uses the async Clipboard API in a
@@ -4793,8 +4880,19 @@ declare function useInterval(callback: () => void, delay: number | null): void;
4793
4880
  /** Run `callback` once after `delay` ms; pass `delay = null` to cancel. */
4794
4881
  declare function useTimeout(callback: () => void, delay: number | null): void;
4795
4882
 
4796
- /** The current window dimensions (0×0 on the server). */
4797
- declare function useWindowSize(): { width: number; height: number };
4883
+ interface UseWindowSizeOptions {
4884
+ /**
4885
+ * Measure eagerly in the initializer. Client-only apps with no SSR; under SSR this reintroduces
4886
+ * the hydration mismatch #466 fixed. @default false
4887
+ */
4888
+ initializeWithValue?: boolean;
4889
+ }
4890
+
4891
+ /**
4892
+ * The current window dimensions. 0×0 on the server AND on the first client render, then measured in
4893
+ * a layout effect before paint (#466) — so hydration never mismatches.
4894
+ */
4895
+ declare function useWindowSize(options?: UseWindowSizeOptions): { width: number; height: number };
4798
4896
 
4799
4897
  /** `true` while the pointer is over the element referenced by `ref`. */
4800
4898
  declare function useHover<T extends HTMLElement = HTMLElement>(ref: React.RefObject<T | null>): boolean;
@@ -4863,4 +4961,4 @@ declare function useFilePicker(options?: UseFilePickerOptions): {
4863
4961
  getInputProps: () => React.InputHTMLAttributes<HTMLInputElement> & { ref: React.RefObject<HTMLInputElement | null> };
4864
4962
  };
4865
4963
 
4866
- 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 UseMediaQueryOptions, 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 };
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 };