twico-ui 1.42.1 → 1.44.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/CHANGELOG.md +33 -0
- package/dist/index.cjs +1510 -963
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +218 -15
- package/dist/index.d.ts +218 -15
- package/dist/index.mjs +1510 -963
- package/dist/index.mjs.map +1 -1
- package/llms.txt +42 -12
- package/package.json +10 -7
- package/styles/fonts/JetBrainsMono-Variable.woff2 +0 -0
- package/styles/fonts/PlusJakartaSans-Italic-Variable.woff2 +0 -0
- package/styles/fonts/PlusJakartaSans-Variable.woff2 +0 -0
- package/styles/twico-ui.css +95 -11
- package/styles/fonts/JetBrainsMono-Variable.ttf +0 -0
- package/styles/fonts/PlusJakartaSans-Italic-Variable.ttf +0 -0
- package/styles/fonts/PlusJakartaSans-Variable.ttf +0 -0
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
|
-
/**
|
|
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";
|
|
@@ -2582,6 +2624,20 @@ interface DatatableBatchAction<T = any> {
|
|
|
2582
2624
|
/** #322: hide the action entirely when the predicate returns true (e.g. `(_, rows) => rows.every(r => r.isGroup)`
|
|
2583
2625
|
* drops "Mark as new thread" when only group rows are selected). A static `true` always hides it. */
|
|
2584
2626
|
hidden?: boolean | ((keys: Array<string | number>, rows: T[]) => boolean);
|
|
2627
|
+
/** #479: why the action is disabled, shown as the button's tooltip — the batch mirror of the row-action
|
|
2628
|
+
* `disabledReason` (#399/#419). It may be a **predicate over the selection**, because that is where the
|
|
2629
|
+
* answer usually lives: a batch is refused for selection-dependent reasons ("that selection is 5.1 GB; the
|
|
2630
|
+
* limit is 4 GB", "at most 50 items per batch") that the label cannot carry and the user cannot infer from
|
|
2631
|
+
* a greyed-out button.
|
|
2632
|
+
*
|
|
2633
|
+
* When a reason is present the button renders `aria-disabled` rather than native `disabled`, so it stays in
|
|
2634
|
+
* the tab order and the reason is reachable by hover AND keyboard; click and Enter/Space stay blocked. With
|
|
2635
|
+
* no reason the tooltip would only repeat the label, so the button stays natively disabled and out of the
|
|
2636
|
+
* tab order — the same rule as the row-action path. There is deliberately no `hiddenReason`: a hidden
|
|
2637
|
+
* action explains nothing. */
|
|
2638
|
+
disabledReason?:
|
|
2639
|
+
| React.ReactNode
|
|
2640
|
+
| ((keys: Array<string | number>, rows: T[]) => React.ReactNode);
|
|
2585
2641
|
}
|
|
2586
2642
|
|
|
2587
2643
|
declare function Datatable<T = any>(props: DatatableProps<T>): React.JSX.Element;
|
|
@@ -2646,8 +2702,19 @@ interface CardGridSortOption {
|
|
|
2646
2702
|
interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
|
|
2647
2703
|
/** The rows: the full set in client mode, or the current page in `serverMode`. */
|
|
2648
2704
|
rows?: Row[];
|
|
2649
|
-
/**
|
|
2650
|
-
|
|
2705
|
+
/**
|
|
2706
|
+
* Render one card for a row. Required.
|
|
2707
|
+
*
|
|
2708
|
+
* #478: with `checkboxSelection`, the third argument carries that card's selection state so a
|
|
2709
|
+
* consumer can put the control inside their own layout (set `selectionPlacement="none"` to drop the
|
|
2710
|
+
* grid's overlay) without re-implementing any selection state. It is `undefined` when
|
|
2711
|
+
* `checkboxSelection` is off.
|
|
2712
|
+
*/
|
|
2713
|
+
renderCard: (
|
|
2714
|
+
row: Row,
|
|
2715
|
+
index: number,
|
|
2716
|
+
selection?: { selected: boolean; toggle: () => void },
|
|
2717
|
+
) => React.ReactNode;
|
|
2651
2718
|
/** Stable key per row: a field name or an accessor. @default "id" */
|
|
2652
2719
|
rowKey?: string | ((row: Row) => React.Key);
|
|
2653
2720
|
/** Min card width for the responsive auto-fill grid (Grid `minChildWidth`). @default "18rem" */
|
|
@@ -2660,10 +2727,17 @@ interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElem
|
|
|
2660
2727
|
pageSize?: number;
|
|
2661
2728
|
/** Options for the "per page" selector. @default [12, 24, 48, 96] */
|
|
2662
2729
|
pageSizeOptions?: number[];
|
|
2663
|
-
/**
|
|
2730
|
+
/**
|
|
2731
|
+
* Controlled 0-based page. If it points past the last page of the current result set — a refetch or
|
|
2732
|
+
* a deletion shrank `rows` — the grid clamps: it renders the last real page and reports the clamped
|
|
2733
|
+
* index through `onPageChange` (#461). Keep it controlled only if you apply that callback, otherwise
|
|
2734
|
+
* the grid and your state disagree. The clamp is skipped while `loading`, and in `serverMode`
|
|
2735
|
+
* without `rowCount`, because the total is not knowable there.
|
|
2736
|
+
*/
|
|
2664
2737
|
page?: number;
|
|
2665
2738
|
/** Initial 0-based page when uncontrolled. @default 0 */
|
|
2666
2739
|
defaultPage?: number;
|
|
2740
|
+
/** Fires on user paging AND when the grid clamps an out-of-range page back into range (#461). */
|
|
2667
2741
|
onPageChange?: (page: number) => void;
|
|
2668
2742
|
onPageSizeChange?: (pageSize: number) => void;
|
|
2669
2743
|
/** Show the "per page" selector in the footer. @default true */
|
|
@@ -2703,6 +2777,86 @@ interface CardGridProps<Row = any> extends Omit<React.HTMLAttributes<HTMLDivElem
|
|
|
2703
2777
|
emptyState?: React.ReactNode;
|
|
2704
2778
|
/** Optional heading above the grid. */
|
|
2705
2779
|
label?: React.ReactNode;
|
|
2780
|
+
|
|
2781
|
+
/**
|
|
2782
|
+
* #478: show a selection checkbox on each card and a selection toolbar when anything is picked —
|
|
2783
|
+
* the same prop name, and the same behaviour, as `Datatable`. A card grid is what you reach for
|
|
2784
|
+
* when the rows are visual (assets, previews, renders), where "pick several and do one thing to
|
|
2785
|
+
* them" is most of the point.
|
|
2786
|
+
* @default false
|
|
2787
|
+
*/
|
|
2788
|
+
checkboxSelection?: boolean;
|
|
2789
|
+
/**
|
|
2790
|
+
* Actions shown in the selection toolbar, with the same shape as `DatatableBatchAction` — including
|
|
2791
|
+
* `disabled` / `hidden` / `disabledReason` as predicates over the current selection (#479), and
|
|
2792
|
+
* `ctx.anchorEl` so an action can anchor a popover to its own button.
|
|
2793
|
+
*/
|
|
2794
|
+
batchActions?: CardGridBatchAction<Row>[];
|
|
2795
|
+
/** Fired when the selection changes — `(keys, rows)`, matching `Datatable.onRowSelectionChange`. */
|
|
2796
|
+
onRowSelectionChange?: (keys: Array<string | number>, rows: Row[]) => void;
|
|
2797
|
+
/**
|
|
2798
|
+
* Where the grid draws its checkbox over each card. `"none"` suppresses the overlay entirely for
|
|
2799
|
+
* consumers who render the control themselves from `renderCard`'s third argument.
|
|
2800
|
+
* @default "top-start"
|
|
2801
|
+
*/
|
|
2802
|
+
selectionPlacement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "none";
|
|
2803
|
+
/**
|
|
2804
|
+
* Per-card `aria-label` for the checkbox. Worth setting: unlike a table row, a card's own content is
|
|
2805
|
+
* not necessarily announced with the control, so the default `"Select item"` is the same for every
|
|
2806
|
+
* card. @default (row, index) => "Select item"
|
|
2807
|
+
*/
|
|
2808
|
+
selectionLabel?: (row: Row, index: number) => string;
|
|
2809
|
+
/** Show the page-scoped "Select all on this page" control. @default true */
|
|
2810
|
+
showSelectAll?: boolean;
|
|
2811
|
+
/**
|
|
2812
|
+
* Retain the row OBJECTS of off-page selections so `batchActions` and `onRowSelectionChange` receive
|
|
2813
|
+
* them for a selection spanning several pages. `keys` is always the authoritative cross-page
|
|
2814
|
+
* selection (as in `Datatable`); this exists because the grid only renders one page, which is the
|
|
2815
|
+
* `Map<id, row>` consumers were otherwise hand-rolling.
|
|
2816
|
+
*
|
|
2817
|
+
* Opt-in because it holds references the host may expect to be released, and **bounded**: `true`
|
|
2818
|
+
* retains up to 1000 rows, or pass a number for your own cap. Past the cap it stops retaining and
|
|
2819
|
+
* those keys simply resolve to nothing in `rows`, so re-fetch by key.
|
|
2820
|
+
* @default false
|
|
2821
|
+
*/
|
|
2822
|
+
retainSelectedRows?: boolean | number;
|
|
2823
|
+
}
|
|
2824
|
+
|
|
2825
|
+
/** Extra context handed to a CardGrid batch action's `onClick`. */
|
|
2826
|
+
interface CardGridBatchActionContext {
|
|
2827
|
+
/** The toolbar button that was clicked — anchor a popover or panel to it. */
|
|
2828
|
+
anchorEl: HTMLElement;
|
|
2829
|
+
}
|
|
2830
|
+
|
|
2831
|
+
/** A batch action shown in CardGrid's selection toolbar. Mirrors `DatatableBatchAction`. */
|
|
2832
|
+
interface CardGridBatchAction<Row = any> {
|
|
2833
|
+
/** Button label. */
|
|
2834
|
+
label: string;
|
|
2835
|
+
/** Leading icon node. */
|
|
2836
|
+
icon?: React.ReactNode;
|
|
2837
|
+
/** Handler: `(selectedKeys, selectedRows, clearSelection, ctx)`. */
|
|
2838
|
+
onClick?: (
|
|
2839
|
+
keys: Array<string | number>,
|
|
2840
|
+
rows: Row[],
|
|
2841
|
+
clearSelection: () => void,
|
|
2842
|
+
ctx: CardGridBatchActionContext,
|
|
2843
|
+
) => void;
|
|
2844
|
+
/** Render in danger color. */
|
|
2845
|
+
danger?: boolean;
|
|
2846
|
+
/** Disable the action — a static boolean, or a predicate over the current selection. */
|
|
2847
|
+
disabled?: boolean | ((keys: Array<string | number>, rows: Row[]) => boolean);
|
|
2848
|
+
/** Hide the action entirely — a static boolean, or a predicate over the current selection. */
|
|
2849
|
+
hidden?: boolean | ((keys: Array<string | number>, rows: Row[]) => boolean);
|
|
2850
|
+
/**
|
|
2851
|
+
* Why the action is disabled, shown as the button's tooltip (#479). May be a predicate over the
|
|
2852
|
+
* selection, because that is usually where the answer lives ("that selection is 5.1 GB; the limit is
|
|
2853
|
+
* 4 GB"). With a reason present the button renders `aria-disabled` rather than native `disabled`, so
|
|
2854
|
+
* it stays focusable and the reason is keyboard-reachable; without one it stays natively disabled and
|
|
2855
|
+
* out of the tab order.
|
|
2856
|
+
*/
|
|
2857
|
+
disabledReason?:
|
|
2858
|
+
| React.ReactNode
|
|
2859
|
+
| ((keys: Array<string | number>, rows: Row[]) => React.ReactNode);
|
|
2706
2860
|
}
|
|
2707
2861
|
|
|
2708
2862
|
declare function CardGrid<Row = any>(props: CardGridProps<Row>): React.JSX.Element;
|
|
@@ -3617,7 +3771,14 @@ declare function Pagination(props: PaginationProps): React.JSX.Element;
|
|
|
3617
3771
|
* outside-click / Esc. Use for rich content; for plain text use Tooltip.
|
|
3618
3772
|
*/
|
|
3619
3773
|
interface PopoverProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
3620
|
-
/** The clickable trigger element
|
|
3774
|
+
/** The clickable trigger. **Pass a single focusable control** (a `Button`/`IconButton`, or any element
|
|
3775
|
+
* that is already a button/link). A passed element is CLONED to carry `tabIndex`, `aria-expanded`,
|
|
3776
|
+
* `aria-haspopup`, `aria-controls` and the open handler, and those are only valid on a control:
|
|
3777
|
+
* `aria-expanded` is prohibited on a plain `div`'s implicit `role="generic"` (#447). A non-control
|
|
3778
|
+
* element still works - it is given `role="button"` and Enter/Space - but wrapping the real button in
|
|
3779
|
+
* a `Box`/`Stack` to overlay a badge produces TWO tab stops for one control, so put the decoration
|
|
3780
|
+
* outside the trigger instead. An explicit `role` you set is always preserved. A wrapping `Tooltip`
|
|
3781
|
+
* must go OUTSIDE this component, not inside `trigger` - see docs/overlays.md. */
|
|
3621
3782
|
trigger: React.ReactNode;
|
|
3622
3783
|
/** Optional bold title inside the panel. */
|
|
3623
3784
|
title?: React.ReactNode;
|
|
@@ -4322,7 +4483,13 @@ interface ToastApi {
|
|
|
4322
4483
|
/** Access the imperative toast API. Must be under a <ToastProvider>. */
|
|
4323
4484
|
declare function useToast(): ToastApi;
|
|
4324
4485
|
|
|
4325
|
-
|
|
4486
|
+
/**
|
|
4487
|
+
* #469: extends the viewport's props because ToastProvider collects `...viewportProps` and spreads
|
|
4488
|
+
* them onto the <ToastViewport> it renders. Declaring only children/limit/duration meant a TS
|
|
4489
|
+
* consumer got TS2322 for `className` / `style` / `aria-label` - the usual way to re-position or
|
|
4490
|
+
* restyle the toast stack - on props that have always worked at runtime.
|
|
4491
|
+
*/
|
|
4492
|
+
interface ToastProviderProps extends Omit<ToastViewportProps, "limit" | "children"> {
|
|
4326
4493
|
children?: React.ReactNode;
|
|
4327
4494
|
/** Max toasts shown at once (most recent kept). @default 4 */
|
|
4328
4495
|
limit?: number;
|
|
@@ -4623,6 +4790,10 @@ interface HeadingOwnProps {
|
|
|
4623
4790
|
size?: HeadingSize;
|
|
4624
4791
|
/** Convenience: render at the display size (`var(--text-display)`) regardless of level. @default false */
|
|
4625
4792
|
display?: boolean;
|
|
4793
|
+
/**
|
|
4794
|
+
* CSS `text-align`. Prefer the LOGICAL keywords `"start"` / `"end"` over `"left"` / `"right"` so the
|
|
4795
|
+
* text mirrors under `dir="rtl"` like the rest of the library (#473); the physical values pin it.
|
|
4796
|
+
*/
|
|
4626
4797
|
align?: React.CSSProperties["textAlign"];
|
|
4627
4798
|
/** Single-line ellipsis truncation (adds min-width:0 so it shrinks in a flex parent). @default false */
|
|
4628
4799
|
truncate?: boolean;
|
|
@@ -4649,6 +4820,10 @@ interface TextOwnProps {
|
|
|
4649
4820
|
tone?: TextTone;
|
|
4650
4821
|
/** Font-weight token suffix (e.g. "medium", "semibold", "bold"). */
|
|
4651
4822
|
weight?: "medium" | "semibold" | "bold" | string;
|
|
4823
|
+
/**
|
|
4824
|
+
* CSS `text-align`. Prefer the LOGICAL keywords `"start"` / `"end"` over `"left"` / `"right"` so the
|
|
4825
|
+
* text mirrors under `dir="rtl"` like the rest of the library (#473); the physical values pin it.
|
|
4826
|
+
*/
|
|
4652
4827
|
align?: React.CSSProperties["textAlign"];
|
|
4653
4828
|
/** Single-line ellipsis truncation (adds min-width:0 so it shrinks in a flex parent). @default false */
|
|
4654
4829
|
truncate?: boolean;
|
|
@@ -4724,6 +4899,11 @@ interface UseColorSchemeOptions {
|
|
|
4724
4899
|
element?: HTMLElement | null;
|
|
4725
4900
|
/** Disable CSS transitions during the switch so the UI re-themes instantly. @default true */
|
|
4726
4901
|
disableTransitionsOnChange?: boolean;
|
|
4902
|
+
/**
|
|
4903
|
+
* Read the stored theme eagerly in the initializer. Client-only apps with no SSR; under SSR this
|
|
4904
|
+
* reintroduces the hydration mismatch #466 fixed. @default false
|
|
4905
|
+
*/
|
|
4906
|
+
initializeWithValue?: boolean;
|
|
4727
4907
|
}
|
|
4728
4908
|
|
|
4729
4909
|
/** Light/dark theme state synced to `<html>` and persisted to localStorage. */
|
|
@@ -4764,10 +4944,22 @@ declare function useKeyPress(
|
|
|
4764
4944
|
options?: UseKeyPressOptions
|
|
4765
4945
|
): void;
|
|
4766
4946
|
|
|
4767
|
-
|
|
4947
|
+
interface UseLocalStorageOptions {
|
|
4948
|
+
/**
|
|
4949
|
+
* Read storage eagerly in the initializer. Client-only apps with no SSR; under SSR this
|
|
4950
|
+
* reintroduces the hydration mismatch #466 fixed. @default false
|
|
4951
|
+
*/
|
|
4952
|
+
initializeWithValue?: boolean;
|
|
4953
|
+
}
|
|
4954
|
+
|
|
4955
|
+
/**
|
|
4956
|
+
* State persisted to localStorage (JSON-serialized), SSR-safe: returns `initialValue` on the server
|
|
4957
|
+
* AND on the first client render, then reads storage in a layout effect before paint (#466).
|
|
4958
|
+
*/
|
|
4768
4959
|
declare function useLocalStorage<T>(
|
|
4769
4960
|
key: string,
|
|
4770
|
-
initialValue: T
|
|
4961
|
+
initialValue: T,
|
|
4962
|
+
options?: UseLocalStorageOptions
|
|
4771
4963
|
): [T, (value: T | ((prev: T) => T)) => void];
|
|
4772
4964
|
|
|
4773
4965
|
/** Copy text to the clipboard with a `copied` flag that auto-resets. Uses the async Clipboard API in a
|
|
@@ -4793,8 +4985,19 @@ declare function useInterval(callback: () => void, delay: number | null): void;
|
|
|
4793
4985
|
/** Run `callback` once after `delay` ms; pass `delay = null` to cancel. */
|
|
4794
4986
|
declare function useTimeout(callback: () => void, delay: number | null): void;
|
|
4795
4987
|
|
|
4796
|
-
|
|
4797
|
-
|
|
4988
|
+
interface UseWindowSizeOptions {
|
|
4989
|
+
/**
|
|
4990
|
+
* Measure eagerly in the initializer. Client-only apps with no SSR; under SSR this reintroduces
|
|
4991
|
+
* the hydration mismatch #466 fixed. @default false
|
|
4992
|
+
*/
|
|
4993
|
+
initializeWithValue?: boolean;
|
|
4994
|
+
}
|
|
4995
|
+
|
|
4996
|
+
/**
|
|
4997
|
+
* The current window dimensions. 0×0 on the server AND on the first client render, then measured in
|
|
4998
|
+
* a layout effect before paint (#466) — so hydration never mismatches.
|
|
4999
|
+
*/
|
|
5000
|
+
declare function useWindowSize(options?: UseWindowSizeOptions): { width: number; height: number };
|
|
4798
5001
|
|
|
4799
5002
|
/** `true` while the pointer is over the element referenced by `ref`. */
|
|
4800
5003
|
declare function useHover<T extends HTMLElement = HTMLElement>(ref: React.RefObject<T | null>): boolean;
|
|
@@ -4863,4 +5066,4 @@ declare function useFilePicker(options?: UseFilePickerOptions): {
|
|
|
4863
5066
|
getInputProps: () => React.InputHTMLAttributes<HTMLInputElement> & { ref: React.RefObject<HTMLInputElement | null> };
|
|
4864
5067
|
};
|
|
4865
5068
|
|
|
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 };
|
|
5069
|
+
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 };
|