@tensor_1/react 2.34.0 → 2.36.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.
Files changed (48) hide show
  1. package/README.md +164 -15
  2. package/dist/{SchedulingCalendar-DSLQ6AY5.d.ts → SchedulingCalendar-B6TakO2h.d.ts} +13 -1
  3. package/dist/components/Avatar.d.ts +26 -4
  4. package/dist/components/Avatar.js +26 -3
  5. package/dist/components/CommandPalette.d.ts +6 -1
  6. package/dist/components/CommandPalette.js +9 -3
  7. package/dist/components/DateFieldParts.d.ts +61 -0
  8. package/dist/components/DateFieldParts.js +195 -0
  9. package/dist/components/DatePicker.d.ts +129 -0
  10. package/dist/components/DatePicker.js +340 -0
  11. package/dist/components/DateRangePicker.d.ts +34 -3
  12. package/dist/components/DateRangePicker.js +120 -17
  13. package/dist/components/EntityPicker.d.ts +29 -4
  14. package/dist/components/EntityPicker.js +20 -8
  15. package/dist/components/InlineEdit.d.ts +74 -0
  16. package/dist/components/InlineEdit.js +176 -0
  17. package/dist/components/List.d.ts +8 -1
  18. package/dist/components/List.js +3 -1
  19. package/dist/components/ListRoving.d.ts +12 -0
  20. package/dist/components/ListRoving.js +51 -0
  21. package/dist/components/Radio.d.ts +23 -2
  22. package/dist/components/Radio.js +18 -3
  23. package/dist/components/SchedulingAgenda.d.ts +1 -1
  24. package/dist/components/SchedulingAgenda.js +101 -4
  25. package/dist/components/SchedulingCalendar.d.ts +1 -1
  26. package/dist/components/SchedulingCalendar.js +89 -9
  27. package/dist/components/SchedulingTimeGrid.d.ts +1 -1
  28. package/dist/components/SchedulingTimeGrid.js +101 -4
  29. package/dist/components/SchedulingTimeline.d.ts +130 -15
  30. package/dist/components/SchedulingTimeline.js +765 -141
  31. package/dist/components/SearchSuggest.d.ts +12 -1
  32. package/dist/components/SearchSuggest.js +7 -2
  33. package/dist/components/Tree.d.ts +30 -2
  34. package/dist/components/Tree.js +135 -10
  35. package/dist/date-field-model.d.ts +40 -0
  36. package/dist/date-field-model.js +79 -0
  37. package/dist/index.cjs +4179 -2056
  38. package/dist/index.d.cts +829 -264
  39. package/dist/index.d.ts +10 -7
  40. package/dist/index.js +40 -4
  41. package/dist/labels-context.d.ts +15 -2
  42. package/dist/roving.d.ts +15 -0
  43. package/dist/roving.js +17 -0
  44. package/dist/scheduling-timeline-model.d.ts +61 -11
  45. package/dist/scheduling-timeline-model.js +85 -26
  46. package/dist/scheduling-timeline-rows.d.ts +40 -0
  47. package/dist/scheduling-timeline-rows.js +42 -0
  48. package/package.json +5 -3
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { RefObject, AnchorHTMLAttributes, ReactNode, ButtonHTMLAttributes, HTMLAttributes, SelectHTMLAttributes, InputHTMLAttributes, AriaAttributes, Ref, TextareaHTMLAttributes, MouseEvent, DetailsHTMLAttributes, LiHTMLAttributes, TdHTMLAttributes, TableHTMLAttributes, ThHTMLAttributes, ReactElement } from 'react';
2
+ import { RefObject, AnchorHTMLAttributes, ReactNode, ButtonHTMLAttributes, HTMLAttributes, AriaAttributes, CSSProperties, SelectHTMLAttributes, Ref, InputHTMLAttributes, TextareaHTMLAttributes, MouseEvent, DetailsHTMLAttributes, LiHTMLAttributes, TdHTMLAttributes, TableHTMLAttributes, ThHTMLAttributes, ReactElement } from 'react';
3
3
  import { P as Placement } from './overlay-position-2Afke51l.cjs';
4
4
  export { A as Align, a as PositionOptions, b as PositionResult, R as Rect, S as Side, c as Size, d as computePosition } from './overlay-position-2Afke51l.cjs';
5
5
 
@@ -734,6 +734,12 @@ interface SchedulingCalendarEntry {
734
734
  allDay?: boolean;
735
735
  /** `false` keeps this entry where it is when the grid allows moves (`canMove`). */
736
736
  movable?: boolean;
737
+ /**
738
+ * Draws the item with more or less weight than its neighbours, for example the partners of
739
+ * the item the user picked (`'highlight'`) against everything else (`'dim'`). It is a line
740
+ * weight and a quieter text colour, never a hue.
741
+ */
742
+ emphasis?: 'highlight' | 'dim';
737
743
  }
738
744
  interface SchedulingCalendarOverlay {
739
745
  id: string;
@@ -760,7 +766,11 @@ interface SchedulingCalendarDay {
760
766
  count: number;
761
767
  /** The "+N" of the cell. 0 shows none. */
762
768
  overflowCount: number;
763
- /** The accessible text of the count, e.g. "7 items, 2 need review". */
769
+ /**
770
+ * The accessible text of the count, e.g. "7 items, 2 need review". The day's button is named
771
+ * with the date and this text (`labels.dayName`), so a screen reader hears the date, the count
772
+ * and the highest signal in one go.
773
+ */
764
774
  label?: string;
765
775
  markers?: SchedulingMarker[];
766
776
  }
@@ -830,6 +840,8 @@ interface SchedulingCalendarLabels {
830
840
  moreSpans?: string;
831
841
  /** Accessible name of that control. `{count}` and `{date}` (the first day with a hidden span). */
832
842
  moreSpansLabel?: string;
843
+ /** The name of a day's button when `days[date].label` is given. `{date}` and `{label}` placeholders; use `'{label}'` if your labels already say the date. */
844
+ dayName?: string;
833
845
  /** The accessible text of a day's count when `days[date].label` is not given. `{count}` placeholder. */
834
846
  dayCount?: string;
835
847
  states: Record<SchedulingEntryState, string>;
@@ -1025,6 +1037,12 @@ interface DateRangePickerLabels {
1025
1037
  rangeStart: string;
1026
1038
  rangeEnd: string;
1027
1039
  inRange: string;
1040
+ /** Field mode: what the trigger shows while no range is set. */
1041
+ placeholder: string;
1042
+ /** Field mode: the trigger's text for a start without an end; `{start}`. */
1043
+ fieldStart: string;
1044
+ /** Field mode: the trigger's text for a range; `{start}`, `{end}`. */
1045
+ fieldRange: string;
1028
1046
  }
1029
1047
  declare const DEFAULT_DATE_RANGE_PICKER_LABELS: DateRangePickerLabels;
1030
1048
  interface DateRangePickerProps {
@@ -1050,16 +1068,157 @@ interface DateRangePickerProps {
1050
1068
  * clock and zone may differ from the viewer's), or `null` for no today marker.
1051
1069
  */
1052
1070
  today?: string | null;
1071
+ /** First column of each month, in `Date.getUTCDay()` numbering (0 = Sunday). Default 1, Monday. */
1072
+ weekStartsOn?: CalendarWeekday;
1073
+ /**
1074
+ * `'inline'` (default) draws the months in the page. `'field'` draws a form control that
1075
+ * shows the range and opens the same months in a popover (HAR-1383): for forms and filter
1076
+ * bars. It closes once the range has both ends; Escape closes it and returns focus.
1077
+ */
1078
+ mode?: 'inline' | 'field';
1079
+ /** Field mode: how the trigger writes a date. Default: the locale's numeric date. */
1080
+ formatDate?: (date: string) => string;
1081
+ /** Field mode: lands on the trigger, so a `<label htmlFor>` or `<Field>` names it. */
1082
+ id?: string;
1083
+ /** Field mode. */
1084
+ size?: 'sm' | 'md';
1085
+ 'aria-describedby'?: string;
1086
+ 'aria-invalid'?: AriaAttributes['aria-invalid'];
1087
+ /** Field mode: where the popover opens. Default `'bottom-start'`. */
1088
+ placement?: Placement;
1089
+ /** Field mode. */
1090
+ onOpenChange?: (open: boolean) => void;
1053
1091
  }
1054
- /** Controlled, two-month range picker using the UIx calendar language. */
1055
- declare function DateRangePicker({ value, onChange, visibleMonth: controlledMonth, onVisibleMonthChange, months, min, max, isDateDisabled, locale, label, invalid, invalidMessage, disabled, className, labels: labelOverrides, today, }: DateRangePickerProps): react.JSX.Element;
1092
+ /**
1093
+ * Controlled date-range picker using the UIx calendar language: two months inline, or with
1094
+ * `mode="field"` a form control that opens them in a popover.
1095
+ */
1096
+ declare function DateRangePicker({ labels: labelOverrides, ...props }: DateRangePickerProps): react.JSX.Element;
1056
1097
 
1098
+ /** Every word `DatePicker` renders or announces. */
1099
+ interface DatePickerLabels {
1100
+ /** The calendar button's name while no date is set. */
1101
+ open: string;
1102
+ /** The calendar button's name with a date set; `{date}` is the date in full. */
1103
+ openSelected: string;
1104
+ /** The calendar popover's name. */
1105
+ calendar: string;
1106
+ previousMonth: string;
1107
+ nextMonth: string;
1108
+ /**
1109
+ * Shown when the typed text is not a date; `{pattern}` is the expected shape: the
1110
+ * `placeholder` when one is given, else the locale's (`DD.MM.YYYY`).
1111
+ */
1112
+ invalidDate: string;
1113
+ /** The same, when the shape is not known: a custom `parseDate` and no `placeholder`. */
1114
+ notADate: string;
1115
+ /** Shown when the typed date is outside `min` / `max` or refused by `isUnavailable`. */
1116
+ unavailable: string;
1117
+ }
1118
+ declare const DEFAULT_DATE_PICKER_LABELS: DatePickerLabels;
1119
+ /** Why typed text was refused: not a date, or a date that cannot be chosen. */
1120
+ type DateInputProblem = 'format' | 'unavailable';
1121
+ interface DatePickerProps {
1122
+ /** The date as `YYYY-MM-DD`, or `null` for none. */
1123
+ value: string | null;
1124
+ onValueChange: (value: string | null) => void;
1125
+ /** First and last selectable day (`YYYY-MM-DD`). The calendar does not go past them. */
1126
+ min?: string;
1127
+ max?: string;
1128
+ /** Days inside `min` / `max` that cannot be chosen (weekends, a freeze, days already taken). */
1129
+ isUnavailable?: (date: string) => boolean;
1130
+ /**
1131
+ * How the field writes a date. Default: the locale's numeric date (22.11.2026, 11/22/2026).
1132
+ * Pass `parseDate` with it when your format is not three numbers, so typing still works.
1133
+ */
1134
+ formatDate?: (date: string) => string;
1135
+ /** Read typed text into `YYYY-MM-DD`, or `null` when it is not a date. Default: ISO or the locale's order. */
1136
+ parseDate?: (text: string) => string | null;
1137
+ locale?: string;
1138
+ /** First column of the calendar, in `Date.getUTCDay()` numbering (0 = Sunday). Default 1, Monday. */
1139
+ weekStartsOn?: CalendarWeekday;
1140
+ /**
1141
+ * The ISO date that gets the today ring. Defaults to the viewer's local date; pass it when
1142
+ * the product works in another zone, or `null` for no today marker.
1143
+ */
1144
+ today?: string | null;
1145
+ /** Default: the locale's date shape, e.g. `DD.MM.YYYY`. */
1146
+ placeholder?: string;
1147
+ size?: 'sm' | 'md';
1148
+ disabled?: boolean;
1149
+ readOnly?: boolean;
1150
+ required?: boolean;
1151
+ invalid?: boolean;
1152
+ /** Submits the ISO value under this name (a hidden input), whatever the field shows. */
1153
+ name?: string;
1154
+ /** Lands on the text input, so a `<label htmlFor>` or `<Field>` names it. */
1155
+ id?: string;
1156
+ 'aria-label'?: string;
1157
+ 'aria-labelledby'?: string;
1158
+ 'aria-describedby'?: string;
1159
+ 'aria-invalid'?: AriaAttributes['aria-invalid'];
1160
+ 'aria-required'?: AriaAttributes['aria-required'];
1161
+ /** Where the calendar opens. Default `'bottom-start'`; it flips and shifts to stay on screen. */
1162
+ placement?: Placement;
1163
+ /** Told when typed text is refused, and `null` once the field is fine again. */
1164
+ onInputProblem?: (problem: DateInputProblem | null) => void;
1165
+ onOpenChange?: (open: boolean) => void;
1166
+ /** Translatable words; English defaults in {@link DEFAULT_DATE_PICKER_LABELS}. */
1167
+ labels?: Partial<DatePickerLabels>;
1168
+ className?: string;
1169
+ style?: CSSProperties;
1170
+ }
1057
1171
  /**
1058
- * Pure model for `SchedulingTimeline` (HAR-1364; TENSOR C8): ticks on a time axis, where a
1059
- * bar sits on it, which bars in a lane overlap (and so stack and are flagged), and how a
1060
- * keyboard or pointer move snaps. Instants are ISO 8601 strings or epoch milliseconds; the
1061
- * axis is linear in real time, and only labels depend on the time zone.
1172
+ * A single date as a form field (HAR-1383): a text input that shows the formatted date and
1173
+ * accepts a typed one, and a calendar button that opens one month in a popover. The value is an
1174
+ * ISO `YYYY-MM-DD` string. Typed text is read on Enter and when focus leaves the field: ISO or
1175
+ * the locale's own order (`3.4.2026` in German, `4/3/2026` in en-US); text that is not a date,
1176
+ * or a date that cannot be chosen, marks the field invalid, says why, and leaves `value` alone.
1177
+ * ArrowDown in the field opens the calendar; Escape closes it and focus returns to the field.
1062
1178
  */
1179
+ declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLInputElement>>;
1180
+ /** The words `DateTimePicker` adds to the date field's own ({@link DatePickerLabels}). */
1181
+ interface DateTimePickerLabels extends DatePickerLabels {
1182
+ /** Name of the date input when the picker has its own `aria-label`. */
1183
+ date: string;
1184
+ /** Name of the time input. */
1185
+ time: string;
1186
+ /** Name of the time input inside a labelled field; `{label}` is the field's label. */
1187
+ timeOf: string;
1188
+ /** Read after the time; `{zone}` is the zone shown beside it. */
1189
+ timeZone: string;
1190
+ }
1191
+ declare const DEFAULT_DATE_TIME_PICKER_LABELS: DateTimePickerLabels;
1192
+ interface DateTimePickerProps extends Omit<DatePickerProps, 'value' | 'onValueChange' | 'labels' | 'min' | 'max'> {
1193
+ /** A wall-clock date and time, `YYYY-MM-DDTHH:mm` (what `datetime-local` holds), or `null`. */
1194
+ value: string | null;
1195
+ onValueChange: (value: string | null) => void;
1196
+ /** First and last selectable day; a date-time is read by its date. */
1197
+ min?: string;
1198
+ max?: string;
1199
+ /**
1200
+ * The IANA zone the wall clock is in (`Europe/Vienna`). Its short name on the chosen day is
1201
+ * shown beside the time. Without it the viewer's own zone is shown. The value itself carries
1202
+ * no zone: turning it into an instant is the product's job.
1203
+ */
1204
+ timeZone?: string;
1205
+ /** Text shown instead of the zone's short name ("Vienna time", "UTC+2"); `null` shows none. */
1206
+ timeZoneLabel?: string | null;
1207
+ /** Minutes between time steps. Default 1. */
1208
+ minuteStep?: number;
1209
+ /** The time a date gets when it is chosen before any time. Default `'00:00'`. */
1210
+ defaultTime?: string;
1211
+ labels?: Partial<DateTimePickerLabels>;
1212
+ }
1213
+ /**
1214
+ * A date and a time as one field (HAR-1383): the {@link DatePicker} and a time input, with the
1215
+ * time zone the pair is in shown beside them. The value is `YYYY-MM-DDTHH:mm`, the shape
1216
+ * `datetime-local` uses, so it replaces that input without changing what a form submits.
1217
+ * Clearing the date clears the value; a time alone is not a value.
1218
+ */
1219
+ declare const DateTimePicker: react.ForwardRefExoticComponent<DateTimePickerProps & react.RefAttributes<HTMLInputElement>>;
1220
+
1221
+ /** The unit of one tick of the axis. */
1063
1222
  type TimelineScale = 'hour' | 'day' | 'week' | 'month';
1064
1223
  interface TimelineRange {
1065
1224
  start: string;
@@ -1072,6 +1231,22 @@ interface TimelineTick {
1072
1231
  offset: number;
1073
1232
  /** A major tick starts a larger unit (a new day on an hour axis, a new month on a day axis). */
1074
1233
  major: boolean;
1234
+ /**
1235
+ * On an hour axis, the UTC offset (`'+02:00'`) of an hour that occurs twice that day (the
1236
+ * clocks went back), on both occurrences. Not set otherwise.
1237
+ */
1238
+ offsetLabel?: string;
1239
+ }
1240
+ /** A minor tick inside a day: a local hour the consumer asked for. */
1241
+ interface TimelineSubTick {
1242
+ /** Epoch ms of the tick. */
1243
+ at: number;
1244
+ /** Position on the axis, 0–100. */
1245
+ offset: number;
1246
+ /** The local hour (0–23). */
1247
+ hour: number;
1248
+ /** The local hour, two digits (`'06'`). */
1249
+ label: string;
1075
1250
  }
1076
1251
  interface TimelineSpan {
1077
1252
  id: string;
@@ -1088,9 +1263,19 @@ interface PlacedSpan<T extends TimelineSpan = TimelineSpan> {
1088
1263
  clippedEnd: boolean;
1089
1264
  /** Sub-row inside the lane, so overlapping bars stack instead of covering each other. */
1090
1265
  row: number;
1091
- /** Overlaps at least one other bar in the same lane. */
1266
+ /** Overlaps at least one other bar in the same lane. Always `false` with `flagOverlaps: false`. */
1092
1267
  conflict: boolean;
1093
1268
  }
1269
+ interface LayoutLaneOptions {
1270
+ /** `false` keeps the stacking and flags nothing: the consumer says what clashes, with a reason. Default `true`. */
1271
+ flagOverlaps?: boolean;
1272
+ /**
1273
+ * The time (ms) the narrowest drawn bar covers on this axis. A bar is packed as at least
1274
+ * this long from where it is drawn, so two short bars whose drawn boxes would cover each
1275
+ * other get a sub-row each. It changes the rows only, never the `conflict` flag. Default 0.
1276
+ */
1277
+ minSpan?: number;
1278
+ }
1094
1279
  declare const HOUR = 3600000;
1095
1280
  declare const DAY: number;
1096
1281
  /** The default move/resize step for a scale: 15 min on an hour axis, 1 h on a day axis, 1 day otherwise. */
@@ -1101,16 +1286,30 @@ declare const defaultTimelineStep: (scale: TimelineScale) => number;
1101
1286
  * year walks ~8,800 hours, so keep ranges to what fits on screen.
1102
1287
  */
1103
1288
  declare function timelineTicks(range: TimelineRange, scale: TimelineScale, timeZone: string, weekStartsOn?: number): TimelineTick[];
1289
+ /**
1290
+ * Minor ticks for a day axis: one per local hour in `hours` (0–23) on every day of the range,
1291
+ * strictly inside it. The instants come from the zone, so on a day the clocks change 06:00 is
1292
+ * still local 06:00; an hour that does not exist that day has no tick, and one that occurs
1293
+ * twice is ticked at its first occurrence.
1294
+ */
1295
+ declare function timelineSubTicks(range: TimelineRange, hours: readonly number[], timeZone: string): TimelineSubTick[];
1104
1296
  /** Position of one span on the axis, clamped to it; null when it is entirely outside. */
1105
1297
  declare function placeSpan(span: {
1106
1298
  start: string;
1107
1299
  end: string;
1108
1300
  }, range: TimelineRange): Omit<PlacedSpan, 'item' | 'row' | 'conflict'> | null;
1109
1301
  /**
1110
- * Places a lane's spans: sorted by start, each in the first sub-row where it does not overlap
1111
- * the previous bar, and flagged `conflict` when it overlaps any other span in the lane.
1302
+ * Places a lane's spans: sorted by start, each in the first sub-row where it overlaps no
1303
+ * earlier bar, and flagged `conflict` when it shares time with any other span in the lane
1304
+ * (unless `flagOverlaps` is `false`). The rows come from `packLanes`, uncapped: every bar gets
1305
+ * one. With `minSpan` a bar is packed as at least that long from where it is drawn, so bars
1306
+ * drawn at their minimum width do not cover each other. Spans equal in start and end keep the
1307
+ * order given. A span that ends before it starts is a point at its start, and a repeated id is
1308
+ * placed each time. One difference from before the shared packer, with no options at all: a
1309
+ * point at the instant a bar starts takes a sub-row of its own (it used to be drawn over the
1310
+ * start of the bar), because the packer gives a zero-length interval its start instant.
1112
1311
  */
1113
- declare function layoutLane<T extends TimelineSpan>(items: readonly T[], range: TimelineRange): PlacedSpan<T>[];
1312
+ declare function layoutLane<T extends TimelineSpan>(items: readonly T[], range: TimelineRange, options?: LayoutLaneOptions): PlacedSpan<T>[];
1114
1313
  /** Rounds a millisecond offset to the nearest step. */
1115
1314
  declare const snapToStep: (ms: number, step: number) => number;
1116
1315
  /** A span moved (both ends) or resized (end only) by `delta` ms, as ISO strings; never shorter than one step. */
@@ -1123,6 +1322,21 @@ declare function shiftSpan(span: {
1123
1322
  };
1124
1323
  /** Converts a horizontal pointer distance on a track of `trackWidth` px to snapped milliseconds. */
1125
1324
  declare function pixelsToMs(px: number, trackWidth: number, range: TimelineRange, step: number): number;
1325
+ /**
1326
+ * The UTC offset (`'+02:00'`) of an instant whose wall-clock time occurs twice that day in
1327
+ * `timeZone` (the clocks went back), else `null`. Such a time is not a time until it says which
1328
+ * of the two it is. It holds for a repeat at the end of a day and for one of half an hour too.
1329
+ */
1330
+ declare function timelineRepeatedHourOffset(instant: string | number, timeZone: string): string | null;
1331
+ /**
1332
+ * A move step as `proposeMove` takes it: a whole number of `DAY`s is that many calendar days
1333
+ * (the wall-clock time is kept, whatever the length of the days in between); anything else is
1334
+ * real minutes.
1335
+ */
1336
+ declare function timelineStepDelta(step: number): {
1337
+ days: number;
1338
+ minutes: number;
1339
+ };
1126
1340
 
1127
1341
  interface SchedulingTimelineLane {
1128
1342
  id: string;
@@ -1130,6 +1344,25 @@ interface SchedulingTimelineLane {
1130
1344
  /** A quieter second line under the lane name (an owner, a count). */
1131
1345
  meta?: ReactNode;
1132
1346
  }
1347
+ /** A collapsible block of lanes. The consumer builds the groups and owns every number on them. */
1348
+ interface SchedulingTimelineGroup {
1349
+ id: string;
1350
+ label: ReactNode;
1351
+ /** A quieter text beside the group name. */
1352
+ meta?: ReactNode;
1353
+ /** The lanes of the group, in the order to draw them. A lane named by two groups is drawn in the first. */
1354
+ laneIds: string[];
1355
+ /**
1356
+ * A collapsed group is one row. With `onToggleGroup` the consumer owns this value; without
1357
+ * it, it is where the group starts and the timeline opens and closes the group itself.
1358
+ */
1359
+ collapsed?: boolean;
1360
+ /** Shown on the one row of a collapsed group. The timeline derives neither the count nor a marker. */
1361
+ summary?: {
1362
+ count: number;
1363
+ markers?: SchedulingMarker[];
1364
+ };
1365
+ }
1133
1366
  interface SchedulingTimelineItem {
1134
1367
  id: string;
1135
1368
  laneId: string;
@@ -1137,34 +1370,61 @@ interface SchedulingTimelineItem {
1137
1370
  /** ISO 8601 instants. */
1138
1371
  start: string;
1139
1372
  end: string;
1373
+ /** @deprecated Use `band`, `status` and `markers`. The values keep working in 2.x; a bar is no longer tinted by them. */
1140
1374
  state?: SchedulingEntryState;
1141
1375
  meta?: string;
1142
- /** `false` keeps this bar fixed even when `onMoveItem` is set. */
1376
+ /** `false` keeps this bar fixed even when a move or resize callback is set. */
1143
1377
  movable?: boolean;
1378
+ /** The one dimension that takes a hue: only `high` is filled. */
1379
+ band?: SchedulingBand;
1380
+ /** Drawn as a line style, never as a hue. */
1381
+ status?: SchedulingStatus;
1382
+ /** Shapes or icons with text. The text is in the accessible name. */
1383
+ markers?: SchedulingMarker[];
1384
+ /** The complete accessible name, built by the consumer from its own words. Replaces `labels.item`. */
1385
+ accessibleName?: string;
1144
1386
  }
1387
+ /** @deprecated Use `pattern` and `kindLabel` on the overlay. The values keep working in 2.x. */
1145
1388
  type SchedulingTimelineOverlayKind = 'freeze' | 'maintenance' | 'blackout';
1146
1389
  interface SchedulingTimelineOverlay {
1147
1390
  id: string;
1391
+ /** The name of the window, shown as text. */
1148
1392
  label: string;
1149
1393
  start: string;
1150
1394
  end: string;
1151
- kind: SchedulingTimelineOverlayKind;
1152
- /** Only this lane; every lane when unset. */
1395
+ /** @deprecated Use `pattern` and `kindLabel`. */
1396
+ kind?: SchedulingTimelineOverlayKind;
1397
+ /** Only this lane. For several lanes use `laneIds`. */
1153
1398
  laneId?: string;
1399
+ /** Only these lanes; every lane when neither this nor `laneId` is set. The window is still one element. */
1400
+ laneIds?: string[];
1401
+ /** How the window is hatched. Windows are neutral: the pattern and the visible words tell them apart. */
1402
+ pattern?: SchedulingOverlayPattern;
1403
+ /** What kind of window this is, in the words of the consumer. Shown before the name. */
1404
+ kindLabel?: string;
1405
+ /** What the window applies to. Shown after the name. */
1406
+ scopeLabel?: string;
1407
+ /** The complete accessible name. Replaces `labels.overlay`. */
1408
+ accessibleName?: string;
1154
1409
  }
1155
1410
  interface SchedulingTimelineMarker {
1156
1411
  id: string;
1157
1412
  label: string;
1158
1413
  /** ISO 8601 instant. */
1159
1414
  at: string;
1415
+ /** Only this lane. For several lanes use `laneIds`. */
1160
1416
  laneId?: string;
1417
+ /** Only these lanes; every lane when neither this nor `laneId` is set. */
1418
+ laneIds?: string[];
1161
1419
  }
1162
1420
  interface SchedulingTimelineLabels {
1163
1421
  region: string;
1164
1422
  lanes: string;
1165
- /** `{title}`, `{state}`, `{start}`, `{end}`, `{conflict}`. */
1423
+ /** The accessible name of a bar unless it sets `accessibleName`. `{title}`, `{state}`, `{start}`, `{end}`, `{conflict}`. Its marker labels are appended. */
1166
1424
  item: string;
1425
+ /** Read after a bar that shares time with another bar of its lane, while `flagOverlaps` is on. */
1167
1426
  conflict: string;
1427
+ /** The hint of a timeline that has both `onMoveItem` and `onResizeItem` (the older sentence). */
1168
1428
  moveHint: string;
1169
1429
  /** Announced after a move. `{title}`, `{start}`, `{end}`. */
1170
1430
  moved: string;
@@ -1176,8 +1436,30 @@ interface SchedulingTimelineLabels {
1176
1436
  /** Heading of the screen-reader list of windows and markers. */
1177
1437
  windows: string;
1178
1438
  now: string;
1439
+ /** @deprecated The words of `item.state`. Use `status` on the item, named by `statuses`. */
1179
1440
  states: Record<SchedulingEntryState, string>;
1441
+ /** @deprecated The words of `overlay.kind`. Use `kindLabel` on the overlay. */
1180
1442
  overlays: Record<SchedulingTimelineOverlayKind, string>;
1443
+ /** The words for `status`, used in the default accessible name. */
1444
+ statuses?: Partial<Record<SchedulingStatus, string>>;
1445
+ /** The accessible name of a window that can be selected. `{title}` is its kind, name and scope. */
1446
+ overlay?: string;
1447
+ /** The hint of a bar that `onMoveItem` moves, one step a key press. */
1448
+ moveKeysHint?: string;
1449
+ /** The hint of a bar whose end `onResizeItem` moves. */
1450
+ resizeHint?: string;
1451
+ /** The hint of a bar that `onProposeMove` moves. */
1452
+ proposeHint?: string;
1453
+ /** Announced for a pending move. `{start}` and `{end}` placeholders. */
1454
+ moveProposed?: string;
1455
+ /** Announced when a pending move is dropped. */
1456
+ moveCancelled?: string;
1457
+ /** Announced when the time asked for does not exist that day. `{time}` is the time used instead. */
1458
+ gapForward?: string;
1459
+ /** The count on the row of a collapsed group. `{count}` is the number the consumer gave; the wording, plural forms included, is this label. */
1460
+ groupSummary?: string;
1461
+ /** Announced when a move was handed to `onProposeMove`. `{start}` and `{end}` placeholders. */
1462
+ moveSent?: string;
1181
1463
  }
1182
1464
  declare const DEFAULT_SCHEDULING_TIMELINE_LABELS: SchedulingTimelineLabels;
1183
1465
  interface SchedulingTimelineProps {
@@ -1190,7 +1472,16 @@ interface SchedulingTimelineProps {
1190
1472
  /** IANA zone for tick boundaries and every printed time. */
1191
1473
  timeZone: string;
1192
1474
  locale?: string;
1475
+ /**
1476
+ * Collapsible blocks of lanes, in the order given. Lanes that no group names are drawn after
1477
+ * the groups. Unset keeps the flat list of lanes.
1478
+ */
1479
+ groups?: SchedulingTimelineGroup[];
1480
+ /** Called by a group head. When set, the consumer flips `collapsed`; nothing opens until the props say so. */
1481
+ onToggleGroup?: (id: string) => void;
1193
1482
  overlays?: SchedulingTimelineOverlay[];
1483
+ /** Makes each window a button. Called by a click or Enter on it. */
1484
+ onSelectOverlay?: (overlay: SchedulingTimelineOverlay) => void;
1194
1485
  markers?: SchedulingTimelineMarker[];
1195
1486
  /** Draws a "now" line at this instant (pass the current time; the component keeps no clock). */
1196
1487
  now?: string;
@@ -1200,18 +1491,53 @@ interface SchedulingTimelineProps {
1200
1491
  tickWidth?: string;
1201
1492
  /** Move/resize granularity in ms. Defaults: 15 min (hour), 1 h (day), 1 day (week, month). */
1202
1493
  step?: number;
1203
- /** Tick label. Default: `Intl` in `locale` and `timeZone`. */
1494
+ /** Local hours (0–23) that get a minor tick inside each day of a `day` axis, e.g. `[6, 12, 18]`. */
1495
+ subTicks?: number[];
1496
+ /** Tick label. Default: `Intl` in `locale` and `timeZone`. A sub-tick asks with the scale `'hour'`. */
1204
1497
  formatTick?: (at: Date, scale: TimelineScale) => string;
1205
1498
  /** Start/end text in names and announcements. Default: `Intl` medium date + short time in `timeZone`. */
1206
1499
  formatInstant?: (instant: string) => string;
1207
- /** Bar content. Default: the title. */
1500
+ /** Bar content. Default: the title. The text is cut at a word, never in one. */
1208
1501
  renderItem?: (item: SchedulingTimelineItem) => ReactNode;
1209
1502
  onSelectItem?: (item: SchedulingTimelineItem) => void;
1210
- /** Makes bars draggable and keyboard-movable. Receives the snapped new start and end. */
1503
+ /**
1504
+ * Makes bars draggable and keyboard-movable, one call for every key press and every drop.
1505
+ * Receives the snapped new start and end. Not called for moves while `onProposeMove` is set.
1506
+ */
1211
1507
  onMoveItem?: (id: string, next: {
1212
1508
  start: string;
1213
1509
  end: string;
1214
1510
  }) => void;
1511
+ /**
1512
+ * Lets the user ask for a move: a drag, or Shift and an arrow key to build a pending move and
1513
+ * Enter to send it (Escape drops it). Called once per finished gesture. The timeline never
1514
+ * moves the bar: it draws items where the props say, so an item whose props do not change is
1515
+ * back where it was. Return a promise to keep the outline until it settles.
1516
+ */
1517
+ onProposeMove?: (id: string, proposal: MoveProposal) => void | Promise<unknown>;
1518
+ /** Lets Alt+Shift and an arrow key move the end of a bar. Without it there is no resize of any kind. */
1519
+ onResizeItem?: (id: string, next: {
1520
+ start: string;
1521
+ end: string;
1522
+ }) => void;
1523
+ /**
1524
+ * `false` keeps the stacking of bars that share time and drops the hatch and the words for
1525
+ * it: the consumer says what clashes, with a reason, through `markers`. Default `true`.
1526
+ */
1527
+ flagOverlaps?: boolean;
1528
+ /**
1529
+ * Above this many rows only the rows near the viewport are mounted. The rows counted are
1530
+ * the ones passed: `lanes` plus `groups`, whatever is collapsed and however the bars pack, so
1531
+ * the answer does not move with the width. Default 150; `Infinity` mounts everything. It says
1532
+ * when windowing starts, not how much is mounted: that is what the viewport shows, plus overscan.
1533
+ */
1534
+ virtualizeAbove?: number;
1535
+ /** A CSS length. The lanes then scroll inside the timeline under the axis. Unset: the page scrolls. */
1536
+ maxHeight?: string;
1537
+ /** Shown above the axis, e.g. "Showing 500 of 1,240 items". */
1538
+ notice?: ReactNode;
1539
+ /** A note under the axis on the column of a day (`YYYY-MM-DD` in `timeZone`), e.g. a count the consumer knows. */
1540
+ columnNotes?: Record<string, ReactNode>;
1215
1541
  loading?: boolean;
1216
1542
  error?: string;
1217
1543
  onRetry?: () => void;
@@ -1219,12 +1545,15 @@ interface SchedulingTimelineProps {
1219
1545
  className?: string;
1220
1546
  }
1221
1547
  /**
1222
- * Lanes of bars on a time axis (HAR-1364; TENSOR C8): change schedules, rollout Gantt rows,
1223
- * renewal markers. Overlapping bars in a lane stack and are hatched; freeze, maintenance and
1224
- * blackout windows are bands; with `onMoveItem`, bars move by drag or Shift+arrows and their
1225
- * end changes with Alt+Shift+arrows, snapped to `step`.
1548
+ * Lanes of bars on a time axis (HAR-1364, HAR-1521): schedules by service, rollout rows,
1549
+ * renewal markers. Lanes can sit in collapsible groups; bars that share time stack in sub-rows
1550
+ * packed by `packLanes`; a window is one neutral, patterned element over the lanes it names;
1551
+ * only `band="high"` takes a hue. With `onProposeMove` a move is a proposal handed to the
1552
+ * consumer (drag, or Shift and an arrow key, then Enter); `onMoveItem` still commits every
1553
+ * step; the end of a bar moves only with `onResizeItem`. Long timelines mount only the rows
1554
+ * near the viewport.
1226
1555
  */
1227
- declare function SchedulingTimeline({ lanes, items, range, scale, timeZone, locale, overlays, markers, now, weekStartsOn, tickWidth, step: stepProp, formatTick, formatInstant: formatInstantProp, renderItem, onSelectItem, onMoveItem, loading, error, onRetry, labels: labelOverrides, className, }: SchedulingTimelineProps): react.JSX.Element;
1556
+ declare function SchedulingTimeline({ lanes, items, range, scale, timeZone, locale, groups, onToggleGroup, overlays, onSelectOverlay, markers, now, weekStartsOn, tickWidth, step: stepProp, subTicks, formatTick, formatInstant: formatInstantProp, renderItem, onSelectItem, onMoveItem, onProposeMove, onResizeItem, flagOverlaps, virtualizeAbove, maxHeight, notice, columnNotes, loading, error, onRetry, labels: labelOverrides, className, }: SchedulingTimelineProps): react.JSX.Element;
1228
1557
 
1229
1558
  /**
1230
1559
  * Two-way text diff for `TextDiff` (HAR-1368). Pure. Myers' O(ND) diff on lines or words,
@@ -1900,60 +2229,380 @@ interface FileUploadProps {
1900
2229
  /** The files so far, with their upload state (controlled). */
1901
2230
  items: readonly FileUploadItem[];
1902
2231
  /**
1903
- * Called with the files that passed `accept`, `maxSize` and `maxFiles`, and the ones that did
1904
- * not. Add accepted files to `items` and upload them; the component never uploads.
2232
+ * Called with the files that passed `accept`, `maxSize` and `maxFiles`, and the ones that did
2233
+ * not. Add accepted files to `items` and upload them; the component never uploads.
2234
+ */
2235
+ onFilesAdded: (accepted: File[], rejected: FileRejection[]) => void;
2236
+ onRemove?: (id: string) => void;
2237
+ onRetry?: (id: string) => void;
2238
+ /** Ask for alt text on image items (MOTUS photo intake). */
2239
+ onAltChange?: (id: string, alt: string) => void;
2240
+ /** Accepted types, as for `<input accept>`. */
2241
+ accept?: string;
2242
+ /** Largest file in bytes. */
2243
+ maxSize?: number;
2244
+ /** Most files in `items`. */
2245
+ maxFiles?: number;
2246
+ /** Default true. */
2247
+ multiple?: boolean;
2248
+ /** Open the camera on phones (`user` or `environment`). */
2249
+ capture?: 'user' | 'environment';
2250
+ disabled?: boolean;
2251
+ /** Second line of the drop zone, e.g. "PDF or images, up to 20 MB". */
2252
+ hint?: ReactNode;
2253
+ locale?: string;
2254
+ /** Count sizes in 1024s (1 MB = 1,048,576 bytes) instead of 1000s. Default `1000`. */
2255
+ sizeBase?: 1000 | 1024;
2256
+ /** The product's own size formatter; it replaces `formatFileSize` (and `sizeBase`). */
2257
+ formatSize?: FileSizeFormatter;
2258
+ /**
2259
+ * Words for this instance. Each one defaults to `UixLabelsProvider` `fileUpload`, then to
2260
+ * English, so one provider translates every upload below it (HAR-1630).
2261
+ */
2262
+ labels?: Partial<FileUploadLabels>;
2263
+ className?: string;
2264
+ }
2265
+ /**
2266
+ * Drop zone, file picker and upload list (HAR-984; TENSOR C15, MOTUS C-7, MEDx S18/S19). The
2267
+ * product owns the upload: it receives validated `File`s and reports progress, success and
2268
+ * failure through `items`. Keyboard users get a real button; drop is an extra, not the only way.
2269
+ */
2270
+ declare function FileUpload({ items, onFilesAdded, onRemove, onRetry, onAltChange, accept, maxSize, maxFiles, multiple, capture, disabled, hint, locale, sizeBase, formatSize, labels: labelOverrides, className, }: FileUploadProps): react.JSX.Element;
2271
+
2272
+ /**
2273
+ * The words of an `Attachment` row. In a module of its own, with no "use client": the
2274
+ * server-renderable `Attachment` and its client parts both read it, and a server component can
2275
+ * still import the defaults as plain values.
2276
+ */
2277
+ interface AttachmentLabels {
2278
+ /** Remove button. `{name}`. */
2279
+ remove: string;
2280
+ /** Download link name when `download` is set. `{name}`. */
2281
+ download: string;
2282
+ loading: string;
2283
+ forbidden: string;
2284
+ }
2285
+ declare const DEFAULT_ATTACHMENT_LABELS: AttachmentLabels;
2286
+
2287
+ /** One result row. */
2288
+ interface SearchSuggestOption {
2289
+ /** Stable id, returned by `onSelect`. */
2290
+ id: string;
2291
+ /** The result's name. Matched letters are emphasised. */
2292
+ title: string;
2293
+ /** Where the result lives, outermost first (a breadcrumb). Middle crumbs truncate first. */
2294
+ meta?: readonly string[];
2295
+ /** One or two lines of context, clamped at two lines. Matched letters are emphasised. */
2296
+ description?: string;
2297
+ /** Optional leading glyph (decorative). */
2298
+ icon?: ReactNode;
2299
+ }
2300
+ /** A labelled action inside the list (the footer row, the heading action). */
2301
+ interface SearchSuggestAction {
2302
+ /** Visible text of the action. */
2303
+ label: string;
2304
+ /** Runs when the action is chosen. */
2305
+ onSelect: () => void;
2306
+ }
2307
+ /** Props of {@link SearchSuggest}. */
2308
+ interface SearchSuggestProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onSelect' | 'title' | 'defaultValue'> {
2309
+ /** The text in the field (controlled). */
2310
+ value: string;
2311
+ /** Called on every edit, and with an empty string when the field is cleared. */
2312
+ onValueChange: (value: string) => void;
2313
+ /** The suggestions to show, best first. The consumer filters; this component only renders. */
2314
+ options: readonly SearchSuggestOption[];
2315
+ /** Called when a row is chosen by click or Enter. The list closes afterwards. */
2316
+ onSelect: (id: string, option: SearchSuggestOption) => void;
2317
+ /** Accessible name of the field (there is no visible label; the placeholder is not a label). */
2318
+ label: string;
2319
+ placeholder?: string;
2320
+ /** Text to emphasise in rows. Defaults to `value`. */
2321
+ highlight?: string;
2322
+ /** A title above the options, e.g. "Recently opened". */
2323
+ heading?: string;
2324
+ /** A small action next to the heading, e.g. "Clear". */
2325
+ headingAction?: SearchSuggestAction;
2326
+ /** A last row after the options, e.g. "Show all 23 results". Reachable by arrow keys. */
2327
+ footer?: SearchSuggestAction;
2328
+ /** The field is fetching suggestions: a spinner shows in the field and, with no options yet, in the list. */
2329
+ loading?: boolean;
2330
+ /** Announced while loading, and shown in the list when it has no rows yet. */
2331
+ loadingLabel?: string;
2332
+ /** Shown when the field has text, nothing is loading and there are no options. */
2333
+ empty?: ReactNode;
2334
+ /** Shown instead of the empty state when suggestions could not be loaded. */
2335
+ error?: ReactNode;
2336
+ /**
2337
+ * Shown in the open list when there is nothing else to show there: no options, nothing
2338
+ * loading, no error and no empty state. For a search that has not started yet, e.g.
2339
+ * "Type at least 2 characters." (HAR-1648).
2340
+ */
2341
+ idle?: ReactNode;
2342
+ /**
2343
+ * A line under the options that is not an option: arrow keys skip it and it cannot be
2344
+ * chosen. For "More matches. Keep typing to narrow the search." when the results were cut off.
2345
+ */
2346
+ note?: ReactNode;
2347
+ /** A keyboard hint shown in the empty, unfocused field, e.g. "/". */
2348
+ shortcutHint?: string;
2349
+ /** Accessible name of the clear button (default "Clear search"). */
2350
+ clearLabel?: string;
2351
+ /** A polite announcement, e.g. "8 results". Rendered in a visually hidden live region. */
2352
+ status?: string;
2353
+ /** `lg` for a page-level search (hubs, start pages); `md` for a field in a toolbar or header. */
2354
+ size?: 'md' | 'lg';
2355
+ /** Controlled open state of the suggestion list (optional). */
2356
+ open?: boolean;
2357
+ /** Called when the list opens or closes. */
2358
+ onOpenChange?: (open: boolean) => void;
2359
+ /**
2360
+ * `absolute` (default) places the list under the field inside its own box. `fixed` floats it on
2361
+ * the viewport, so a clipping ancestor (`overflow: hidden` toolbars and headers) cannot cut it off;
2362
+ * it follows the field on scroll and resize and flips above it when there is no room below.
2363
+ */
2364
+ strategy?: 'absolute' | 'fixed';
2365
+ /** Focus the field from outside (e.g. a "/" shortcut). */
2366
+ inputRef?: Ref<HTMLInputElement | null>;
2367
+ /** Focus the field on mount. */
2368
+ autoFocus?: boolean;
2369
+ /** Form field name of the input. */
2370
+ name?: string;
2371
+ /** Id of the input itself (for a `<label for>` / `Field htmlFor`); `id` stays on the wrapper. */
2372
+ inputId?: string;
2373
+ /** `aria-describedby` of the input (hint and error text from a `Field`). */
2374
+ inputDescribedBy?: string;
2375
+ }
2376
+ /**
2377
+ * A search field with a suggestion list underneath: the "search and jump" pattern of Windows
2378
+ * Settings, Android Settings and most docs sites. Each row shows a name, where it lives and a line
2379
+ * of context. ARIA combobox pattern: focus stays in the field, arrow keys move the active row
2380
+ * (`aria-activedescendant`), Enter opens it (the first row when none is active), Escape closes the
2381
+ * list and a second Escape clears the text.
2382
+ */
2383
+ declare function SearchSuggest({ value, onValueChange, options, onSelect, label, placeholder, highlight, heading, headingAction, footer, loading, loadingLabel, empty, idle, note, error, shortcutHint, clearLabel: clearLabelProp, status, size, open: openProp, strategy, onOpenChange, inputRef, autoFocus, name, inputId, inputDescribedBy, className, onBlur, ...props }: SearchSuggestProps): react.JSX.Element;
2384
+
2385
+ interface EntityPickerLabels {
2386
+ /** Accessible name of the search field while picking. */
2387
+ search: string;
2388
+ loading: string;
2389
+ empty: string;
2390
+ error: string;
2391
+ retry: string;
2392
+ /** Clears the chosen record. `{title}`. */
2393
+ clear: string;
2394
+ /** Names the chosen-record button that reopens the search. `{label}`, `{title}`. */
2395
+ change: string;
2396
+ /** Shown in the field when nothing is chosen. */
2397
+ none: string;
2398
+ /** Polite count after a search. `{count}`. */
2399
+ results: string;
2400
+ /**
2401
+ * The last line of the list when the search found more than it returned (HAR-1648). Not an
2402
+ * option: it cannot be chosen.
2403
+ */
2404
+ more: string;
2405
+ /** Polite count when there are more matches than shown. `{count}` is the number shown. */
2406
+ resultsMore: string;
2407
+ /** Shown in the open list while the query is shorter than `minQueryLength`. `{count}`. */
2408
+ tooShort: string;
2409
+ /** The same when `minQueryLength` is 1. */
2410
+ typeToSearch: string;
2411
+ }
2412
+ declare const DEFAULT_ENTITY_PICKER_LABELS: EntityPickerLabels;
2413
+ /** What `onSearch` may resolve to when it knows its list was cut off. */
2414
+ interface EntityPickerSearchResult {
2415
+ options: readonly SearchSuggestOption[];
2416
+ /** There are more matches than `options` holds: the list ends with the `more` line. */
2417
+ hasMore?: boolean;
2418
+ }
2419
+ interface EntityPickerProps {
2420
+ /** The chosen record, or null. */
2421
+ value: SearchSuggestOption | null;
2422
+ onValueChange: (next: SearchSuggestOption | null) => void;
2423
+ /**
2424
+ * Finds records for the query; a rejection shows the error state with a Retry row. Resolve
2425
+ * with the options, or with `{ options, hasMore: true }` when the list was cut off (a page of
2426
+ * 20 out of many): the list then says that more match.
2427
+ */
2428
+ onSearch: (query: string) => Promise<readonly SearchSuggestOption[] | EntityPickerSearchResult>;
2429
+ /** The field's name (the visible label usually comes from a surrounding `Field`). */
2430
+ label: string;
2431
+ /** Id of the control, for `Field htmlFor`/`label for`. */
2432
+ id?: string;
2433
+ /** Hidden form value: the chosen record's id. */
2434
+ name?: string;
2435
+ placeholder?: string;
2436
+ /**
2437
+ * Search only from this many characters. Default 0 (an empty query lists suggestions). Below
2438
+ * it the open list shows the `tooShort` hint instead of nothing.
2439
+ */
2440
+ minQueryLength?: number;
2441
+ /** Debounce before searching, in ms. Default 250. */
2442
+ delay?: number;
2443
+ disabled?: boolean;
2444
+ invalid?: boolean;
2445
+ /** Ids of hint/error text (from `Field`). */
2446
+ 'aria-describedby'?: string;
2447
+ /** How the chosen record shows in the field. Default: title, then the last breadcrumb. */
2448
+ renderValue?: (option: SearchSuggestOption) => ReactNode;
2449
+ /** Each word defaults to `UixLabelsProvider` `entityPicker`, then to English. */
2450
+ labels?: Partial<EntityPickerLabels>;
2451
+ className?: string;
2452
+ }
2453
+ /**
2454
+ * A form field that holds one record found by an async search (HAR-1366; TENSOR B28/C5
2455
+ * `entity-picker.tsx`, MOTUS B-P10): the chosen record shows as the field's value with a
2456
+ * clear ×; choosing again or typing opens a `SearchSuggest` list with loading, empty and error
2457
+ * states, and Retry is a list row, so the keyboard reaches it. Stale results are ignored.
2458
+ */
2459
+ declare function EntityPicker({ value, onValueChange, onSearch, label, id, name, placeholder, minQueryLength, delay, disabled, invalid, 'aria-describedby': describedBy, renderValue, labels: labelOverrides, className, }: EntityPickerProps): react.JSX.Element;
2460
+
2461
+ interface TreeNodeData {
2462
+ id: string;
2463
+ label: ReactNode;
2464
+ /** Plain-text label for keyboard typeahead when `label` is not a string (UIX-A11Y-2). */
2465
+ typeaheadLabel?: string;
2466
+ icon?: ReactNode;
2467
+ children?: TreeNodeData[];
2468
+ /**
2469
+ * The node can be expanded although its `children` are not known yet (HAR-1382). With
2470
+ * `Tree loadChildren`, expanding it loads them; until then it shows a loading row, and an
2471
+ * error row with Retry when the load failed.
2472
+ */
2473
+ hasChildren?: boolean;
2474
+ }
2475
+ /** The words of a tree that loads children on expand (HAR-1382). */
2476
+ interface TreeLabels {
2477
+ /** The row under a node whose children are loading. */
2478
+ loading: string;
2479
+ /** The row under a node whose children could not be loaded. */
2480
+ error: string;
2481
+ /** The action in that row. Enter, Space or a click on the row runs it. */
2482
+ retry: string;
2483
+ }
2484
+ declare const DEFAULT_TREE_LABELS: TreeLabels;
2485
+ interface TreeNodeProps {
2486
+ node: TreeNodeData;
2487
+ expanded: Set<string>;
2488
+ selected?: string;
2489
+ selectable: boolean;
2490
+ tabbableId?: string;
2491
+ onToggle: (id: string) => void;
2492
+ onSelect?: (id: string) => void;
2493
+ onFocusNode: (id: string) => void;
2494
+ level?: number;
2495
+ /** Whether a click on the row itself toggles a branch (see {@link TreeProps.toggleOnRowClick}). */
2496
+ rowToggles?: boolean;
2497
+ /** Ids of nodes whose children are loading (`aria-busy`). */
2498
+ busy?: ReadonlySet<string>;
2499
+ }
2500
+ interface TreeProps extends Omit<HTMLAttributes<HTMLUListElement>, 'onSelect' | 'onChange'> {
2501
+ nodes: TreeNodeData[];
2502
+ expanded?: Set<string>;
2503
+ defaultExpanded?: Set<string>;
2504
+ selected?: string;
2505
+ onToggle?: (id: string) => void;
2506
+ onSelect?: (id: string) => void;
2507
+ /**
2508
+ * Virtualize a large tree — render only the rows in view (UIX-FIX-05). Defaults to auto
2509
+ * (on past the engine's `shouldVirtualize` threshold of visible rows). When on, the tree is
2510
+ * flattened to a scrollable list of `maxHeight` with fixed-height rows; a11y is preserved via
2511
+ * `aria-level` / `aria-setsize` / `aria-posinset` instead of nested `role="group"`s.
2512
+ */
2513
+ virtualize?: boolean;
2514
+ /** Fixed row height (px) used for virtualization. Default 32. */
2515
+ rowHeight?: number;
2516
+ /** Scroll-viewport height (px) when virtualizing. Default 384. */
2517
+ maxHeight?: number;
2518
+ /**
2519
+ * Whether clicking a branch row toggles it (TENSOR RX-125, UIX-09). Defaults to true for a
2520
+ * pure navigation tree and to false when the tree is selectable (`selected` / `onSelect`),
2521
+ * where a row click only selects and the chevron toggles. Enter/Space still does both.
2522
+ */
2523
+ toggleOnRowClick?: boolean;
2524
+ /**
2525
+ * Loads the children of a node that has `hasChildren` and no `children` yet, the first time
2526
+ * it is expanded (HAR-1382; an org chart, a CMDB hierarchy). While it runs the node is
2527
+ * `aria-busy` and shows a loading row; a rejection shows an error row whose Enter, Space or
2528
+ * click retries. The result is kept for the life of the tree; a node that later arrives with
2529
+ * its own `children` uses those.
2530
+ */
2531
+ loadChildren?: (node: TreeNodeData) => Promise<TreeNodeData[]>;
2532
+ /** Words of the loading and error rows. Default: `UixLabelsProvider` `tree`, then English. */
2533
+ labels?: Partial<TreeLabels>;
2534
+ }
2535
+ declare function Tree({ nodes: nodesProp, expanded: controlledExpanded, defaultExpanded, selected, onToggle, onSelect: onSelectProp, virtualize, rowHeight, maxHeight, toggleOnRowClick, loadChildren, labels: labelOverrides, className, ...props }: TreeProps): react.JSX.Element;
2536
+
2537
+ /** Every word `InlineEdit` renders or announces. `{label}` is the field's name. */
2538
+ interface InlineEditLabels {
2539
+ /** Added to the view button's name after the value: "…, Edit {label}". */
2540
+ edit: string;
2541
+ save: string;
2542
+ cancel: string;
2543
+ /** Polite status while `onSave` runs. */
2544
+ saving: string;
2545
+ /** Polite status after a save. */
2546
+ saved: string;
2547
+ /** Shown when `onSave` rejects without a message of its own. */
2548
+ failed: string;
2549
+ /** What the view shows when the value is empty and no `placeholder` was given. */
2550
+ empty: string;
2551
+ }
2552
+ declare const DEFAULT_INLINE_EDIT_LABELS: InlineEditLabels;
2553
+ /** What a custom editor receives. Spread the field props onto your control. */
2554
+ interface InlineEditEditorProps {
2555
+ /** The draft. */
2556
+ value: string;
2557
+ onChange: (next: string) => void;
2558
+ /** Save the draft (what Enter does in the default editor). */
2559
+ save: () => void;
2560
+ cancel: () => void;
2561
+ /** `id`, the accessible name, the error wiring and `disabled` while saving. */
2562
+ field: {
2563
+ id: string;
2564
+ 'aria-label': string;
2565
+ 'aria-describedby': string | undefined;
2566
+ 'aria-invalid': true | undefined;
2567
+ disabled: boolean;
2568
+ };
2569
+ }
2570
+ interface InlineEditProps {
2571
+ /** The saved value. */
2572
+ value: string;
2573
+ /**
2574
+ * Save the new value. Return a promise to show the pending state; a rejection keeps the
2575
+ * editor open with the error under it (the rejection's message, else `labels.failed`).
1905
2576
  */
1906
- onFilesAdded: (accepted: File[], rejected: FileRejection[]) => void;
1907
- onRemove?: (id: string) => void;
1908
- onRetry?: (id: string) => void;
1909
- /** Ask for alt text on image items (MOTUS photo intake). */
1910
- onAltChange?: (id: string, alt: string) => void;
1911
- /** Accepted types, as for `<input accept>`. */
1912
- accept?: string;
1913
- /** Largest file in bytes. */
1914
- maxSize?: number;
1915
- /** Most files in `items`. */
1916
- maxFiles?: number;
1917
- /** Default true. */
1918
- multiple?: boolean;
1919
- /** Open the camera on phones (`user` or `environment`). */
1920
- capture?: 'user' | 'environment';
1921
- disabled?: boolean;
1922
- /** Second line of the drop zone, e.g. "PDF or images, up to 20 MB". */
1923
- hint?: ReactNode;
1924
- locale?: string;
1925
- /** Count sizes in 1024s (1 MB = 1,048,576 bytes) instead of 1000s. Default `1000`. */
1926
- sizeBase?: 1000 | 1024;
1927
- /** The product's own size formatter; it replaces `formatFileSize` (and `sizeBase`). */
1928
- formatSize?: FileSizeFormatter;
2577
+ onSave: (next: string) => void | Promise<void>;
2578
+ /** The field's name: "Title", "Due date". It names the edit button and the editor. */
2579
+ label: string;
2580
+ /** How the saved value shows. Default: the text itself. */
2581
+ renderView?: (value: string) => ReactNode;
1929
2582
  /**
1930
- * Words for this instance. Each one defaults to `UixLabelsProvider` `fileUpload`, then to
1931
- * English, so one provider translates every upload below it (HAR-1630).
2583
+ * A custom editor: a `Select`, a `Combobox`, a date field. Spread `field` onto the control.
2584
+ * Default: an `Input`, or a `Textarea` with `multiline`.
1932
2585
  */
1933
- labels?: Partial<FileUploadLabels>;
2586
+ renderEditor?: (props: InlineEditEditorProps) => ReactNode;
2587
+ /** Edit in a textarea: Enter adds a line, Ctrl/⌘+Enter saves. */
2588
+ multiline?: boolean;
2589
+ /** Return a message to refuse the draft; nothing is saved while it returns one. */
2590
+ validate?: (next: string) => ReactNode | undefined;
2591
+ /** Shown in the view while the value is empty, e.g. "Add a description". */
2592
+ placeholder?: ReactNode;
2593
+ /** Read-only: the value shows as plain text, with no edit button. */
2594
+ disabled?: boolean;
2595
+ /** Each word defaults to `UixLabelsProvider` `inlineEdit`, then to English. */
2596
+ labels?: Partial<InlineEditLabels>;
1934
2597
  className?: string;
1935
2598
  }
1936
2599
  /**
1937
- * Drop zone, file picker and upload list (HAR-984; TENSOR C15, MOTUS C-7, MEDx S18/S19). The
1938
- * product owns the upload: it receives validated `File`s and reports progress, success and
1939
- * failure through `items`. Keyboard users get a real button; drop is an extra, not the only way.
1940
- */
1941
- declare function FileUpload({ items, onFilesAdded, onRemove, onRetry, onAltChange, accept, maxSize, maxFiles, multiple, capture, disabled, hint, locale, sizeBase, formatSize, labels: labelOverrides, className, }: FileUploadProps): react.JSX.Element;
1942
-
1943
- /**
1944
- * The words of an `Attachment` row. In a module of its own, with no "use client": the
1945
- * server-renderable `Attachment` and its client parts both read it, and a server component can
1946
- * still import the defaults as plain values.
2600
+ * A value that is edited in place (HAR-1381; TENSOR C16 `editable-record.tsx`): the value is
2601
+ * a button that says what it edits; activating it swaps in an editor with Save and Cancel.
2602
+ * Enter saves and Escape cancels; while `onSave` runs the editor is busy; a failed save keeps
2603
+ * the draft and shows why; afterwards focus is back on the value. Nothing is saved on blur.
1947
2604
  */
1948
- interface AttachmentLabels {
1949
- /** Remove button. `{name}`. */
1950
- remove: string;
1951
- /** Download link name when `download` is set. `{name}`. */
1952
- download: string;
1953
- loading: string;
1954
- forbidden: string;
1955
- }
1956
- declare const DEFAULT_ATTACHMENT_LABELS: AttachmentLabels;
2605
+ declare function InlineEdit({ value, onSave, label, renderView, renderEditor, multiline, validate, placeholder, disabled, labels: labelOverrides, className, }: InlineEditProps): react.JSX.Element;
1957
2606
 
1958
2607
  /**
1959
2608
  * Kit chrome strings by component (HAR-1358; TENSOR C20, MOTUS executive summary #3).
@@ -1993,15 +2642,23 @@ interface UixLabels {
1993
2642
  searchSuggest?: {
1994
2643
  clear?: string;
1995
2644
  };
2645
+ /** `resultsOne` / `resultsMany`: the polite result count; `{count}`. */
1996
2646
  commandPalette?: {
1997
2647
  input?: string;
2648
+ resultsOne?: string;
2649
+ resultsMany?: string;
1998
2650
  };
2651
+ entityPicker?: Partial<EntityPickerLabels>;
2652
+ tree?: Partial<TreeLabels>;
2653
+ inlineEdit?: Partial<InlineEditLabels>;
1999
2654
  confirmDialog?: {
2000
2655
  typeToConfirm?: string;
2001
2656
  compensation?: string;
2002
2657
  };
2003
2658
  schedulingCalendar?: Partial<SchedulingCalendarLabels>;
2004
2659
  dateRangePicker?: Partial<DateRangePickerLabels>;
2660
+ datePicker?: Partial<DatePickerLabels>;
2661
+ dateTimePicker?: Partial<DateTimePickerLabels>;
2005
2662
  schedulingTimeline?: Partial<SchedulingTimelineLabels>;
2006
2663
  textDiff?: Partial<TextDiffLabels>;
2007
2664
  filterEditor?: Partial<FilterEditorLabels>;
@@ -2080,144 +2737,6 @@ interface ComboboxProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>
2080
2737
  /** Searchable single-select combobox with keyboard navigation and no framework dependencies. */
2081
2738
  declare function Combobox({ options, value, defaultValue, onValueChange, label, placeholder, emptyLabel, name, disabled, className, ...props }: ComboboxProps): react.JSX.Element;
2082
2739
 
2083
- /** One result row. */
2084
- interface SearchSuggestOption {
2085
- /** Stable id, returned by `onSelect`. */
2086
- id: string;
2087
- /** The result's name. Matched letters are emphasised. */
2088
- title: string;
2089
- /** Where the result lives, outermost first (a breadcrumb). Middle crumbs truncate first. */
2090
- meta?: readonly string[];
2091
- /** One or two lines of context, clamped at two lines. Matched letters are emphasised. */
2092
- description?: string;
2093
- /** Optional leading glyph (decorative). */
2094
- icon?: ReactNode;
2095
- }
2096
- /** A labelled action inside the list (the footer row, the heading action). */
2097
- interface SearchSuggestAction {
2098
- /** Visible text of the action. */
2099
- label: string;
2100
- /** Runs when the action is chosen. */
2101
- onSelect: () => void;
2102
- }
2103
- /** Props of {@link SearchSuggest}. */
2104
- interface SearchSuggestProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onSelect' | 'title' | 'defaultValue'> {
2105
- /** The text in the field (controlled). */
2106
- value: string;
2107
- /** Called on every edit, and with an empty string when the field is cleared. */
2108
- onValueChange: (value: string) => void;
2109
- /** The suggestions to show, best first. The consumer filters; this component only renders. */
2110
- options: readonly SearchSuggestOption[];
2111
- /** Called when a row is chosen by click or Enter. The list closes afterwards. */
2112
- onSelect: (id: string, option: SearchSuggestOption) => void;
2113
- /** Accessible name of the field (there is no visible label; the placeholder is not a label). */
2114
- label: string;
2115
- placeholder?: string;
2116
- /** Text to emphasise in rows. Defaults to `value`. */
2117
- highlight?: string;
2118
- /** A title above the options, e.g. "Recently opened". */
2119
- heading?: string;
2120
- /** A small action next to the heading, e.g. "Clear". */
2121
- headingAction?: SearchSuggestAction;
2122
- /** A last row after the options, e.g. "Show all 23 results". Reachable by arrow keys. */
2123
- footer?: SearchSuggestAction;
2124
- /** The field is fetching suggestions: a spinner shows in the field and, with no options yet, in the list. */
2125
- loading?: boolean;
2126
- /** Announced while loading, and shown in the list when it has no rows yet. */
2127
- loadingLabel?: string;
2128
- /** Shown when the field has text, nothing is loading and there are no options. */
2129
- empty?: ReactNode;
2130
- /** Shown instead of the empty state when suggestions could not be loaded. */
2131
- error?: ReactNode;
2132
- /** A keyboard hint shown in the empty, unfocused field, e.g. "/". */
2133
- shortcutHint?: string;
2134
- /** Accessible name of the clear button (default "Clear search"). */
2135
- clearLabel?: string;
2136
- /** A polite announcement, e.g. "8 results". Rendered in a visually hidden live region. */
2137
- status?: string;
2138
- /** `lg` for a page-level search (hubs, start pages); `md` for a field in a toolbar or header. */
2139
- size?: 'md' | 'lg';
2140
- /** Controlled open state of the suggestion list (optional). */
2141
- open?: boolean;
2142
- /** Called when the list opens or closes. */
2143
- onOpenChange?: (open: boolean) => void;
2144
- /**
2145
- * `absolute` (default) places the list under the field inside its own box. `fixed` floats it on
2146
- * the viewport, so a clipping ancestor (`overflow: hidden` toolbars and headers) cannot cut it off;
2147
- * it follows the field on scroll and resize and flips above it when there is no room below.
2148
- */
2149
- strategy?: 'absolute' | 'fixed';
2150
- /** Focus the field from outside (e.g. a "/" shortcut). */
2151
- inputRef?: Ref<HTMLInputElement | null>;
2152
- /** Focus the field on mount. */
2153
- autoFocus?: boolean;
2154
- /** Form field name of the input. */
2155
- name?: string;
2156
- /** Id of the input itself (for a `<label for>` / `Field htmlFor`); `id` stays on the wrapper. */
2157
- inputId?: string;
2158
- /** `aria-describedby` of the input (hint and error text from a `Field`). */
2159
- inputDescribedBy?: string;
2160
- }
2161
- /**
2162
- * A search field with a suggestion list underneath: the "search and jump" pattern of Windows
2163
- * Settings, Android Settings and most docs sites. Each row shows a name, where it lives and a line
2164
- * of context. ARIA combobox pattern: focus stays in the field, arrow keys move the active row
2165
- * (`aria-activedescendant`), Enter opens it (the first row when none is active), Escape closes the
2166
- * list and a second Escape clears the text.
2167
- */
2168
- declare function SearchSuggest({ value, onValueChange, options, onSelect, label, placeholder, highlight, heading, headingAction, footer, loading, loadingLabel, empty, error, shortcutHint, clearLabel: clearLabelProp, status, size, open: openProp, strategy, onOpenChange, inputRef, autoFocus, name, inputId, inputDescribedBy, className, onBlur, ...props }: SearchSuggestProps): react.JSX.Element;
2169
-
2170
- interface EntityPickerLabels {
2171
- /** Accessible name of the search field while picking. */
2172
- search: string;
2173
- loading: string;
2174
- empty: string;
2175
- error: string;
2176
- retry: string;
2177
- /** Clears the chosen record. `{title}`. */
2178
- clear: string;
2179
- /** Names the chosen-record button that reopens the search. `{label}`, `{title}`. */
2180
- change: string;
2181
- /** Shown in the field when nothing is chosen. */
2182
- none: string;
2183
- /** Polite count after a search. `{count}`. */
2184
- results: string;
2185
- }
2186
- declare const DEFAULT_ENTITY_PICKER_LABELS: EntityPickerLabels;
2187
- interface EntityPickerProps {
2188
- /** The chosen record, or null. */
2189
- value: SearchSuggestOption | null;
2190
- onValueChange: (next: SearchSuggestOption | null) => void;
2191
- /** Finds records for the query; a rejection shows the error state with a Retry row. */
2192
- onSearch: (query: string) => Promise<readonly SearchSuggestOption[]>;
2193
- /** The field's name (the visible label usually comes from a surrounding `Field`). */
2194
- label: string;
2195
- /** Id of the control, for `Field htmlFor`/`label for`. */
2196
- id?: string;
2197
- /** Hidden form value: the chosen record's id. */
2198
- name?: string;
2199
- placeholder?: string;
2200
- /** Search only from this many characters. Default 0 (an empty query lists suggestions). */
2201
- minQueryLength?: number;
2202
- /** Debounce before searching, in ms. Default 250. */
2203
- delay?: number;
2204
- disabled?: boolean;
2205
- invalid?: boolean;
2206
- /** Ids of hint/error text (from `Field`). */
2207
- 'aria-describedby'?: string;
2208
- /** How the chosen record shows in the field. Default: title, then the last breadcrumb. */
2209
- renderValue?: (option: SearchSuggestOption) => ReactNode;
2210
- labels?: Partial<EntityPickerLabels>;
2211
- className?: string;
2212
- }
2213
- /**
2214
- * A form field that holds one record found by an async search (HAR-1366; TENSOR B28/C5
2215
- * `entity-picker.tsx`, MOTUS B-P10): the chosen record shows as the field's value with a
2216
- * clear ×; choosing again or typing opens a `SearchSuggest` list with loading, empty and error
2217
- * states, and Retry is a list row, so the keyboard reaches it. Stale results are ignored.
2218
- */
2219
- declare function EntityPicker({ value, onValueChange, onSearch, label, id, name, placeholder, minQueryLength, delay, disabled, invalid, 'aria-describedby': describedBy, renderValue, labels: labelOverrides, className, }: EntityPickerProps): react.JSX.Element;
2220
-
2221
2740
  /** One run of a result's text, emphasised or not. */
2222
2741
  interface SearchSegment {
2223
2742
  text: string;
@@ -2252,13 +2771,34 @@ interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'>
2252
2771
  label?: ReactNode;
2253
2772
  }
2254
2773
  declare const Radio: react.ForwardRefExoticComponent<RadioProps & react.RefAttributes<HTMLInputElement>>;
2774
+ interface RadioCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'title'> {
2775
+ /** The choice's name. */
2776
+ title: ReactNode;
2777
+ /** One or two lines that explain the choice. */
2778
+ description?: ReactNode;
2779
+ /** A preview, an illustration or an icon above the text (decorative: the title names the choice). */
2780
+ media?: ReactNode;
2781
+ }
2782
+ /**
2783
+ * A radio as a card (HAR-1373; TENSOR C17/B14): for a choice whose options need a preview or
2784
+ * a description (appearance, plan, mode). It is a native radio inside a label, so the group's
2785
+ * keyboard, form value and `required` work as for `Radio`. The selected card shows a check
2786
+ * mark and a stronger border, never colour alone. Put the cards in
2787
+ * `<RadioGroup variant="card" label="…">` and give them one `name`.
2788
+ */
2789
+ declare const RadioCard: react.ForwardRefExoticComponent<RadioCardProps & react.RefAttributes<HTMLInputElement>>;
2255
2790
  interface RadioGroupProps {
2256
2791
  children: ReactNode;
2257
2792
  className?: string;
2258
2793
  /** Group name; when set the group renders as fieldset/legend so it's announced with each radio. */
2259
2794
  label?: ReactNode;
2795
+ /**
2796
+ * `'list'` (default): radios in a column. `'card'`: a grid of `RadioCard`s that wraps to one
2797
+ * column on a phone.
2798
+ */
2799
+ variant?: 'list' | 'card';
2260
2800
  }
2261
- declare function RadioGroup({ children, className, label }: RadioGroupProps): react.JSX.Element;
2801
+ declare function RadioGroup({ children, className, label, variant }: RadioGroupProps): react.JSX.Element;
2262
2802
 
2263
2803
  interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
2264
2804
  label?: ReactNode;
@@ -2742,9 +3282,16 @@ declare function CollapsibleSection(props: CollapsibleSectionProps): react.JSX.E
2742
3282
 
2743
3283
  interface ListProps extends HTMLAttributes<HTMLDivElement> {
2744
3284
  children?: ReactNode;
3285
+ /**
3286
+ * Makes the list one tab stop: ArrowUp and ArrowDown move between its `ListItem`s, Home and
3287
+ * End go to the first and last, Enter and Space activate the focused item (its `onClick`).
3288
+ * Focus stays on the same item across re-renders with the same keys. A roving list is a
3289
+ * client component; without `roving` the list stays server-renderable.
3290
+ */
3291
+ roving?: boolean;
2745
3292
  }
2746
3293
  /** Bordered, rounded list container over `.uix-list`. */
2747
- declare function List({ children, className, ...props }: ListProps): react.JSX.Element;
3294
+ declare function List({ children, className, roving, ...props }: ListProps): react.JSX.Element;
2748
3295
  interface ListItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
2749
3296
  title?: ReactNode;
2750
3297
  meta?: ReactNode;
@@ -3757,19 +4304,41 @@ interface LabelProps extends HTMLAttributes<HTMLSpanElement> {
3757
4304
  /** Colored label / tag over `.uix-label`. */
3758
4305
  declare function Label({ color, dot, children, className, style, ...props }: LabelProps): react.JSX.Element;
3759
4306
 
4307
+ /** Presence of a person (HAR-1374). Each state has its own shape as well as its own colour. */
4308
+ type AvatarPresence = 'online' | 'busy' | 'away' | 'offline';
4309
+ /** The words read for each presence state. English; pass translations as `presenceLabels`. */
4310
+ declare const DEFAULT_PRESENCE_LABELS: Record<AvatarPresence, string>;
3760
4311
  interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
3761
- /** TENSOR RX-125 (UIX-04): translatable; English default. */
4312
+ /** TENSOR RX-125 (UIX-04): translatable; English default. Still honoured for `online`. */
3762
4313
  onlineLabel?: string;
3763
4314
  size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl';
3764
4315
  src?: string;
3765
4316
  alt?: string;
3766
4317
  /** Initials / fallback shown when there is no `src`. */
3767
4318
  children?: ReactNode;
3768
- /** Online status dot. */
4319
+ /** Online status dot. The same as `presence="online"`; kept for existing callers. */
3769
4320
  status?: boolean;
4321
+ /**
4322
+ * A presence dot: `online` (filled green), `busy` (red with a bar), `away` (an amber ring),
4323
+ * `offline` (a grey ring). The state is also in visually hidden text, so it is never colour
4324
+ * alone.
4325
+ */
4326
+ presence?: AvatarPresence;
4327
+ /** Translations of the presence words. */
4328
+ presenceLabels?: Partial<Record<AvatarPresence, string>>;
3770
4329
  }
3771
4330
  /** Avatar over `.uix-avatar`. Renders an image when `src` is set, else children (initials). */
3772
- declare function Avatar({ size, src, alt, children, status, onlineLabel, className, ...props }: AvatarProps): react.JSX.Element;
4331
+ declare function Avatar({ size, src, alt, children, status, presence, presenceLabels, onlineLabel, className, ...props }: AvatarProps): react.JSX.Element;
4332
+ interface PresenceDotProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
4333
+ presence: AvatarPresence;
4334
+ /**
4335
+ * The state in words for assistive technology. Default: the English word. Pass `null` when
4336
+ * the state is already written next to the dot, to make the dot decorative.
4337
+ */
4338
+ label?: string | null;
4339
+ }
4340
+ /** The presence dot on its own, for a row or a menu that shows no avatar (HAR-1374). */
4341
+ declare function PresenceDot({ presence, label, className, ...props }: PresenceDotProps): react.JSX.Element;
3773
4342
  interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {
3774
4343
  children?: ReactNode;
3775
4344
  }
@@ -4289,6 +4858,11 @@ declare function MenuSeparator(): react.JSX.Element;
4289
4858
  interface CommandPaletteProps extends HTMLAttributes<HTMLDivElement> {
4290
4859
  /** TENSOR RX-125 (UIX-04): translatable; English default. */
4291
4860
  inputLabel?: string;
4861
+ /**
4862
+ * The polite result count for this palette (HAR-1647). Default: `UixLabelsProvider`
4863
+ * `commandPalette.resultsOne` / `resultsMany` (`{count}`), then "1 result" / "3 results".
4864
+ */
4865
+ resultsLabel?: (count: number) => string;
4292
4866
  /** Props for the search input (value/onChange/placeholder wired by the consumer). */
4293
4867
  inputProps?: InputHTMLAttributes<HTMLInputElement>;
4294
4868
  children?: ReactNode;
@@ -4299,7 +4873,7 @@ interface CommandPaletteProps extends HTMLAttributes<HTMLDivElement> {
4299
4873
  * a combobox over the listbox of `CommandItem`s; spreads override every default, so
4300
4874
  * consumers already passing their own roles/labels keep working.
4301
4875
  */
4302
- declare function CommandPalette({ inputProps, children, inputLabel: inputLabelProp, className, ...props }: CommandPaletteProps): react.JSX.Element;
4876
+ declare function CommandPalette({ inputProps, children, inputLabel: inputLabelProp, resultsLabel, className, ...props }: CommandPaletteProps): react.JSX.Element;
4303
4877
  interface CommandGroupProps {
4304
4878
  label?: ReactNode;
4305
4879
  children?: ReactNode;
@@ -4388,54 +4962,6 @@ interface KanbanCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>
4388
4962
  }
4389
4963
  declare function KanbanCard({ title, meta, children, className, onMove, onKeyDown, ...props }: KanbanCardProps): react.JSX.Element;
4390
4964
 
4391
- interface TreeNodeData {
4392
- id: string;
4393
- label: ReactNode;
4394
- /** Plain-text label for keyboard typeahead when `label` is not a string (UIX-A11Y-2). */
4395
- typeaheadLabel?: string;
4396
- icon?: ReactNode;
4397
- children?: TreeNodeData[];
4398
- }
4399
- interface TreeNodeProps {
4400
- node: TreeNodeData;
4401
- expanded: Set<string>;
4402
- selected?: string;
4403
- selectable: boolean;
4404
- tabbableId?: string;
4405
- onToggle: (id: string) => void;
4406
- onSelect?: (id: string) => void;
4407
- onFocusNode: (id: string) => void;
4408
- level?: number;
4409
- /** Whether a click on the row itself toggles a branch (see {@link TreeProps.toggleOnRowClick}). */
4410
- rowToggles?: boolean;
4411
- }
4412
- interface TreeProps extends Omit<HTMLAttributes<HTMLUListElement>, 'onSelect' | 'onChange'> {
4413
- nodes: TreeNodeData[];
4414
- expanded?: Set<string>;
4415
- defaultExpanded?: Set<string>;
4416
- selected?: string;
4417
- onToggle?: (id: string) => void;
4418
- onSelect?: (id: string) => void;
4419
- /**
4420
- * Virtualize a large tree — render only the rows in view (UIX-FIX-05). Defaults to auto
4421
- * (on past the engine's `shouldVirtualize` threshold of visible rows). When on, the tree is
4422
- * flattened to a scrollable list of `maxHeight` with fixed-height rows; a11y is preserved via
4423
- * `aria-level` / `aria-setsize` / `aria-posinset` instead of nested `role="group"`s.
4424
- */
4425
- virtualize?: boolean;
4426
- /** Fixed row height (px) used for virtualization. Default 32. */
4427
- rowHeight?: number;
4428
- /** Scroll-viewport height (px) when virtualizing. Default 384. */
4429
- maxHeight?: number;
4430
- /**
4431
- * Whether clicking a branch row toggles it (TENSOR RX-125, UIX-09). Defaults to true for a
4432
- * pure navigation tree and to false when the tree is selectable (`selected` / `onSelect`),
4433
- * where a row click only selects and the chevron toggles. Enter/Space still does both.
4434
- */
4435
- toggleOnRowClick?: boolean;
4436
- }
4437
- declare function Tree({ nodes, expanded: controlledExpanded, defaultExpanded, selected, onToggle, onSelect, virtualize, rowHeight, maxHeight, toggleOnRowClick, className, ...props }: TreeProps): react.JSX.Element;
4438
-
4439
4965
  /**
4440
4966
  * uix tree model — framework-agnostic, dependency-free tree flattening + keyboard nav.
4441
4967
  *
@@ -4728,6 +5254,45 @@ interface BuilderCanvasProps {
4728
5254
  /** Palette + sortable canvas + property panel scaffold. Owns interaction, never persistence. */
4729
5255
  declare function BuilderCanvas({ items, onItemsChange, palette, selectedId: controlledSelectedId, onSelect, renderItem, renderProperties, loading, error, onRetry, emptyMessage, className, labels: labelOverrides, }: BuilderCanvasProps): react.JSX.Element;
4730
5256
 
5257
+ /**
5258
+ * uix date-field model — pure helpers behind `DatePicker`, `DateTimePicker` and the field mode
5259
+ * of `DateRangePicker` (HAR-1383): how a locale orders day / month / year, how a typed date is
5260
+ * read, and how a date-time value is split and joined. No DOM, no React, no runtime import, so
5261
+ * the unit test loads this file directly (date-field-model.test.mjs).
5262
+ *
5263
+ * A date is an ISO calendar date, `YYYY-MM-DD`. A date-time is a wall-clock value,
5264
+ * `YYYY-MM-DDTHH:mm`, as `<input type="datetime-local">` holds it: no zone, no offset. Which
5265
+ * zone that wall clock is in is the product's to know and to show.
5266
+ */
5267
+ type DatePart = 'day' | 'month' | 'year';
5268
+ /** Whether `YYYY-MM-DD` names a real calendar day (2026-02-30 does not). */
5269
+ declare function isValidDateKey(value: string): boolean;
5270
+ /**
5271
+ * The order in which `locale` writes a numeric date: `['day', 'month', 'year']` for de or
5272
+ * en-GB, `['month', 'day', 'year']` for en-US, `['year', 'month', 'day']` for sv or ja.
5273
+ */
5274
+ declare function dateOrder(locale?: string | readonly string[]): DatePart[];
5275
+ /** A hint for the field, e.g. `DD.MM.YYYY`, `MM/DD/YYYY`, `YYYY-MM-DD`, in the locale's own shape. */
5276
+ declare function datePattern(locale?: string | readonly string[]): string;
5277
+ /** A numeric date in the locale's shape: 22.11.2026, 11/22/2026, 2026-11-22. */
5278
+ declare function formatDateKey(value: string, locale?: string | readonly string[]): string;
5279
+ /**
5280
+ * Read a typed date. ISO `YYYY-MM-DD` is always accepted; otherwise three numbers separated by
5281
+ * `.`, `/`, `-` or spaces are read in the locale's order (so `3.4.2026` is 3 April in German and
5282
+ * `3/4/2026` is 4 March in en-US). A two-digit year means 2000–2099. Returns the ISO date, or
5283
+ * `null` when the text is not a real date.
5284
+ */
5285
+ declare function parseDateInput(text: string, locale?: string | readonly string[]): string | null;
5286
+ /** Split `YYYY-MM-DDTHH:mm` (seconds are dropped) into its date and time. */
5287
+ declare function splitDateTime(value: string | null | undefined): {
5288
+ date: string | null;
5289
+ time: string;
5290
+ };
5291
+ /** Join a date and a time into `YYYY-MM-DDTHH:mm`; without a date there is no value. */
5292
+ declare function joinDateTime(date: string | null, time: string, fallbackTime?: string): string | null;
5293
+ /** The short name of `timeZone` on that day ("CEST", "GMT+2"), for the label beside a time. */
5294
+ declare function timeZoneName(timeZone: string, date: string | null, locale?: string | readonly string[]): string;
5295
+
4731
5296
  interface RelationshipGraphNode {
4732
5297
  id: string;
4733
5298
  label: string;
@@ -5293,4 +5858,4 @@ declare function hsvToHex(value: HsvColor): string;
5293
5858
  declare function contrastRatio(background: string, foreground: string): number | undefined;
5294
5859
  declare function meetsContrast(background: string, foreground: string, minimum?: number): boolean;
5295
5860
 
5296
- export { type AccessStateProps, Alert, type AlertProps, type AlertTone, AppShell, type AppShellProps, type AppliedBrandProfileSnapshot, type AsyncOperationState, AsyncOperationStatus, type AsyncOperationStatusProps, Attachment, type AttachmentLabels, AttachmentList, type AttachmentListProps, type AttachmentProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type BoundedRelationshipGraph, type BrandProfile, BrandProfileEditor, type BrandProfileEditorLabels, type BrandProfileEditorProps, type BrandProfileLogo, type BrandProfileTypography, BrandProfiles, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, BuilderCanvas, type BuilderCanvasItem, type BuilderCanvasLabels, type BuilderCanvasProps, type BuilderPaletteItem, BulkBar, type BulkBarProps, Button, ButtonGroup, type ButtonGroupProps, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, type CalendarDay, type CalendarWeekday, Card, CardLink, type CardLinkProps, type CardProps, CellStrong, CellSub, Checkbox, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, ColorPicker, type ColorPickerLabels, type ColorPickerProps, type ColumnFilter, Combobox, type ComboboxOption, type ComboboxProps, CommandGroup, type CommandGroupProps, CommandItem, type CommandItemProps, CommandPalette, type CommandPaletteProps, Comment, type CommentProps, Comments, type CommentsProps, Composer, ComposerBar, type ComposerBarProps, type ComposerProps, ConfirmDialog, type ConfirmDialogProps, ContentList, ContentListItem, type ContentListItemProps, type ContentListProps, CopyButton, type CopyButtonProps, DAY, DEFAULT_ATTACHMENT_LABELS, DEFAULT_BRAND_PROFILE_EDITOR_LABELS, DEFAULT_BUILDER_CANVAS_LABELS, DEFAULT_COLOR_PICKER_LABELS, DEFAULT_DATE_RANGE_PICKER_LABELS, DEFAULT_DIFF_VIEWER_LABELS, DEFAULT_ENTITY_PICKER_LABELS, DEFAULT_FILE_UPLOAD_LABELS, DEFAULT_FILTER_EDITOR_LABELS, DEFAULT_FILTER_SUMMARY_LABELS, DEFAULT_LIGHTBOX_LABELS, DEFAULT_MATCH_REVIEW_LABELS, DEFAULT_PAGINATION_LABELS, DEFAULT_RELATIONSHIP_GRAPH_LABELS, DEFAULT_RULE_BUILDER_LABELS, DEFAULT_RULE_SUMMARY_WORDS, DEFAULT_RULE_VALIDATION_MESSAGES, DEFAULT_SAVE_STATUS_LABELS, DEFAULT_SCHEDULING_CALENDAR_LABELS, DEFAULT_SCHEDULING_TIMELINE_LABELS, DEFAULT_STEP_STATE_LABELS, DEFAULT_TEXT_DIFF_LABELS, DashboardGrid, type DashboardGridBreakpoint, type DashboardGridColumnCount, type DashboardGridColumns, type DashboardGridGap, DashboardGridItem, type DashboardGridItemProps, type DashboardGridProps, type DashboardGridSpan, DateRangePicker, type DateRangePickerLabels, type DateRangePickerProps, type DateRangeValue, type DaySpanLayout, DescriptionItem, type DescriptionItemProps, DescriptionList, type DescriptionListItem, type DescriptionListProps, DetailLayout, type DetailLayoutProps, DetailPage, type DetailPageLinkProps, type DetailPageMetric, type DetailPageProps, type DetailPageTab, type DiffEntry, type DiffKind, type DiffResolution, type DiffSummary, DiffViewer, type DiffViewerLabels, type DiffViewerProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, EntityPicker, type EntityPickerLabels, type EntityPickerProps, ErrorState, type ErrorStateProps, EventRow, type EventRowProps, ExpandToggle, type ExpandToggleProps, FeaturedRundown, FeaturedRundownItem, type FeaturedRundownItemProps, type FeaturedRundownProps, FeaturedStage, type FeaturedStageProps, Field, type FieldProps, type FileRejection, type FileRejectionReason, type FileSizeFormatter, type FileSizeOptions, FileUpload, type FileUploadItem, type FileUploadLabels, type FileUploadProps, type FileUploadStatus, type FilterChoice, FilterEditor, type FilterEditorLabels, type FilterEditorProps, type FilterField, type FilterKind, type FilterOp, type FilterOption, FilterPopover, type FilterPopoverProps, type FilterPreset, type FilterSummaryLabels, type FilterValue, type FilterValueKind, FilteredEmptyState, type FlatNode, Flow, FlowNode, type FlowNodeProps, type FlowNodeState, type FlowProps, type FlowVariant, type FoldedText, ForbiddenState, HOUR, Heartbeat, type HeartbeatProps, type HeartbeatState, Highlighted, type HighlightedProps, type HsvColor, Inbox, InboxDetail, type InboxDetailProps, InboxItem, type InboxItemProps, InboxList, type InboxListProps, type InboxProps, InfoTip, type InfoTipProps, Input, InputGroup, type InputGroupProps, type InputProps, type JsonPrimitive, type JsonValue, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, type KanbanMoveDirection, type KanbanProps, Kbd, KbdCombo, type KbdComboProps, type KbdPlatform, type KbdProps, Label, type LabelProps, type LaneCluster, type LaneInterval, type LanePlacement, type LayeredColumn, type LayeredEdgeClassification, type LayeredEdgeKind, type LayeredItem, type LayeredLayout, type LayeredLayoutOptions, type LayeredNavigationKey, type LayoutMonthSpansOptions, LicensePositionBar, type LicensePositionBarProps, Lightbox, type LightboxItem, type LightboxLabels, type LightboxProps, List, ListItem, type ListItemProps, type ListProps, LiveIndicator, type LiveIndicatorProps, LoadingState, type LoadingStateProps, Mark, type MarkProps, type MatchBulkResult, MatchReview, type MatchReviewAction, type MatchReviewCandidate, type MatchReviewField, type MatchReviewLabels, type MatchReviewProps, Menu, MenuGroup, type MenuGroupProps, MenuItem, type MenuItemAttributes, MenuItemCheckbox, type MenuItemCheckboxProps, type MenuItemProps, MenuItemRadio, type MenuItemRadioProps, type MenuProps, MenuRadioGroup, type MenuRadioGroupProps, MenuSeparator, Meter, type MeterProps, type MeterTone, MetricInput, type MetricInputProps, Modal, type ModalProps, type MonthSpanGroup, type MonthSpanInput, type MonthSpanLayout, type MoveProposal, NUMBER_FILTER_OPERATORS, type NavFavouriteItem, NavFavourites, type NavFavouritesLabels, type NavFavouritesProps, NavGroup, type NavGroupProps, NavItem, type NavItemProps, NewsLead, type NewsLeadProps, NotFoundState, Note, type NoteProps, type NoteTone, NoticeQueue, type NoticeQueueProps, type NumberFilterOperator, type PackLanesOptions, type PackedLanes, PageHeader, type PageHeaderProps, PageIntro, type PageIntroProps, Pagination, type PaginationLabels, type PaginationProps, Peek, type PeekProps, type PillSize, type PillTone, type PillTreatment, Pipeline, type PipelineProps, PipelineStage, type PipelineStageProps, type PipelineStageState, type PlacedDaySpan, type PlacedMonthSpan, type PlacedSpan, Placement, Popconfirm, type PopconfirmProps, Popover, type PopoverProps, type PositionedRelationshipNode, type Primitive, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, Prose, type ProseProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, type RelatedLinkItem, RelatedLinks, type RelatedLinksProps, RelationshipGraph, type RelationshipGraphArrow, type RelationshipGraphCluster, type RelationshipGraphEdge, type RelationshipGraphLabels, type RelationshipGraphLegendItem, type RelationshipGraphNode, type RelationshipGraphProps, RelativeTime, type RelativeTimeFormatContext, type RelativeTimeProps, type RelativeTimeUnit, type RelativeTimeValue, ResourceGrid, type ResourceGridProps, type RgbColor, type RoutedEdge, type Row, RowAction, type RowActionProps, RowActions, type RowActionsProps, type RuleAction, type RuleActionDefinition, RuleBuilder, type RuleBuilderLabels, type RuleBuilderProps, type RuleCheck, type RuleCondition, type RuleDefinition, type RuleFieldDefinition, type RuleGroup, type RuleOperatorDefinition, type RuleSummaryWords, type RuleValidationIssue, type RuleValidationOptions, type RuleValueEditorProps, SaveStatus, type SaveStatusLabels, type SaveStatusProps, type SaveStatusState, type SavedViewItem, SavedViewMenu, type SavedViewMenuProps, type SavedViewSection, type SchedulingAgendaGroup, type SchedulingBand, SchedulingCalendar, type SchedulingCalendarDay, type SchedulingCalendarEntry, type SchedulingCalendarLabels, type SchedulingCalendarOverlay, type SchedulingCalendarProps, type SchedulingCalendarView, type SchedulingDatePart, type SchedulingEntryState, type SchedulingLegendItem, type SchedulingMarker, type SchedulingMarkerEmphasis, type SchedulingOverlayKind, type SchedulingOverlayPattern, type SchedulingStatus, SchedulingTimeline, type SchedulingTimelineItem, type SchedulingTimelineLabels, type SchedulingTimelineLane, type SchedulingTimelineMarker, type SchedulingTimelineOverlay, type SchedulingTimelineOverlayKind, type SchedulingTimelineProps, type SearchSegment, SearchSuggest, type SearchSuggestAction, type SearchSuggestOption, type SearchSuggestProps, SectionHead, type SectionHeadProps, type Segment, Segmented, SegmentedOption, type SegmentedOptionProps, type SegmentedProps, Select, type SelectAllState, type SelectGroup, type SelectLabels, type SelectOption, type SelectProps, type ShellNav, Sidebar, type SidebarProps, SidebarSection, type SidebarSectionProps, Skeleton, type SkeletonProps, type SortDir, type SortDirection, type SortKey, Spinner, type SpinnerProps, StarButton, type StarButtonProps, Stat, StatLine, type StatLineItem, type StatLineProps, type StatProps, type StatTrend, type StateVariant, StatusPill, type StatusPillProps, StatusRow, type StatusRowProps, Step, type StepProps, type StepState, type StepStateLabels, Steps, type StepsProps, SubNavItem, type SubNavItemProps, type SummarizeFilterOptions, Switch, type SwitchProps, TEXT_FILTER_OPERATORS, TOAST_LEAVE_MS, TOP_LANE_CROSS_MIDNIGHT_MINUTES, Tab, TabPanel, type TabPanelProps, type TabProps, Table, type TableDensity, type TableProps, TableWrap, type TableWrapProps, Tabs, type TabsProps, Td, type TdProps, TextDiff, type TextDiffGranularity, type TextDiffLabels, type TextDiffLine, type TextDiffOp, type TextDiffOptions, type TextDiffProps, type TextDiffResult, type TextDiffRow, type TextDiffSegment, type TextFilterOperator, Textarea, type TextareaProps, Th, type ThProps, type TimeGridDayLayout, type TimeGridEntryContext, type TimeGridEntryInput, type TimeGridPart, type TimeGridSegment, Timeline, TimelineItem, type TimelineItemProps, type TimelineProps, type TimelineRange, type TimelineScale, type TimelineSpan, type TimelineTick, Toast, type ToastAction, type ToastApi, type ToastDismissReason, type ToastKind, type ToastOptions, type ToastPromiseMessages, type ToastProps, type ToastRecord, type ToastStore, type ToastTone, Toaster, type ToasterProps, ToggleRow, type ToggleRowProps, Tooltip, type TooltipProps, Tr, type TrProps, Tree, type TreeLike, type TreeNavAction, type TreeNodeData, type TreeNodeProps, type TreeProps, type UixLabels, UixLabelsProvider, type UixLabelsProviderProps, type UixLinkProps, type UixRenderLink, type UndoableToastOptions, type UseAnchoredPositionOptions, type UseTableOptions, type UseTableResult, type UseVirtualRowsOptions, type UseVirtualRowsResult, UserChip, type UserChipProps, ViewMenu, type ViewMenuColumn, type ViewMenuColumnLabels, type ViewMenuProps, type ViewState, type VirtualWindow, type ZonedDateSpan, type ZonedDayBounds, type ZonedDayShift, type ZonedDaySpan, type ZonedHourSlot, addCalendarDays, addCalendarMonths, addZonedDays, appendRuleNode, applyBrandProfile, applyFilters, boundRelationshipGraph, buildMonthGrid, buildThreeWayDiff, cachedDateTimeFormat, clampMetricValue, clampWidth, classifyLayeredEdges, clusterIdFor, contrastRatio, createToastApi, createToastStore, cx, dashboardGridClassName, dashboardGridItemClassName, defaultTimelineStep, diffText, diffTokens, emptyFilterValue, enumerateDateKeys, enumerateDateSpan, fileKind, fileMatchesAccept, filterComboboxOptions, findRuleNodeDepth, flattenTree, foldForSearch, formatFileSize, hexToRgb, highlightSegments, hsvToHex, hsvToRgb, isDateInRange, isDateUnavailable, isFilterEmpty, isRuleGroup, itemDaySpan, layeredNeighbor, layoutDaySpans, layoutLane, layoutLayeredGraph, layoutMonthSpans, layoutRelationshipGraph, layoutTimeGridDay, mapRuleGroup, matchFilter, matchFilterPreset, meetsContrast, mergePinned, moveRuleNode, multiSort, nextSortDir, normalizeHex, packLanes, parseDateValue, parseMetricValue, parseView, partitionFiles, pixelsToMs, placeSpan, placesInTopLane, proposeMove, rankOverflow, relationshipNeighbors, relativeTimeValue, removeRuleNode, renderPlainLink, reorder, restoreBrandProfile, rgbToHex, rgbToHsv, ruleDepth, schedulingGridDays, searchRows, searchSegments, selectAllState, selectRangeDate, serializeView, setRuleCombinator, shiftSpan, shouldVirtualize, snapToStep, startOfMonth, stepMetricValue, summarizeDiff, summarizeFilter, summarizeRule, textDiffRows, timelineTicks, toDateKey, toast, toggleId, togglePage, toggleSort, tokenizeText, traverseRelationshipNode, treeNav, useAnchoredPosition, useDialog, useTable, useUixLabels, useVirtualRows, validateRuleDefinition, virtualWindow, wrapEdgeLabel, zonedDateKey, zonedDateSpan, zonedDayBounds, zonedDaySpan, zonedHourSlots, zonedTimeOfDay };
5861
+ export { type AccessStateProps, Alert, type AlertProps, type AlertTone, AppShell, type AppShellProps, type AppliedBrandProfileSnapshot, type AsyncOperationState, AsyncOperationStatus, type AsyncOperationStatusProps, Attachment, type AttachmentLabels, AttachmentList, type AttachmentListProps, type AttachmentProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarPresence, type AvatarProps, type BoundedRelationshipGraph, type BrandProfile, BrandProfileEditor, type BrandProfileEditorLabels, type BrandProfileEditorProps, type BrandProfileLogo, type BrandProfileTypography, BrandProfiles, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, BuilderCanvas, type BuilderCanvasItem, type BuilderCanvasLabels, type BuilderCanvasProps, type BuilderPaletteItem, BulkBar, type BulkBarProps, Button, ButtonGroup, type ButtonGroupProps, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, type CalendarDay, type CalendarWeekday, Card, CardLink, type CardLinkProps, type CardProps, CellStrong, CellSub, Checkbox, type CheckboxProps, Chip, ChipGroup, type ChipGroupProps, type ChipProps, CollapsibleSection, type CollapsibleSectionProps, ColorPicker, type ColorPickerLabels, type ColorPickerProps, type ColumnFilter, Combobox, type ComboboxOption, type ComboboxProps, CommandGroup, type CommandGroupProps, CommandItem, type CommandItemProps, CommandPalette, type CommandPaletteProps, Comment, type CommentProps, Comments, type CommentsProps, Composer, ComposerBar, type ComposerBarProps, type ComposerProps, ConfirmDialog, type ConfirmDialogProps, ContentList, ContentListItem, type ContentListItemProps, type ContentListProps, CopyButton, type CopyButtonProps, DAY, DEFAULT_ATTACHMENT_LABELS, DEFAULT_BRAND_PROFILE_EDITOR_LABELS, DEFAULT_BUILDER_CANVAS_LABELS, DEFAULT_COLOR_PICKER_LABELS, DEFAULT_DATE_PICKER_LABELS, DEFAULT_DATE_RANGE_PICKER_LABELS, DEFAULT_DATE_TIME_PICKER_LABELS, DEFAULT_DIFF_VIEWER_LABELS, DEFAULT_ENTITY_PICKER_LABELS, DEFAULT_FILE_UPLOAD_LABELS, DEFAULT_FILTER_EDITOR_LABELS, DEFAULT_FILTER_SUMMARY_LABELS, DEFAULT_INLINE_EDIT_LABELS, DEFAULT_LIGHTBOX_LABELS, DEFAULT_MATCH_REVIEW_LABELS, DEFAULT_PAGINATION_LABELS, DEFAULT_PRESENCE_LABELS, DEFAULT_RELATIONSHIP_GRAPH_LABELS, DEFAULT_RULE_BUILDER_LABELS, DEFAULT_RULE_SUMMARY_WORDS, DEFAULT_RULE_VALIDATION_MESSAGES, DEFAULT_SAVE_STATUS_LABELS, DEFAULT_SCHEDULING_CALENDAR_LABELS, DEFAULT_SCHEDULING_TIMELINE_LABELS, DEFAULT_STEP_STATE_LABELS, DEFAULT_TEXT_DIFF_LABELS, DEFAULT_TREE_LABELS, DashboardGrid, type DashboardGridBreakpoint, type DashboardGridColumnCount, type DashboardGridColumns, type DashboardGridGap, DashboardGridItem, type DashboardGridItemProps, type DashboardGridProps, type DashboardGridSpan, type DateInputProblem, type DatePart, DatePicker, type DatePickerLabels, type DatePickerProps, DateRangePicker, type DateRangePickerLabels, type DateRangePickerProps, type DateRangeValue, DateTimePicker, type DateTimePickerLabels, type DateTimePickerProps, type DaySpanLayout, DescriptionItem, type DescriptionItemProps, DescriptionList, type DescriptionListItem, type DescriptionListProps, DetailLayout, type DetailLayoutProps, DetailPage, type DetailPageLinkProps, type DetailPageMetric, type DetailPageProps, type DetailPageTab, type DiffEntry, type DiffKind, type DiffResolution, type DiffSummary, DiffViewer, type DiffViewerLabels, type DiffViewerProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, EntityPicker, type EntityPickerLabels, type EntityPickerProps, type EntityPickerSearchResult, ErrorState, type ErrorStateProps, EventRow, type EventRowProps, ExpandToggle, type ExpandToggleProps, FeaturedRundown, FeaturedRundownItem, type FeaturedRundownItemProps, type FeaturedRundownProps, FeaturedStage, type FeaturedStageProps, Field, type FieldProps, type FileRejection, type FileRejectionReason, type FileSizeFormatter, type FileSizeOptions, FileUpload, type FileUploadItem, type FileUploadLabels, type FileUploadProps, type FileUploadStatus, type FilterChoice, FilterEditor, type FilterEditorLabels, type FilterEditorProps, type FilterField, type FilterKind, type FilterOp, type FilterOption, FilterPopover, type FilterPopoverProps, type FilterPreset, type FilterSummaryLabels, type FilterValue, type FilterValueKind, FilteredEmptyState, type FlatNode, Flow, FlowNode, type FlowNodeProps, type FlowNodeState, type FlowProps, type FlowVariant, type FoldedText, ForbiddenState, HOUR, Heartbeat, type HeartbeatProps, type HeartbeatState, Highlighted, type HighlightedProps, type HsvColor, Inbox, InboxDetail, type InboxDetailProps, InboxItem, type InboxItemProps, InboxList, type InboxListProps, type InboxProps, InfoTip, type InfoTipProps, InlineEdit, type InlineEditEditorProps, type InlineEditLabels, type InlineEditProps, Input, InputGroup, type InputGroupProps, type InputProps, type JsonPrimitive, type JsonValue, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, type KanbanMoveDirection, type KanbanProps, Kbd, KbdCombo, type KbdComboProps, type KbdPlatform, type KbdProps, Label, type LabelProps, type LaneCluster, type LaneInterval, type LanePlacement, type LayeredColumn, type LayeredEdgeClassification, type LayeredEdgeKind, type LayeredItem, type LayeredLayout, type LayeredLayoutOptions, type LayeredNavigationKey, type LayoutLaneOptions, type LayoutMonthSpansOptions, LicensePositionBar, type LicensePositionBarProps, Lightbox, type LightboxItem, type LightboxLabels, type LightboxProps, List, ListItem, type ListItemProps, type ListProps, LiveIndicator, type LiveIndicatorProps, LoadingState, type LoadingStateProps, Mark, type MarkProps, type MatchBulkResult, MatchReview, type MatchReviewAction, type MatchReviewCandidate, type MatchReviewField, type MatchReviewLabels, type MatchReviewProps, Menu, MenuGroup, type MenuGroupProps, MenuItem, type MenuItemAttributes, MenuItemCheckbox, type MenuItemCheckboxProps, type MenuItemProps, MenuItemRadio, type MenuItemRadioProps, type MenuProps, MenuRadioGroup, type MenuRadioGroupProps, MenuSeparator, Meter, type MeterProps, type MeterTone, MetricInput, type MetricInputProps, Modal, type ModalProps, type MonthSpanGroup, type MonthSpanInput, type MonthSpanLayout, type MoveProposal, NUMBER_FILTER_OPERATORS, type NavFavouriteItem, NavFavourites, type NavFavouritesLabels, type NavFavouritesProps, NavGroup, type NavGroupProps, NavItem, type NavItemProps, NewsLead, type NewsLeadProps, NotFoundState, Note, type NoteProps, type NoteTone, NoticeQueue, type NoticeQueueProps, type NumberFilterOperator, type PackLanesOptions, type PackedLanes, PageHeader, type PageHeaderProps, PageIntro, type PageIntroProps, Pagination, type PaginationLabels, type PaginationProps, Peek, type PeekProps, type PillSize, type PillTone, type PillTreatment, Pipeline, type PipelineProps, PipelineStage, type PipelineStageProps, type PipelineStageState, type PlacedDaySpan, type PlacedMonthSpan, type PlacedSpan, Placement, Popconfirm, type PopconfirmProps, Popover, type PopoverProps, type PositionedRelationshipNode, PresenceDot, type PresenceDotProps, type Primitive, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, Prose, type ProseProps, Radio, RadioCard, type RadioCardProps, RadioGroup, type RadioGroupProps, type RadioProps, type RelatedLinkItem, RelatedLinks, type RelatedLinksProps, RelationshipGraph, type RelationshipGraphArrow, type RelationshipGraphCluster, type RelationshipGraphEdge, type RelationshipGraphLabels, type RelationshipGraphLegendItem, type RelationshipGraphNode, type RelationshipGraphProps, RelativeTime, type RelativeTimeFormatContext, type RelativeTimeProps, type RelativeTimeUnit, type RelativeTimeValue, ResourceGrid, type ResourceGridProps, type RgbColor, type RoutedEdge, type Row, RowAction, type RowActionProps, RowActions, type RowActionsProps, type RuleAction, type RuleActionDefinition, RuleBuilder, type RuleBuilderLabels, type RuleBuilderProps, type RuleCheck, type RuleCondition, type RuleDefinition, type RuleFieldDefinition, type RuleGroup, type RuleOperatorDefinition, type RuleSummaryWords, type RuleValidationIssue, type RuleValidationOptions, type RuleValueEditorProps, SaveStatus, type SaveStatusLabels, type SaveStatusProps, type SaveStatusState, type SavedViewItem, SavedViewMenu, type SavedViewMenuProps, type SavedViewSection, type SchedulingAgendaGroup, type SchedulingBand, SchedulingCalendar, type SchedulingCalendarDay, type SchedulingCalendarEntry, type SchedulingCalendarLabels, type SchedulingCalendarOverlay, type SchedulingCalendarProps, type SchedulingCalendarView, type SchedulingDatePart, type SchedulingEntryState, type SchedulingLegendItem, type SchedulingMarker, type SchedulingMarkerEmphasis, type SchedulingOverlayKind, type SchedulingOverlayPattern, type SchedulingStatus, SchedulingTimeline, type SchedulingTimelineGroup, type SchedulingTimelineItem, type SchedulingTimelineLabels, type SchedulingTimelineLane, type SchedulingTimelineMarker, type SchedulingTimelineOverlay, type SchedulingTimelineOverlayKind, type SchedulingTimelineProps, type SearchSegment, SearchSuggest, type SearchSuggestAction, type SearchSuggestOption, type SearchSuggestProps, SectionHead, type SectionHeadProps, type Segment, Segmented, SegmentedOption, type SegmentedOptionProps, type SegmentedProps, Select, type SelectAllState, type SelectGroup, type SelectLabels, type SelectOption, type SelectProps, type ShellNav, Sidebar, type SidebarProps, SidebarSection, type SidebarSectionProps, Skeleton, type SkeletonProps, type SortDir, type SortDirection, type SortKey, Spinner, type SpinnerProps, StarButton, type StarButtonProps, Stat, StatLine, type StatLineItem, type StatLineProps, type StatProps, type StatTrend, type StateVariant, StatusPill, type StatusPillProps, StatusRow, type StatusRowProps, Step, type StepProps, type StepState, type StepStateLabels, Steps, type StepsProps, SubNavItem, type SubNavItemProps, type SummarizeFilterOptions, Switch, type SwitchProps, TEXT_FILTER_OPERATORS, TOAST_LEAVE_MS, TOP_LANE_CROSS_MIDNIGHT_MINUTES, Tab, TabPanel, type TabPanelProps, type TabProps, Table, type TableDensity, type TableProps, TableWrap, type TableWrapProps, Tabs, type TabsProps, Td, type TdProps, TextDiff, type TextDiffGranularity, type TextDiffLabels, type TextDiffLine, type TextDiffOp, type TextDiffOptions, type TextDiffProps, type TextDiffResult, type TextDiffRow, type TextDiffSegment, type TextFilterOperator, Textarea, type TextareaProps, Th, type ThProps, type TimeGridDayLayout, type TimeGridEntryContext, type TimeGridEntryInput, type TimeGridPart, type TimeGridSegment, Timeline, TimelineItem, type TimelineItemProps, type TimelineProps, type TimelineRange, type TimelineScale, type TimelineSpan, type TimelineSubTick, type TimelineTick, Toast, type ToastAction, type ToastApi, type ToastDismissReason, type ToastKind, type ToastOptions, type ToastPromiseMessages, type ToastProps, type ToastRecord, type ToastStore, type ToastTone, Toaster, type ToasterProps, ToggleRow, type ToggleRowProps, Tooltip, type TooltipProps, Tr, type TrProps, Tree, type TreeLabels, type TreeLike, type TreeNavAction, type TreeNodeData, type TreeNodeProps, type TreeProps, type UixLabels, UixLabelsProvider, type UixLabelsProviderProps, type UixLinkProps, type UixRenderLink, type UndoableToastOptions, type UseAnchoredPositionOptions, type UseTableOptions, type UseTableResult, type UseVirtualRowsOptions, type UseVirtualRowsResult, UserChip, type UserChipProps, ViewMenu, type ViewMenuColumn, type ViewMenuColumnLabels, type ViewMenuProps, type ViewState, type VirtualWindow, type ZonedDateSpan, type ZonedDayBounds, type ZonedDayShift, type ZonedDaySpan, type ZonedHourSlot, addCalendarDays, addCalendarMonths, addZonedDays, appendRuleNode, applyBrandProfile, applyFilters, boundRelationshipGraph, buildMonthGrid, buildThreeWayDiff, cachedDateTimeFormat, clampMetricValue, clampWidth, classifyLayeredEdges, clusterIdFor, contrastRatio, createToastApi, createToastStore, cx, dashboardGridClassName, dashboardGridItemClassName, dateOrder, datePattern, defaultTimelineStep, diffText, diffTokens, emptyFilterValue, enumerateDateKeys, enumerateDateSpan, fileKind, fileMatchesAccept, filterComboboxOptions, findRuleNodeDepth, flattenTree, foldForSearch, formatDateKey, formatFileSize, hexToRgb, highlightSegments, hsvToHex, hsvToRgb, isDateInRange, isDateUnavailable, isFilterEmpty, isRuleGroup, isValidDateKey, itemDaySpan, joinDateTime, layeredNeighbor, layoutDaySpans, layoutLane, layoutLayeredGraph, layoutMonthSpans, layoutRelationshipGraph, layoutTimeGridDay, mapRuleGroup, matchFilter, matchFilterPreset, meetsContrast, mergePinned, moveRuleNode, multiSort, nextSortDir, normalizeHex, packLanes, parseDateInput, parseDateValue, parseMetricValue, parseView, partitionFiles, pixelsToMs, placeSpan, placesInTopLane, proposeMove, rankOverflow, relationshipNeighbors, relativeTimeValue, removeRuleNode, renderPlainLink, reorder, restoreBrandProfile, rgbToHex, rgbToHsv, ruleDepth, schedulingGridDays, searchRows, searchSegments, selectAllState, selectRangeDate, serializeView, setRuleCombinator, shiftSpan, shouldVirtualize, snapToStep, splitDateTime, startOfMonth, stepMetricValue, summarizeDiff, summarizeFilter, summarizeRule, textDiffRows, timeZoneName, timelineRepeatedHourOffset, timelineStepDelta, timelineSubTicks, timelineTicks, toDateKey, toast, toggleId, togglePage, toggleSort, tokenizeText, traverseRelationshipNode, treeNav, useAnchoredPosition, useDialog, useTable, useUixLabels, useVirtualRows, validateRuleDefinition, virtualWindow, wrapEdgeLabel, zonedDateKey, zonedDateSpan, zonedDayBounds, zonedDaySpan, zonedHourSlots, zonedTimeOfDay };