@fusion.dev/helix 0.158.0 → 0.160.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/vue.d.ts CHANGED
@@ -206,6 +206,7 @@ import type {
206
206
  HelixSelectedEvent,
207
207
  HelixSortEvent,
208
208
  HelixSortedEvent,
209
+ HelixClearEvent,
209
210
  HelixRejectEvent,
210
211
  HelixFacetEvent,
211
212
  HelixBeforeActivateEvent,
@@ -217,7 +218,6 @@ import type {
217
218
  HelixGraphSignalEvent,
218
219
  HelixGraphZoomEvent,
219
220
  HelixResizeEvent,
220
- HelixClearEvent,
221
221
  HelixShortcutEvent,
222
222
  HelixActionEvent,
223
223
  HelixMapPartChangeEvent,
@@ -244,9 +244,9 @@ import type {
244
244
  HelixBeforeResizeEvent,
245
245
  HelixCollapseEvent,
246
246
  HelixResizedEvent,
247
+ HelixLoadEvent,
247
248
  HelixTourAskEvent,
248
249
  HelixTourStatusEvent,
249
- HelixLoadEvent,
250
250
  HelixEndEvent,
251
251
  HelixNextEvent,
252
252
  HelixPreviousEvent,
@@ -565,6 +565,15 @@ export type HelixAppHeaderElementEvent<E = Event> = TypedEvent<
565
565
  HelixAppHeader,
566
566
  E
567
567
  >;
568
+ /** `toggle` event type */
569
+ export type HelixAppHeaderToggleElementEvent =
570
+ HelixAppHeaderElementEvent<ToggleEvent>;
571
+ /** `helix-before-close` event type */
572
+ export type HelixAppHeaderHelixBeforeCloseElementEvent =
573
+ HelixAppHeaderElementEvent<HelixBeforeCloseEvent>;
574
+ /** `helix-before-open` event type */
575
+ export type HelixAppHeaderHelixBeforeOpenElementEvent =
576
+ HelixAppHeaderElementEvent<HelixBeforeOpenEvent>;
568
577
  /** `helix-scrolled` event type */
569
578
  export type HelixAppHeaderHelixScrolledElementEvent =
570
579
  HelixAppHeaderElementEvent<HelixScrolledEvent>;
@@ -622,6 +631,23 @@ It pairs with `material`: a bar that does not stick is only ever over the
622
631
  top of the page, so `glass` and `transparent` have nothing to be
623
632
  translucent against and the `scrolled` state never lands. */
624
633
  sticky?: (HelixAppHeader["sticky"]) | undefined;
634
+ /** Whether the element starts open. Ignored once `open` is written. */
635
+ "default-open"?: (HelixAppHeader["defaultOpen"]) | undefined;
636
+ /** Whether the element starts open. Ignored once `open` is written. */
637
+ defaultOpen?: (HelixAppHeader["defaultOpen"]) | undefined;
638
+ /** Whether the element is open.
639
+
640
+ One property, not two, so `dialog.open` answers the question anyone
641
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
642
+ same statement in markup.
643
+
644
+ **Not reflected, and that is required rather than tidy.** Reflection
645
+ writes the resolved state back as an attribute, so an element that opened
646
+ itself would put `open` on its own host: cloned, serialized for
647
+ hydration, or diffed by a framework, it comes back holding whatever the
648
+ last reader did rather than what the author wrote. `:state(open)` carries
649
+ the resolved state for stylesheets, which is what the mirror is for. */
650
+ open?: (HelixAppHeader["open"]) | undefined;
625
651
  /** Where the middle region sits in the bar.
626
652
 
627
653
  Centered by default, which reads as the site's spine when the navigation is
@@ -669,9 +695,27 @@ page scrolls up. */
669
695
  /** The id of the element whose scrolling lifts the bar, for an app shell that
670
696
  scrolls a container instead of the window. Unset is the window. */
671
697
  scroller?: (HelixAppHeader["scroller"]) | undefined;
698
+ /** Where the toggle that opens a folded middle region sits: at the end of the
699
+ bar, after the trailing content, or with `start`, before the leading
700
+ content.
701
+
702
+ Optional, so the resting bar writes no attribute onto the host. */
703
+ "toggle-placement"?: (HelixAppHeader["togglePlacement"]) | undefined;
704
+ /** Where the toggle that opens a folded middle region sits: at the end of the
705
+ bar, after the trailing content, or with `start`, before the leading
706
+ content.
707
+
708
+ Optional, so the resting bar writes no attribute onto the host. */
709
+ togglePlacement?: (HelixAppHeader["togglePlacement"]) | undefined;
672
710
  };
673
711
 
674
712
  export type HelixAppHeaderVueEvents = {
713
+ /** The folded region opened or closed. The event carries `newState` and `oldState`. */
714
+ toggle: HelixAppHeaderToggleElementEvent;
715
+ /** The folded region is about to close. Cancelable: cancel it to keep it open. */
716
+ "helix-before-close": HelixAppHeaderHelixBeforeCloseElementEvent;
717
+ /** The folded region is about to open. Cancelable: cancel it to keep it closed. */
718
+ "helix-before-open": HelixAppHeaderHelixBeforeOpenElementEvent;
675
719
  /** Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener. */
676
720
  "helix-scrolled": HelixAppHeaderHelixScrolledElementEvent;
677
721
  };
@@ -1642,6 +1686,14 @@ separate actions. The semantics and the joining are separate questions:
1642
1686
  `role="group"` and a shared name are what make a set of buttons a set, and
1643
1687
  `helix-flex` gives the spacing without the group. */
1644
1688
  variant?: (HelixButtonGroup["variant"]) | undefined;
1689
+ /** Keeps at least one button pressed once one is, as React Aria's
1690
+ `disallowEmptySelection`: a press that would leave none pressed is
1691
+ refused. */
1692
+ "disallow-empty-selection"?: (HelixButtonGroup["disallowEmptySelection"]) | undefined;
1693
+ /** Keeps at least one button pressed once one is, as React Aria's
1694
+ `disallowEmptySelection`: a press that would leave none pressed is
1695
+ refused. */
1696
+ disallowEmptySelection?: (HelixButtonGroup["disallowEmptySelection"]) | undefined;
1645
1697
  /** The group's name, read by screen readers.
1646
1698
 
1647
1699
  On the host through internals, so an author's `aria-label` still overrides
@@ -5872,6 +5924,9 @@ export type HelixDateInputHelixBeforeCloseElementEvent =
5872
5924
  /** `helix-before-open` event type */
5873
5925
  export type HelixDateInputHelixBeforeOpenElementEvent =
5874
5926
  HelixDateInputElementEvent<HelixBeforeOpenEvent>;
5927
+ /** `helix-clear` event type */
5928
+ export type HelixDateInputHelixClearElementEvent =
5929
+ HelixDateInputElementEvent<HelixClearEvent>;
5875
5930
 
5876
5931
  export type HelixDateInputVueProps = {
5877
5932
  /** What a row of segments reports when the field is required and every
@@ -5896,6 +5951,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
5896
5951
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
5897
5952
  `time`. */
5898
5953
  incompleteMessage?: (HelixDateInput["incompleteMessage"]) | undefined;
5954
+ /** What a screen reader hears before the segments of a range's second date
5955
+ or time, after each segment's own name. */
5956
+ "range-end-label"?: (HelixDateInput["rangeEndLabel"]) | undefined;
5957
+ /** What a screen reader hears before the segments of a range's second date
5958
+ or time, after each segment's own name. */
5959
+ rangeEndLabel?: (HelixDateInput["rangeEndLabel"]) | undefined;
5960
+ /** What a screen reader hears before the segments of a range's first date
5961
+ or time, after each segment's own name: "month, Start, Stay". */
5962
+ "range-start-label"?: (HelixDateInput["rangeStartLabel"]) | undefined;
5963
+ /** What a screen reader hears before the segments of a range's first date
5964
+ or time, after each segment's own name: "month, Start, Stay". */
5965
+ rangeStartLabel?: (HelixDateInput["rangeStartLabel"]) | undefined;
5899
5966
  /** Whether the field is a row of segments, one for each part of the date or
5900
5967
  time, in place of a line of text.
5901
5968
 
@@ -6060,32 +6127,48 @@ and this one was the English a form in another language still spoke in
6060
6127
  the bubble it raises on submit: `feedback` replaces the message under
6061
6128
  the field and does not reach that one. */
6062
6129
  valueMissingMessage?: (HelixDateInput["valueMissingMessage"]) | undefined;
6063
- /** What the browser may autofill here, as one of the platform's own tokens.
6130
+ /** What the browser may autofill here, as one of the platform's own tokens,
6131
+ such as `bday`.
6064
6132
 
6065
6133
  Empty leaves the attribute off, which is the browser's default and is what
6066
6134
  lets autofill work at all: hardcoding `off` here means a birthday or a
6067
- postal code can never be filled in for a reader. */
6135
+ postal code can never be filled in for a reader. With `segmented`, a
6136
+ hidden native date input carries it, since no browser fills the segments. */
6068
6137
  autocomplete?: (HelixDateInput["autocomplete"]) | undefined;
6069
- /** The calendar the written date and the calendar's days are in: `gregory`,
6070
- `buddhist`, `japanese`, `roc`, or `iso8601`.
6071
-
6072
- Absent is the locale's own where it is one of the five, and `gregory` for
6073
- every other, as Date Picker's `calendar` is. The value is `YYYY-MM-DD` in
6074
- every calendar, and a focused field is ISO in every calendar. In
6075
- `segmented`, the segments are the Gregorian day, month, and year, in the
6076
- order the locale writes them, or ISO order for `iso8601`. */
6138
+ /** The calendar the written date, the segments, and the calendar's days are
6139
+ in: `gregory`, `buddhist`, `japanese`, `roc`, or `iso8601`, or a calendar
6140
+ with months of its own that Date Picker's `calendar` names, such as
6141
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`.
6142
+
6143
+ Absent is the locale's own where its months are the Gregorian months, and
6144
+ `gregory` for every other, as Date Picker's `calendar` is. The value is
6145
+ `YYYY-MM-DD` in every calendar, and a focused text field is ISO in every
6146
+ calendar. In `segmented`, the segments are the day, month, and year as
6147
+ the calendar counts them, in the order the locale writes them: Mehr 14,
6148
+ 1405 is month 7 and day 14 of 1405 under `persian`. Under the five with
6149
+ Gregorian months they are the Gregorian day, month, and year, or ISO order
6150
+ for `iso8601`. */
6077
6151
  calendar?: (HelixDateInput["calendar"]) | undefined;
6078
6152
  /** The name of the calendar's grid of days, read by screen readers. */
6079
6153
  "calendar-label"?: (HelixDateInput["calendarLabel"]) | undefined;
6080
6154
  /** The name of the calendar's grid of days, read by screen readers. */
6081
6155
  calendarLabel?: (HelixDateInput["calendarLabel"]) | undefined;
6156
+ /** Whether the field shows a button that empties it, as Input's `clearable`
6157
+ does. Shown only while the field holds something to clear and is neither
6158
+ disabled nor read-only. */
6159
+ clearable?: (HelixDateInput["clearable"]) | undefined;
6160
+ /** The accessible name of the clear button, which shows only an icon. */
6161
+ "clear-label"?: (HelixDateInput["clearLabel"]) | undefined;
6162
+ /** The accessible name of the clear button, which shows only an icon. */
6163
+ clearLabel?: (HelixDateInput["clearLabel"]) | undefined;
6082
6164
  /** How a date is written in the field: `short` through `full`, or ISO.
6083
6165
 
6084
6166
  **The field renders when it is idle and holds the value when it is being
6085
6167
  edited.** A written date is a rendering, and a document being edited must
6086
6168
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
6087
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
6088
- locale is how a field ends up rejecting what it just displayed.
6169
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
6170
+ edit. The field does read a date typed in the locale's order and digits as
6171
+ you leave it, which covers what a reader types.
6089
6172
 
6090
6173
  The way out is not to choose between the two but to separate them in time.
6091
6174
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -6107,8 +6190,9 @@ submits and what `min` and `max` compare against. */
6107
6190
  **The field renders when it is idle and holds the value when it is being
6108
6191
  edited.** A written date is a rendering, and a document being edited must
6109
6192
  not be a rendering of something else: `Intl.DateTimeFormat` formats and does
6110
- not parse, so `4 August 2026` cannot be typed back, and writing a parser per
6111
- locale is how a field ends up rejecting what it just displayed.
6193
+ not parse, so a rendering such as `Tuesday, August 4, 2026` is no text to
6194
+ edit. The field does read a date typed in the locale's order and digits as
6195
+ you leave it, which covers what a reader types.
6112
6196
 
6113
6197
  The way out is not to choose between the two but to separate them in time.
6114
6198
  Idle, the field shows `4 August 2026`, which is what a date is for reading.
@@ -6246,6 +6330,14 @@ the date.
6246
6330
  **The name goes in**, so a row of them is heard as which one each
6247
6331
  removes rather than as "Remove" said once per date. */
6248
6332
  removeLabel?: (HelixDateInput["removeLabel"]) | undefined;
6333
+ /** What a screen reader hears about the dates chosen in the calendar, with
6334
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
6335
+ `selection-label` says. */
6336
+ "selection-label"?: (HelixDateInput["selectionLabel"]) | undefined;
6337
+ /** What a screen reader hears about the dates chosen in the calendar, with
6338
+ `{kind}`, `{start}`, `{end}` and `{count}` filled in as Date Picker's
6339
+ `selection-label` says. */
6340
+ selectionLabel?: (HelixDateInput["selectionLabel"]) | undefined;
6249
6341
  /** How far apart the selectable dates are, in days.
6250
6342
 
6251
6343
  `<input type="date" step>`'s own unit, handed to the calendar this renders
@@ -6257,6 +6349,14 @@ platform's base. */
6257
6349
  "step-mismatch-message"?: (HelixDateInput["stepMismatchMessage"]) | undefined;
6258
6350
  /** The message shown when a date is not on `step`. */
6259
6351
  stepMismatchMessage?: (HelixDateInput["stepMismatchMessage"]) | undefined;
6352
+ /** The time zone today is read in, such as `America/New_York`, handed to the
6353
+ calendar: the day marked today, and the month an empty field opens on.
6354
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
6355
+ "time-zone"?: (HelixDateInput["timeZone"]) | undefined;
6356
+ /** The time zone today is read in, such as `America/New_York`, handed to the
6357
+ calendar: the day marked today, and the month an empty field opens on.
6358
+ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
6359
+ timeZone?: (HelixDateInput["timeZone"]) | undefined;
6260
6360
  /** The name of the button that opens the calendar, read by screen readers. */
6261
6361
  "trigger-label"?: (HelixDateInput["triggerLabel"]) | undefined;
6262
6362
  /** The name of the button that opens the calendar, read by screen readers. */
@@ -6265,6 +6365,12 @@ platform's base. */
6265
6365
  "unavailable-message"?: (HelixDateInput["unavailableMessage"]) | undefined;
6266
6366
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
6267
6367
  unavailableMessage?: (HelixDateInput["unavailableMessage"]) | undefined;
6368
+ /** The message for text that is no date, where `bad-input-message` is not
6369
+ set. `{mode}` is `single`, `range`, or `multiple`. */
6370
+ "unreadable-message"?: (HelixDateInput["unreadableMessage"]) | undefined;
6371
+ /** The message for text that is no date, where `bad-input-message` is not
6372
+ set. `{mode}` is `single`, `range`, or `multiple`. */
6373
+ unreadableMessage?: (HelixDateInput["unreadableMessage"]) | undefined;
6268
6374
  /** The name of the calendar's heading where it shows a page of years, with
6269
6375
  `{heading}` filled in. */
6270
6376
  "year-view-label"?: (HelixDateInput["yearViewLabel"]) | undefined;
@@ -6332,6 +6438,8 @@ export type HelixDateInputVueEvents = {
6332
6438
  "helix-before-close": HelixDateInputHelixBeforeCloseElementEvent;
6333
6439
  /** Fired before the calendar opens. Cancelable: call `preventDefault()` to keep it closed. */
6334
6440
  "helix-before-open": HelixDateInputHelixBeforeOpenElementEvent;
6441
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
6442
+ "helix-clear": HelixDateInputHelixClearElementEvent;
6335
6443
  /** Fired after the value changes. */
6336
6444
  input: HelixDateInputElementEvent;
6337
6445
  };
@@ -6401,14 +6509,16 @@ it is one of the five, such as `buddhist` for `th-TH` or `japanese` for
6401
6509
  `ja-JP-u-ca-japanese`, and `gregory` for every other, such as `persian`
6402
6510
  for `fa-IR`.
6403
6511
 
6404
- `persian`, `hebrew`, `islamic-umalqura`, `islamic-civil`, `ethiopic`,
6405
- `coptic`, and `indian` draw a calendar with months of its own, as React
6406
- Aria's calendars do: each grid is one of that calendar's months, the
6407
- Hebrew leap month and Ethiopia's five-day thirteenth month included, and
6408
- Previous, Next and the page keys move by those months. `month` and
6512
+ `persian`, `hebrew`, `islamic`, `islamic-umalqura`, `islamic-civil`,
6513
+ `islamic-tbla`, `islamic-rgsa`, `ethiopic`, `ethioaa`, `coptic`,
6514
+ `indian`, `chinese`, and `dangi` draw a calendar with months of its own,
6515
+ as React Aria's calendars do: each grid is one of that calendar's months,
6516
+ the Hebrew and Chinese leap months and Ethiopia's five-day thirteenth
6517
+ month included, and Previous, Next and the page keys move by those
6518
+ months. With `max-view`, the months view shows that calendar's year, of
6519
+ twelve or thirteen months, and the years view its years. `month` and
6409
6520
  `helix-navigate` then name a month by its first day, `YYYY-MM-DD`. The
6410
- heading stays text, as the months and years views are drawn in Gregorian
6411
- months only. The value is `YYYY-MM-DD` in every calendar. */
6521
+ value is `YYYY-MM-DD` in every calendar. */
6412
6522
  calendar?: (HelixDatePicker["calendar"]) | undefined;
6413
6523
  /** The month to open on when `month` is not set. */
6414
6524
  "default-month"?: (HelixDatePicker["defaultMonth"]) | undefined;
@@ -6555,6 +6665,18 @@ else set needs. */
6555
6665
  readOnly?: (HelixDatePicker["readOnly"]) | undefined;
6556
6666
  /** Stops the form from submitting while no date is chosen. */
6557
6667
  required?: (HelixDatePicker["required"]) | undefined;
6668
+ /** What a screen reader hears about the chosen dates: the grid's
6669
+ description, said again whenever the dates change. `{kind}` is `date`,
6670
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
6671
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
6672
+ many dates are chosen. */
6673
+ "selection-label"?: (HelixDatePicker["selectionLabel"]) | undefined;
6674
+ /** What a screen reader hears about the chosen dates: the grid's
6675
+ description, said again whenever the dates change. `{kind}` is `date`,
6676
+ `start` while a range holds one end, `range`, or `dates` for `multiple`.
6677
+ `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
6678
+ many dates are chosen. */
6679
+ selectionLabel?: (HelixDatePicker["selectionLabel"]) | undefined;
6558
6680
  /** How far apart the selectable dates are, in days.
6559
6681
 
6560
6682
  `<input type="date" step>`'s own unit, counted from `min` where there is
@@ -8126,12 +8248,14 @@ export type HelixFlexVueEvents = {};
8126
8248
 
8127
8249
  export type HelixFormatDateVueProps = {
8128
8250
  /** The calendar a date is written in: `gregory`, `buddhist`, `japanese`,
8129
- `roc`, or `iso8601`, the calendars Date Picker and Date Input draw.
8130
-
8131
- Absent is the locale's own where it is one of the five, such as
8132
- `buddhist` for `th-TH`, and `gregory` for every other, such as `persian`
8133
- for `fa-IR`, so a date written here reads as the same date a Date Picker
8134
- beside it shows. */
8251
+ `roc`, or `iso8601`, or a calendar with months of its own, such as
8252
+ `persian`, `hebrew`, `islamic-umalqura`, `ethiopic`, or `chinese`: every
8253
+ calendar Date Picker and Date Input draw.
8254
+
8255
+ Absent is the locale's own where its months are the Gregorian months,
8256
+ such as `buddhist` for `th-TH`, and `gregory` for every other, such as
8257
+ `persian` for `fa-IR`, so a date written here reads as the same date a
8258
+ Date Picker beside it shows. Write `calendar="persian"` for Mehr 14, 1405. */
8135
8259
  calendar?: (HelixFormatDate["calendar"]) | undefined;
8136
8260
  /** The timestamp, in any format `Date` can parse.
8137
8261
 
@@ -8157,6 +8281,14 @@ browser may use either. */
8157
8281
  dateStyle?: (HelixFormatDate["dateStyle"]) | undefined;
8158
8282
  /** How the day of the month is written, where a date is shown. */
8159
8283
  day?: (HelixFormatDate["day"]) | undefined;
8284
+ /** Writes the part of the day in words, such as "in the morning" or "at
8285
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
8286
+ twelve-hour clock. */
8287
+ "day-period"?: (HelixFormatDate["dayPeriod"]) | undefined;
8288
+ /** Writes the part of the day in words, such as "in the morning" or "at
8289
+ night", in its `long`, `short`, or `narrow` form, where `hour` is on a
8290
+ twelve-hour clock. */
8291
+ dayPeriod?: (HelixFormatDate["dayPeriod"]) | undefined;
8160
8292
  /** Shows how long ago the timestamp was, in a compact form such as "3h", in
8161
8293
  place of the date.
8162
8294
 
@@ -8174,6 +8306,12 @@ Off by default, which draws the date as one run of text, as Shoelace and
8174
8306
  Web Awesome do. An `elapsed` or `relative` reading is one phrase either
8175
8307
  way. */
8176
8308
  fields?: (HelixFormatDate["fields"]) | undefined;
8309
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
8310
+ or 3, as in 09:41:07.250. */
8311
+ "fractional-second-digits"?: (HelixFormatDate["fractionalSecondDigits"]) | undefined;
8312
+ /** How many digits of a fraction of a second to write after `second`: 1, 2,
8313
+ or 3, as in 09:41:07.250. */
8314
+ fractionalSecondDigits?: (HelixFormatDate["fractionalSecondDigits"]) | undefined;
8177
8315
  /** Draws an `elapsed` or `relative` reading once and leaves it, where it
8178
8316
  would otherwise move on as it goes stale.
8179
8317
 
@@ -8236,9 +8374,13 @@ Empty is the runtime's own. */
8236
8374
 
8237
8375
  Empty is the runtime's own. */
8238
8376
  timeZone?: (HelixFormatDate["timeZone"]) | undefined;
8239
- /** Shows the name of the time zone, in its `long` or `short` form. */
8377
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
8378
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
8379
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
8240
8380
  "time-zone-name"?: (HelixFormatDate["timeZoneName"]) | undefined;
8241
- /** Shows the name of the time zone, in its `long` or `short` form. */
8381
+ /** Shows the name of the time zone: `long` or `short`, as Pacific Daylight
8382
+ Time or PDT, `longOffset` or `shortOffset`, as GMT-07:00 or GMT-7, or
8383
+ `longGeneric` or `shortGeneric`, as Pacific Time or PT. */
8242
8384
  timeZoneName?: (HelixFormatDate["timeZoneName"]) | undefined;
8243
8385
  /** How the weekday is written, where one is shown. */
8244
8386
  weekday?: (HelixFormatDate["weekday"]) | undefined;
@@ -15641,6 +15783,14 @@ rather than a thumb sitting on nothing. */
15641
15783
  middle of the track, or `end` at `max`. Absent is `start`. A range fills
15642
15784
  between its thumbs and ignores it. */
15643
15785
  origin?: (HelixSlider["origin"]) | undefined;
15786
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
15787
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
15788
+ to the platform, which moves a tenth of the track. */
15789
+ "page-step"?: (HelixSlider["pageStep"] | `${number}`) | undefined;
15790
+ /** How far Page Up and Page Down move a thumb, in the slider's own units, as
15791
+ React Aria's `pageSize` and Zag's `largeStep` do. Absent leaves the keys
15792
+ to the platform, which moves a tenth of the track. */
15793
+ pageStep?: (HelixSlider["pageStep"]) | undefined;
15644
15794
  /** Adds a second thumb, so the value is a pair.
15645
15795
 
15646
15796
  The pair is one string, `"10,50"`, which is what `value` and
@@ -17038,7 +17188,16 @@ known by its place among the rows as written. */
17038
17188
 
17039
17189
  export type HelixTableRowVueEvents = {};
17040
17190
 
17191
+ /** `HelixTabPanel` component event */
17192
+ export type HelixTabPanelElementEvent<E = Event> = TypedEvent<HelixTabPanel, E>;
17193
+ /** `helix-load` event type */
17194
+ export type HelixTabPanelHelixLoadElementEvent =
17195
+ HelixTabPanelElementEvent<HelixLoadEvent>;
17196
+
17041
17197
  export type HelixTabPanelVueProps = {
17198
+ /** Whether the panel's content waits in a `<template>` until the panel is
17199
+ first shown. */
17200
+ lazy?: (HelixTabPanel["lazy"]) | undefined;
17042
17201
  /** Whether this panel is the visible one. */
17043
17202
  selected?: (HelixTabPanel["selected"]) | undefined;
17044
17203
  /** Pairs the panel with the tab of the same value. */
@@ -17056,7 +17215,10 @@ the pattern names one anyway. */
17056
17215
  label?: (HelixTabPanel["label"]) | undefined;
17057
17216
  };
17058
17217
 
17059
- export type HelixTabPanelVueEvents = {};
17218
+ export type HelixTabPanelVueEvents = {
17219
+ /** Fired the first time a `lazy` panel is shown, once its template's content is in. */
17220
+ "helix-load": HelixTabPanelHelixLoadElementEvent;
17221
+ };
17060
17222
 
17061
17223
  /** `HelixTabs` component event */
17062
17224
  export type HelixTabsElementEvent<E = Event> = TypedEvent<HelixTabs, E>;
@@ -17693,6 +17855,9 @@ export type HelixTimeInputHelixBeforeCloseElementEvent =
17693
17855
  /** `helix-before-open` event type */
17694
17856
  export type HelixTimeInputHelixBeforeOpenElementEvent =
17695
17857
  HelixTimeInputElementEvent<HelixBeforeOpenEvent>;
17858
+ /** `helix-clear` event type */
17859
+ export type HelixTimeInputHelixClearElementEvent =
17860
+ HelixTimeInputElementEvent<HelixClearEvent>;
17696
17861
 
17697
17862
  export type HelixTimeInputVueProps = {
17698
17863
  /** What a row of segments reports when the field is required and every
@@ -17717,6 +17882,18 @@ are not, where `bad-input-message` is not set. `{kind}` is `date` or
17717
17882
  are not, where `bad-input-message` is not set. `{kind}` is `date` or
17718
17883
  `time`. */
17719
17884
  incompleteMessage?: (HelixTimeInput["incompleteMessage"]) | undefined;
17885
+ /** What a screen reader hears before the segments of a range's second date
17886
+ or time, after each segment's own name. */
17887
+ "range-end-label"?: (HelixTimeInput["rangeEndLabel"]) | undefined;
17888
+ /** What a screen reader hears before the segments of a range's second date
17889
+ or time, after each segment's own name. */
17890
+ rangeEndLabel?: (HelixTimeInput["rangeEndLabel"]) | undefined;
17891
+ /** What a screen reader hears before the segments of a range's first date
17892
+ or time, after each segment's own name: "month, Start, Stay". */
17893
+ "range-start-label"?: (HelixTimeInput["rangeStartLabel"]) | undefined;
17894
+ /** What a screen reader hears before the segments of a range's first date
17895
+ or time, after each segment's own name: "month, Start, Stay". */
17896
+ rangeStartLabel?: (HelixTimeInput["rangeStartLabel"]) | undefined;
17720
17897
  /** Whether the field is a row of segments, one for each part of the date or
17721
17898
  time, in place of a line of text.
17722
17899
 
@@ -17886,6 +18063,14 @@ the field and does not reach that one. */
17886
18063
  Empty leaves the attribute off, which is the browser's default and is what
17887
18064
  lets autofill work at all. */
17888
18065
  autocomplete?: (HelixTimeInput["autocomplete"]) | undefined;
18066
+ /** Whether the field shows a button that empties it, as Input's `clearable`
18067
+ does. Shown only while the field holds something to clear and is neither
18068
+ disabled nor read-only. */
18069
+ clearable?: (HelixTimeInput["clearable"]) | undefined;
18070
+ /** The accessible name of the clear button, which shows only an icon. */
18071
+ "clear-label"?: (HelixTimeInput["clearLabel"]) | undefined;
18072
+ /** The accessible name of the clear button, which shows only an icon. */
18073
+ clearLabel?: (HelixTimeInput["clearLabel"]) | undefined;
17889
18074
  /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
17890
18075
 
17891
18076
  Handed to the list, which offers them as unavailable, and checked against
@@ -17989,6 +18174,12 @@ never something this element would refuse to read back. */
17989
18174
  "unavailable-message"?: (HelixTimeInput["unavailableMessage"]) | undefined;
17990
18175
  /** The message shown when `disable-times` bars a time. */
17991
18176
  unavailableMessage?: (HelixTimeInput["unavailableMessage"]) | undefined;
18177
+ /** The message for text that is no time, where `bad-input-message` is not
18178
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
18179
+ "unreadable-message"?: (HelixTimeInput["unreadableMessage"]) | undefined;
18180
+ /** The message for text that is no time, where `bad-input-message` is not
18181
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{shape}` is `HH:mm`, or `HH:mm:ss` with `seconds`. */
18182
+ unreadableMessage?: (HelixTimeInput["unreadableMessage"]) | undefined;
17992
18183
  /** Whether the panel shows one list of times or a column for each part of the
17993
18184
  time.
17994
18185
 
@@ -18054,6 +18245,8 @@ export type HelixTimeInputVueEvents = {
18054
18245
  "helix-before-close": HelixTimeInputHelixBeforeCloseElementEvent;
18055
18246
  /** Fired before the list opens. Cancelable: canceling it keeps the list closed and leaves the decision to you. */
18056
18247
  "helix-before-open": HelixTimeInputHelixBeforeOpenElementEvent;
18248
+ /** Fired after the clear button has emptied the field, after `input` and `change`. */
18249
+ "helix-clear": HelixTimeInputHelixClearElementEvent;
18057
18250
  /** Fired after the value changes. */
18058
18251
  input: HelixTimeInputElementEvent;
18059
18252
  };
@@ -18544,6 +18737,12 @@ consumer's server markup does not have. A sheet carries the resting
18544
18737
  arrangement in its own `:host` rule and the selectors describe only the
18545
18738
  departures, which is what `orientation` does. */
18546
18739
  placement?: (HelixToast["placement"]) | undefined;
18740
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
18741
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
18742
+ "swipe-direction"?: (HelixToast["swipeDirection"]) | undefined;
18743
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
18744
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
18745
+ swipeDirection?: (HelixToast["swipeDirection"]) | undefined;
18547
18746
  };
18548
18747
 
18549
18748
  export type HelixToastVueEvents = {
@@ -18656,6 +18855,18 @@ and this one was the English a form in another language still spoke in
18656
18855
  the bubble it raises on submit: `feedback` replaces the message under
18657
18856
  the field and does not reach that one. */
18658
18857
  valueMissingMessage?: (HelixToggleGroup["valueMissingMessage"]) | undefined;
18858
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
18859
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
18860
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
18861
+ keeps its choice once it has one, as a radio group does. A multiple group
18862
+ releases a pressed item either way. */
18863
+ "allow-empty-selection"?: (HelixToggleGroup["allowEmptySelection"]) | undefined;
18864
+ /** Whether a press on the chosen item, or Space or Enter on it, takes it
18865
+ back so nothing is chosen, as React Aria's `ToggleButtonGroup` and
18866
+ Radix's `ToggleGroup` do in a single group. Absent, a single group always
18867
+ keeps its choice once it has one, as a radio group does. A multiple group
18868
+ releases a pressed item either way. */
18869
+ allowEmptySelection?: (HelixToggleGroup["allowEmptySelection"]) | undefined;
18659
18870
  /** Where the group's label sits. `start` puts it on the track's line.
18660
18871
 
18661
18872
  Absent is above, which is what a field looks like and what almost every
@@ -19097,6 +19308,14 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
19097
19308
  "next-label"?: (HelixTour["nextLabel"]) | undefined;
19098
19309
  /** Label for the control that goes on. */
19099
19310
  nextLabel?: (HelixTour["nextLabel"]) | undefined;
19311
+ /** What a press outside the current stop and its target does while the tour
19312
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
19313
+ Skip does, and `block` refuses the press. */
19314
+ "outside-press"?: (HelixTour["outsidePress"]) | undefined;
19315
+ /** What a press outside the current stop and its target does while the tour
19316
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
19317
+ Skip does, and `block` refuses the press. */
19318
+ outsidePress?: (HelixTour["outsidePress"]) | undefined;
19100
19319
  /** Draws each stop's place in the run in its panel, as well as saying it. */
19101
19320
  progress?: (HelixTour["progress"]) | undefined;
19102
19321
  /** Each stop's place in the run, with `{index}` and `{count}` filled in and
@@ -19185,6 +19404,9 @@ heading. */
19185
19404
  Reflected, because the styled tier places a dialog and a floating panel by
19186
19405
  it, and unset at rest, so no default is written onto the host. */
19187
19406
  type?: (HelixTourStop["type"]) | undefined;
19407
+ /** Run as the tour reaches the stop, before it is shown: see the description
19408
+ above. A function, so it is set from script and has no attribute. */
19409
+ effect?: (HelixTourStop["effect"]) | undefined;
19188
19410
  };
19189
19411
 
19190
19412
  export type HelixTourStopVueEvents = {
@@ -21008,6 +21230,8 @@ export type CustomCssProperties = {
21008
21230
  "--date-picker-period-size"?: (string) | undefined;
21009
21231
  /** Band behind the days in a range. */
21010
21232
  "--date-picker-range-color"?: (string) | undefined;
21233
+ /** Band behind the days a waiting range is drawn to, before its second end is chosen. */
21234
+ "--date-picker-range-preview-color"?: (string) | undefined;
21011
21235
  /** Height of a week row. */
21012
21236
  "--date-picker-row-size"?: (string) | undefined;
21013
21237
  /** Fill behind a selected day. */
@@ -22562,6 +22786,8 @@ export type CustomCssProperties = {
22562
22786
  "--toast-duration"?: (string) | undefined;
22563
22787
  /** How far a swipe has moved the message across, in pixels, toward the right. */
22564
22788
  "--toast-swipe-x"?: (string) | undefined;
22789
+ /** How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`. */
22790
+ "--toast-swipe-y"?: (string) | undefined;
22565
22791
  /** Space between one message and the next. */
22566
22792
  "--toast-gap"?: (string) | undefined;
22567
22793
  /** Width of a message. */
package/types/words.d.ts CHANGED
@@ -65,8 +65,7 @@ declare module '@fusion.dev/helix-core' {
65
65
  */
66
66
  canceledLabel: Message
67
67
  /**
68
- * The name of the clear button, read by screen readers. The button shows only
69
- * an icon.
68
+ * The accessible name of the clear button, which shows only an icon.
70
69
  *
71
70
  * English: `Clear`
72
71
  */
@@ -552,6 +551,13 @@ declare module '@fusion.dev/helix-core' {
552
551
  * English: `Earlier years`
553
552
  */
554
553
  previousYearsLabel: Message
554
+ /**
555
+ * What a screen reader hears before the segments of a range's second date
556
+ * or time, after each segment's own name.
557
+ *
558
+ * English: `End`
559
+ */
560
+ rangeEndLabel: Message
555
561
  /**
556
562
  * The message shown when a range holds more than two dates.
557
563
  *
@@ -565,6 +571,13 @@ declare module '@fusion.dev/helix-core' {
565
571
  * English: `Choose a date on or before {max}.`
566
572
  */
567
573
  rangeOverflowMessage: Message
574
+ /**
575
+ * What a screen reader hears before the segments of a range's first date
576
+ * or time, after each segment's own name: "month, Start, Stay".
577
+ *
578
+ * English: `Start`
579
+ */
580
+ rangeStartLabel: Message
568
581
  /**
569
582
  * The message shown when a date is before `min`. `{min}` is replaced with
570
583
  * `min`, written the way the field writes dates.
@@ -810,6 +823,13 @@ declare module '@fusion.dev/helix-core' {
810
823
  * English: `Choose a date that is available.`
811
824
  */
812
825
  unavailableMessage: Message
826
+ /**
827
+ * The message for text that is no date, where `bad-input-message` is not
828
+ * set. `{mode}` is `single`, `range`, or `multiple`.
829
+ *
830
+ * English: `{mode, select, single {Enter a date as YYYY-MM-DD.} other {Enter dates as YYYY-MM-DD, separated by commas.}}`
831
+ */
832
+ unreadableMessage: Message
813
833
  /**
814
834
  * What a screen reader hears before an unread notification's text.
815
835
  *
@@ -1368,6 +1388,16 @@ declare module '@fusion.dev/helix-core' {
1368
1388
  * English: `Choose a date on or after {min}.`
1369
1389
  */
1370
1390
  rangeUnderflowMessage: Message
1391
+ /**
1392
+ * What a screen reader hears about the chosen dates: the grid's
1393
+ * description, said again whenever the dates change. `{kind}` is `date`,
1394
+ * `start` while a range holds one end, `range`, or `dates` for `multiple`.
1395
+ * `{start}` and `{end}` are dates written in `locale`, and `{count}` is how
1396
+ * many dates are chosen.
1397
+ *
1398
+ * English: `{kind, select, date {Selected date: {start}} start {Range starts {start}. Choose the day it ends.} range {Selected range: {start} to {end}} other {{count, plural, one {# date selected} other {# dates selected}}}}`
1399
+ */
1400
+ selectionLabel: Message
1371
1401
  /**
1372
1402
  * The validation message for a date that `step` skips.
1373
1403
  *