@jirawatpyk/aura-react 4.15.0 → 4.16.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/README.md +11 -3
- package/dist/aura.bundle.js +41 -18
- package/dist/cjs/index.cjs +41 -18
- package/dist/esm/AppShell.js +9 -9
- package/dist/esm/Button.js +12 -3
- package/dist/esm/DataTable.js +16 -5
- package/dist/esm/Skeleton.js +4 -1
- package/dist/index.d.ts +505 -497
- package/dist/styles.css +51 -1
- package/package.json +4 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,39 +1,45 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
2
|
|
|
3
3
|
/** Button look. */
|
|
4
|
-
export type ButtonVariant = "primary" | "secondary" | "creative" | "danger" | "danger-secondary";
|
|
4
|
+
export type ButtonVariant = "primary" | "secondary" | "ghost" | "creative" | "danger" | "danger-secondary";
|
|
5
|
+
/** `md` 44px (default) · `sm` 32px for toolbars, table rows and card footers (still a 44px hit area on touch screens). */
|
|
6
|
+
export type ButtonSize = "sm" | "md";
|
|
5
7
|
/** AURA pill button. Enterprise (`primary`, `secondary`) for product UI; `creative` for marketing moments only. */
|
|
6
8
|
export interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
7
|
-
/** Visual variant. Default `primary`. `danger` (filled) and `danger-secondary` (outline) are for irreversible or destructive actions only — typically the confirm button of a `Dialog role="alertdialog"`. */
|
|
8
|
-
variant?: ButtonVariant;
|
|
9
|
+
/** Visual variant. Default `primary`. `ghost` has no fill or edge until hover (toolbars, rows, secondary actions beside a primary). `danger` (filled) and `danger-secondary` (outline) are for irreversible or destructive actions only — typically the confirm button of a `Dialog role="alertdialog"`. */
|
|
10
|
+
variant?: ButtonVariant | undefined;
|
|
9
11
|
/** Label text — short, Title Case English or Thai. */
|
|
10
12
|
children: React$1.ReactNode;
|
|
11
13
|
/** Leading icon name (see `IconName`). Hidden while loading. */
|
|
12
|
-
icon?: IconInput;
|
|
14
|
+
icon?: IconInput | undefined;
|
|
13
15
|
/** Trailing icon name, e.g. `arrow-right` for forward actions. */
|
|
14
|
-
iconRight?: IconInput;
|
|
16
|
+
iconRight?: IconInput | undefined;
|
|
15
17
|
/** Shows a spinner in place of the leading icon, sets aria-busy and swallows clicks. Keeps the label and width. */
|
|
16
|
-
loading?: boolean;
|
|
18
|
+
loading?: boolean | undefined;
|
|
17
19
|
/** Fills its container and lets a long label wrap onto more lines (at least 44px tall) — phones, Thai and Swedish labels. */
|
|
18
|
-
fullWidth?: boolean;
|
|
20
|
+
fullWidth?: boolean | undefined;
|
|
21
|
+
/** `sm` is 32px with tighter padding, for toolbars, table rows and card footers. Default `md` (44px). */
|
|
22
|
+
size?: ButtonSize | undefined;
|
|
19
23
|
}
|
|
20
24
|
/** A link that looks like a Button: give `Button` an `href` and it renders an `<a>` (navigation, not actions). */
|
|
21
25
|
export interface ButtonLinkProps extends Omit<React$1.AnchorHTMLAttributes<HTMLAnchorElement>, "children"> {
|
|
22
26
|
/** Where the link goes. With `href`, Button renders an `<a>` and its ref is the `<a>`. */
|
|
23
27
|
href: string;
|
|
24
|
-
/** Visual variant. Default `primary`. `danger` (filled) and `danger-secondary` (outline) are for irreversible or destructive actions only — typically the confirm button of a `Dialog role="alertdialog"`. */
|
|
25
|
-
variant?: ButtonVariant;
|
|
28
|
+
/** Visual variant. Default `primary`. `ghost` has no fill or edge until hover (toolbars, rows, secondary actions beside a primary). `danger` (filled) and `danger-secondary` (outline) are for irreversible or destructive actions only — typically the confirm button of a `Dialog role="alertdialog"`. */
|
|
29
|
+
variant?: ButtonVariant | undefined;
|
|
26
30
|
/** Label text — say where it goes ("View Orders"), not "Click here". */
|
|
27
31
|
children: React$1.ReactNode;
|
|
28
|
-
icon?: IconInput;
|
|
32
|
+
icon?: IconInput | undefined;
|
|
29
33
|
/** Trailing icon, e.g. `arrow-right`, or `external-link` with `target="_blank"`. */
|
|
30
|
-
iconRight?: IconInput;
|
|
34
|
+
iconRight?: IconInput | undefined;
|
|
31
35
|
/** Looks unavailable and can't be followed: no href, `aria-disabled`, out of the Tab order. */
|
|
32
|
-
disabled?: boolean;
|
|
36
|
+
disabled?: boolean | undefined;
|
|
33
37
|
/** Fills its container and lets a long label wrap (at least 44px tall). */
|
|
34
|
-
fullWidth?: boolean;
|
|
38
|
+
fullWidth?: boolean | undefined;
|
|
39
|
+
/** `sm` is 32px with tighter padding. Default `md` (44px). */
|
|
40
|
+
size?: ButtonSize | undefined;
|
|
35
41
|
/** A router's link to render instead of `<a>`, e.g. `Link` from `next/link` (client-side navigation). It gets `href`, `className`, the children and the ref. */
|
|
36
|
-
linkComponent?: React$1.ElementType;
|
|
42
|
+
linkComponent?: React$1.ElementType | undefined;
|
|
37
43
|
}
|
|
38
44
|
export interface DataTableColumn {
|
|
39
45
|
/** Key into each row object. */
|
|
@@ -41,34 +47,34 @@ export interface DataTableColumn {
|
|
|
41
47
|
/** Header label (source style: UPPERCASE). */
|
|
42
48
|
label: string;
|
|
43
49
|
/** Fixed width in px; the last column usually takes the rest. */
|
|
44
|
-
width?: number;
|
|
50
|
+
width?: number | undefined;
|
|
45
51
|
/** Render the cell in the mono face (IDs). */
|
|
46
|
-
mono?: boolean;
|
|
52
|
+
mono?: boolean | undefined;
|
|
47
53
|
/** Render the value as a StatusPill (tone picked from the word). */
|
|
48
|
-
pill?: boolean;
|
|
54
|
+
pill?: boolean | undefined;
|
|
49
55
|
/** Override the tone for specific values, e.g. `{ 'QA': 'progress' }`. */
|
|
50
|
-
tones?: Record<string, StatusTone
|
|
56
|
+
tones?: Record<string, StatusTone> | undefined;
|
|
51
57
|
/** Header becomes a button cycling asc → desc → unsorted. */
|
|
52
|
-
sortable?: boolean;
|
|
58
|
+
sortable?: boolean | undefined;
|
|
53
59
|
/** Value to sort by, when not the cell value (dates, amounts). */
|
|
54
|
-
sortValue?: (row: Record<string, any>) => string | number | null;
|
|
60
|
+
sortValue?: ((row: Record<string, any>) => string | number | null) | undefined;
|
|
55
61
|
/** Custom cell content. */
|
|
56
|
-
render?: (row: Record<string, any>) => React$1.ReactNode;
|
|
62
|
+
render?: ((row: Record<string, any>) => React$1.ReactNode) | undefined;
|
|
57
63
|
/** Set false to keep a sized column fixed when the table is `resizable`. */
|
|
58
|
-
resizable?: boolean;
|
|
64
|
+
resizable?: boolean | undefined;
|
|
59
65
|
/** Resize limits in px. Defaults 64 / 480. For the flexible column, minWidth defaults to 160. */
|
|
60
|
-
minWidth?: number;
|
|
61
|
-
maxWidth?: number;
|
|
66
|
+
minWidth?: number | undefined;
|
|
67
|
+
maxWidth?: number | undefined;
|
|
62
68
|
/** Start pinned to the left (needs a width). */
|
|
63
|
-
pinned?: boolean;
|
|
69
|
+
pinned?: boolean | undefined;
|
|
64
70
|
/** Start hidden (show it from the columns button). */
|
|
65
|
-
hidden?: boolean;
|
|
71
|
+
hidden?: boolean | undefined;
|
|
66
72
|
/** Hide this column when the table is narrower than this (px, or a breakpoint name). For tablets: keep ID, name, date and status; drop the rest below `lg`. Not applied to stacked cards. */
|
|
67
|
-
hideBelow?: number | "sm" | "md" | "lg" | "xl";
|
|
73
|
+
hideBelow?: number | "sm" | "md" | "lg" | "xl" | undefined;
|
|
68
74
|
/** Row actions (a DropdownMenu or IconButton). In stacked cards it sits top-right instead of in the field list. Give it an empty label. */
|
|
69
|
-
actions?: boolean;
|
|
75
|
+
actions?: boolean | undefined;
|
|
70
76
|
/** `end` right-aligns header and cells (amounts, counts) and uses tabular figures. Default `start`. */
|
|
71
|
-
align?: "start" | "end";
|
|
77
|
+
align?: "start" | "end" | undefined;
|
|
72
78
|
}
|
|
73
79
|
export interface DataTableSort {
|
|
74
80
|
key: string;
|
|
@@ -76,84 +82,84 @@ export interface DataTableSort {
|
|
|
76
82
|
}
|
|
77
83
|
export interface DataTableEmpty {
|
|
78
84
|
/** Default `inbox`; use `search` for "no matches". */
|
|
79
|
-
icon?: IconInput;
|
|
85
|
+
icon?: IconInput | undefined;
|
|
80
86
|
/** Default "Nothing here yet". */
|
|
81
|
-
title?: string;
|
|
82
|
-
description?: string;
|
|
87
|
+
title?: string | undefined;
|
|
88
|
+
description?: string | undefined;
|
|
83
89
|
/** One action, usually a secondary Button. */
|
|
84
|
-
action?: React$1.ReactNode;
|
|
90
|
+
action?: React$1.ReactNode | undefined;
|
|
85
91
|
}
|
|
86
92
|
/** Enterprise data table: 48px rows, hairline dividers, mono header band. */
|
|
87
93
|
export interface DataTableProps {
|
|
88
94
|
/** Defaults to ID · NAME · STATUS · OWNER (96 / 160 / 112 / auto px). */
|
|
89
|
-
columns?: DataTableColumn[];
|
|
95
|
+
columns?: DataTableColumn[] | undefined;
|
|
90
96
|
rows: Array<Record<string, React$1.ReactNode>>;
|
|
91
97
|
/** Column key giving each row a unique React key. Default: the first column's key. */
|
|
92
|
-
rowKey?: string;
|
|
98
|
+
rowKey?: string | undefined;
|
|
93
99
|
/** Accessible name for the table. */
|
|
94
|
-
label?: string;
|
|
100
|
+
label?: string | undefined;
|
|
95
101
|
/** Controlled sort; pair with onSortChange. */
|
|
96
|
-
sort?: DataTableSort | null;
|
|
102
|
+
sort?: DataTableSort | null | undefined;
|
|
97
103
|
/** Initial sort when uncontrolled. */
|
|
98
|
-
defaultSort?: DataTableSort | null;
|
|
99
|
-
onSortChange?: (sort: DataTableSort | null) => void;
|
|
104
|
+
defaultSort?: DataTableSort | null | undefined;
|
|
105
|
+
onSortChange?: ((sort: DataTableSort | null) => void) | undefined;
|
|
100
106
|
/** Adds a checkbox column. */
|
|
101
|
-
selectable?: boolean;
|
|
107
|
+
selectable?: boolean | undefined;
|
|
102
108
|
/** Controlled selection (row keys); pair with onSelectionChange. */
|
|
103
|
-
selected?: Array<string | number
|
|
109
|
+
selected?: Array<string | number> | undefined;
|
|
104
110
|
/** Initial selection when uncontrolled. */
|
|
105
|
-
defaultSelected?: Array<string | number
|
|
106
|
-
onSelectionChange?: (keys: Array<string | number>) => void;
|
|
111
|
+
defaultSelected?: Array<string | number> | undefined;
|
|
112
|
+
onSelectionChange?: ((keys: Array<string | number>) => void) | undefined;
|
|
107
113
|
/** Shown when rows is empty. */
|
|
108
|
-
empty?: DataTableEmpty;
|
|
114
|
+
empty?: DataTableEmpty | undefined;
|
|
109
115
|
/** Rows per page; omit for no pagination. */
|
|
110
|
-
pageSize?: number;
|
|
116
|
+
pageSize?: number | undefined;
|
|
111
117
|
/** Controlled page (1-based); pair with onPageChange. */
|
|
112
|
-
page?: number;
|
|
118
|
+
page?: number | undefined;
|
|
113
119
|
/** Initial page when uncontrolled. Default 1. */
|
|
114
|
-
defaultPage?: number;
|
|
115
|
-
onPageChange?: (page: number) => void;
|
|
120
|
+
defaultPage?: number | undefined;
|
|
121
|
+
onPageChange?: ((page: number) => void) | undefined;
|
|
116
122
|
/** Adds drag/keyboard resize handles to every column that has a width. */
|
|
117
|
-
resizable?: boolean;
|
|
118
|
-
onColumnResize?: (key: string, width: number) => void;
|
|
123
|
+
resizable?: boolean | undefined;
|
|
124
|
+
onColumnResize?: ((key: string, width: number) => void) | undefined;
|
|
119
125
|
/** Shows skeleton rows and disables sorting, select-all and paging. With `manual` and rows already shown, the rows stay (dimmed, with a progress bar) while the next page loads. */
|
|
120
|
-
loading?: boolean;
|
|
126
|
+
loading?: boolean | undefined;
|
|
121
127
|
/** Server mode: `rows` is already the current page, sorted by the server. The table doesn't sort or slice; it reports
|
|
122
128
|
* sort and page through onSortChange / onPageChange (or getPageHref links). Pair with `totalRows` and `pageSize`. */
|
|
123
|
-
manual?: boolean;
|
|
129
|
+
manual?: boolean | undefined;
|
|
124
130
|
/** manual: rows across all pages (drives the page count, "1–25 of 312" and aria-rowcount). */
|
|
125
|
-
totalRows?: number;
|
|
131
|
+
totalRows?: number | undefined;
|
|
126
132
|
/** Makes each row a link: the first column's content renders as the provider's linkComponent (or `<a>`), and a click
|
|
127
133
|
* or Enter anywhere on the row follows it. Ctrl/⌘-click opens a new tab as usual. */
|
|
128
|
-
getRowHref?: (row: Record<string, any>) => string;
|
|
134
|
+
getRowHref?: ((row: Record<string, any>) => string) | undefined;
|
|
129
135
|
/** Pager arrows become links to these URLs (search-param paging). Without onPageChange the link navigates. */
|
|
130
|
-
getPageHref?: (page: number) => string;
|
|
136
|
+
getPageHref?: ((page: number) => string) | undefined;
|
|
131
137
|
/** Router link for getRowHref / getPageHref. Default: AuraProvider's linkComponent, else `<a>`. */
|
|
132
|
-
linkComponent?: React$1.ElementType;
|
|
138
|
+
linkComponent?: React$1.ElementType | undefined;
|
|
133
139
|
/** Skeleton row count when there is no pageSize. Default 5. */
|
|
134
|
-
skeletonRows?: number;
|
|
140
|
+
skeletonRows?: number | undefined;
|
|
135
141
|
/** Called on row click or Enter. */
|
|
136
|
-
onRowActivate?: (row: Record<string, any>) => void;
|
|
142
|
+
onRowActivate?: ((row: Record<string, any>) => void) | undefined;
|
|
137
143
|
/** Fixed height in px: sticky header, and only the rows in view are rendered. */
|
|
138
|
-
height?: number;
|
|
144
|
+
height?: number | undefined;
|
|
139
145
|
/** Column menu on every header, drag-to-reorder, and the show/hide columns button. */
|
|
140
|
-
columnControls?: boolean;
|
|
146
|
+
columnControls?: boolean | undefined;
|
|
141
147
|
/** Set false to keep column controls but turn off reordering. */
|
|
142
|
-
reorderable?: boolean;
|
|
148
|
+
reorderable?: boolean | undefined;
|
|
143
149
|
/** Controlled column order (keys); pair with onColumnOrderChange. */
|
|
144
|
-
columnOrder?: string[];
|
|
145
|
-
onColumnOrderChange?: (keys: string[]) => void;
|
|
150
|
+
columnOrder?: string[] | undefined;
|
|
151
|
+
onColumnOrderChange?: ((keys: string[]) => void) | undefined;
|
|
146
152
|
/** Controlled hidden columns (keys); pair with onHiddenColumnsChange. */
|
|
147
|
-
hiddenColumns?: string[];
|
|
148
|
-
onHiddenColumnsChange?: (keys: string[]) => void;
|
|
153
|
+
hiddenColumns?: string[] | undefined;
|
|
154
|
+
onHiddenColumnsChange?: ((keys: string[]) => void) | undefined;
|
|
149
155
|
/** Controlled pinned columns (keys); pair with onPinnedColumnsChange. */
|
|
150
|
-
pinnedColumns?: string[];
|
|
151
|
-
onPinnedColumnsChange?: (keys: string[]) => void;
|
|
156
|
+
pinnedColumns?: string[] | undefined;
|
|
157
|
+
onPinnedColumnsChange?: ((keys: string[]) => void) | undefined;
|
|
152
158
|
/** `compact` = 40px rows (48px on touch screens). Default: the surrounding density. */
|
|
153
|
-
density?: "comfortable" | "compact";
|
|
159
|
+
density?: "comfortable" | "compact" | undefined;
|
|
154
160
|
/** Container width in px below which rows render as stacked cards (phones). Try 640. Measured with ResizeObserver, so it follows the container, not the window. */
|
|
155
|
-
stackBelow?: number;
|
|
156
|
-
className?: string;
|
|
161
|
+
stackBelow?: number | undefined;
|
|
162
|
+
className?: string | undefined;
|
|
157
163
|
}
|
|
158
164
|
/** An AURA icon name, or any icon element (e.g. `<Building />` from lucide-react). AURA sizes it and hides it from screen readers. */
|
|
159
165
|
export type IconInput = IconName | React$1.ReactElement;
|
|
@@ -163,34 +169,34 @@ export interface IconProps {
|
|
|
163
169
|
/** A name from the set, or an icon element of your own (sized and styled the same way). */
|
|
164
170
|
name: IconInput;
|
|
165
171
|
/** `sm` 16 (default) · `md` 20 · `lg` 24, or a px number. */
|
|
166
|
-
size?: "sm" | "md" | "lg" | number;
|
|
172
|
+
size?: "sm" | "md" | "lg" | number | undefined;
|
|
167
173
|
/** Accessible name. Omit for decorative icons next to a text label (then aria-hidden). */
|
|
168
|
-
label?: string;
|
|
174
|
+
label?: string | undefined;
|
|
169
175
|
/** Default 2 (Lucide's). */
|
|
170
|
-
strokeWidth?: number;
|
|
171
|
-
className?: string;
|
|
176
|
+
strokeWidth?: number | undefined;
|
|
177
|
+
className?: string | undefined;
|
|
172
178
|
}
|
|
173
179
|
/** Creative surface with the AURA mesh and/or grain texture. Light in every theme; content in aura-on-texture. */
|
|
174
180
|
export interface SurfaceProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
175
181
|
/** Default `mesh`. */
|
|
176
|
-
texture?: "mesh" | "grain" | "mesh-grain";
|
|
182
|
+
texture?: "mesh" | "grain" | "mesh-grain" | undefined;
|
|
177
183
|
/** Element to render. Default `div`. */
|
|
178
|
-
as?: keyof React$1.JSX.IntrinsicElements;
|
|
179
|
-
children?: React$1.ReactNode;
|
|
184
|
+
as?: keyof React$1.JSX.IntrinsicElements | undefined;
|
|
185
|
+
children?: React$1.ReactNode | undefined;
|
|
180
186
|
}
|
|
181
187
|
/** Sets the language of built-in labels (pagination, close buttons, empty states…) and the default date display for everything inside. */
|
|
182
188
|
export interface AuraProviderProps {
|
|
183
189
|
/** Built-in labels and date display. `sv` = Swedish labels, `sv-SE` dates, Monday weeks and the Gregorian calendar. Without a provider everything is English: labels, `en-GB` dates, Gregorian years. */
|
|
184
|
-
locale?: "th" | "en" | "sv";
|
|
190
|
+
locale?: "th" | "en" | "sv" | undefined;
|
|
185
191
|
/** Default calendar for DatePicker / DateRangePicker / Calendar / formatDate callers that read it. Unset: `buddhist` (พ.ศ.) for `th`, `gregory` for `en` and `sv`. */
|
|
186
|
-
calendar?: "buddhist" | "gregory";
|
|
192
|
+
calendar?: "buddhist" | "gregory" | undefined;
|
|
187
193
|
/** Override individual strings. */
|
|
188
|
-
strings?: Partial<Record<string, string | ((...args: any[]) => string)
|
|
194
|
+
strings?: Partial<Record<string, string | ((...args: any[]) => string)>> | undefined;
|
|
189
195
|
/** `compact`: 36px fields and buttons, 40px table rows — dense admin screens. Touch screens keep 44px. Default: comfortable (or an ancestor's `data-density`). */
|
|
190
|
-
density?: "comfortable" | "compact";
|
|
196
|
+
density?: "comfortable" | "compact" | undefined;
|
|
191
197
|
/** Your router's link (e.g. `Link` from `next/link`), used by every AURA component that renders a link: Button with `href`, SideNav, Breadcrumb, Stat, Pagination, DataTable row links. It gets `href`, `className`, `aria-current`, the children and the ref. A component's own `linkComponent` wins. */
|
|
192
|
-
linkComponent?: React$1.ElementType;
|
|
193
|
-
children?: React$1.ReactNode;
|
|
198
|
+
linkComponent?: React$1.ElementType | undefined;
|
|
199
|
+
children?: React$1.ReactNode | undefined;
|
|
194
200
|
}
|
|
195
201
|
export type StatusTone = "neutral" | "progress" | "ready" | "blocked";
|
|
196
202
|
/** Status pill: tone fill + icon + the status word. Tone comes from the word unless given. */
|
|
@@ -198,49 +204,49 @@ export interface StatusPillProps {
|
|
|
198
204
|
/** The status word shown, e.g. "In Progress". */
|
|
199
205
|
children: React$1.ReactNode;
|
|
200
206
|
/** Force a tone. Default: matched from the word (Ready/Done → ready, In Progress/In Review → progress, Blocked/Failed → blocked, anything else → neutral). */
|
|
201
|
-
tone?: StatusTone;
|
|
202
|
-
className?: string;
|
|
207
|
+
tone?: StatusTone | undefined;
|
|
208
|
+
className?: string | undefined;
|
|
203
209
|
}
|
|
204
210
|
/** 16px checkbox with 4px corners; ink when checked, a dash when indeterminate. */
|
|
205
211
|
export interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "onChange" | "type" | "checked" | "defaultChecked"> {
|
|
206
212
|
/** Controlled state; pair with onChange. Or use defaultChecked. */
|
|
207
|
-
checked?: boolean;
|
|
208
|
-
defaultChecked?: boolean;
|
|
209
|
-
indeterminate?: boolean;
|
|
213
|
+
checked?: boolean | undefined;
|
|
214
|
+
defaultChecked?: boolean | undefined;
|
|
215
|
+
indeterminate?: boolean | undefined;
|
|
210
216
|
/** Accessible name for a bare box (tables). Not needed when children give a visible label. */
|
|
211
|
-
label?: string;
|
|
217
|
+
label?: string | undefined;
|
|
212
218
|
/** Visible label beside the box (form use). */
|
|
213
|
-
children?: React$1.ReactNode;
|
|
219
|
+
children?: React$1.ReactNode | undefined;
|
|
214
220
|
/** Second line under the visible label (needs an id to be linked). */
|
|
215
|
-
description?: React$1.ReactNode;
|
|
216
|
-
onChange?: (checked: boolean) => void;
|
|
217
|
-
disabled?: boolean;
|
|
218
|
-
tabIndex?: number;
|
|
219
|
-
className?: string;
|
|
221
|
+
description?: React$1.ReactNode | undefined;
|
|
222
|
+
onChange?: ((checked: boolean) => void) | undefined;
|
|
223
|
+
disabled?: boolean | undefined;
|
|
224
|
+
tabIndex?: number | undefined;
|
|
225
|
+
className?: string | undefined;
|
|
220
226
|
}
|
|
221
227
|
/** 32px round button holding one icon. */
|
|
222
228
|
export interface IconButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
223
229
|
icon: IconInput;
|
|
224
230
|
/** `danger` colours the icon and hover for a destructive action (Delete, Revoke). */
|
|
225
|
-
tone?: "neutral" | "danger";
|
|
231
|
+
tone?: "neutral" | "danger" | undefined;
|
|
226
232
|
/** Accessible name and tooltip (required). */
|
|
227
233
|
label: string;
|
|
228
234
|
/** Icon size. Default `sm` (16). */
|
|
229
|
-
size?: "sm" | "md";
|
|
235
|
+
size?: "sm" | "md" | undefined;
|
|
230
236
|
}
|
|
231
237
|
export interface MenuItem {
|
|
232
|
-
label?: string;
|
|
233
|
-
icon?: IconInput;
|
|
238
|
+
label?: string | undefined;
|
|
239
|
+
icon?: IconInput | undefined;
|
|
234
240
|
/** Present = a checkable item (menuitemcheckbox). */
|
|
235
|
-
checked?: boolean;
|
|
236
|
-
disabled?: boolean;
|
|
241
|
+
checked?: boolean | undefined;
|
|
242
|
+
disabled?: boolean | undefined;
|
|
237
243
|
/** Keep the menu open after choosing (checkbox lists). */
|
|
238
|
-
keepOpen?: boolean;
|
|
244
|
+
keepOpen?: boolean | undefined;
|
|
239
245
|
/** Short right-aligned hint, e.g. a shortcut. */
|
|
240
|
-
hint?: string;
|
|
246
|
+
hint?: string | undefined;
|
|
241
247
|
/** A divider instead of an item. */
|
|
242
|
-
separator?: boolean;
|
|
243
|
-
onSelect?: () => void;
|
|
248
|
+
separator?: boolean | undefined;
|
|
249
|
+
onSelect?: (() => void) | undefined;
|
|
244
250
|
}
|
|
245
251
|
/** Popover list anchored to an element, rendered in a portal. */
|
|
246
252
|
export interface MenuProps {
|
|
@@ -252,30 +258,30 @@ export interface MenuProps {
|
|
|
252
258
|
/** Called on choose, Escape, Tab or outside click. `restoreFocus` is true for keyboard closes. */
|
|
253
259
|
onClose: (restoreFocus: boolean) => void;
|
|
254
260
|
/** Focus the first item on open. Default true; turn off only for static demos. */
|
|
255
|
-
autoFocus?: boolean;
|
|
261
|
+
autoFocus?: boolean | undefined;
|
|
256
262
|
}
|
|
257
263
|
export interface FieldProps {
|
|
258
264
|
/** Visible label; also the accessible name. */
|
|
259
265
|
label: string;
|
|
260
266
|
/** Helper line under the field (caption, fg-secondary). */
|
|
261
|
-
hint?: React$1.ReactNode;
|
|
267
|
+
hint?: React$1.ReactNode | undefined;
|
|
262
268
|
/** Replaces the hint, turns the edge fg-danger and sets aria-invalid. Write it as the fix. */
|
|
263
|
-
error?: React$1.ReactNode;
|
|
269
|
+
error?: React$1.ReactNode | undefined;
|
|
264
270
|
/** Adds a red asterisk and the native required attribute. */
|
|
265
|
-
required?: boolean;
|
|
271
|
+
required?: boolean | undefined;
|
|
266
272
|
/** Adds "(optional)" after the label. */
|
|
267
|
-
optional?: boolean;
|
|
273
|
+
optional?: boolean | undefined;
|
|
268
274
|
}
|
|
269
275
|
export interface TextFieldProps extends FieldProps, Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "required"> {
|
|
270
276
|
/** Leading icon inside the field. */
|
|
271
|
-
icon?: IconInput;
|
|
277
|
+
icon?: IconInput | undefined;
|
|
272
278
|
/** Trailing unit, e.g. "THB". */
|
|
273
|
-
suffix?: React$1.ReactNode;
|
|
279
|
+
suffix?: React$1.ReactNode | undefined;
|
|
274
280
|
}
|
|
275
281
|
/** A password input with a show/hide button. All TextField props; `ref` reaches the input (react-hook-form `register`). */
|
|
276
282
|
export interface PasswordFieldProps extends Omit<TextFieldProps, "type" | "suffix"> {
|
|
277
283
|
/** Set false to hide the show/hide button. Default true. */
|
|
278
|
-
toggle?: boolean;
|
|
284
|
+
toggle?: boolean | undefined;
|
|
279
285
|
}
|
|
280
286
|
/** One entry of a FormErrorSummary: the field's `id` (or `name`) and what to fix. */
|
|
281
287
|
export interface FormErrorItem {
|
|
@@ -286,16 +292,16 @@ export interface FormErrorItem {
|
|
|
286
292
|
export interface FormErrorSummaryProps {
|
|
287
293
|
/** A list, or react-hook-form's `formState.errors` as is (`{ name: { message } }`). Empty → renders nothing. */
|
|
288
294
|
errors: FormErrorItem[] | Record<string, {
|
|
289
|
-
message?: React$1.ReactNode;
|
|
295
|
+
message?: React$1.ReactNode | undefined;
|
|
290
296
|
} | undefined>;
|
|
291
297
|
/** Default "Fix N fields to continue" in the provider's language. */
|
|
292
|
-
title?: React$1.ReactNode;
|
|
298
|
+
title?: React$1.ReactNode | undefined;
|
|
293
299
|
/** Called with the field when a link is followed, e.g. react-hook-form's `setFocus`. Default: focus the element whose id (or name) is the field. */
|
|
294
|
-
onSelect?: (field: string) => void;
|
|
300
|
+
onSelect?: ((field: string) => void) | undefined;
|
|
295
301
|
/** Change it on every submit (e.g. `formState.submitCount`) to move focus to the summary again. It also takes focus when errors first appear. */
|
|
296
302
|
focusKey?: unknown;
|
|
297
|
-
className?: string;
|
|
298
|
-
id?: string;
|
|
303
|
+
className?: string | undefined;
|
|
304
|
+
id?: string | undefined;
|
|
299
305
|
}
|
|
300
306
|
/** An applied filter, shown as a removable chip. */
|
|
301
307
|
export interface ActiveFilter {
|
|
@@ -306,26 +312,26 @@ export interface ActiveFilter {
|
|
|
306
312
|
/** The row above a table: search, filter controls, applied-filter chips, result count and actions. Wraps below md. */
|
|
307
313
|
export interface FilterBarProps {
|
|
308
314
|
/** Search text (controlled). Omit `onSearchChange` to hide the search field. */
|
|
309
|
-
search?: string;
|
|
315
|
+
search?: string | undefined;
|
|
310
316
|
/** Called after typing pauses (`searchDelay`), and at once on Enter or clear — ready to write to the URL. */
|
|
311
|
-
onSearchChange?: (value: string) => void;
|
|
317
|
+
onSearchChange?: ((value: string) => void) | undefined;
|
|
312
318
|
/** ms to wait after the last keystroke. Default 300. */
|
|
313
|
-
searchDelay?: number;
|
|
314
|
-
searchLabel?: string;
|
|
315
|
-
searchPlaceholder?: string;
|
|
319
|
+
searchDelay?: number | undefined;
|
|
320
|
+
searchLabel?: string | undefined;
|
|
321
|
+
searchPlaceholder?: string | undefined;
|
|
316
322
|
/** Filter controls beside the search: Select, SegmentedControl, a Popover of options… */
|
|
317
|
-
children?: React$1.ReactNode;
|
|
323
|
+
children?: React$1.ReactNode | undefined;
|
|
318
324
|
/** Applied filters as chips, each with its own remove button. */
|
|
319
|
-
filters?: ActiveFilter[];
|
|
325
|
+
filters?: ActiveFilter[] | undefined;
|
|
320
326
|
/** Adds "Clear all" while any filter or search is set. */
|
|
321
|
-
onClearAll?: () => void;
|
|
327
|
+
onClearAll?: (() => void) | undefined;
|
|
322
328
|
/** A number ("312 results", announced politely) or your own node. */
|
|
323
|
-
resultCount?: number | React$1.ReactNode;
|
|
329
|
+
resultCount?: number | React$1.ReactNode | undefined;
|
|
324
330
|
/** Trailing slot: export, a New button… */
|
|
325
|
-
actions?: React$1.ReactNode;
|
|
331
|
+
actions?: React$1.ReactNode | undefined;
|
|
326
332
|
/** Accessible name of the region. Default "Filters". */
|
|
327
|
-
label?: string;
|
|
328
|
-
className?: string;
|
|
333
|
+
label?: string | undefined;
|
|
334
|
+
className?: string | undefined;
|
|
329
335
|
}
|
|
330
336
|
/** One command in the palette. */
|
|
331
337
|
export interface CommandItem {
|
|
@@ -333,16 +339,16 @@ export interface CommandItem {
|
|
|
333
339
|
/** Text shown and searched. */
|
|
334
340
|
label: string;
|
|
335
341
|
/** Items with the same group are listed together under its heading, in first-seen order. */
|
|
336
|
-
group?: string;
|
|
337
|
-
icon?: IconInput;
|
|
338
|
-
description?: string;
|
|
342
|
+
group?: string | undefined;
|
|
343
|
+
icon?: IconInput | undefined;
|
|
344
|
+
description?: string | undefined;
|
|
339
345
|
/** Extra words that find it ("invoice" → Billing). */
|
|
340
|
-
keywords?: string[];
|
|
346
|
+
keywords?: string[] | undefined;
|
|
341
347
|
/** A shortcut shown at the right, e.g. "G I". Display only. */
|
|
342
|
-
shortcut?: string;
|
|
343
|
-
disabled?: boolean;
|
|
348
|
+
shortcut?: string | undefined;
|
|
349
|
+
disabled?: boolean | undefined;
|
|
344
350
|
/** Runs when chosen (Enter or click); the palette then closes. */
|
|
345
|
-
onSelect?: () => void;
|
|
351
|
+
onSelect?: (() => void) | undefined;
|
|
346
352
|
}
|
|
347
353
|
/** A command palette: a modal search over commands and pages, grouped, fully keyboard-driven. */
|
|
348
354
|
export interface CommandProps {
|
|
@@ -350,84 +356,84 @@ export interface CommandProps {
|
|
|
350
356
|
onOpenChange: (open: boolean) => void;
|
|
351
357
|
items: CommandItem[];
|
|
352
358
|
/** Also called with the chosen item (after its own onSelect). */
|
|
353
|
-
onSelect?: (item: CommandItem) => void;
|
|
359
|
+
onSelect?: ((item: CommandItem) => void) | undefined;
|
|
354
360
|
/** Accessible name. Default "Command menu". */
|
|
355
|
-
label?: string;
|
|
356
|
-
placeholder?: string;
|
|
361
|
+
label?: string | undefined;
|
|
362
|
+
placeholder?: string | undefined;
|
|
357
363
|
/** Default "No matches". */
|
|
358
|
-
emptyText?: string;
|
|
364
|
+
emptyText?: string | undefined;
|
|
359
365
|
/** ⌘K / Ctrl+K toggles the palette from anywhere on the page. Default true. */
|
|
360
|
-
hotkey?: boolean;
|
|
366
|
+
hotkey?: boolean | undefined;
|
|
361
367
|
/** Replace the Thai-aware default filter. */
|
|
362
|
-
filter?: (item: CommandItem, query: string) => boolean;
|
|
363
|
-
className?: string;
|
|
368
|
+
filter?: ((item: CommandItem, query: string) => boolean) | undefined;
|
|
369
|
+
className?: string | undefined;
|
|
364
370
|
}
|
|
365
371
|
export interface TextareaProps extends FieldProps, Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "required"> {
|
|
366
372
|
}
|
|
367
373
|
export type SelectOption = string | {
|
|
368
374
|
value: string;
|
|
369
375
|
label: string;
|
|
370
|
-
disabled?: boolean;
|
|
376
|
+
disabled?: boolean | undefined;
|
|
371
377
|
};
|
|
372
378
|
export interface SelectProps extends FieldProps, Omit<React$1.SelectHTMLAttributes<HTMLSelectElement>, "required"> {
|
|
373
379
|
options: SelectOption[];
|
|
374
380
|
/** A disabled first option shown in fg-tertiary until something is chosen. */
|
|
375
|
-
placeholder?: string;
|
|
376
|
-
icon?: IconInput;
|
|
381
|
+
placeholder?: string | undefined;
|
|
382
|
+
icon?: IconInput | undefined;
|
|
377
383
|
}
|
|
378
384
|
export type ChoiceOption = string | {
|
|
379
385
|
value: string;
|
|
380
386
|
label: string;
|
|
381
|
-
description?: string;
|
|
382
|
-
disabled?: boolean;
|
|
387
|
+
description?: string | undefined;
|
|
388
|
+
disabled?: boolean | undefined;
|
|
383
389
|
};
|
|
384
390
|
export interface RadioGroupProps extends FieldProps {
|
|
385
391
|
options: ChoiceOption[];
|
|
386
|
-
value?: string;
|
|
387
|
-
defaultValue?: string;
|
|
388
|
-
onChange?: (value: string) => void;
|
|
389
|
-
name?: string;
|
|
392
|
+
value?: string | undefined;
|
|
393
|
+
defaultValue?: string | undefined;
|
|
394
|
+
onChange?: ((value: string) => void) | undefined;
|
|
395
|
+
name?: string | undefined;
|
|
390
396
|
/** Default `vertical`. */
|
|
391
|
-
orientation?: "vertical" | "horizontal";
|
|
392
|
-
disabled?: boolean;
|
|
393
|
-
id?: string;
|
|
394
|
-
className?: string;
|
|
397
|
+
orientation?: "vertical" | "horizontal" | undefined;
|
|
398
|
+
disabled?: boolean | undefined;
|
|
399
|
+
id?: string | undefined;
|
|
400
|
+
className?: string | undefined;
|
|
395
401
|
}
|
|
396
402
|
export interface SwitchProps {
|
|
397
|
-
label?: string;
|
|
398
|
-
description?: string;
|
|
399
|
-
checked?: boolean;
|
|
400
|
-
defaultChecked?: boolean;
|
|
401
|
-
onChange?: (checked: boolean) => void;
|
|
402
|
-
disabled?: boolean;
|
|
403
|
+
label?: string | undefined;
|
|
404
|
+
description?: string | undefined;
|
|
405
|
+
checked?: boolean | undefined;
|
|
406
|
+
defaultChecked?: boolean | undefined;
|
|
407
|
+
onChange?: ((checked: boolean) => void) | undefined;
|
|
408
|
+
disabled?: boolean | undefined;
|
|
403
409
|
/** Required when there is no visible label. */
|
|
404
|
-
"aria-label"?: string;
|
|
405
|
-
id?: string;
|
|
406
|
-
className?: string;
|
|
410
|
+
"aria-label"?: string | undefined;
|
|
411
|
+
id?: string | undefined;
|
|
412
|
+
className?: string | undefined;
|
|
407
413
|
}
|
|
408
414
|
export type FeedbackTone = "info" | "success" | "warning" | "danger";
|
|
409
415
|
export interface AlertProps {
|
|
410
|
-
tone?: FeedbackTone;
|
|
411
|
-
title?: React$1.ReactNode;
|
|
412
|
-
children?: React$1.ReactNode;
|
|
416
|
+
tone?: FeedbackTone | undefined;
|
|
417
|
+
title?: React$1.ReactNode | undefined;
|
|
418
|
+
children?: React$1.ReactNode | undefined;
|
|
413
419
|
/** Usually a secondary Button. */
|
|
414
|
-
action?: React$1.ReactNode;
|
|
420
|
+
action?: React$1.ReactNode | undefined;
|
|
415
421
|
/** Adds a close button. */
|
|
416
|
-
onDismiss?: () => void;
|
|
417
|
-
className?: string;
|
|
422
|
+
onDismiss?: (() => void) | undefined;
|
|
423
|
+
className?: string | undefined;
|
|
418
424
|
}
|
|
419
425
|
export interface ToastOptions {
|
|
420
426
|
title: string;
|
|
421
|
-
description?: string;
|
|
422
|
-
tone?: FeedbackTone;
|
|
427
|
+
description?: string | undefined;
|
|
428
|
+
tone?: FeedbackTone | undefined;
|
|
423
429
|
action?: {
|
|
424
430
|
label: string;
|
|
425
|
-
onClick?: () => void;
|
|
426
|
-
};
|
|
431
|
+
onClick?: (() => void) | undefined;
|
|
432
|
+
} | undefined;
|
|
427
433
|
/** ms before it closes itself. Default 5000; Infinity keeps it until dismissed. */
|
|
428
|
-
duration?: number;
|
|
434
|
+
duration?: number | undefined;
|
|
429
435
|
/** Reuse an id to replace a toast in place (same position, timer restarts) — never a second toast. */
|
|
430
|
-
id?: string;
|
|
436
|
+
id?: string | undefined;
|
|
431
437
|
}
|
|
432
438
|
/** Options for the shorthands (`toast.success(title, opts)` …): everything but the title and tone. */
|
|
433
439
|
export type ToastShorthandOptions = Omit<ToastOptions, "title" | "tone">;
|
|
@@ -435,219 +441,219 @@ export interface TooltipProps {
|
|
|
435
441
|
content: React$1.ReactNode;
|
|
436
442
|
/** One focusable element. */
|
|
437
443
|
children: React$1.ReactElement;
|
|
438
|
-
side?: "top" | "bottom";
|
|
444
|
+
side?: "top" | "bottom" | undefined;
|
|
439
445
|
/** Hover delay in ms. Default 400. */
|
|
440
|
-
delay?: number;
|
|
446
|
+
delay?: number | undefined;
|
|
441
447
|
/** Force open (demos, tests). */
|
|
442
|
-
open?: boolean;
|
|
448
|
+
open?: boolean | undefined;
|
|
443
449
|
}
|
|
444
450
|
export interface FieldPropsPublic {
|
|
445
451
|
label: string;
|
|
446
|
-
hint?: React$1.ReactNode;
|
|
447
|
-
error?: React$1.ReactNode;
|
|
448
|
-
required?: boolean;
|
|
449
|
-
optional?: boolean;
|
|
452
|
+
hint?: React$1.ReactNode | undefined;
|
|
453
|
+
error?: React$1.ReactNode | undefined;
|
|
454
|
+
required?: boolean | undefined;
|
|
455
|
+
optional?: boolean | undefined;
|
|
450
456
|
}
|
|
451
457
|
export interface DialogProps {
|
|
452
458
|
open: boolean;
|
|
453
459
|
onClose: () => void;
|
|
454
460
|
title: React$1.ReactNode;
|
|
455
|
-
description?: React$1.ReactNode;
|
|
456
|
-
children?: React$1.ReactNode;
|
|
461
|
+
description?: React$1.ReactNode | undefined;
|
|
462
|
+
children?: React$1.ReactNode | undefined;
|
|
457
463
|
/** Buttons, right-aligned: secondary Cancel, then the primary action. */
|
|
458
|
-
footer?: React$1.ReactNode;
|
|
464
|
+
footer?: React$1.ReactNode | undefined;
|
|
459
465
|
/** `sm` 400 · `md` 560 (default) · `lg` 720. */
|
|
460
|
-
size?: "sm" | "md" | "lg";
|
|
466
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
461
467
|
/** Default true. False hides the close button and ignores Escape and scrim clicks. */
|
|
462
|
-
dismissible?: boolean;
|
|
468
|
+
dismissible?: boolean | undefined;
|
|
463
469
|
/** Use `alertdialog` for destructive confirmations. */
|
|
464
|
-
role?: "dialog" | "alertdialog";
|
|
470
|
+
role?: "dialog" | "alertdialog" | undefined;
|
|
465
471
|
/** Default true. Turn off only for static demos. */
|
|
466
|
-
autoFocus?: boolean;
|
|
467
|
-
className?: string;
|
|
472
|
+
autoFocus?: boolean | undefined;
|
|
473
|
+
className?: string | undefined;
|
|
468
474
|
}
|
|
469
475
|
export interface CardProps {
|
|
470
|
-
title?: React$1.ReactNode;
|
|
471
|
-
description?: React$1.ReactNode;
|
|
476
|
+
title?: React$1.ReactNode | undefined;
|
|
477
|
+
description?: React$1.ReactNode | undefined;
|
|
472
478
|
/** Top-right, usually an IconButton. */
|
|
473
|
-
actions?: React$1.ReactNode;
|
|
474
|
-
footer?: React$1.ReactNode;
|
|
475
|
-
children?: React$1.ReactNode;
|
|
479
|
+
actions?: React$1.ReactNode | undefined;
|
|
480
|
+
footer?: React$1.ReactNode | undefined;
|
|
481
|
+
children?: React$1.ReactNode | undefined;
|
|
476
482
|
/** Default `enterprise`. `creative` is for marketing and onboarding only. */
|
|
477
|
-
variant?: "enterprise" | "creative";
|
|
483
|
+
variant?: "enterprise" | "creative" | undefined;
|
|
478
484
|
/** Heading level of the title. Default 3 — use 2 when cards sit directly under the page h1. */
|
|
479
|
-
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
485
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;
|
|
480
486
|
/** Hover edge for clickable cards. */
|
|
481
|
-
interactive?: boolean;
|
|
482
|
-
as?: keyof React$1.JSX.IntrinsicElements;
|
|
483
|
-
className?: string;
|
|
487
|
+
interactive?: boolean | undefined;
|
|
488
|
+
as?: keyof React$1.JSX.IntrinsicElements | undefined;
|
|
489
|
+
className?: string | undefined;
|
|
484
490
|
/** id for the title element; the card is then labelled by it (aria-labelledby). */
|
|
485
|
-
titleId?: string;
|
|
491
|
+
titleId?: string | undefined;
|
|
486
492
|
}
|
|
487
493
|
export interface TabItem {
|
|
488
494
|
id: string;
|
|
489
495
|
label: string;
|
|
490
|
-
icon?: IconInput;
|
|
491
|
-
count?: number;
|
|
492
|
-
disabled?: boolean;
|
|
493
|
-
content?: React$1.ReactNode;
|
|
496
|
+
icon?: IconInput | undefined;
|
|
497
|
+
count?: number | undefined;
|
|
498
|
+
disabled?: boolean | undefined;
|
|
499
|
+
content?: React$1.ReactNode | undefined;
|
|
494
500
|
}
|
|
495
501
|
export interface TabsProps {
|
|
496
502
|
tabs: TabItem[];
|
|
497
503
|
/** Accessible name for the tab list. */
|
|
498
504
|
label: string;
|
|
499
|
-
value?: string;
|
|
500
|
-
defaultValue?: string;
|
|
501
|
-
onChange?: (id: string) => void;
|
|
502
|
-
className?: string;
|
|
505
|
+
value?: string | undefined;
|
|
506
|
+
defaultValue?: string | undefined;
|
|
507
|
+
onChange?: ((id: string) => void) | undefined;
|
|
508
|
+
className?: string | undefined;
|
|
503
509
|
}
|
|
504
510
|
export interface NavItem {
|
|
505
511
|
id: string;
|
|
506
512
|
label: string;
|
|
507
|
-
icon?: IconInput;
|
|
508
|
-
count?: number;
|
|
513
|
+
icon?: IconInput | undefined;
|
|
514
|
+
count?: number | undefined;
|
|
509
515
|
/** Anything beside the label, e.g. a status dot or a `Badge`. */
|
|
510
|
-
badge?: React$1.ReactNode;
|
|
511
|
-
href?: string;
|
|
516
|
+
badge?: React$1.ReactNode | undefined;
|
|
517
|
+
href?: string | undefined;
|
|
512
518
|
/** Makes this item a collapsible group of links. The group header is a button, never a link. */
|
|
513
|
-
children?: NavItem[];
|
|
519
|
+
children?: NavItem[] | undefined;
|
|
514
520
|
/** Start open. A group also opens by itself when one of its items is the current one. */
|
|
515
|
-
defaultOpen?: boolean;
|
|
521
|
+
defaultOpen?: boolean | undefined;
|
|
516
522
|
}
|
|
517
523
|
export interface SideNavProps {
|
|
518
524
|
sections?: Array<{
|
|
519
|
-
title?: string;
|
|
525
|
+
title?: string | undefined;
|
|
520
526
|
items: NavItem[];
|
|
521
|
-
}
|
|
522
|
-
items?: NavItem[];
|
|
523
|
-
value?: string;
|
|
524
|
-
defaultValue?: string;
|
|
525
|
-
onChange?: (id: string) => void;
|
|
526
|
-
header?: React$1.ReactNode;
|
|
527
|
-
footer?: React$1.ReactNode;
|
|
527
|
+
}> | undefined;
|
|
528
|
+
items?: NavItem[] | undefined;
|
|
529
|
+
value?: string | undefined;
|
|
530
|
+
defaultValue?: string | undefined;
|
|
531
|
+
onChange?: ((id: string) => void) | undefined;
|
|
532
|
+
header?: React$1.ReactNode | undefined;
|
|
533
|
+
footer?: React$1.ReactNode | undefined;
|
|
528
534
|
/** Default "Main". */
|
|
529
|
-
label?: string;
|
|
535
|
+
label?: string | undefined;
|
|
530
536
|
/** Router link for items with `href`; defaults to the AuraProvider's `linkComponent`, then `<a>`. */
|
|
531
|
-
linkComponent?: React$1.ElementType;
|
|
537
|
+
linkComponent?: React$1.ElementType | undefined;
|
|
532
538
|
/** Icon-only rail (`aura-sidenav-rail-width`, 64px). Labels show as tooltips and stay the accessible names; a group
|
|
533
539
|
* expands the rail when clicked. Controlled; pair with `onCollapsedChange`. */
|
|
534
|
-
collapsed?: boolean;
|
|
540
|
+
collapsed?: boolean | undefined;
|
|
535
541
|
/** Starting state when `collapsed` isn't controlled. Default false. */
|
|
536
|
-
defaultCollapsed?: boolean;
|
|
542
|
+
defaultCollapsed?: boolean | undefined;
|
|
537
543
|
/** Called by the toggle button, and by a group clicked in the rail (with `false`). Save it to keep the choice. */
|
|
538
|
-
onCollapsedChange?: (collapsed: boolean) => void;
|
|
544
|
+
onCollapsedChange?: ((collapsed: boolean) => void) | undefined;
|
|
539
545
|
/** Adds a collapse / expand button at the bottom. AppShell hides it in its phone drawer. */
|
|
540
|
-
collapsible?: boolean;
|
|
541
|
-
className?: string;
|
|
546
|
+
collapsible?: boolean | undefined;
|
|
547
|
+
className?: string | undefined;
|
|
542
548
|
}
|
|
543
549
|
export interface BreadcrumbProps {
|
|
544
550
|
/** Root first; the last item is the current page. */
|
|
545
551
|
items: Array<{
|
|
546
552
|
label: string;
|
|
547
|
-
href?: string;
|
|
548
|
-
onClick?: () => void;
|
|
553
|
+
href?: string | undefined;
|
|
554
|
+
onClick?: (() => void) | undefined;
|
|
549
555
|
}>;
|
|
550
|
-
label?: string;
|
|
551
|
-
className?: string;
|
|
556
|
+
label?: string | undefined;
|
|
557
|
+
className?: string | undefined;
|
|
552
558
|
}
|
|
553
559
|
export interface AvatarProps {
|
|
554
560
|
/** Accessible name; also gives the initials and a stable colour. */
|
|
555
561
|
name: string;
|
|
556
|
-
src?: string;
|
|
562
|
+
src?: string | undefined;
|
|
557
563
|
/** `sm` 24 · `md` 32 (default) · `lg` 40. */
|
|
558
|
-
size?: "sm" | "md" | "lg";
|
|
559
|
-
status?: "online";
|
|
560
|
-
className?: string;
|
|
564
|
+
size?: "sm" | "md" | "lg" | undefined;
|
|
565
|
+
status?: "online" | undefined;
|
|
566
|
+
className?: string | undefined;
|
|
561
567
|
}
|
|
562
568
|
export interface DropdownMenuProps {
|
|
563
569
|
/** One element — usually a Button or IconButton. It gets aria-haspopup, aria-expanded and the click handler. */
|
|
564
570
|
trigger: React$1.ReactElement;
|
|
565
571
|
items: MenuItem[];
|
|
566
572
|
/** Accessible name for the menu. */
|
|
567
|
-
label?: string;
|
|
573
|
+
label?: string | undefined;
|
|
568
574
|
}
|
|
569
575
|
export interface ComboboxOption {
|
|
570
576
|
value: string;
|
|
571
577
|
label: string;
|
|
572
578
|
/** Second line in the list; also searched. */
|
|
573
|
-
description?: string;
|
|
579
|
+
description?: string | undefined;
|
|
574
580
|
/** Extra search terms (English name, phone, code…). */
|
|
575
|
-
keywords?: string[];
|
|
576
|
-
disabled?: boolean;
|
|
581
|
+
keywords?: string[] | undefined;
|
|
582
|
+
disabled?: boolean | undefined;
|
|
577
583
|
/** Leading icon in the list. */
|
|
578
|
-
icon?: IconInput;
|
|
584
|
+
icon?: IconInput | undefined;
|
|
579
585
|
}
|
|
580
586
|
/** Combobox with `multiple`: pick any number; the picks show as removable chips in the field. */
|
|
581
587
|
export interface ComboboxMultipleProps extends Omit<ComboboxProps, "value" | "defaultValue" | "onChange" | "clearable"> {
|
|
582
588
|
multiple: true;
|
|
583
589
|
/** Selected option values, in the order they were picked (controlled). */
|
|
584
|
-
value?: string[];
|
|
585
|
-
defaultValue?: string[];
|
|
586
|
-
onChange?: (value: string[]) => void;
|
|
590
|
+
value?: string[] | undefined;
|
|
591
|
+
defaultValue?: string[] | undefined;
|
|
592
|
+
onChange?: ((value: string[]) => void) | undefined;
|
|
587
593
|
/** Clear-all button while anything is selected. Default true. */
|
|
588
|
-
clearable?: boolean;
|
|
594
|
+
clearable?: boolean | undefined;
|
|
589
595
|
/** Most picks allowed; further options are disabled. */
|
|
590
|
-
max?: number;
|
|
596
|
+
max?: number | undefined;
|
|
591
597
|
}
|
|
592
598
|
export interface ComboboxProps extends FieldProps {
|
|
593
599
|
options: Array<ComboboxOption | string>;
|
|
594
600
|
/** Selected option value (controlled). */
|
|
595
|
-
value?: string | null;
|
|
596
|
-
defaultValue?: string | null;
|
|
597
|
-
onChange?: (value: string | null) => void;
|
|
598
|
-
id?: string;
|
|
599
|
-
name?: string;
|
|
600
|
-
placeholder?: string;
|
|
601
|
-
disabled?: boolean;
|
|
602
|
-
readOnly?: boolean;
|
|
601
|
+
value?: string | null | undefined;
|
|
602
|
+
defaultValue?: string | null | undefined;
|
|
603
|
+
onChange?: ((value: string | null) => void) | undefined;
|
|
604
|
+
id?: string | undefined;
|
|
605
|
+
name?: string | undefined;
|
|
606
|
+
placeholder?: string | undefined;
|
|
607
|
+
disabled?: boolean | undefined;
|
|
608
|
+
readOnly?: boolean | undefined;
|
|
603
609
|
/** Leading icon. Default `search`. */
|
|
604
|
-
icon?: IconInput;
|
|
610
|
+
icon?: IconInput | undefined;
|
|
605
611
|
/** Clear button while a value is selected (Escape clears too). Default true. */
|
|
606
|
-
clearable?: boolean;
|
|
612
|
+
clearable?: boolean | undefined;
|
|
607
613
|
/** Server-side search: called with the typed text; the component stops filtering and shows `options` as given. */
|
|
608
|
-
onSearch?: (query: string) => void;
|
|
609
|
-
loading?: boolean;
|
|
610
|
-
loadingText?: string;
|
|
611
|
-
emptyText?: string;
|
|
614
|
+
onSearch?: ((query: string) => void) | undefined;
|
|
615
|
+
loading?: boolean | undefined;
|
|
616
|
+
loadingText?: string | undefined;
|
|
617
|
+
emptyText?: string | undefined;
|
|
612
618
|
/** Max options rendered. Default 200 — narrow with typing beyond that. */
|
|
613
|
-
limit?: number;
|
|
619
|
+
limit?: number | undefined;
|
|
614
620
|
/** Replace the Thai-aware default filter (label, description, keywords). */
|
|
615
|
-
filter?: (option: ComboboxOption, query: string) => boolean;
|
|
616
|
-
className?: string;
|
|
621
|
+
filter?: ((option: ComboboxOption, query: string) => boolean) | undefined;
|
|
622
|
+
className?: string | undefined;
|
|
617
623
|
}
|
|
618
624
|
/** Number input: thousands separators, +/− buttons, arrow keys, min/max/step, prefix/suffix (฿, %). */
|
|
619
625
|
export interface NumberFieldProps extends FieldProps {
|
|
620
626
|
/** The number (controlled). `null` = empty. */
|
|
621
|
-
value?: number | null;
|
|
622
|
-
defaultValue?: number | null;
|
|
627
|
+
value?: number | null | undefined;
|
|
628
|
+
defaultValue?: number | null | undefined;
|
|
623
629
|
/** Called with the parsed number (or null when emptied) as the person types, and with the clamped value on blur. */
|
|
624
|
-
onChange?: (value: number | null) => void;
|
|
625
|
-
min?: number;
|
|
626
|
-
max?: number;
|
|
630
|
+
onChange?: ((value: number | null) => void) | undefined;
|
|
631
|
+
min?: number | undefined;
|
|
632
|
+
max?: number | undefined;
|
|
627
633
|
/** Arrow keys and buttons move by this. Default 1. PageUp/PageDown move 10×. */
|
|
628
|
-
step?: number;
|
|
634
|
+
step?: number | undefined;
|
|
629
635
|
/** Decimal places shown and kept. Default: 0 when step is whole, else step's decimals. */
|
|
630
|
-
decimals?: number;
|
|
636
|
+
decimals?: number | undefined;
|
|
631
637
|
/** Text before the number, e.g. `฿`. */
|
|
632
|
-
prefix?: React$1.ReactNode;
|
|
638
|
+
prefix?: React$1.ReactNode | undefined;
|
|
633
639
|
/** Text after the number, e.g. `%` or `ชิ้น`. */
|
|
634
|
-
suffix?: React$1.ReactNode;
|
|
640
|
+
suffix?: React$1.ReactNode | undefined;
|
|
635
641
|
/** +/− buttons beside the number. Default true. */
|
|
636
|
-
stepper?: boolean;
|
|
637
|
-
id?: string;
|
|
638
|
-
name?: string;
|
|
639
|
-
placeholder?: string;
|
|
640
|
-
disabled?: boolean;
|
|
641
|
-
readOnly?: boolean;
|
|
642
|
-
className?: string;
|
|
643
|
-
onBlur?: React$1.FocusEventHandler<HTMLInputElement
|
|
642
|
+
stepper?: boolean | undefined;
|
|
643
|
+
id?: string | undefined;
|
|
644
|
+
name?: string | undefined;
|
|
645
|
+
placeholder?: string | undefined;
|
|
646
|
+
disabled?: boolean | undefined;
|
|
647
|
+
readOnly?: boolean | undefined;
|
|
648
|
+
className?: string | undefined;
|
|
649
|
+
onBlur?: React$1.FocusEventHandler<HTMLInputElement> | undefined;
|
|
644
650
|
}
|
|
645
651
|
/** One step of a Stepper. */
|
|
646
652
|
export interface StepItem {
|
|
647
653
|
id: string;
|
|
648
654
|
label: React$1.ReactNode;
|
|
649
655
|
/** Short line under the label, e.g. what the step asks for. */
|
|
650
|
-
description?: React$1.ReactNode;
|
|
656
|
+
description?: React$1.ReactNode | undefined;
|
|
651
657
|
}
|
|
652
658
|
/** Progress through a multi-step flow (wizard, checkout, booking). */
|
|
653
659
|
export interface StepperProps {
|
|
@@ -655,313 +661,313 @@ export interface StepperProps {
|
|
|
655
661
|
/** id of the step the person is on. Steps before it are completed. */
|
|
656
662
|
current: string;
|
|
657
663
|
/** Accessible name of the list. Default: none (give one when the page has several). */
|
|
658
|
-
label?: string;
|
|
664
|
+
label?: string | undefined;
|
|
659
665
|
/** Makes completed steps buttons that go back to them. Upcoming steps never are. */
|
|
660
|
-
onStepClick?: (id: string) => void;
|
|
666
|
+
onStepClick?: ((id: string) => void) | undefined;
|
|
661
667
|
/** Default `horizontal`. Below `sm` a horizontal stepper shows only the current step ("Step 2 of 4"). */
|
|
662
|
-
orientation?: "horizontal" | "vertical";
|
|
663
|
-
className?: string;
|
|
668
|
+
orientation?: "horizontal" | "vertical" | undefined;
|
|
669
|
+
className?: string | undefined;
|
|
664
670
|
}
|
|
665
671
|
export interface SegmentedOption {
|
|
666
672
|
value: string;
|
|
667
673
|
label: string;
|
|
668
|
-
icon?: IconInput;
|
|
674
|
+
icon?: IconInput | undefined;
|
|
669
675
|
/** Show only the icon; `label` becomes its accessible name and tooltip. */
|
|
670
|
-
iconOnly?: boolean;
|
|
671
|
-
disabled?: boolean;
|
|
676
|
+
iconOnly?: boolean | undefined;
|
|
677
|
+
disabled?: boolean | undefined;
|
|
672
678
|
}
|
|
673
679
|
/** A row of 2–5 mutually exclusive choices that apply at once (view, period, unit). A radio group underneath. */
|
|
674
680
|
export interface SegmentedControlProps {
|
|
675
681
|
/** Accessible name of the group, e.g. "View". Required. */
|
|
676
682
|
label: string;
|
|
677
683
|
options: Array<SegmentedOption | string>;
|
|
678
|
-
value?: string;
|
|
679
|
-
defaultValue?: string;
|
|
680
|
-
onChange?: (value: string) => void;
|
|
684
|
+
value?: string | undefined;
|
|
685
|
+
defaultValue?: string | undefined;
|
|
686
|
+
onChange?: ((value: string) => void) | undefined;
|
|
681
687
|
/** `md` (default, 36px) or `sm` (28px) for toolbars. */
|
|
682
|
-
size?: "sm" | "md";
|
|
688
|
+
size?: "sm" | "md" | undefined;
|
|
683
689
|
/** Stretch across the container, segments equal width. */
|
|
684
|
-
fullWidth?: boolean;
|
|
685
|
-
disabled?: boolean;
|
|
686
|
-
id?: string;
|
|
687
|
-
className?: string;
|
|
690
|
+
fullWidth?: boolean | undefined;
|
|
691
|
+
disabled?: boolean | undefined;
|
|
692
|
+
id?: string | undefined;
|
|
693
|
+
className?: string | undefined;
|
|
688
694
|
}
|
|
689
695
|
/** ISO date string, `YYYY-MM-DD` (Gregorian — the era is display only). */
|
|
690
696
|
export type ISODate = string;
|
|
691
697
|
export interface DateDisplayOptions {
|
|
692
698
|
/** Components: the AuraProvider's locale, else `en`. `formatDate()` (no provider to read): `th` unless given. */
|
|
693
|
-
locale?: "th" | "en" | "sv";
|
|
699
|
+
locale?: "th" | "en" | "sv" | undefined;
|
|
694
700
|
/** `buddhist` (พ.ศ.; default for th) or `gregory` (ค.ศ.; default for en and sv). */
|
|
695
|
-
calendar?: "buddhist" | "gregory";
|
|
701
|
+
calendar?: "buddhist" | "gregory" | undefined;
|
|
696
702
|
}
|
|
697
703
|
export interface CalendarProps extends DateDisplayOptions {
|
|
698
|
-
start?: ISODate | null;
|
|
699
|
-
end?: ISODate | null;
|
|
700
|
-
focus?: ISODate | null;
|
|
701
|
-
range?: boolean;
|
|
702
|
-
min?: ISODate;
|
|
703
|
-
max?: ISODate;
|
|
704
|
-
isDateDisabled?: (iso: ISODate) => boolean;
|
|
704
|
+
start?: ISODate | null | undefined;
|
|
705
|
+
end?: ISODate | null | undefined;
|
|
706
|
+
focus?: ISODate | null | undefined;
|
|
707
|
+
range?: boolean | undefined;
|
|
708
|
+
min?: ISODate | undefined;
|
|
709
|
+
max?: ISODate | undefined;
|
|
710
|
+
isDateDisabled?: ((iso: ISODate) => boolean) | undefined;
|
|
705
711
|
/** 0 = Sunday (Thai default), 1 = Monday. */
|
|
706
|
-
weekStartsOn?: 0 | 1;
|
|
707
|
-
onSelect?: (iso: ISODate | null) => void;
|
|
712
|
+
weekStartsOn?: 0 | 1 | undefined;
|
|
713
|
+
onSelect?: ((iso: ISODate | null) => void) | undefined;
|
|
708
714
|
/** Adds a Clear link to the footer. */
|
|
709
|
-
onClear?: () => void;
|
|
715
|
+
onClear?: (() => void) | undefined;
|
|
710
716
|
/** false hides the Today / Clear footer. */
|
|
711
|
-
footer?: boolean;
|
|
717
|
+
footer?: boolean | undefined;
|
|
712
718
|
/** Default true: focuses the selected (or today's) day on mount. */
|
|
713
|
-
autoFocus?: boolean;
|
|
719
|
+
autoFocus?: boolean | undefined;
|
|
714
720
|
}
|
|
715
721
|
export interface DateFieldProps extends FieldProps, DateDisplayOptions {
|
|
716
|
-
id?: string;
|
|
717
|
-
name?: string;
|
|
718
|
-
placeholder?: string;
|
|
719
|
-
disabled?: boolean;
|
|
722
|
+
id?: string | undefined;
|
|
723
|
+
name?: string | undefined;
|
|
724
|
+
placeholder?: string | undefined;
|
|
725
|
+
disabled?: boolean | undefined;
|
|
720
726
|
/** Clear button while there is a value. Default true. */
|
|
721
|
-
clearable?: boolean;
|
|
722
|
-
min?: ISODate;
|
|
723
|
-
max?: ISODate;
|
|
724
|
-
isDateDisabled?: (iso: ISODate) => boolean;
|
|
725
|
-
weekStartsOn?: 0 | 1;
|
|
726
|
-
className?: string;
|
|
727
|
+
clearable?: boolean | undefined;
|
|
728
|
+
min?: ISODate | undefined;
|
|
729
|
+
max?: ISODate | undefined;
|
|
730
|
+
isDateDisabled?: ((iso: ISODate) => boolean) | undefined;
|
|
731
|
+
weekStartsOn?: 0 | 1 | undefined;
|
|
732
|
+
className?: string | undefined;
|
|
727
733
|
}
|
|
728
734
|
export interface DatePickerProps extends DateFieldProps {
|
|
729
|
-
value?: ISODate | null;
|
|
730
|
-
defaultValue?: ISODate | null;
|
|
731
|
-
onChange?: (value: ISODate | null) => void;
|
|
735
|
+
value?: ISODate | null | undefined;
|
|
736
|
+
defaultValue?: ISODate | null | undefined;
|
|
737
|
+
onChange?: ((value: ISODate | null) => void) | undefined;
|
|
732
738
|
}
|
|
733
739
|
export interface DateRange {
|
|
734
740
|
start: ISODate | null;
|
|
735
741
|
end: ISODate | null;
|
|
736
742
|
}
|
|
737
743
|
export interface DateRangePickerProps extends DateFieldProps {
|
|
738
|
-
value?: DateRange;
|
|
739
|
-
defaultValue?: DateRange;
|
|
740
|
-
onChange?: (value: DateRange) => void;
|
|
744
|
+
value?: DateRange | undefined;
|
|
745
|
+
defaultValue?: DateRange | undefined;
|
|
746
|
+
onChange?: ((value: DateRange) => void) | undefined;
|
|
741
747
|
}
|
|
742
748
|
export interface DrawerProps {
|
|
743
749
|
open: boolean;
|
|
744
750
|
onClose: () => void;
|
|
745
751
|
/** Default `right`. */
|
|
746
|
-
side?: "right" | "left";
|
|
752
|
+
side?: "right" | "left" | undefined;
|
|
747
753
|
/** sm 360 · md 480 (default) · lg 640 · nav = SideNav width. Full width below 640px. */
|
|
748
|
-
size?: "sm" | "md" | "lg" | "nav";
|
|
749
|
-
title?: string;
|
|
750
|
-
description?: React$1.ReactNode;
|
|
751
|
-
children?: React$1.ReactNode;
|
|
754
|
+
size?: "sm" | "md" | "lg" | "nav" | undefined;
|
|
755
|
+
title?: string | undefined;
|
|
756
|
+
description?: React$1.ReactNode | undefined;
|
|
757
|
+
children?: React$1.ReactNode | undefined;
|
|
752
758
|
/** Buttons, right-aligned; stacked on phones. */
|
|
753
|
-
footer?: React$1.ReactNode;
|
|
759
|
+
footer?: React$1.ReactNode | undefined;
|
|
754
760
|
/** Scrim click and Escape close it. Default true. */
|
|
755
|
-
dismissible?: boolean;
|
|
761
|
+
dismissible?: boolean | undefined;
|
|
756
762
|
/** Default true: focus moves to the element with `data-autofocus`, else the first control in the body. False only for static demos. */
|
|
757
|
-
autoFocus?: boolean;
|
|
763
|
+
autoFocus?: boolean | undefined;
|
|
758
764
|
/** Needed when there is no title. */
|
|
759
|
-
"aria-label"?: string;
|
|
760
|
-
className?: string;
|
|
765
|
+
"aria-label"?: string | undefined;
|
|
766
|
+
className?: string | undefined;
|
|
761
767
|
}
|
|
762
768
|
export type Breakpoint = "base" | "sm" | "md" | "lg" | "xl";
|
|
763
769
|
export type Responsive<T> = T | Partial<Record<Breakpoint, T>>;
|
|
764
770
|
/** Spacing step (aura-space-N) or any CSS length. */
|
|
765
771
|
export type Space = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | string;
|
|
766
772
|
export interface StackProps {
|
|
767
|
-
direction?: Responsive<"row" | "column"
|
|
768
|
-
gap?: Responsive<Space
|
|
773
|
+
direction?: Responsive<"row" | "column"> | undefined;
|
|
774
|
+
gap?: Responsive<Space> | undefined;
|
|
769
775
|
/** Cross-axis alignment; responsive like direction ({ base: 'stretch', sm: 'flex-end' }). */
|
|
770
|
-
align?: Responsive<React$1.CSSProperties["alignItems"]
|
|
771
|
-
justify?: React$1.CSSProperties["justifyContent"];
|
|
772
|
-
wrap?: boolean;
|
|
773
|
-
as?: keyof React$1.JSX.IntrinsicElements;
|
|
774
|
-
className?: string;
|
|
775
|
-
style?: React$1.CSSProperties;
|
|
776
|
-
children?: React$1.ReactNode;
|
|
776
|
+
align?: Responsive<React$1.CSSProperties["alignItems"]> | undefined;
|
|
777
|
+
justify?: React$1.CSSProperties["justifyContent"] | undefined;
|
|
778
|
+
wrap?: boolean | undefined;
|
|
779
|
+
as?: keyof React$1.JSX.IntrinsicElements | undefined;
|
|
780
|
+
className?: string | undefined;
|
|
781
|
+
style?: React$1.CSSProperties | undefined;
|
|
782
|
+
children?: React$1.ReactNode | undefined;
|
|
777
783
|
}
|
|
778
784
|
export interface GridProps {
|
|
779
|
-
columns?: Responsive<number
|
|
785
|
+
columns?: Responsive<number> | undefined;
|
|
780
786
|
/** Fit as many columns as there is room for, each at least this wide (px). Overrides columns. */
|
|
781
|
-
minItemWidth?: number;
|
|
782
|
-
gap?: Responsive<Space
|
|
783
|
-
as?: keyof React$1.JSX.IntrinsicElements;
|
|
784
|
-
className?: string;
|
|
785
|
-
style?: React$1.CSSProperties;
|
|
786
|
-
children?: React$1.ReactNode;
|
|
787
|
+
minItemWidth?: number | undefined;
|
|
788
|
+
gap?: Responsive<Space> | undefined;
|
|
789
|
+
as?: keyof React$1.JSX.IntrinsicElements | undefined;
|
|
790
|
+
className?: string | undefined;
|
|
791
|
+
style?: React$1.CSSProperties | undefined;
|
|
792
|
+
children?: React$1.ReactNode | undefined;
|
|
787
793
|
}
|
|
788
794
|
export interface AppShellProps {
|
|
789
795
|
/** Usually a SideNav. Fixed from 1024px up; in a Drawer behind a menu button below. */
|
|
790
|
-
nav?: React$1.ReactElement;
|
|
796
|
+
nav?: React$1.ReactElement | undefined;
|
|
791
797
|
/** Top bar content (title, search, account menu). */
|
|
792
|
-
header?: React$1.ReactNode;
|
|
793
|
-
children?: React$1.ReactNode;
|
|
794
|
-
navLabel?: string;
|
|
795
|
-
menuLabel?: string;
|
|
798
|
+
header?: React$1.ReactNode | undefined;
|
|
799
|
+
children?: React$1.ReactNode | undefined;
|
|
800
|
+
navLabel?: string | undefined;
|
|
801
|
+
menuLabel?: string | undefined;
|
|
796
802
|
/** id of `<main>`, for a skip link. Default `main`. */
|
|
797
|
-
mainId?: string;
|
|
798
|
-
className?: string;
|
|
803
|
+
mainId?: string | undefined;
|
|
804
|
+
className?: string | undefined;
|
|
799
805
|
}
|
|
800
806
|
export interface StatChange {
|
|
801
807
|
/** Shown as written, e.g. "+12%" or "−3". */
|
|
802
808
|
value: React$1.ReactNode;
|
|
803
|
-
direction?: "up" | "down" | "flat";
|
|
809
|
+
direction?: "up" | "down" | "flat" | undefined;
|
|
804
810
|
/** Default: up = positive, down = negative. Set it when a rise is bad (cancellations, wait time). */
|
|
805
|
-
tone?: "positive" | "negative" | "neutral";
|
|
811
|
+
tone?: "positive" | "negative" | "neutral" | undefined;
|
|
806
812
|
/** e.g. "vs last month". */
|
|
807
|
-
label?: React$1.ReactNode;
|
|
813
|
+
label?: React$1.ReactNode | undefined;
|
|
808
814
|
}
|
|
809
815
|
export interface StatProps {
|
|
810
816
|
label: React$1.ReactNode;
|
|
811
|
-
value?: React$1.ReactNode;
|
|
817
|
+
value?: React$1.ReactNode | undefined;
|
|
812
818
|
/** Small unit after the value ("งาน", "คน", "%"). */
|
|
813
|
-
unit?: React$1.ReactNode;
|
|
814
|
-
change?: StatChange;
|
|
815
|
-
caption?: React$1.ReactNode;
|
|
816
|
-
icon?: IconInput;
|
|
819
|
+
unit?: React$1.ReactNode | undefined;
|
|
820
|
+
change?: StatChange | undefined;
|
|
821
|
+
caption?: React$1.ReactNode | undefined;
|
|
822
|
+
icon?: IconInput | undefined;
|
|
817
823
|
/** Skeleton in place of the value. */
|
|
818
|
-
loading?: boolean;
|
|
824
|
+
loading?: boolean | undefined;
|
|
819
825
|
/** Makes the whole card a link or a button (drill-down). */
|
|
820
|
-
href?: string;
|
|
821
|
-
onClick?: () => void;
|
|
822
|
-
className?: string;
|
|
826
|
+
href?: string | undefined;
|
|
827
|
+
onClick?: (() => void) | undefined;
|
|
828
|
+
className?: string | undefined;
|
|
823
829
|
}
|
|
824
830
|
export interface TimePickerProps extends FieldProps {
|
|
825
831
|
/** "HH:mm", 24-hour. */
|
|
826
|
-
value?: string | null;
|
|
827
|
-
defaultValue?: string | null;
|
|
828
|
-
onChange?: (value: string | null) => void;
|
|
832
|
+
value?: string | null | undefined;
|
|
833
|
+
defaultValue?: string | null | undefined;
|
|
834
|
+
onChange?: ((value: string | null) => void) | undefined;
|
|
829
835
|
/** Minutes between listed slots. Default 30. */
|
|
830
|
-
step?: number;
|
|
836
|
+
step?: number | undefined;
|
|
831
837
|
/** Earliest and latest allowed times, "HH:mm". Typed times outside them are refused with a message. */
|
|
832
|
-
min?: string;
|
|
833
|
-
max?: string;
|
|
834
|
-
isTimeDisabled?: (time: string) => boolean;
|
|
838
|
+
min?: string | undefined;
|
|
839
|
+
max?: string | undefined;
|
|
840
|
+
isTimeDisabled?: ((time: string) => boolean) | undefined;
|
|
835
841
|
/** Slot to scroll to when empty (e.g. "09:00"). Default: min. */
|
|
836
|
-
suggest?: string;
|
|
842
|
+
suggest?: string | undefined;
|
|
837
843
|
/** Clear button while there is a value. Default true. */
|
|
838
|
-
clearable?: boolean;
|
|
839
|
-
id?: string;
|
|
840
|
-
name?: string;
|
|
841
|
-
placeholder?: string;
|
|
842
|
-
disabled?: boolean;
|
|
843
|
-
readOnly?: boolean;
|
|
844
|
-
className?: string;
|
|
844
|
+
clearable?: boolean | undefined;
|
|
845
|
+
id?: string | undefined;
|
|
846
|
+
name?: string | undefined;
|
|
847
|
+
placeholder?: string | undefined;
|
|
848
|
+
disabled?: boolean | undefined;
|
|
849
|
+
readOnly?: boolean | undefined;
|
|
850
|
+
className?: string | undefined;
|
|
845
851
|
}
|
|
846
852
|
export interface UploadItem {
|
|
847
853
|
id: string;
|
|
848
854
|
/** The browser File (absent for files already on the server). */
|
|
849
|
-
file?: File;
|
|
855
|
+
file?: File | undefined;
|
|
850
856
|
name: string;
|
|
851
|
-
size?: number;
|
|
852
|
-
type?: string;
|
|
857
|
+
size?: number | undefined;
|
|
858
|
+
type?: string | undefined;
|
|
853
859
|
/** ready = picked, not sent yet. Set uploading/done yourself while sending. */
|
|
854
860
|
status: "ready" | "uploading" | "done" | "error";
|
|
855
861
|
/** 0–100 while uploading. */
|
|
856
|
-
progress?: number;
|
|
857
|
-
error?: string;
|
|
862
|
+
progress?: number | undefined;
|
|
863
|
+
error?: string | undefined;
|
|
858
864
|
/** For files already stored (edit forms). */
|
|
859
|
-
url?: string;
|
|
865
|
+
url?: string | undefined;
|
|
860
866
|
}
|
|
861
867
|
export interface FileUploadProps extends FieldProps {
|
|
862
|
-
value?: UploadItem[];
|
|
863
|
-
defaultValue?: UploadItem[];
|
|
864
|
-
onChange?: (items: UploadItem[]) => void;
|
|
865
|
-
onRemove?: (item: UploadItem) => void;
|
|
868
|
+
value?: UploadItem[] | undefined;
|
|
869
|
+
defaultValue?: UploadItem[] | undefined;
|
|
870
|
+
onChange?: ((items: UploadItem[]) => void) | undefined;
|
|
871
|
+
onRemove?: ((item: UploadItem) => void) | undefined;
|
|
866
872
|
/** Same syntax as `<input accept>`: "image/*,.pdf". Checked on drop too. */
|
|
867
|
-
accept?: string;
|
|
868
|
-
multiple?: boolean;
|
|
873
|
+
accept?: string | undefined;
|
|
874
|
+
multiple?: boolean | undefined;
|
|
869
875
|
/** Bytes per file. */
|
|
870
|
-
maxSize?: number;
|
|
876
|
+
maxSize?: number | undefined;
|
|
871
877
|
/** With multiple. */
|
|
872
|
-
maxFiles?: number;
|
|
873
|
-
id?: string;
|
|
874
|
-
name?: string;
|
|
875
|
-
disabled?: boolean;
|
|
876
|
-
className?: string;
|
|
878
|
+
maxFiles?: number | undefined;
|
|
879
|
+
id?: string | undefined;
|
|
880
|
+
name?: string | undefined;
|
|
881
|
+
disabled?: boolean | undefined;
|
|
882
|
+
className?: string | undefined;
|
|
877
883
|
}
|
|
878
884
|
export type Tone = "neutral" | "accent" | "success" | "warning" | "danger";
|
|
879
885
|
export interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
880
|
-
tone?: Tone;
|
|
886
|
+
tone?: Tone | undefined;
|
|
881
887
|
/** soft (default) · solid · outline */
|
|
882
|
-
variant?: "soft" | "solid" | "outline";
|
|
883
|
-
icon?: IconInput;
|
|
888
|
+
variant?: "soft" | "solid" | "outline" | undefined;
|
|
889
|
+
icon?: IconInput | undefined;
|
|
884
890
|
}
|
|
885
891
|
export interface TagProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "onClick"> {
|
|
886
892
|
children: React$1.ReactNode;
|
|
887
|
-
icon?: IconInput;
|
|
893
|
+
icon?: IconInput | undefined;
|
|
888
894
|
/** Adds a remove button (applied filters, chosen people). */
|
|
889
|
-
onRemove?: () => void;
|
|
890
|
-
removeLabel?: string;
|
|
895
|
+
onRemove?: (() => void) | undefined;
|
|
896
|
+
removeLabel?: string | undefined;
|
|
891
897
|
/** Makes it a toggle chip (filter chips): renders a button with aria-pressed. */
|
|
892
|
-
selected?: boolean;
|
|
893
|
-
onClick?: (e: React$1.MouseEvent<HTMLButtonElement>) => void;
|
|
894
|
-
disabled?: boolean;
|
|
898
|
+
selected?: boolean | undefined;
|
|
899
|
+
onClick?: ((e: React$1.MouseEvent<HTMLButtonElement>) => void) | undefined;
|
|
900
|
+
disabled?: boolean | undefined;
|
|
895
901
|
}
|
|
896
902
|
export interface ProgressProps {
|
|
897
903
|
/** Omit for indeterminate. */
|
|
898
|
-
value?: number;
|
|
899
|
-
max?: number;
|
|
900
|
-
label?: React$1.ReactNode;
|
|
901
|
-
"aria-label"?: string;
|
|
902
|
-
showValue?: boolean;
|
|
904
|
+
value?: number | undefined;
|
|
905
|
+
max?: number | undefined;
|
|
906
|
+
label?: React$1.ReactNode | undefined;
|
|
907
|
+
"aria-label"?: string | undefined;
|
|
908
|
+
showValue?: boolean | undefined;
|
|
903
909
|
/** Replaces the % text, e.g. "3 of 5 files". Also read out as aria-valuetext. */
|
|
904
|
-
valueLabel?: React$1.ReactNode;
|
|
905
|
-
hint?: React$1.ReactNode;
|
|
906
|
-
tone?: Tone;
|
|
907
|
-
size?: "sm" | "md";
|
|
908
|
-
id?: string;
|
|
909
|
-
className?: string;
|
|
910
|
+
valueLabel?: React$1.ReactNode | undefined;
|
|
911
|
+
hint?: React$1.ReactNode | undefined;
|
|
912
|
+
tone?: Tone | undefined;
|
|
913
|
+
size?: "sm" | "md" | undefined;
|
|
914
|
+
id?: string | undefined;
|
|
915
|
+
className?: string | undefined;
|
|
910
916
|
}
|
|
911
917
|
export interface SkeletonProps {
|
|
912
|
-
variant?: "text" | "rect" | "circle";
|
|
918
|
+
variant?: "text" | "rect" | "circle" | undefined;
|
|
913
919
|
/** text only: number of lines (the last is shorter). */
|
|
914
|
-
lines?: number;
|
|
915
|
-
width?: number | string;
|
|
916
|
-
height?: number | string;
|
|
920
|
+
lines?: number | undefined;
|
|
921
|
+
width?: number | string | undefined;
|
|
922
|
+
height?: number | string | undefined;
|
|
917
923
|
/** circle diameter. */
|
|
918
|
-
size?: number;
|
|
919
|
-
className?: string;
|
|
924
|
+
size?: number | undefined;
|
|
925
|
+
className?: string | undefined;
|
|
920
926
|
}
|
|
921
927
|
export interface EmptyStateProps {
|
|
922
928
|
title: React$1.ReactNode;
|
|
923
|
-
description?: React$1.ReactNode;
|
|
924
|
-
icon?: IconInput;
|
|
929
|
+
description?: React$1.ReactNode | undefined;
|
|
930
|
+
icon?: IconInput | undefined;
|
|
925
931
|
/** One or two buttons. */
|
|
926
|
-
action?: React$1.ReactNode;
|
|
927
|
-
size?: "sm" | "md";
|
|
928
|
-
bordered?: boolean;
|
|
929
|
-
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
930
|
-
className?: string;
|
|
932
|
+
action?: React$1.ReactNode | undefined;
|
|
933
|
+
size?: "sm" | "md" | undefined;
|
|
934
|
+
bordered?: boolean | undefined;
|
|
935
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;
|
|
936
|
+
className?: string | undefined;
|
|
931
937
|
}
|
|
932
938
|
export interface PaginationProps {
|
|
933
939
|
pageCount: number;
|
|
934
940
|
/** 1-based, controlled; pair with onChange. Or defaultPage. */
|
|
935
|
-
page?: number;
|
|
936
|
-
defaultPage?: number;
|
|
937
|
-
onChange?: (page: number) => void;
|
|
941
|
+
page?: number | undefined;
|
|
942
|
+
defaultPage?: number | undefined;
|
|
943
|
+
onChange?: ((page: number) => void) | undefined;
|
|
938
944
|
/** Pages shown each side of the current one. Default 1. */
|
|
939
|
-
siblingCount?: number;
|
|
945
|
+
siblingCount?: number | undefined;
|
|
940
946
|
/** Render real links (SEO, open in new tab); onChange still runs for client routing. */
|
|
941
|
-
getHref?: (page: number) => string;
|
|
942
|
-
label?: string;
|
|
943
|
-
className?: string;
|
|
947
|
+
getHref?: ((page: number) => string) | undefined;
|
|
948
|
+
label?: string | undefined;
|
|
949
|
+
className?: string | undefined;
|
|
944
950
|
}
|
|
945
951
|
export interface AccordionItem {
|
|
946
952
|
id: string;
|
|
947
953
|
title: React$1.ReactNode;
|
|
948
|
-
description?: React$1.ReactNode;
|
|
954
|
+
description?: React$1.ReactNode | undefined;
|
|
949
955
|
content: React$1.ReactNode;
|
|
950
|
-
icon?: IconInput;
|
|
951
|
-
disabled?: boolean;
|
|
956
|
+
icon?: IconInput | undefined;
|
|
957
|
+
disabled?: boolean | undefined;
|
|
952
958
|
}
|
|
953
959
|
export interface AccordionProps {
|
|
954
960
|
items: AccordionItem[];
|
|
955
961
|
/** single (default): one open at a time. multiple: any number. */
|
|
956
|
-
type?: "single" | "multiple";
|
|
957
|
-
value?: string | null | string[];
|
|
958
|
-
defaultValue?: string | null | string[];
|
|
959
|
-
onChange?: (value: any) => void;
|
|
962
|
+
type?: "single" | "multiple" | undefined;
|
|
963
|
+
value?: string | null | string[] | undefined;
|
|
964
|
+
defaultValue?: string | null | string[] | undefined;
|
|
965
|
+
onChange?: ((value: any) => void) | undefined;
|
|
960
966
|
/** single only: false keeps one section always open. Default true. */
|
|
961
|
-
collapsible?: boolean;
|
|
962
|
-
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
963
|
-
id?: string;
|
|
964
|
-
className?: string;
|
|
967
|
+
collapsible?: boolean | undefined;
|
|
968
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;
|
|
969
|
+
id?: string | undefined;
|
|
970
|
+
className?: string | undefined;
|
|
965
971
|
}
|
|
966
972
|
export interface PopoverProps {
|
|
967
973
|
/** One element; it gets aria-haspopup, aria-expanded and the click toggle. */
|
|
@@ -969,27 +975,27 @@ export interface PopoverProps {
|
|
|
969
975
|
children: React$1.ReactNode | ((api: {
|
|
970
976
|
close: () => void;
|
|
971
977
|
}) => React$1.ReactNode);
|
|
972
|
-
title?: React$1.ReactNode;
|
|
978
|
+
title?: React$1.ReactNode | undefined;
|
|
973
979
|
/** Accessible name when there is no title. */
|
|
974
|
-
label?: string;
|
|
975
|
-
open?: boolean;
|
|
976
|
-
defaultOpen?: boolean;
|
|
977
|
-
onOpenChange?: (open: boolean) => void;
|
|
978
|
-
placement?: "bottom-start" | "bottom-end" | "bottom-center" | "top-start" | "top-end" | "top-center";
|
|
979
|
-
width?: number | string;
|
|
980
|
+
label?: string | undefined;
|
|
981
|
+
open?: boolean | undefined;
|
|
982
|
+
defaultOpen?: boolean | undefined;
|
|
983
|
+
onOpenChange?: ((open: boolean) => void) | undefined;
|
|
984
|
+
placement?: "bottom-start" | "bottom-end" | "bottom-center" | "top-start" | "top-end" | "top-center" | undefined;
|
|
985
|
+
width?: number | string | undefined;
|
|
980
986
|
/** Default true: focus moves to [data-autofocus] or the first control inside. */
|
|
981
|
-
autoFocus?: boolean;
|
|
982
|
-
id?: string;
|
|
983
|
-
className?: string;
|
|
987
|
+
autoFocus?: boolean | undefined;
|
|
988
|
+
id?: string | undefined;
|
|
989
|
+
className?: string | undefined;
|
|
984
990
|
}
|
|
985
991
|
export interface ThemeOptions {
|
|
986
992
|
/** The project's brand colour, #rgb or #rrggbb. Replaces AURA violet (links, focus ring, selection, info, progress, creative shadow in dark, mesh). */
|
|
987
993
|
brand: string;
|
|
988
994
|
/** Optional signal colour; replaces AURA lime in the accent dot and mesh only (success/ready stay green). */
|
|
989
|
-
signal?: string;
|
|
995
|
+
signal?: string | undefined;
|
|
990
996
|
/** ink (default): primary buttons stay zinc ink. brand: primary buttons use the brand colour. */
|
|
991
|
-
primary?: "ink" | "brand";
|
|
992
|
-
name?: string;
|
|
997
|
+
primary?: "ink" | "brand" | undefined;
|
|
998
|
+
name?: string | undefined;
|
|
993
999
|
}
|
|
994
1000
|
export interface ThemeCheck {
|
|
995
1001
|
theme: "light" | "dark";
|
|
@@ -1022,7 +1028,7 @@ export declare const iconNames: IconName[];
|
|
|
1022
1028
|
export interface ButtonComponent {
|
|
1023
1029
|
(props: ButtonLinkProps & React$1.RefAttributes<HTMLAnchorElement>): React$1.ReactElement | null;
|
|
1024
1030
|
(props: ButtonProps & React$1.RefAttributes<HTMLButtonElement>): React$1.ReactElement | null;
|
|
1025
|
-
displayName?: string;
|
|
1031
|
+
displayName?: string | undefined;
|
|
1026
1032
|
}
|
|
1027
1033
|
/** AURA pill button. Enterprise (`primary`, `secondary`) for product UI; `creative` for marketing moments only.
|
|
1028
1034
|
* With `href` it renders a link that looks the same (`<a>`, or your router's link via `linkComponent`). */
|
|
@@ -1039,15 +1045,15 @@ export declare const StatusPill: React$1.ForwardRefExoticComponent<StatusPillPro
|
|
|
1039
1045
|
/** Field: label, required/optional marks, the control, then the hint or error line. Wrap a custom control in it. */
|
|
1040
1046
|
export interface FieldComponentProps extends Omit<FieldPropsPublic, "label"> {
|
|
1041
1047
|
/** Visible label. Omit only when the control is labelled another way. */
|
|
1042
|
-
label?: React$1.ReactNode;
|
|
1048
|
+
label?: React$1.ReactNode | undefined;
|
|
1043
1049
|
/** The control's id: the label points at it, and the hint/error ids derive from it. */
|
|
1044
|
-
id?: string;
|
|
1045
|
-
children?: React$1.ReactNode;
|
|
1050
|
+
id?: string | undefined;
|
|
1051
|
+
children?: React$1.ReactNode | undefined;
|
|
1046
1052
|
/** Render the label as another element (e.g. `span` for a group of controls) with this id. */
|
|
1047
|
-
labelAs?: string;
|
|
1048
|
-
labelId?: string;
|
|
1049
|
-
disabled?: boolean;
|
|
1050
|
-
className?: string;
|
|
1053
|
+
labelAs?: string | undefined;
|
|
1054
|
+
labelId?: string | undefined;
|
|
1055
|
+
disabled?: boolean | undefined;
|
|
1056
|
+
className?: string | undefined;
|
|
1051
1057
|
}
|
|
1052
1058
|
export declare const Field: React$1.ForwardRefExoticComponent<FieldComponentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1053
1059
|
export declare const TextField: React$1.ForwardRefExoticComponent<TextFieldProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
@@ -1059,7 +1065,7 @@ export declare const Switch: React$1.ForwardRefExoticComponent<SwitchProps & Rea
|
|
|
1059
1065
|
export interface ComboboxComponent {
|
|
1060
1066
|
(props: ComboboxMultipleProps & React$1.RefAttributes<HTMLInputElement>): React$1.ReactElement | null;
|
|
1061
1067
|
(props: ComboboxProps & React$1.RefAttributes<HTMLInputElement>): React$1.ReactElement | null;
|
|
1062
|
-
displayName?: string;
|
|
1068
|
+
displayName?: string | undefined;
|
|
1063
1069
|
}
|
|
1064
1070
|
/** The Thai-aware default filter: label, description and keywords contain the query. */
|
|
1065
1071
|
declare function defaultFilter(option: ComboboxOption, query: string): boolean;
|
|
@@ -1067,7 +1073,7 @@ declare function defaultFilter(option: ComboboxOption, query: string): boolean;
|
|
|
1067
1073
|
export declare const Combobox: ComboboxComponent;
|
|
1068
1074
|
/** Options for formatDate: locale/calendar plus a preset or any Intl.DateTimeFormat options. */
|
|
1069
1075
|
export type FormatDateOptions = DateDisplayOptions & {
|
|
1070
|
-
format?: "short" | "long" | "numeric" | Intl.DateTimeFormatOptions;
|
|
1076
|
+
format?: "short" | "long" | "numeric" | Intl.DateTimeFormatOptions | undefined;
|
|
1071
1077
|
};
|
|
1072
1078
|
/** Format an ISO date for display, e.g. "18 ก.ย. 2569" (th, Buddhist) or "18 Sept 2026" (en, Gregorian). */
|
|
1073
1079
|
export declare function formatDate(iso: ISODate | null | undefined, opts?: FormatDateOptions): string;
|
|
@@ -1093,7 +1099,7 @@ export declare namespace toast {
|
|
|
1093
1099
|
}
|
|
1094
1100
|
export interface ToasterProps {
|
|
1095
1101
|
/** Default `bottom`. */
|
|
1096
|
-
position?: "bottom" | "top";
|
|
1102
|
+
position?: "bottom" | "top" | undefined;
|
|
1097
1103
|
}
|
|
1098
1104
|
export declare function Toaster(props: ToasterProps): React$1.ReactElement | null;
|
|
1099
1105
|
export declare const PasswordField: React$1.ForwardRefExoticComponent<PasswordFieldProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
@@ -1119,15 +1125,17 @@ export declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1
|
|
|
1119
1125
|
/** Centred page column. */
|
|
1120
1126
|
export interface ContainerProps {
|
|
1121
1127
|
/** `narrow` caps it at aura-container-narrow (720px). Default `default` (1280px). */
|
|
1122
|
-
size?: "default" | "narrow";
|
|
1123
|
-
as?: keyof React$1.JSX.IntrinsicElements;
|
|
1124
|
-
className?: string;
|
|
1125
|
-
style?: React$1.CSSProperties;
|
|
1126
|
-
children?: React$1.ReactNode;
|
|
1128
|
+
size?: "default" | "narrow" | undefined;
|
|
1129
|
+
as?: keyof React$1.JSX.IntrinsicElements | undefined;
|
|
1130
|
+
className?: string | undefined;
|
|
1131
|
+
style?: React$1.CSSProperties | undefined;
|
|
1132
|
+
children?: React$1.ReactNode | undefined;
|
|
1127
1133
|
}
|
|
1128
1134
|
/** Container — centres content up to aura-container-max (1280px) with responsive side padding. */
|
|
1129
1135
|
export declare const Container: React$1.ForwardRefExoticComponent<ContainerProps & React$1.RefAttributes<HTMLElement>>;
|
|
1130
|
-
/** AppShell — side navigation + top bar + content. The nav is fixed from lg (1024px) up and a Drawer below it.
|
|
1136
|
+
/** AppShell — side navigation + top bar + content. The nav is fixed from lg (1024px) up and a Drawer below it.
|
|
1137
|
+
* Which one shows is decided in CSS (4.16), so the server's HTML is already right on a phone and nothing shifts on
|
|
1138
|
+
* hydration; JavaScript only opens and closes the drawer. */
|
|
1131
1139
|
export declare const AppShell: React$1.ForwardRefExoticComponent<AppShellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1132
1140
|
/** Min-width breakpoints in px, mirroring the aura-bp-* tokens. */
|
|
1133
1141
|
export declare const breakpoints: {
|
|
@@ -1230,9 +1238,9 @@ export interface AuraLocaleValue {
|
|
|
1230
1238
|
calendar: "buddhist" | "gregory" | null;
|
|
1231
1239
|
strings: AuraStrings;
|
|
1232
1240
|
/** The router link set on AuraProvider, if any. */
|
|
1233
|
-
linkComponent?: React$1.ElementType | null;
|
|
1241
|
+
linkComponent?: React$1.ElementType | null | undefined;
|
|
1234
1242
|
/** The density set on the nearest AuraProvider that sets one (null: none, i.e. comfortable unless an ancestor's data-density says otherwise). */
|
|
1235
|
-
density?: "comfortable" | "compact" | null;
|
|
1243
|
+
density?: "comfortable" | "compact" | null | undefined;
|
|
1236
1244
|
}
|
|
1237
1245
|
/** Sets the language of built-in labels (and the default date locale) for everything inside. */
|
|
1238
1246
|
export declare function AuraProvider(props: AuraProviderProps): React$1.ReactElement;
|
|
@@ -1258,23 +1266,23 @@ declare function scale(hex: string): Theme["brand"];
|
|
|
1258
1266
|
export declare function createTheme(opts: ThemeOptions): Theme;
|
|
1259
1267
|
export interface ThemeStyleProps extends ThemeOptions {
|
|
1260
1268
|
/** Scope the theme to this selector instead of the whole page (multi-tenant). */
|
|
1261
|
-
selector?: string;
|
|
1269
|
+
selector?: string | undefined;
|
|
1262
1270
|
}
|
|
1263
1271
|
export declare function ThemeStyle(props: ThemeStyleProps): React$1.ReactElement;
|
|
1264
1272
|
/** `system` follows the operating system and changes with it. */
|
|
1265
1273
|
export type ColorScheme = "light" | "dark" | "system";
|
|
1266
1274
|
export interface ColorSchemeOptions {
|
|
1267
1275
|
/** localStorage key for the choice. Default `aura-color-scheme`. */
|
|
1268
|
-
storageKey?: string;
|
|
1276
|
+
storageKey?: string | undefined;
|
|
1269
1277
|
/** Used when nothing is saved. Default `system`. */
|
|
1270
|
-
defaultScheme?: ColorScheme;
|
|
1278
|
+
defaultScheme?: ColorScheme | undefined;
|
|
1271
1279
|
}
|
|
1272
1280
|
/** The script ColorSchemeScript renders, as a string — for frameworks that want it in a raw <head> template. */
|
|
1273
1281
|
export declare function colorSchemeScript(options?: ColorSchemeOptions): string;
|
|
1274
1282
|
/** Put in <head>: applies the saved colour scheme before the page paints. Server-rendering safe. */
|
|
1275
1283
|
export declare function ColorSchemeScript(props: ColorSchemeOptions & {
|
|
1276
1284
|
/** Nonce for a nonce-based Content-Security-Policy (script-src 'nonce-…'). */
|
|
1277
|
-
nonce?: string;
|
|
1285
|
+
nonce?: string | undefined;
|
|
1278
1286
|
}): React$1.ReactElement;
|
|
1279
1287
|
/** Current colour scheme and a setter. `resolved` is what is on screen (system resolved to light or dark). */
|
|
1280
1288
|
export interface ColorSchemeState {
|
|
@@ -1286,7 +1294,7 @@ export interface ColorSchemeState {
|
|
|
1286
1294
|
export declare function useColorScheme(options?: ColorSchemeOptions): ColorSchemeState;
|
|
1287
1295
|
export interface ColorSchemeToggleProps extends ColorSchemeOptions {
|
|
1288
1296
|
/** Accessible name of the button. Default: the built-in "Colour scheme" label. */
|
|
1289
|
-
label?: string;
|
|
1297
|
+
label?: string | undefined;
|
|
1290
1298
|
}
|
|
1291
1299
|
/** Icon button with a menu: Light, Dark, System. Shows a sun or a moon for what is on screen. */
|
|
1292
1300
|
export declare function ColorSchemeToggle(props: ColorSchemeToggleProps): React$1.ReactElement;
|