gridsmith-ui 0.26.0 → 0.28.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 +1010 -0
- package/README.md +21 -5
- package/dist/charts.d.ts +2 -2
- package/dist/charts.js +59 -44
- package/dist/charts.js.map +1 -1
- package/dist/chat.js +7 -6
- package/dist/chat.js.map +1 -1
- package/dist/{chunk-X2HEV7FB.js → chunk-2ROVDVLZ.js} +24 -34
- package/dist/chunk-2ROVDVLZ.js.map +1 -0
- package/dist/chunk-3BRQRKDO.js +1 -0
- package/dist/chunk-3BRQRKDO.js.map +1 -1
- package/dist/chunk-66JJCQU3.js +46 -0
- package/dist/chunk-66JJCQU3.js.map +1 -0
- package/dist/chunk-7Q46JXSK.js +1 -0
- package/dist/chunk-7Q46JXSK.js.map +1 -1
- package/dist/chunk-7RKC5C7G.js +35 -0
- package/dist/chunk-7RKC5C7G.js.map +1 -0
- package/dist/{chunk-OTCEJN64.js → chunk-BRAXJEEP.js} +8 -6
- package/dist/chunk-BRAXJEEP.js.map +1 -0
- package/dist/chunk-CRQ6KCRD.js +1 -0
- package/dist/chunk-CRQ6KCRD.js.map +1 -1
- package/dist/{chunk-MYIJNVTK.js → chunk-DQCHCLEJ.js} +11 -9
- package/dist/chunk-DQCHCLEJ.js.map +1 -0
- package/dist/{chunk-RWKCAKN3.js → chunk-EIWXVICU.js} +7 -6
- package/dist/chunk-EIWXVICU.js.map +1 -0
- package/dist/{chunk-SFY2KMHG.js → chunk-FD4YED7O.js} +6 -4
- package/dist/chunk-FD4YED7O.js.map +1 -0
- package/dist/{chunk-MD2EFMES.js → chunk-GXMTS3YD.js} +4 -3
- package/dist/chunk-GXMTS3YD.js.map +1 -0
- package/dist/chunk-HP7WUZPK.js +1 -0
- package/dist/chunk-HP7WUZPK.js.map +1 -1
- package/dist/chunk-HTXP5BMM.js +38 -0
- package/dist/chunk-HTXP5BMM.js.map +1 -0
- package/dist/chunk-NRHIYS5W.js +1 -0
- package/dist/chunk-NRHIYS5W.js.map +1 -1
- package/dist/{chunk-KWLNEH53.js → chunk-OPFJEL3Z.js} +59 -28
- package/dist/chunk-OPFJEL3Z.js.map +1 -0
- package/dist/chunk-OYNUU346.js +78 -0
- package/dist/chunk-OYNUU346.js.map +1 -0
- package/dist/chunk-QM4SJKWV.js +1 -0
- package/dist/chunk-QM4SJKWV.js.map +1 -1
- package/dist/{chunk-ZYVXV4WC.js → chunk-R4GXKH4U.js} +58 -11
- package/dist/chunk-R4GXKH4U.js.map +1 -0
- package/dist/{chunk-HXVXJUGV.js → chunk-TJEV7YAY.js} +38 -10
- package/dist/chunk-TJEV7YAY.js.map +1 -0
- package/dist/{chunk-EX64MN2U.js → chunk-TRDXWHD2.js} +8 -7
- package/dist/chunk-TRDXWHD2.js.map +1 -0
- package/dist/chunk-WH2FUFAC.js +1 -0
- package/dist/chunk-WH2FUFAC.js.map +1 -1
- package/dist/chunk-XVB55M3N.js +1 -0
- package/dist/chunk-XVB55M3N.js.map +1 -1
- package/dist/{chunk-CYN5O567.js → chunk-YUTF2X6B.js} +45 -22
- package/dist/chunk-YUTF2X6B.js.map +1 -0
- package/dist/chunk-ZI3OQDET.js +1 -0
- package/dist/chunk-ZI3OQDET.js.map +1 -1
- package/dist/data-grid.d.ts +1 -1
- package/dist/data-grid.js +21 -12
- package/dist/data-grid.js.map +1 -1
- package/dist/editor-mentions.js +3 -2
- package/dist/editor-mentions.js.map +1 -1
- package/dist/editor.js +47 -26
- package/dist/editor.js.map +1 -1
- package/dist/{feather-VFWLAILO.js → feather-FNBQ74RR.js} +10 -17
- package/dist/feather-FNBQ74RR.js.map +1 -0
- package/dist/{heroicons-H3Z7DFCF.js → heroicons-DODCSYWD.js} +9 -8
- package/dist/heroicons-DODCSYWD.js.map +1 -0
- package/dist/icons.d.ts +31 -4
- package/dist/icons.js +2 -1
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +456 -66
- package/dist/index.js +2264 -1091
- package/dist/index.js.map +1 -1
- package/dist/kanban.js +20 -12
- package/dist/kanban.js.map +1 -1
- package/dist/{lucide-MR32KM4G.js → lucide-ZWE3EPGP.js} +9 -8
- package/dist/lucide-ZWE3EPGP.js.map +1 -0
- package/dist/{phosphor-ABQQL5N5.js → phosphor-DIHPA4AJ.js} +9 -8
- package/dist/phosphor-DIHPA4AJ.js.map +1 -0
- package/dist/resizable.js +24 -17
- package/dist/resizable.js.map +1 -1
- package/dist/roots.css +116 -22
- package/dist/{tabler-ANUSY4D2.js → tabler-D3VYTSGI.js} +9 -8
- package/dist/tabler-D3VYTSGI.js.map +1 -0
- package/dist/tokens.css +122 -34
- package/dist/{use-pagination-BnKOnBdz.d.ts → use-pagination-BxcRlNQG.d.ts} +6 -0
- package/dist/utils.d.ts +321 -5
- package/dist/utils.js +885 -1
- package/dist/utils.js.map +1 -1
- package/dist/virtualized.d.ts +1 -1
- package/dist/virtualized.js +20 -12
- package/dist/virtualized.js.map +1 -1
- package/dist-static/tokens.css +122 -34
- package/package.json +5 -3
- package/dist/chunk-CYN5O567.js.map +0 -1
- package/dist/chunk-EX64MN2U.js.map +0 -1
- package/dist/chunk-HXVXJUGV.js.map +0 -1
- package/dist/chunk-KWLNEH53.js.map +0 -1
- package/dist/chunk-M2QRNBDQ.js +0 -41
- package/dist/chunk-M2QRNBDQ.js.map +0 -1
- package/dist/chunk-MD2EFMES.js.map +0 -1
- package/dist/chunk-MYIJNVTK.js.map +0 -1
- package/dist/chunk-OTCEJN64.js.map +0 -1
- package/dist/chunk-RWKCAKN3.js.map +0 -1
- package/dist/chunk-SFY2KMHG.js.map +0 -1
- package/dist/chunk-X2HEV7FB.js.map +0 -1
- package/dist/chunk-ZYVXV4WC.js.map +0 -1
- package/dist/feather-VFWLAILO.js.map +0 -1
- package/dist/heroicons-H3Z7DFCF.js.map +0 -1
- package/dist/lucide-MR32KM4G.js.map +0 -1
- package/dist/phosphor-ABQQL5N5.js.map +0 -1
- package/dist/tabler-ANUSY4D2.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
5
5
|
import { M as MentionSuggestion } from './MentionList-CoNBRFGR.js';
|
|
6
6
|
import { C as ColumnKind, B as BreakpointKey } from './table-utils-BkjNEWts.js';
|
|
7
7
|
export { a as BreakpointWidthProvider, u as useBreakpoint } from './table-utils-BkjNEWts.js';
|
|
8
|
-
import { P as Pager, A as AppShellPreferences } from './use-pagination-
|
|
9
|
-
export { a as PaginationOptions, b as PreferencesContext, R as ResolvedPreferences, p as preferenceActionKey, u as usePagination, c as usePreferences } from './use-pagination-
|
|
8
|
+
import { P as Pager, A as AppShellPreferences } from './use-pagination-BxcRlNQG.js';
|
|
9
|
+
export { a as PaginationOptions, b as PreferencesContext, R as ResolvedPreferences, p as preferenceActionKey, u as usePagination, c as usePreferences } from './use-pagination-BxcRlNQG.js';
|
|
10
10
|
export { B as BreadcrumbItem, a as Breadcrumbs, b as BreadcrumbsSeparator, c as BreadcrumbsSize, d as BreadcrumbsVariant } from './Breadcrumbs-CGS8GKl-.js';
|
|
11
11
|
|
|
12
12
|
type ButtonVariant = "default" | "secondary" | "tertiary" | "outline" | "ghost" | "destructive" | "success" | "warning" | "link";
|
|
@@ -216,24 +216,38 @@ interface ComboboxProps extends FieldControlWiring {
|
|
|
216
216
|
}
|
|
217
217
|
declare function Combobox({ value, onChange: onChangeProp, options, placeholder, disabled, loading, className, ref, container, error, size: sizeProp, "aria-label": ariaLabel, ...wiring }: ComboboxProps): react_jsx_runtime.JSX.Element;
|
|
218
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Time zones by the browser's own names, and their offsets (Sprint 25.17 A28), apart from the TimezoneSelect component since
|
|
221
|
+
* Sprint 25.22 so a server can call them: nothing here needs React. `gridsmith-ui/utils` exports canonicalTimeZone and
|
|
222
|
+
* timeZoneOffset for server code; browserTimeZone reads the zone of whatever runs it, a server's own there.
|
|
223
|
+
*/
|
|
219
224
|
/**
|
|
220
225
|
* The browser's own name for a zone (Sprint 25.17 A28, R28-51): one browser always names a zone one way, so a stored
|
|
221
226
|
* "Asia/Calcutta" and a listed "Asia/Kolkata" are one zone, with no alias table shipped. An id the browser doesn't know
|
|
222
227
|
* stays as given.
|
|
223
228
|
*/
|
|
224
229
|
declare function canonicalTimeZone(zone: string): string;
|
|
225
|
-
/** The browser's time zone, by its own name; "UTC" where the browser names none. */
|
|
230
|
+
/** The browser's time zone, by its own name; "UTC" where the browser names none. On a server, the server's zone. */
|
|
226
231
|
declare function browserTimeZone(): string;
|
|
227
232
|
/**
|
|
228
|
-
* A zone's offset from UTC at an instant, as the
|
|
229
|
-
* instant, so it follows daylight saving.
|
|
233
|
+
* A zone's offset from UTC at an instant, as the locale given names it ("GMT+1", "GMT-5", "GMT+5:30"; a component's
|
|
234
|
+
* useFormatLocale(), else the browser's reading): read at that instant, so it follows daylight saving.
|
|
235
|
+
*/
|
|
236
|
+
declare function timeZoneOffset(zone: string, at?: Date, locale?: string | undefined): string;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The visitor's time zone, once the browser has the page (Sprint 25.20 D3): undefined on a server and while hydrating,
|
|
240
|
+
* where browserTimeZone() would read the server's own. A settings page calls it at its top, starts its state from the
|
|
241
|
+
* stored zone and shows this one where none is stored, `value={zone ?? browserZone}`, saving `zone ?? browserZone`.
|
|
230
242
|
*/
|
|
231
|
-
declare function
|
|
243
|
+
declare function useBrowserTimeZone(): string | undefined;
|
|
232
244
|
interface TimezoneSelectProps extends FieldControlWiring {
|
|
233
245
|
/**
|
|
234
246
|
* The stored zone, an IANA id ("Europe/London"). Empty: the field is empty, and the browser's zone is the list's first
|
|
235
|
-
* option, marked as the user's, to pick with one key.
|
|
236
|
-
*
|
|
247
|
+
* option, marked as the user's, to pick with one key. To show the browser's as chosen: `const browserZone =
|
|
248
|
+
* useBrowserTimeZone()` at the component's top (a hook, never behind `??`), the state from the stored zone, then
|
|
249
|
+
* `value={zone ?? browserZone}`, and save and check `zone ?? browserZone`, the zone the field shows (it is undefined
|
|
250
|
+
* until the browser has the page).
|
|
237
251
|
*/
|
|
238
252
|
value?: string;
|
|
239
253
|
/** Called with the chosen zone's id, by the browser's own name. */
|
|
@@ -253,6 +267,11 @@ interface TimezoneSelectProps extends FieldControlWiring {
|
|
|
253
267
|
*/
|
|
254
268
|
declare function TimezoneSelect({ value, onChange, placeholder, ...rest }: TimezoneSelectProps): react_jsx_runtime.JSX.Element;
|
|
255
269
|
|
|
270
|
+
/**
|
|
271
|
+
* Times as people read them, relative or in full (Sprint 25.17 A29), apart from the RelativeTime component since Sprint
|
|
272
|
+
* 25.22 (nothing here needs React). Not on `gridsmith-ui/utils` (that sprint's review): a relative time and a full one
|
|
273
|
+
* depend on the visitor's clock and time zone, which a server doesn't know, so a server page hands RelativeTime the time.
|
|
274
|
+
*/
|
|
256
275
|
/** A time: an ISO string, a Date, or milliseconds since the epoch. */
|
|
257
276
|
type TimeValue = string | Date | number;
|
|
258
277
|
/**
|
|
@@ -264,15 +283,22 @@ type TimeValue = string | Date | number;
|
|
|
264
283
|
declare function formatRelativeTime(time: TimeValue, options: {
|
|
265
284
|
thresholdHours: number;
|
|
266
285
|
now?: number;
|
|
286
|
+
locale?: string;
|
|
267
287
|
}): string;
|
|
288
|
+
/**
|
|
289
|
+
* The full timestamp, as the tooltip and a screen reader give it: the date, the time and its zone, in the locale given
|
|
290
|
+
* (a component's useFormatLocale()), else the browser's reading.
|
|
291
|
+
*/
|
|
292
|
+
declare function formatFullTime(time: TimeValue, locale?: string): string;
|
|
293
|
+
|
|
268
294
|
/**
|
|
269
295
|
* formatRelativeTime with the project's threshold, the shell's (dateTime.relativeThresholdHours), for a time drawn as
|
|
270
296
|
* text in a slot that takes a string: a Timeline item's `timestamp`, with the time itself as its `dateTime` so the exact
|
|
271
|
-
* time shows on hover. The text is read when the page renders; RelativeTime draws a time that refreshes as it ages.
|
|
297
|
+
* time shows on hover. The text is read when the page renders; RelativeTime draws a time that refreshes as it ages. It
|
|
298
|
+
* depends on the visitor's clock and time zone, which a server doesn't know, so it is empty until the browser has the
|
|
299
|
+
* page (Sprint 25.20 D3).
|
|
272
300
|
*/
|
|
273
301
|
declare function useRelativeTimeFormat(): (time: TimeValue) => string;
|
|
274
|
-
/** The full timestamp, as the tooltip and a screen reader give it: the date, the time and its zone, in the page's language. */
|
|
275
|
-
declare function formatFullTime(time: TimeValue): string;
|
|
276
302
|
interface RelativeTimeProps {
|
|
277
303
|
/** The time: an ISO string, a Date, or milliseconds since the epoch. */
|
|
278
304
|
time: TimeValue;
|
|
@@ -328,6 +354,12 @@ interface RadioOption {
|
|
|
328
354
|
value: string;
|
|
329
355
|
label: string;
|
|
330
356
|
disabled?: boolean;
|
|
357
|
+
/**
|
|
358
|
+
* What the option asks for next, shown under it while it is chosen (GOV.UK's conditional reveal; Sprint 25.19 R2):
|
|
359
|
+
* "On a date" shows its date, "After a number of times" its number. It sits under the option, never inside the
|
|
360
|
+
* radio, and Tab reaches it from the option. Give its field a label of its own.
|
|
361
|
+
*/
|
|
362
|
+
reveal?: ReactNode;
|
|
331
363
|
}
|
|
332
364
|
/** A Field passes its wiring (0.21.0): its label names the group, and its hint and error describe it. */
|
|
333
365
|
interface RadioGroupProps extends FieldControlWiring {
|
|
@@ -340,6 +372,9 @@ interface RadioGroupProps extends FieldControlWiring {
|
|
|
340
372
|
}
|
|
341
373
|
declare function RadioGroup({ value, onChange: onChangeProp, options, orientation, className, label, ...wiring }: RadioGroupProps): react_jsx_runtime.JSX.Element;
|
|
342
374
|
|
|
375
|
+
/** A day of the week as `Date.getDay()` counts them: Sunday 0, Monday 1 … Saturday 6. */
|
|
376
|
+
type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
377
|
+
|
|
343
378
|
interface DatePickerProps extends Omit<FieldControlWiring, "id"> {
|
|
344
379
|
value: Date | null;
|
|
345
380
|
onChange: (date: Date | null) => void;
|
|
@@ -366,8 +401,10 @@ interface DatePickerProps extends Omit<FieldControlWiring, "id"> {
|
|
|
366
401
|
start?: Date | null;
|
|
367
402
|
end?: Date | null;
|
|
368
403
|
};
|
|
404
|
+
/** The week's first day, Sunday 0 to Saturday 6. Default: the first day of the visitor's week, from their browser's languages, then the page's language, then Monday (gridsmith-ui 0.27.0); Sunday before. */
|
|
405
|
+
weekStartsOn?: Weekday;
|
|
369
406
|
}
|
|
370
|
-
declare function DatePicker({ value, onChange: onChangeProp, placeholder, disabled, className, ref, container, error, label, id, size: sizeProp, min, max, range, ...wiring }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
407
|
+
declare function DatePicker({ value, onChange: onChangeProp, placeholder, disabled, className, ref, container, error, label, id, size: sizeProp, min, max, range, weekStartsOn: weekStartsOnProp, ...wiring }: DatePickerProps): react_jsx_runtime.JSX.Element;
|
|
371
408
|
|
|
372
409
|
interface DateRange {
|
|
373
410
|
start: Date | null;
|
|
@@ -395,8 +432,8 @@ interface DateRangePickerProps extends Omit<FieldControlWiring, "id"> {
|
|
|
395
432
|
max?: Date;
|
|
396
433
|
/** Quick ranges listed beside the calendars. Pass [] to hide; omit for the defaults. */
|
|
397
434
|
presets?: DateRangePreset[];
|
|
398
|
-
/**
|
|
399
|
-
weekStartsOn?:
|
|
435
|
+
/** The week's first day, Sunday 0 to Saturday 6. Default: the first day of the visitor's week, from their browser's languages, then the page's language, then Monday (gridsmith-ui 0.27.0); Sunday before. */
|
|
436
|
+
weekStartsOn?: Weekday;
|
|
400
437
|
size?: ControlSize;
|
|
401
438
|
}
|
|
402
439
|
declare const DEFAULT_DATE_RANGE_PRESETS: DateRangePreset[];
|
|
@@ -406,7 +443,231 @@ declare const DEFAULT_DATE_RANGE_PRESETS: DateRangePreset[];
|
|
|
406
443
|
* the end (clicking before the start restarts the selection). Closes on
|
|
407
444
|
* Escape or outside click. Pair with <Field> for label/hint/error wiring.
|
|
408
445
|
*/
|
|
409
|
-
declare function DateRangePicker({ value, onChange: onChangeProp, placeholder, disabled, error, label, id, className, ref, container, min, max, presets, weekStartsOn, size: sizeProp, ...wiring }: DateRangePickerProps): react_jsx_runtime.JSX.Element;
|
|
446
|
+
declare function DateRangePicker({ value, onChange: onChangeProp, placeholder, disabled, error, label, id, className, ref, container, min, max, presets, weekStartsOn: weekStartsOnProp, size: sizeProp, ...wiring }: DateRangePickerProps): react_jsx_runtime.JSX.Element;
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* How something repeats (Sprint 25.19 R1): the iCalendar standard's rule (RFC 5545 `RRULE`), in the subset Outlook's and
|
|
450
|
+
* Google's menus write (P5), read in the event's local time. The quick choices are stored in the standard's implied form
|
|
451
|
+
* (P6): a weekly rule with no `weekdays`, a monthly rule with no `day` or `nth` and a bare yearly rule repeat on the
|
|
452
|
+
* start's own weekday, date or anniversary, so moving the event moves them. The event's own start is always its first
|
|
453
|
+
* occurrence.
|
|
454
|
+
*/
|
|
455
|
+
type RecurrenceFrequency = "daily" | "weekly" | "monthly" | "yearly";
|
|
456
|
+
/** An nth weekday of a month: the first to the fourth, or the last (−1). A fifth weekday is the last. */
|
|
457
|
+
type WeekOfMonth = 1 | 2 | 3 | 4 | -1;
|
|
458
|
+
interface Recurrence {
|
|
459
|
+
freq: RecurrenceFrequency;
|
|
460
|
+
/** Every n days, weeks, months or years. Default 1. */
|
|
461
|
+
interval?: number;
|
|
462
|
+
/** Weekly: the days it repeats on, Sunday 0 to Saturday 6. Left out, the start's own weekday. */
|
|
463
|
+
weekdays?: Weekday[];
|
|
464
|
+
/** Monthly, or yearly with `month`: a day of the month, 1 to 31, or −1 for the last day. A month without the day is skipped. */
|
|
465
|
+
day?: number;
|
|
466
|
+
/** Monthly, or yearly with `month`: an nth weekday, `{ week: 1, weekday: 2 }` the first Tuesday. */
|
|
467
|
+
nth?: {
|
|
468
|
+
week: WeekOfMonth;
|
|
469
|
+
weekday: Weekday;
|
|
470
|
+
};
|
|
471
|
+
/** Yearly: the month, 1 to 12, with `day` or `nth`. A bare yearly rule repeats on the start's anniversary. */
|
|
472
|
+
month?: number;
|
|
473
|
+
/** The week's first day (WKST), which places a weekly rule's weeks. Default Monday, as RFC 5545 says. */
|
|
474
|
+
weekStart?: Weekday;
|
|
475
|
+
/**
|
|
476
|
+
* The last moment it occurs. A date at midnight includes its whole day ("until 30 November"); an all-day event's is a
|
|
477
|
+
* date. RecurrencePicker stores the end of the chosen day, which other apps read exactly. Left out with `count`, it
|
|
478
|
+
* never ends. A rule read back from JSON may carry it as a string: the library reads it as the date it was.
|
|
479
|
+
*/
|
|
480
|
+
until?: Date;
|
|
481
|
+
/** How many times it occurs, the first included, and the excluded dates among them (RFC 5545). */
|
|
482
|
+
count?: number;
|
|
483
|
+
}
|
|
484
|
+
/** The fields a repeating event carries; a Calendar event has them as `repeat` and `exceptions` (P12: never `recurrence`). */
|
|
485
|
+
interface RepeatingEvent {
|
|
486
|
+
id: string;
|
|
487
|
+
start: Date;
|
|
488
|
+
end?: Date;
|
|
489
|
+
allDay?: boolean;
|
|
490
|
+
/** The rule, or a rule string `parseRRule` reads ("RRULE:FREQ=WEEKLY;BYDAY=TU,TH"). */
|
|
491
|
+
repeat?: Recurrence | string;
|
|
492
|
+
/** The dates left out, as day keys in local time ("2026-10-20"): the original date of each occurrence removed or moved. */
|
|
493
|
+
exceptions?: string[];
|
|
494
|
+
/**
|
|
495
|
+
* On an occurrence, its series' id and its original date (a day key), as RFC 5545's RECURRENCE-ID links an edited
|
|
496
|
+
* instance to its series. Each occurrence `occurrences` gives carries it, and so does an occurrence changed on its own
|
|
497
|
+
* ("This event"), which the page stores under an id of its own: the series leaves the date out, and the edit helpers
|
|
498
|
+
* find it by its link.
|
|
499
|
+
*/
|
|
500
|
+
series?: {
|
|
501
|
+
id: string;
|
|
502
|
+
date: string;
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
/** Which occurrences a change or a deletion applies to: this one, it and the ones after it, or the whole series. */
|
|
506
|
+
type RecurrenceScope = "this" | "following" | "all";
|
|
507
|
+
/**
|
|
508
|
+
* What a choice in RecurrenceScopeDialog does to the page's events: `events`, the list as it now is, for a page that
|
|
509
|
+
* keeps its events in state; or `save`, the events to write (new or changed, each by its id), and `remove`, the ids to
|
|
510
|
+
* delete, for a page that stores them elsewhere.
|
|
511
|
+
*/
|
|
512
|
+
interface RepeatChange<T> {
|
|
513
|
+
events: T[];
|
|
514
|
+
save: T[];
|
|
515
|
+
remove: string[];
|
|
516
|
+
}
|
|
517
|
+
/** One occurrence of a series: the event without its repeat fields, its own id, start and end, and where it came from. */
|
|
518
|
+
type Occurrence<T extends RepeatingEvent> = Omit<T, "repeat" | "exceptions"> & {
|
|
519
|
+
id: string;
|
|
520
|
+
start: Date;
|
|
521
|
+
end?: Date;
|
|
522
|
+
/** The series' id and this occurrence's original date (a day key), which the edit helpers take. */
|
|
523
|
+
series: {
|
|
524
|
+
id: string;
|
|
525
|
+
date: string;
|
|
526
|
+
};
|
|
527
|
+
};
|
|
528
|
+
/**
|
|
529
|
+
* The rule a string holds, or null when it is outside P5's subset (the event is then drawn once, its rule kept as written):
|
|
530
|
+
* FREQ, INTERVAL and WKST; weekly BYDAY days; a monthly or yearly BYMONTHDAY, or one nth BYDAY ("1TU", or "TU" with
|
|
531
|
+
* BYSETPOS=1); a yearly BYMONTH with either; UNTIL (a date, a floating or a UTC date-time) or COUNT. The "RRULE:" prefix
|
|
532
|
+
* is optional. A daily rule with days (every weekday, as some apps write it) reads as weekly on them.
|
|
533
|
+
*/
|
|
534
|
+
declare function parseRRule(text: string): Recurrence | null;
|
|
535
|
+
/**
|
|
536
|
+
* The rule as an RRULE string, "RRULE:FREQ=…", for an iCalendar file or another app. UNTIL is written as a date for an
|
|
537
|
+
* all-day event and in UTC for a timed one, as RFC 5545 asks.
|
|
538
|
+
*/
|
|
539
|
+
declare function toRRule(rule: Recurrence, { allDay }?: {
|
|
540
|
+
allDay?: boolean;
|
|
541
|
+
}): string;
|
|
542
|
+
/**
|
|
543
|
+
* A rule from a value: the object itself, the rule a string holds, or null for an unreadable string or none. A rule read
|
|
544
|
+
* back from JSON (storage, an API) has its end as a string, which is read as the date it was; an end that isn't a date
|
|
545
|
+
* makes the rule unreadable, so the event is drawn once rather than guessed at.
|
|
546
|
+
*/
|
|
547
|
+
declare function readRecurrence(value: Recurrence | string | undefined | null): Recurrence | null;
|
|
548
|
+
/** The nth weekday a date is: the last when it is in its month's last seven days (a fifth Tuesday is the last). */
|
|
549
|
+
declare function nthOf(date: Date): {
|
|
550
|
+
week: WeekOfMonth;
|
|
551
|
+
weekday: Weekday;
|
|
552
|
+
};
|
|
553
|
+
/**
|
|
554
|
+
* Every occurrence of a repeating event that overlaps [from, to), in order: the event without its repeat fields, each
|
|
555
|
+
* with the id "<id>::<date>", its own start and end (the same wall-clock times and number of days) and `series`, its
|
|
556
|
+
* original date. Its excluded dates are left out. An event that doesn't repeat, or whose rule can't be read, is itself,
|
|
557
|
+
* when it overlaps.
|
|
558
|
+
*/
|
|
559
|
+
declare function occurrences<T extends RepeatingEvent>(event: T, from: Date, to: Date): Array<T | Occurrence<T>>;
|
|
560
|
+
/**
|
|
561
|
+
* The occurrence of a series on a day (a day key), or undefined when it has none that day (the rule skips it, or it is
|
|
562
|
+
* excluded): for a page whose Edit has an address of its own, which carries the series' id and the date. Given the
|
|
563
|
+
* page's events, an occurrence changed on its own on that date ("This event") is found too.
|
|
564
|
+
*/
|
|
565
|
+
declare function occurrenceOn<T extends RepeatingEvent>(series: T, date: string, events?: readonly T[]): Occurrence<T> | undefined;
|
|
566
|
+
/**
|
|
567
|
+
* Saves the user's edit to an occurrence, for the scope they chose in RecurrenceScopeDialog: the page stores what it
|
|
568
|
+
* returns. `occurrence` is the event they opened, one the Calendar handed over or one changed on its own before (the
|
|
569
|
+
* page's own); `changes` the form's fields, every one or only those changed (only what differs from the opened event
|
|
570
|
+
* applies); `newId` an id of the page's, for the event or the series a choice makes.
|
|
571
|
+
* - "This event": the occurrence becomes an event of its own, linked to its series by `series`, its date left out of the
|
|
572
|
+
* series; one changed on its own before just takes the edit.
|
|
573
|
+
* - "This and following events": the series ends the day before and a new one starts on the date, under `newId`, with
|
|
574
|
+
* the edit; the events changed on their own from the date on go with it.
|
|
575
|
+
* - "All events": the series takes the edit, and a moved time or day moves it and its rule, so every earlier date stays.
|
|
576
|
+
* The events changed on their own keep what they changed themselves (a field, another day, other times) and follow the
|
|
577
|
+
* rest. A changed repeat removes them, as Outlook does, and their dates go back to the new rule (RecurrenceScopeDialog's
|
|
578
|
+
* `edited` says so first); a deleted date stays deleted.
|
|
579
|
+
*/
|
|
580
|
+
declare function saveOccurrence<T extends RepeatingEvent>(events: readonly T[], occurrence: Occurrence<T> | T, scope: RecurrenceScope, changes: Partial<T>, newId: string): RepeatChange<T>;
|
|
581
|
+
/**
|
|
582
|
+
* Deletes an occurrence, for the scope the user chose in RecurrenceScopeDialog: the page stores what it returns. "This
|
|
583
|
+
* event" leaves its date out of the series (an event changed on its own is removed, and its date stays empty); "This
|
|
584
|
+
* and following events" ends the series the day before and removes the events changed on their own from the date on;
|
|
585
|
+
* "All events" removes the series and every event changed on its own.
|
|
586
|
+
*/
|
|
587
|
+
declare function deleteOccurrence<T extends RepeatingEvent>(events: readonly T[], occurrence: Occurrence<T> | T, scope: RecurrenceScope): RepeatChange<T>;
|
|
588
|
+
/**
|
|
589
|
+
* How many of a series' events changed on their own each scope covers, for RecurrenceScopeDialog's `edited`: "This and
|
|
590
|
+
* following events" those from the occurrence's date on, "All events" every one.
|
|
591
|
+
*/
|
|
592
|
+
declare function countEdited<T extends RepeatingEvent>(events: readonly T[], occurrence: Occurrence<T> | T): {
|
|
593
|
+
following: number;
|
|
594
|
+
all: number;
|
|
595
|
+
};
|
|
596
|
+
/**
|
|
597
|
+
* The rule in words, for its date: "Every week on Tuesday and Thursday, until 30 November 2026", "Every month on the
|
|
598
|
+
* first Tuesday", "Every year on 6 October". The days and dates are written in the locale given (a component's
|
|
599
|
+
* useFormatLocale(), Sprint 25.20), else the browser's reading of the page's language.
|
|
600
|
+
*/
|
|
601
|
+
declare function describeRecurrence(rule: Recurrence, start: Date, locale?: string | undefined): string;
|
|
602
|
+
interface RecurrencePreset {
|
|
603
|
+
/** The choice in words, as describeRecurrence writes it for the date. */
|
|
604
|
+
label: string;
|
|
605
|
+
rule: Recurrence;
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* The quick choices for a date, each one including it (P6): every day; every weekday, for a weekday; every week on its
|
|
609
|
+
* weekday; every month on its nth weekday (the fourth and "the last" both for a fourth one in a month's last seven days,
|
|
610
|
+
* only "the last" for a fifth); every month on its date, and on the last day when it is one; every year on its
|
|
611
|
+
* anniversary. The weekly, monthly-by-date and yearly choices are the
|
|
612
|
+
* implied form, so they follow the date when the event moves.
|
|
613
|
+
*/
|
|
614
|
+
declare function recurrencePresets(start: Date, locale?: string | undefined): RecurrencePreset[];
|
|
615
|
+
/** Whether two rules repeat the same way (an `until` compared by its moment). */
|
|
616
|
+
declare function sameRecurrence(a: Recurrence | null | undefined, b: Recurrence | null | undefined): boolean;
|
|
617
|
+
|
|
618
|
+
interface RecurrencePickerProps extends FieldControlWiring {
|
|
619
|
+
/**
|
|
620
|
+
* The rule; a rule string from another app (RFC 5545's RRULE), read as a rule when the library can show it, and kept
|
|
621
|
+
* as written, shown as "Custom repeat", when it can't; or null for "Does not repeat".
|
|
622
|
+
*/
|
|
623
|
+
value: Recurrence | string | null;
|
|
624
|
+
/** The new rule, or null. A rule string the field can't show is never changed unless the user chooses another. */
|
|
625
|
+
onChange: (value: Recurrence | null) => void;
|
|
626
|
+
/** The event's start: the quick choices are its own, and an end date comes after it. */
|
|
627
|
+
start: Date;
|
|
628
|
+
/** Standalone, the field's label: default "Repeat". In a Field, the Field's label names it. */
|
|
629
|
+
label?: string;
|
|
630
|
+
/** The week's first day for the days of a weekly repeat. Default: the visitor's, as the Calendar's. */
|
|
631
|
+
weekStartsOn?: Weekday;
|
|
632
|
+
className?: string;
|
|
633
|
+
}
|
|
634
|
+
declare function RecurrencePicker({ value, onChange: onChangeProp, start, label, weekStartsOn, className, ...wiring }: RecurrencePickerProps): react_jsx_runtime.JSX.Element;
|
|
635
|
+
|
|
636
|
+
interface RecurrenceScopeDialogProps {
|
|
637
|
+
open: boolean;
|
|
638
|
+
/** The question, in the action's words: "Delete Stand-up?", "Save changes to Stand-up?". */
|
|
639
|
+
title: string;
|
|
640
|
+
/** The action's own word, the button that goes ahead: "Delete", "Save". */
|
|
641
|
+
verb: string;
|
|
642
|
+
/** A deletion: the button is red, and Enter in the dialog never goes ahead (Cancel is the default). */
|
|
643
|
+
destructive?: boolean;
|
|
644
|
+
/**
|
|
645
|
+
* The edit changes how it repeats: one occurrence can't take a rule of its own, so "This event" isn't offered, and
|
|
646
|
+
* "This and following events" is the default (as Google asks). Pass `!sameRecurrence(readRecurrence(edited.repeat),
|
|
647
|
+
* readRecurrence(series.repeat))`; never for a deletion.
|
|
648
|
+
*/
|
|
649
|
+
repeatChanged?: boolean;
|
|
650
|
+
/**
|
|
651
|
+
* How many of the series' events were changed on their own ("This event") that each choice covers: pass
|
|
652
|
+
* `countEdited(events, occurrence)`. With repeatChanged, the dialog says that the chosen one undoes their changes, as
|
|
653
|
+
* Outlook warns before it does.
|
|
654
|
+
*/
|
|
655
|
+
edited?: {
|
|
656
|
+
following: number;
|
|
657
|
+
all: number;
|
|
658
|
+
};
|
|
659
|
+
/** The scope chosen, when the user goes ahead. The page then changes its events with saveOccurrence or deleteOccurrence. */
|
|
660
|
+
onChoose: (scope: RecurrenceScope) => void;
|
|
661
|
+
/** Nothing changes; focus goes back to what opened the dialog. */
|
|
662
|
+
onCancel: () => void;
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
665
|
+
* One repeat or the series (Sprint 25.19 R4, P7): what Outlook and Google ask when an occurrence of a repeating event is
|
|
666
|
+
* changed or deleted. "This event", the default, "This and following events" or "All events", and the action's own
|
|
667
|
+
* button beside Cancel, in the Dialog's footer. The data side is the library's: saveOccurrence and deleteOccurrence. An
|
|
668
|
+
* edit that changes how it repeats offers only the last two, and says when one undoes events changed on their own.
|
|
669
|
+
*/
|
|
670
|
+
declare function RecurrenceScopeDialog({ open, title, verb, destructive, repeatChanged, edited, onChoose, onCancel }: RecurrenceScopeDialogProps): react_jsx_runtime.JSX.Element;
|
|
410
671
|
|
|
411
672
|
type FileUploadStatus = "added" | "queued" | "uploading" | "done" | "error";
|
|
412
673
|
/** One file in the list: the page's own (`files`), or FileUpload's (the file was picked here). */
|
|
@@ -1073,6 +1334,24 @@ interface CalendarEvent {
|
|
|
1073
1334
|
location?: string;
|
|
1074
1335
|
/** The people attending, named in the event's card (gridsmith-ui 0.26.0 or later). */
|
|
1075
1336
|
attendees?: CalendarEventAttendee[];
|
|
1337
|
+
/**
|
|
1338
|
+
* How it repeats (gridsmith-ui 0.27.0 or later): the rule RecurrencePicker gives, or an iCalendar RRULE string from
|
|
1339
|
+
* another app ("RRULE:FREQ=WEEKLY;BYDAY=TU,TH"). The Calendar draws every occurrence in every view; a rule it can't read
|
|
1340
|
+
* draws the event once, its card saying it repeats. A field of the app's own named `recurrence` is not read.
|
|
1341
|
+
*/
|
|
1342
|
+
repeat?: Recurrence | string;
|
|
1343
|
+
/** The dates a repeating event leaves out, as day keys in local time ("2026-10-20"): an occurrence deleted or moved. */
|
|
1344
|
+
exceptions?: string[];
|
|
1345
|
+
/**
|
|
1346
|
+
* On an occurrence of a repeating event: its series' id and its original date. The Calendar hands each occurrence to
|
|
1347
|
+
* eventActions and onEventClick with it, under its own id, "<series id>::<date>". An occurrence changed on its own
|
|
1348
|
+
* ("This event") keeps it too, stored by the page under an id of its own: the Calendar draws it in its date's place and
|
|
1349
|
+
* its card names the series' schedule. saveOccurrence and deleteOccurrence take either.
|
|
1350
|
+
*/
|
|
1351
|
+
series?: {
|
|
1352
|
+
id: string;
|
|
1353
|
+
date: string;
|
|
1354
|
+
};
|
|
1076
1355
|
}
|
|
1077
1356
|
/**
|
|
1078
1357
|
* An event type's colour (gridsmith-ui 0.26.0 or later): one of the theme's supporting colours by number (1 to 5, as
|
|
@@ -1106,6 +1385,11 @@ interface CalendarProps {
|
|
|
1106
1385
|
view?: CalendarView;
|
|
1107
1386
|
defaultView?: CalendarView;
|
|
1108
1387
|
onViewChange?: (view: CalendarView) => void;
|
|
1388
|
+
/**
|
|
1389
|
+
* The date shown (its month, week or year). A Date is an instant, whose day is the visitor's (midnight on a server in
|
|
1390
|
+
* UTC is the evening before in New York), so on a server-rendered page the Calendar holds its place, at its size, until
|
|
1391
|
+
* the browser has the page, and draws then (gridsmith-ui 0.27.0).
|
|
1392
|
+
*/
|
|
1109
1393
|
date?: Date;
|
|
1110
1394
|
defaultDate?: Date;
|
|
1111
1395
|
onDateChange?: (date: Date) => void;
|
|
@@ -1129,12 +1413,17 @@ interface CalendarProps {
|
|
|
1129
1413
|
*/
|
|
1130
1414
|
eventActions?: CalendarEventAction[] | ((event: CalendarEvent) => CalendarEventAction[]);
|
|
1131
1415
|
categories?: Record<string, EventCategory>;
|
|
1132
|
-
|
|
1416
|
+
/**
|
|
1417
|
+
* The week's first day, Sunday 0 to Saturday 6. Default: the first day of the visitor's week, from their browser's
|
|
1418
|
+
* languages, then the page's language, then Monday (gridsmith-ui 0.27.0; Monday before). On a server-rendered page the
|
|
1419
|
+
* Calendar is drawn once the browser has the page (its days are the visitor's), so its week is the browser's.
|
|
1420
|
+
*/
|
|
1421
|
+
weekStartsOn?: Weekday;
|
|
1133
1422
|
size?: CalendarSize;
|
|
1134
1423
|
className?: string;
|
|
1135
1424
|
}
|
|
1136
1425
|
|
|
1137
|
-
declare function Calendar({ events, view: controlledView, defaultView, onViewChange, date: controlledDate, defaultDate, onDateChange, onDateRangeChange, onEventClick, onDayClick, eventActions, categories, weekStartsOn, size, className, }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
1426
|
+
declare function Calendar({ events, view: controlledView, defaultView, onViewChange, date: controlledDate, defaultDate, onDateChange, onDateRangeChange, onEventClick, onDayClick, eventActions, categories, weekStartsOn: weekStartsOnProp, size, className, }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
1138
1427
|
|
|
1139
1428
|
type BadgeVariant = "default" | "neutral" | "subtle" | "success" | "success-soft" | "warning" | "warning-soft" | "error" | "error-soft" | "outline";
|
|
1140
1429
|
type BadgeSize = "xs" | "sm" | "md";
|
|
@@ -1718,10 +2007,12 @@ interface StackedListProps {
|
|
|
1718
2007
|
declare const StackedList: react.ForwardRefExoticComponent<StackedListProps & react.RefAttributes<HTMLUListElement>>;
|
|
1719
2008
|
|
|
1720
2009
|
/**
|
|
1721
|
-
*
|
|
1722
|
-
* counted on UTC day boundaries, so every day is the same width and a clock change never stretches or shrinks
|
|
1723
|
-
* A "YYYY-MM-DD" string is a calendar day in the user's zone and is never parsed as UTC (new Date("2026-03-03") is
|
|
1724
|
-
* 2 March, 19:00 in New York).
|
|
2010
|
+
* Calendar days, and ranges of them in words (Sprint 25.7, Part D). A calendar day is a whole-number day index: days since
|
|
2011
|
+
* 1970-01-01, counted on UTC day boundaries, so every day is the same width and a clock change never stretches or shrinks
|
|
2012
|
+
* one. A "YYYY-MM-DD" string is a calendar day in the user's zone and is never parsed as UTC (new Date("2026-03-03") is
|
|
2013
|
+
* 2 March, 19:00 in New York). Apart from the time scale (lib/time-scale.ts) since Sprint 25.22, so a server can call
|
|
2014
|
+
* them: nothing here needs React or a browser, and `gridsmith-ui/utils` exports them for server code. On a server a Date
|
|
2015
|
+
* or a date-time string is read in the server's time zone; a calendar day or a day index is the same everywhere.
|
|
1725
2016
|
*/
|
|
1726
2017
|
/** A Date, or a string: "YYYY-MM-DD" is a calendar day; any other string is a date-time. */
|
|
1727
2018
|
type DateInput = Date | string;
|
|
@@ -1742,6 +2033,37 @@ declare function dateOfDay(day: number): Date;
|
|
|
1742
2033
|
* index does. A range's start can make a midnight Date half-open too (scale.span, formatDateRange, timeExtent).
|
|
1743
2034
|
*/
|
|
1744
2035
|
declare function endDayOf(value: DateInput | number): number;
|
|
2036
|
+
/**
|
|
2037
|
+
* The earliest start and the latest end of some ranges, as day indices for useTimeScale: the end is where the last
|
|
2038
|
+
* range stops (inclusive for a whole day, as endDayOf), and a range with no end ends where it starts (a milestone).
|
|
2039
|
+
* NaN for no dated range, which the scale shows as today. A range, a start or an end that is null is skipped.
|
|
2040
|
+
*/
|
|
2041
|
+
declare function timeExtent(ranges: Iterable<{
|
|
2042
|
+
start: DateInput;
|
|
2043
|
+
end?: DateInput;
|
|
2044
|
+
}>): {
|
|
2045
|
+
start: number;
|
|
2046
|
+
end: number;
|
|
2047
|
+
};
|
|
2048
|
+
interface DateRangeWords {
|
|
2049
|
+
locale?: string;
|
|
2050
|
+
/** Joins the two ends in place of Intl's separator. Default " to " in English, and Intl's own separator elsewhere. */
|
|
2051
|
+
to?: string;
|
|
2052
|
+
/** Intl options for the days. Default { day: "numeric", month: "long" }; the year is added when the ends' years differ. */
|
|
2053
|
+
day?: Intl.DateTimeFormatOptions;
|
|
2054
|
+
/** Intl options for the times of a date-time range. Default { hour: "2-digit", minute: "2-digit" }. */
|
|
2055
|
+
time?: Intl.DateTimeFormatOptions;
|
|
2056
|
+
}
|
|
2057
|
+
/**
|
|
2058
|
+
* A range in words, in the locale, for accessible names: "3 to 14 March", "28 September to 3 October", "16 September"
|
|
2059
|
+
* for one day. The end is inclusive for a whole day, as scale.span (a day index is where the range stops). A date-time
|
|
2060
|
+
* range is named by its times, and the end's day only when it differs: "Friday 23 October, 06:00 to 14:00". Intl
|
|
2061
|
+
* joins each day and time in the locale's own way, and outside English the two ends too ("10/31(土曜日)~11/01(日曜日)");
|
|
2062
|
+
* the year shows when the two ends are in different years. A null end is the start's own day; a start that is no date
|
|
2063
|
+
* gives "".
|
|
2064
|
+
*/
|
|
2065
|
+
declare function formatDateRange(start: DateInput | number, end?: DateInput | number, words?: DateRangeWords): string;
|
|
2066
|
+
|
|
1745
2067
|
interface TimeTick {
|
|
1746
2068
|
/** Stable: "2026-09" for September 2026, "2026-09-07" for a day or the week starting on it, "2026-Q3", "2026". */
|
|
1747
2069
|
key: string;
|
|
@@ -1794,7 +2116,7 @@ interface TimeScale {
|
|
|
1794
2116
|
today: number | null;
|
|
1795
2117
|
/** The moment `today` names, as a fractional day index (its time of day), when the scale shows it: an hourly view's "now". */
|
|
1796
2118
|
now: number | null;
|
|
1797
|
-
weekStartsOn:
|
|
2119
|
+
weekStartsOn: Weekday;
|
|
1798
2120
|
locale?: string;
|
|
1799
2121
|
}
|
|
1800
2122
|
interface TimeScaleOptions {
|
|
@@ -1808,9 +2130,18 @@ interface TimeScaleOptions {
|
|
|
1808
2130
|
* hydrates its HTML, draw no today. Demos and tests pass a fixed date; a date-time gives an hourly view its "now".
|
|
1809
2131
|
*/
|
|
1810
2132
|
today?: DateInput;
|
|
1811
|
-
/**
|
|
1812
|
-
|
|
1813
|
-
|
|
2133
|
+
/**
|
|
2134
|
+
* The week's first day, Sunday 0 to Saturday 6. Default: the first day where `locale` is spoken, else the visitor's
|
|
2135
|
+
* (their browser's languages, then the page's language, then Monday), as the Calendar's (gridsmith-ui 0.27.0; Monday
|
|
2136
|
+
* before). On a server, useTimeScale starts the week on the day of the visitor's language from the request (a
|
|
2137
|
+
* LocaleProvider given the Accept-Language header), else Monday, and the browser's own day applies once it has the page;
|
|
2138
|
+
* createTimeScale, with no render to wait for, reads it when called (Monday on a server).
|
|
2139
|
+
*/
|
|
2140
|
+
weekStartsOn?: Weekday;
|
|
2141
|
+
/**
|
|
2142
|
+
* Default the page's language in the visitor's formats where they speak it: on a server and while the browser hydrates
|
|
2143
|
+
* the server's HTML, the LocaleProvider's choice (else "en"); then the browser's own reading (useFormatLocale).
|
|
2144
|
+
*/
|
|
1814
2145
|
locale?: string;
|
|
1815
2146
|
/** Px per day at each level, where a view needs another density (the defaults fit each level's labels). */
|
|
1816
2147
|
pxPerDay?: Partial<Record<TimeZoom, number>>;
|
|
@@ -1821,37 +2152,7 @@ interface TimeScaleOptions {
|
|
|
1821
2152
|
* Maps dates to pixels and back in calendar days, and makes the major and minor ticks for the zoom level. The scale
|
|
1822
2153
|
* is the same object while its inputs mean the same days, so a Date made on every render does not rebuild it.
|
|
1823
2154
|
*/
|
|
1824
|
-
declare function useTimeScale({ start, end, zoom, today, weekStartsOn, locale, pxPerDay, pad }: TimeScaleOptions): TimeScale;
|
|
1825
|
-
/**
|
|
1826
|
-
* The earliest start and the latest end of some ranges, as day indices for useTimeScale: the end is where the last
|
|
1827
|
-
* range stops (inclusive for a whole day, as endDayOf), and a range with no end ends where it starts (a milestone).
|
|
1828
|
-
* NaN for no dated range, which the scale shows as today. A range, a start or an end that is null is skipped.
|
|
1829
|
-
*/
|
|
1830
|
-
declare function timeExtent(ranges: Iterable<{
|
|
1831
|
-
start: DateInput;
|
|
1832
|
-
end?: DateInput;
|
|
1833
|
-
}>): {
|
|
1834
|
-
start: number;
|
|
1835
|
-
end: number;
|
|
1836
|
-
};
|
|
1837
|
-
interface DateRangeWords {
|
|
1838
|
-
locale?: string;
|
|
1839
|
-
/** Joins the two ends in place of Intl's separator. Default " to " in English, and Intl's own separator elsewhere. */
|
|
1840
|
-
to?: string;
|
|
1841
|
-
/** Intl options for the days. Default { day: "numeric", month: "long" }; the year is added when the ends' years differ. */
|
|
1842
|
-
day?: Intl.DateTimeFormatOptions;
|
|
1843
|
-
/** Intl options for the times of a date-time range. Default { hour: "2-digit", minute: "2-digit" }. */
|
|
1844
|
-
time?: Intl.DateTimeFormatOptions;
|
|
1845
|
-
}
|
|
1846
|
-
/**
|
|
1847
|
-
* A range in words, in the locale, for accessible names: "3 to 14 March", "28 September to 3 October", "16 September"
|
|
1848
|
-
* for one day. The end is inclusive for a whole day, as scale.span (a day index is where the range stops). A date-time
|
|
1849
|
-
* range is named by its times, and the end's day only when it differs: "Friday 23 October, 06:00 to 14:00". Intl
|
|
1850
|
-
* joins each day and time in the locale's own way, and outside English the two ends too ("10/31(土曜日)~11/01(日曜日)");
|
|
1851
|
-
* the year shows when the two ends are in different years. A null end is the start's own day; a start that is no date
|
|
1852
|
-
* gives "".
|
|
1853
|
-
*/
|
|
1854
|
-
declare function formatDateRange(start: DateInput | number, end?: DateInput | number, words?: DateRangeWords): string;
|
|
2155
|
+
declare function useTimeScale({ start, end, zoom, today, weekStartsOn: own, locale: ownLocale, pxPerDay, pad }: TimeScaleOptions): TimeScale;
|
|
1855
2156
|
|
|
1856
2157
|
/**
|
|
1857
2158
|
* What a TimeViewport gives the things drawn inside it (Sprint 25.7, Part D). The scroll position lives in a store of
|
|
@@ -1993,7 +2294,7 @@ declare const TimeViewport: react.ForwardRefExoticComponent<TimeViewportProps &
|
|
|
1993
2294
|
declare function TimeRow({ label, children, height, labelClassName, className, style, ...props }: TimeRowProps): react_jsx_runtime.JSX.Element;
|
|
1994
2295
|
/**
|
|
1995
2296
|
* An item on a TimeRow's track (a task, a shift): placed by the viewport's scale from its start to its end (through
|
|
1996
|
-
* scale.span, so a whole-day end is never a day short), with its content clipped and the focus
|
|
2297
|
+
* scale.span, so a whole-day end is never a day short), with its content clipped and the focus outline. Its label is kept
|
|
1997
2298
|
* in view beside the pinned column while its start is scrolled away, and fitted to the part of the bar in view: the
|
|
1998
2299
|
* longest of `labels` that fits, or `children` shortened with an ellipsis. Other attributes (role, aria-*,
|
|
1999
2300
|
* data-grid-key, tabIndex, handlers, className, style) go on the bar; the caller gives the fill and the insets.
|
|
@@ -2014,6 +2315,45 @@ interface TimeScaleHeaderProps {
|
|
|
2014
2315
|
*/
|
|
2015
2316
|
declare function TimeScaleHeader({ todayLabel, className }: TimeScaleHeaderProps): react_jsx_runtime.JSX.Element;
|
|
2016
2317
|
|
|
2318
|
+
interface LocaleProviderProps {
|
|
2319
|
+
/**
|
|
2320
|
+
* The page's language: the same value as the app's `<html lang>` ("en"), from one constant, so the two never drift
|
|
2321
|
+
* apart. Required (the review): a provider without it wrote the page in English even where `<html lang>` said otherwise.
|
|
2322
|
+
*/
|
|
2323
|
+
lang: string;
|
|
2324
|
+
/**
|
|
2325
|
+
* The request's `Accept-Language` header, as sent (`(await headers()).get("accept-language")` in a Next.js root layout,
|
|
2326
|
+
* `request.headers.get("accept-language")` in a Remix root loader). Left out (a static export, Remix in SPA mode), the
|
|
2327
|
+
* server writes the page's language, and the browser the visitor's form of it once the page has loaded.
|
|
2328
|
+
*/
|
|
2329
|
+
acceptLanguage?: string | null;
|
|
2330
|
+
children?: ReactNode;
|
|
2331
|
+
}
|
|
2332
|
+
/**
|
|
2333
|
+
* The page's language and the visitor's, for a server-rendered app (Sprint 25.20 D1): put at the top of the app, it lets
|
|
2334
|
+
* the server write every date and number in the visitor's form of the page's language ("6 Oct 2026" for a British visitor
|
|
2335
|
+
* to an English page), and the browser hydrate with the same, so nothing changes once the page has loaded. A Vite app,
|
|
2336
|
+
* drawn in the browser alone, doesn't need it.
|
|
2337
|
+
*/
|
|
2338
|
+
declare function LocaleProvider({ lang, acceptLanguage, children }: LocaleProviderProps): react_jsx_runtime.JSX.Element;
|
|
2339
|
+
|
|
2340
|
+
/**
|
|
2341
|
+
* The locale a component writes its dates and numbers in (Sprint 25.20 L1). On a server, and while the browser hydrates
|
|
2342
|
+
* the server's HTML, the one the server chose: LocaleProvider's (the visitor's form of the page's language, from the
|
|
2343
|
+
* request), else "en", never a machine's own default, so both sides write the same. Once the page has loaded, the
|
|
2344
|
+
* browser's own reading (the visitor's form of the page's `lang`, as formatLocale() reads it), usually the same. A render
|
|
2345
|
+
* with no server HTML reads the browser's from its first render. Undefined is the browser's own language.
|
|
2346
|
+
*/
|
|
2347
|
+
declare function useFormatLocale(): string | undefined;
|
|
2348
|
+
|
|
2349
|
+
/**
|
|
2350
|
+
* Whether the browser has taken the page over (Sprint 25.20 D3): false on a server, and in the render that hydrates the
|
|
2351
|
+
* server's HTML (it must draw what the server drew), true straight after. A render with no server HTML (a Vite app, a
|
|
2352
|
+
* component mounted later) is true from its first render. What depends on the visitor's clock or time zone, which no
|
|
2353
|
+
* server knows, waits for it.
|
|
2354
|
+
*/
|
|
2355
|
+
declare function useHydrated(): boolean;
|
|
2356
|
+
|
|
2017
2357
|
/**
|
|
2018
2358
|
* Labels along a scale that never overlap (Sprint 25.7, Part D; data-visualisation#7). Each label gets the longest form
|
|
2019
2359
|
* that fits its box ("September" → "Sept" → "S"), one form along the row; when even the shortest does not fit, the row
|
|
@@ -2066,7 +2406,7 @@ declare function fitLabel(labels: readonly string[], width: number, measure: (te
|
|
|
2066
2406
|
* web fonts finish loading. Give it an element whose size follows its text (a span holding a character, out of sight),
|
|
2067
2407
|
* not a box of fixed size: its resize is how a change of text size (the theme's base size, a class up the tree) is seen.
|
|
2068
2408
|
*/
|
|
2069
|
-
declare function useTextMeasure(ref: RefObject<HTMLElement | null
|
|
2409
|
+
declare function useTextMeasure(ref: RefObject<HTMLElement | null>, active?: boolean): (text: string) => number;
|
|
2070
2410
|
/** fitLabels in the computed font of `ref`, the row the labels are drawn in. */
|
|
2071
2411
|
declare function useFittedLabels(boxes: readonly LabelBox[], ref: RefObject<HTMLElement | null>, options?: FitLabelsOptions): FittedLabel[];
|
|
2072
2412
|
|
|
@@ -2116,6 +2456,43 @@ interface GridKeyboard<K> {
|
|
|
2116
2456
|
*/
|
|
2117
2457
|
declare function useGridKeyboard<K>({ container, active, setActive, keyOf, move, onActivate, typeahead, scrollIntoView, modifierKeys }: GridKeyboardOptions<K>): GridKeyboard<K>;
|
|
2118
2458
|
|
|
2459
|
+
/**
|
|
2460
|
+
* Keyboard or pointer, for fields (Sprint 30, the owner's D6 and the plan's P13). A field clicked into shows the active
|
|
2461
|
+
* look (the accent border and its soft halo); a field reached with Tab shows the keyboard's outline. A browser matches
|
|
2462
|
+
* :focus-visible on a text field in both cases, so CSS alone can't tell them apart: this notes on <html> which one moved
|
|
2463
|
+
* focus last, and the field utilities (lib/utils.ts) read it.
|
|
2464
|
+
*
|
|
2465
|
+
* - A pointer press (mouse, touch, pen) sets "pointer".
|
|
2466
|
+
* - Tab sets "keyboard", and so does a key that moves or acts outside a text field (an arrow in a radio group, Enter on
|
|
2467
|
+
* a button that puts focus in a field). Typing in a text field changes nothing, so a field clicked into keeps its halo
|
|
2468
|
+
* while you type, as React Aria's isTextInput does. A spin button's and a select's arrows change their value, so they
|
|
2469
|
+
* count as typing: a date's segment or a select clicked into keeps the halo while you step it.
|
|
2470
|
+
* - Before either (a page that puts focus in a field as it loads), there is no attribute, and a field takes the outline.
|
|
2471
|
+
*
|
|
2472
|
+
* Installed on the page's document as this module loads in a browser, so a press before any field mounts is noted too (a
|
|
2473
|
+
* button that opens a dialog with a field in it: the field takes the halo), and each field makes sure of it as it mounts
|
|
2474
|
+
* (useInputModality). An app adds nothing, and a server never runs it.
|
|
2475
|
+
*/
|
|
2476
|
+
declare const INPUT_MODALITY_ATTR = "data-input-modality";
|
|
2477
|
+
type InputModality = "keyboard" | "pointer";
|
|
2478
|
+
/** Start noting the modality on this document's <html>, once. */
|
|
2479
|
+
declare function installInputModality(doc?: Document): void;
|
|
2480
|
+
/** The modality last noted on this document (null before any press or key). */
|
|
2481
|
+
declare function inputModality(doc?: Document): InputModality | null;
|
|
2482
|
+
/** For a field: make sure the document notes the modality (no effect after the first). */
|
|
2483
|
+
declare function useInputModality(): void;
|
|
2484
|
+
|
|
2485
|
+
/**
|
|
2486
|
+
* A scroller's focused item, shown whole with its keyboard outline (Sprint 30, P3). A browser scrolls an item into view
|
|
2487
|
+
* when focus reaches it only if none of it shows: one partly in view (a list's last option, a card at a board's edge, a
|
|
2488
|
+
* row under the fold) stays cut off, its outline with it. When a key moves focus to something inside the scroller (Tab,
|
|
2489
|
+
* or a component's arrows), this scrolls it into view, as little as it takes; the scroller's scroll padding
|
|
2490
|
+
* (`scroll-p-[4px]`, P3's room) leaves the outline its 4 px. Focus a pointer gave is left where it is, so nothing moves
|
|
2491
|
+
* under the mouse. Pass the element itself (a callback ref's), as useKeyboardScroll takes it, or a ref object, read when
|
|
2492
|
+
* focus arrives (for an element whose ref is already taken).
|
|
2493
|
+
*/
|
|
2494
|
+
declare function useRevealFocus(target: HTMLElement | null | RefObject<HTMLElement | null>, enabled?: boolean): void;
|
|
2495
|
+
|
|
2119
2496
|
type GanttTone = "neutral" | "info" | "success" | "warning" | "error" | "accent";
|
|
2120
2497
|
interface GanttItem {
|
|
2121
2498
|
id: string;
|
|
@@ -2167,8 +2544,8 @@ interface GanttProps<T extends GanttItem = GanttItem> {
|
|
|
2167
2544
|
onZoomChange?: (zoom: TimeZoom) => void;
|
|
2168
2545
|
/** Default now; demos and tests pass a fixed date. */
|
|
2169
2546
|
today?: DateInput;
|
|
2170
|
-
/** Default
|
|
2171
|
-
weekStartsOn?:
|
|
2547
|
+
/** The week's first day, Sunday 0 to Saturday 6. Default: the first day of the visitor's week, from their browser's languages, then the page's language, then Monday (gridsmith-ui 0.27.0); with `locale`, that language's. As the Calendar's. */
|
|
2548
|
+
weekStartsOn?: Weekday;
|
|
2172
2549
|
/** Default the page's language (its `lang`, in the visitor's formats where they speak it): the scale's labels and the items' dates. */
|
|
2173
2550
|
locale?: string;
|
|
2174
2551
|
/**
|
|
@@ -2258,7 +2635,7 @@ interface LauncherProps {
|
|
|
2258
2635
|
align?: "center" | "end";
|
|
2259
2636
|
/** Accessible name for every variant; visible text for pill and ribbon. */
|
|
2260
2637
|
label: string;
|
|
2261
|
-
/** bubble and pill default to "sparkles" (curated;
|
|
2638
|
+
/** bubble and pill default to "sparkles" (curated; a Feather theme draws Lucide's, as Feather has none). A ribbon shows only its label unless an icon is given. */
|
|
2262
2639
|
icon?: IconName | ReactNode;
|
|
2263
2640
|
/** Unread count (number) or a dot (true). */
|
|
2264
2641
|
badge?: number | boolean;
|
|
@@ -2463,12 +2840,20 @@ interface Step {
|
|
|
2463
2840
|
label: string;
|
|
2464
2841
|
description?: string;
|
|
2465
2842
|
status?: "complete" | "error" | "loading";
|
|
2466
|
-
/**
|
|
2843
|
+
/**
|
|
2844
|
+
* Not reached yet, so it can't be gone to (Sprint 25.16 A30, useFlowSteps' stepper): its circle is greyed, can't be
|
|
2845
|
+
* pressed, and is named "cannot start yet" (Sprint 25.19 S3, the owner's D10).
|
|
2846
|
+
*/
|
|
2467
2847
|
disabled?: boolean;
|
|
2468
2848
|
}
|
|
2469
2849
|
interface StepperProps {
|
|
2470
2850
|
steps: Step[];
|
|
2471
2851
|
currentStep: number;
|
|
2852
|
+
/**
|
|
2853
|
+
* Goes to a step. Pass it and every step not `disabled` is a button, backwards or forwards (the owner's D10: a step
|
|
2854
|
+
* already reached opens from its number). Mark the steps not reached yet `disabled` rather than ignoring their click;
|
|
2855
|
+
* useFlowSteps does both. Leave it out and the Stepper only shows progress: none of its steps is a button.
|
|
2856
|
+
*/
|
|
2472
2857
|
onStepChange?: (step: number) => void;
|
|
2473
2858
|
orientation?: "horizontal" | "vertical";
|
|
2474
2859
|
className?: string;
|
|
@@ -2617,6 +3002,7 @@ type PageHeaderBehavior = "static" | "snapping";
|
|
|
2617
3002
|
type PageHeaderIntensity = "subtle" | "bold";
|
|
2618
3003
|
interface PageHeaderProps {
|
|
2619
3004
|
title: string;
|
|
3005
|
+
/** A line under the title. The minimal header doesn't show it (Sprint 25.21 H2: it's minimal for a reason). */
|
|
2620
3006
|
description?: string;
|
|
2621
3007
|
/**
|
|
2622
3008
|
* A short line above the title: the section the page belongs to, or its place in a flow ("Step 2 of 6") — GOV.UK's
|
|
@@ -3441,9 +3827,12 @@ interface FlowSteps<A, S extends FlowStep<A>> {
|
|
|
3441
3827
|
next: (patch?: Partial<A>) => void;
|
|
3442
3828
|
/** PageHeader's onBack: the step before, or undefined on the first step (no Back link there). */
|
|
3443
3829
|
back: (() => void) | undefined;
|
|
3444
|
-
/** Goes to a step reached; any other is ignored. */
|
|
3830
|
+
/** Goes to a step reached, backwards only when the project lets a flow go back (forms.canNavigateBack); any other is ignored. */
|
|
3445
3831
|
goTo: (step: number) => void;
|
|
3446
|
-
/**
|
|
3832
|
+
/**
|
|
3833
|
+
* The Stepper's props: the steps shown (done before the furthest; a step past it disabled, so the Stepper greys it and
|
|
3834
|
+
* names it "cannot start yet"), this one, and going to one: any step reached opens, backwards or forwards.
|
|
3835
|
+
*/
|
|
3447
3836
|
stepper: {
|
|
3448
3837
|
steps: {
|
|
3449
3838
|
label: string;
|
|
@@ -3451,7 +3840,8 @@ interface FlowSteps<A, S extends FlowStep<A>> {
|
|
|
3451
3840
|
disabled?: boolean;
|
|
3452
3841
|
}[];
|
|
3453
3842
|
currentStep: number;
|
|
3454
|
-
|
|
3843
|
+
/** Goes to a step already reached; undefined when the project doesn't let a flow go back (the list then shows progress). */
|
|
3844
|
+
onStepChange?: (index: number) => void;
|
|
3455
3845
|
};
|
|
3456
3846
|
/** Keeps the progress and leaves the flow, for exitTo. */
|
|
3457
3847
|
saveAndExit: () => void;
|
|
@@ -3742,4 +4132,4 @@ interface UseTextOverflowResult {
|
|
|
3742
4132
|
*/
|
|
3743
4133
|
declare function useTextOverflow(options?: UseTextOverflowOptions): UseTextOverflowResult;
|
|
3744
4134
|
|
|
3745
|
-
export { Accordion, ActionPanel, ActionPanelGroup, AddAnother, type AddAnotherProps, Alert, type AlertPlacement, AppShell, type AppShellContextValue, type AppShellFocus, AppShellPreferences, type AppShellTheme, AsidePanel, type AsidePanelProps, type AsidePanelSide, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarStatus, Badge, type BadgePaletteColor, type BadgeSeverity, type BadgeSize, type BadgeVariant, BottomNav, type BottomNavItem, BreakpointKey, BulkActionBar, Button, ButtonSizeContext, Calendar, type CalendarColour, type CalendarDay, type CalendarDayClickDetail, type CalendarEvent, type CalendarEventAction, type CalendarEventAttendee, type CalendarProps, type CalendarSize, type CalendarView, Card, CardContent, CardDescription, CardFooter, CardGrid, type CardGridProps, CardHeader, type CardSelectType, CardTitle, type CardVariant, Carousel, type ChatMessage, type ChatMessageAction, type ChatMessageLayout, ChatMessageList, type ChatMessageSender, type ChatMessageSource, type ChatMessageStatus, ChatPanel, type ChatPanelProps, type ChatPanelStatusTone, Checkbox, CheckboxGroup, CheckboxGroupItem, CodeBlock, Collapsible, ColorPicker, type Column, Combobox, CommandPalette, ContextMenu, type ControlSize, ControlSizeContext, CornerPanel, type CornerPanelEdge, type CornerPanelProps, DEFAULT_DATE_RANGE_PRESETS, DangerZone, type DangerZoneProps, DataList, type DateInput, DatePicker, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangeWords, type DescriptionItem, DescriptionList, type DescriptionListOrientation, type DescriptionListSize, type DestructiveActionHandle, type DestructiveActionOptions, Dialog, Divider, Dock, Drawer, Dropdown, DropdownMenu, type DropdownMenuDivider, type DropdownMenuEntry, type DropdownMenuItem, EmptyState, EntityCell, type EventCategory, Field, type FieldControlProps, type FieldLabel, type FieldProps, FileUpload, type FileUploadItem, type FileUploadRequestOptions, type FileUploadStatus, type FitLabelsOptions, type FittedLabel, type FlowNavigate, type FlowProgress, FlowSaved, type FlowSavedProps, type FlowStep, type FlowSteps, FormWrapper, Gantt, type GanttGroup, type GanttItem, type GanttProps, type GanttStatus, type GanttTone, type GridKeyboard, type GridKeyboardOptions, HoverCard, InlineFieldError, Input, Kbd, Label, type LabelBox, Launcher, type LauncherEdge, type LauncherProps, type LauncherVariant, type LauncherWhenOpen, Link, type LinkProps, MentionInput, type MentionInputProps, MentionSuggestion, MobileHeaderMenu, type MobileHeaderMenuItemData, type MobileHeaderMenuType, NavItem, type NavItemProps, type NavItemType, NavMenu, type NavMenuItem, Navbar, type NavbarSize, type NavbarType, type NavbarVariant, NotificationCenter, NumberInput, PageActions, PageContainer, type PageContainerWidth, PageHeader, type PageHeaderBehavior, type PageHeaderIntensity, type PageHeaderProps, type PageHeaderVariant, Pager, Pagination, PinInput, Popover, Progress, type PromiseToastMessages, RadioGroup, Rating, RelativeTime, type RelativeTimeProps, ScrollArea, SectionHeading, type SectionHeadingProps, SegmentedControl, SettingsLayout, type SettingsLayoutProps, type SettingsSection, Sheet, Sidebar, type SidebarContextValue, type SidebarItem, SidebarNav, type SidebarNavSize, type SidebarPosition, type SidebarSection, type SidebarType, Skeleton, SkipLink, SliderRange, type SortDir, Spinner, StackedList, type StackedListVariant, StatsCard, StatusDot, type StatusDotVariant, Stepper, TIME_ZOOMS, type Tab, Table, type TableDensity, type TableProps, type TableRow, TableToolbar, type TableToolbarActiveFilter, type TableToolbarFilterOption, Tabs, Tag, TagInput, type TagPaletteColor, type TagVariant, TextOverflow, type TextOverflowProps, Textarea, TimeBar, type TimeBarProps, TimePicker, TimeRow, type TimeRowProps, type TimeScale, TimeScaleHeader, type TimeScaleHeaderProps, type TimeScaleOptions, type TimeTick, type TimeValue, TimeViewport, type TimeViewportHandle, type TimeViewportLayout, type TimeViewportProps, type TimeViewportState, type TimeZoom, Timeline, TimezoneSelect, type TimezoneSelectProps, Toast, type ToastAction, type ToastApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastVariant, Toggle, Tooltip, Tour, TransferList, TreeView, type Trend, type UseFlowStepsOptions, type UseTextOverflowOptions, type UseTextOverflowResult, browserTimeZone, canonicalTimeZone, dateOfDay, dayOf, endDayOf, fitLabel, fitLabels, formatDateRange, formatFullTime, formatRelativeTime, readFlowProgress, timeExtent, timeZoneOffset, useAppShell, useContentWidth, useDestructiveAction, useFittedLabels, useFlowSteps, useFormContext, useGridKeyboard, useRelativeTimeFormat, useSidebar, useTextMeasure, useTextOverflow, useTimeScale, useTimeViewport, useTimeViewportLayout, useToast, useToastOptional, useUnsavedChanges };
|
|
4135
|
+
export { Accordion, ActionPanel, ActionPanelGroup, AddAnother, type AddAnotherProps, Alert, type AlertPlacement, AppShell, type AppShellContextValue, type AppShellFocus, AppShellPreferences, type AppShellTheme, AsidePanel, type AsidePanelProps, type AsidePanelSide, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarStatus, Badge, type BadgePaletteColor, type BadgeSeverity, type BadgeSize, type BadgeVariant, BottomNav, type BottomNavItem, BreakpointKey, BulkActionBar, Button, ButtonSizeContext, Calendar, type CalendarColour, type CalendarDay, type CalendarDayClickDetail, type CalendarEvent, type CalendarEventAction, type CalendarEventAttendee, type CalendarProps, type CalendarSize, type CalendarView, Card, CardContent, CardDescription, CardFooter, CardGrid, type CardGridProps, CardHeader, type CardSelectType, CardTitle, type CardVariant, Carousel, type ChatMessage, type ChatMessageAction, type ChatMessageLayout, ChatMessageList, type ChatMessageSender, type ChatMessageSource, type ChatMessageStatus, ChatPanel, type ChatPanelProps, type ChatPanelStatusTone, Checkbox, CheckboxGroup, CheckboxGroupItem, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorPicker, type Column, Combobox, CommandPalette, ContextMenu, type ControlSize, ControlSizeContext, CornerPanel, type CornerPanelEdge, type CornerPanelProps, DEFAULT_DATE_RANGE_PRESETS, DangerZone, type DangerZoneProps, DataList, type DateInput, DatePicker, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangeWords, type DescriptionItem, DescriptionList, type DescriptionListOrientation, type DescriptionListSize, type DestructiveActionHandle, type DestructiveActionOptions, Dialog, Divider, Dock, Drawer, Dropdown, DropdownMenu, type DropdownMenuDivider, type DropdownMenuEntry, type DropdownMenuItem, EmptyState, EntityCell, type EventCategory, Field, type FieldControlProps, type FieldLabel, type FieldProps, FileUpload, type FileUploadItem, type FileUploadRequestOptions, type FileUploadStatus, type FitLabelsOptions, type FittedLabel, type FlowNavigate, type FlowProgress, FlowSaved, type FlowSavedProps, type FlowStep, type FlowSteps, FormWrapper, Gantt, type GanttGroup, type GanttItem, type GanttProps, type GanttStatus, type GanttTone, type GridKeyboard, type GridKeyboardOptions, HoverCard, INPUT_MODALITY_ATTR, InlineFieldError, Input, type InputModality, Kbd, Label, type LabelBox, Launcher, type LauncherEdge, type LauncherProps, type LauncherVariant, type LauncherWhenOpen, Link, type LinkProps, LocaleProvider, type LocaleProviderProps, MentionInput, type MentionInputProps, MentionSuggestion, MobileHeaderMenu, type MobileHeaderMenuItemData, type MobileHeaderMenuType, NavItem, type NavItemProps, type NavItemType, NavMenu, type NavMenuItem, Navbar, type NavbarSize, type NavbarType, type NavbarVariant, NotificationCenter, NumberInput, type Occurrence, PageActions, PageContainer, type PageContainerWidth, PageHeader, type PageHeaderBehavior, type PageHeaderIntensity, type PageHeaderProps, type PageHeaderVariant, Pager, Pagination, PinInput, Popover, Progress, type PromiseToastMessages, RadioGroup, Rating, type Recurrence, type RecurrenceFrequency, RecurrencePicker, type RecurrencePickerProps, type RecurrencePreset, type RecurrenceScope, RecurrenceScopeDialog, type RecurrenceScopeDialogProps, RelativeTime, type RelativeTimeProps, type RepeatChange, type RepeatingEvent, ScrollArea, SectionHeading, type SectionHeadingProps, SegmentedControl, SettingsLayout, type SettingsLayoutProps, type SettingsSection, Sheet, Sidebar, type SidebarContextValue, type SidebarItem, SidebarNav, type SidebarNavSize, type SidebarPosition, type SidebarSection, type SidebarType, Skeleton, SkipLink, SliderRange, type SortDir, Spinner, StackedList, type StackedListVariant, StatsCard, StatusDot, type StatusDotVariant, Stepper, TIME_ZOOMS, type Tab, Table, type TableDensity, type TableProps, type TableRow, TableToolbar, type TableToolbarActiveFilter, type TableToolbarFilterOption, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TagInput, type TagPaletteColor, type TagVariant, TextOverflow, type TextOverflowProps, Textarea, TimeBar, type TimeBarProps, TimePicker, TimeRow, type TimeRowProps, type TimeScale, TimeScaleHeader, type TimeScaleHeaderProps, type TimeScaleOptions, type TimeTick, type TimeValue, TimeViewport, type TimeViewportHandle, type TimeViewportLayout, type TimeViewportProps, type TimeViewportState, type TimeZoom, Timeline, TimezoneSelect, type TimezoneSelectProps, Toast, type ToastAction, type ToastApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastVariant, Toggle, Tooltip, Tour, TransferList, TreeView, type Trend, type UseFlowStepsOptions, type UseTextOverflowOptions, type UseTextOverflowResult, type WeekOfMonth, type Weekday, browserTimeZone, canonicalTimeZone, countEdited, dateOfDay, dayOf, deleteOccurrence, describeRecurrence, endDayOf, fitLabel, fitLabels, formatDateRange, formatFullTime, formatRelativeTime, inputModality, installInputModality, nthOf, occurrenceOn, occurrences, parseRRule, readFlowProgress, readRecurrence, recurrencePresets, sameRecurrence, saveOccurrence, timeExtent, timeZoneOffset, toRRule, useAppShell, useBrowserTimeZone, useContentWidth, useDestructiveAction, useFittedLabels, useFlowSteps, useFormContext, useFormatLocale, useGridKeyboard, useHydrated, useInputModality, useRelativeTimeFormat, useRevealFocus, useSidebar, useTextMeasure, useTextOverflow, useTimeScale, useTimeViewport, useTimeViewportLayout, useToast, useToastOptional, useUnsavedChanges };
|