@fusion.dev/helix-headless 0.177.1 → 0.178.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/jsx.d.ts CHANGED
@@ -10536,10 +10536,22 @@ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
10536
10536
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
10537
10537
  unavailableMessage?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
10538
10538
  /** The message for text that is no date, where `bad-input-message` is not
10539
- set. `{mode}` is `single`, `range`, or `multiple`. */
10539
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{example}` is a
10540
+ date written as the field writes one, `August 24, 2026` in `en-US` and
10541
+ `24. August 2026` in `de-DE` at the default `date-style`.
10542
+
10543
+ **The default names a date the field reads back.** It said "Enter a date
10544
+ as YYYY-MM-DD." to a reader whose field showed `August 4, 2026`, and a
10545
+ pattern token is words for a developer. Time Input says the same. */
10540
10546
  "unreadable-message"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10541
10547
  /** The message for text that is no date, where `bad-input-message` is not
10542
- set. `{mode}` is `single`, `range`, or `multiple`. */
10548
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{example}` is a
10549
+ date written as the field writes one, `August 24, 2026` in `en-US` and
10550
+ `24. August 2026` in `de-DE` at the default `date-style`.
10551
+
10552
+ **The default names a date the field reads back.** It said "Enter a date
10553
+ as YYYY-MM-DD." to a reader whose field showed `August 4, 2026`, and a
10554
+ pattern token is words for a developer. Time Input says the same. */
10543
10555
  unreadableMessage?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
10544
10556
  /** The name of the calendar's heading where it shows a page of years, with
10545
10557
  `{heading}` filled in. */
@@ -11056,10 +11068,22 @@ Empty is the reader's own. Dates are plain `YYYY-MM-DD` and carry no zone. */
11056
11068
  /** The message shown when `disable-dates` or `disable-days` bars a date. */
11057
11069
  "prop:unavailableMessage"?: (HelixHeadlessDateInput["unavailableMessage"]) | undefined;
11058
11070
  /** The message for text that is no date, where `bad-input-message` is not
11059
- set. `{mode}` is `single`, `range`, or `multiple`. */
11071
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{example}` is a
11072
+ date written as the field writes one, `August 24, 2026` in `en-US` and
11073
+ `24. August 2026` in `de-DE` at the default `date-style`.
11074
+
11075
+ **The default names a date the field reads back.** It said "Enter a date
11076
+ as YYYY-MM-DD." to a reader whose field showed `August 4, 2026`, and a
11077
+ pattern token is words for a developer. Time Input says the same. */
11060
11078
  "attr:unreadable-message"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
11061
11079
  /** The message for text that is no date, where `bad-input-message` is not
11062
- set. `{mode}` is `single`, `range`, or `multiple`. */
11080
+ set. `{mode}` is `single`, `range`, or `multiple`, and `{example}` is a
11081
+ date written as the field writes one, `August 24, 2026` in `en-US` and
11082
+ `24. August 2026` in `de-DE` at the default `date-style`.
11083
+
11084
+ **The default names a date the field reads back.** It said "Enter a date
11085
+ as YYYY-MM-DD." to a reader whose field showed `August 4, 2026`, and a
11086
+ pattern token is words for a developer. Time Input says the same. */
11063
11087
  "prop:unreadableMessage"?: (HelixHeadlessDateInput["unreadableMessage"]) | undefined;
11064
11088
  /** The name of the calendar's heading where it shows a page of years, with
11065
11089
  `{heading}` filled in. */
@@ -11358,16 +11382,24 @@ export type HelixHeadlessDatePickerProps = {
11358
11382
  **Every sentence a control raises in the browser's bubble is a property**,
11359
11383
  named for the validity flag it reports, so a form in another language
11360
11384
  speaks it. Unset is the sentence registered for the page's language, then
11361
- the English. `{mode}` is `single`, `range` or `multiple`, so each can have
11362
- its own sentence. */
11385
+ the English. `{example}` is a date written as the calendar names one,
11386
+ `August 24, 2026` in `en-US` and `24. August 2026` in `de-DE`, and `{mode}`
11387
+ is `single`, `range` or `multiple`, so each can have its own sentence.
11388
+
11389
+ **The default names a date in words.** It said "Enter a date as
11390
+ YYYY-MM-DD.", and a pattern token is words for a developer. */
11363
11391
  "bad-input-message"?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
11364
11392
  /** The validation message for a value that is not a date.
11365
11393
 
11366
11394
  **Every sentence a control raises in the browser's bubble is a property**,
11367
11395
  named for the validity flag it reports, so a form in another language
11368
11396
  speaks it. Unset is the sentence registered for the page's language, then
11369
- the English. `{mode}` is `single`, `range` or `multiple`, so each can have
11370
- its own sentence. */
11397
+ the English. `{example}` is a date written as the calendar names one,
11398
+ `August 24, 2026` in `en-US` and `24. August 2026` in `de-DE`, and `{mode}`
11399
+ is `single`, `range` or `multiple`, so each can have its own sentence.
11400
+
11401
+ **The default names a date in words.** It said "Enter a date as
11402
+ YYYY-MM-DD.", and a pattern token is words for a developer. */
11371
11403
  badInputMessage?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
11372
11404
  /** The calendar the heading, the days, and the months are written in.
11373
11405
 
@@ -11705,16 +11737,24 @@ export type HelixHeadlessDatePickerSolidJsProps = {
11705
11737
  **Every sentence a control raises in the browser's bubble is a property**,
11706
11738
  named for the validity flag it reports, so a form in another language
11707
11739
  speaks it. Unset is the sentence registered for the page's language, then
11708
- the English. `{mode}` is `single`, `range` or `multiple`, so each can have
11709
- its own sentence. */
11740
+ the English. `{example}` is a date written as the calendar names one,
11741
+ `August 24, 2026` in `en-US` and `24. August 2026` in `de-DE`, and `{mode}`
11742
+ is `single`, `range` or `multiple`, so each can have its own sentence.
11743
+
11744
+ **The default names a date in words.** It said "Enter a date as
11745
+ YYYY-MM-DD.", and a pattern token is words for a developer. */
11710
11746
  "attr:bad-input-message"?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
11711
11747
  /** The validation message for a value that is not a date.
11712
11748
 
11713
11749
  **Every sentence a control raises in the browser's bubble is a property**,
11714
11750
  named for the validity flag it reports, so a form in another language
11715
11751
  speaks it. Unset is the sentence registered for the page's language, then
11716
- the English. `{mode}` is `single`, `range` or `multiple`, so each can have
11717
- its own sentence. */
11752
+ the English. `{example}` is a date written as the calendar names one,
11753
+ `August 24, 2026` in `en-US` and `24. August 2026` in `de-DE`, and `{mode}`
11754
+ is `single`, `range` or `multiple`, so each can have its own sentence.
11755
+
11756
+ **The default names a date in words.** It said "Enter a date as
11757
+ YYYY-MM-DD.", and a pattern token is words for a developer. */
11718
11758
  "prop:badInputMessage"?: (HelixHeadlessDatePicker["badInputMessage"]) | undefined;
11719
11759
  /** The calendar the heading, the days, and the months are written in.
11720
11760
 
@@ -14058,6 +14098,14 @@ an icon. */
14058
14098
  /** The name of the clear button, read by screen readers. The button shows only
14059
14099
  an icon. */
14060
14100
  clearLabel?: (HelixHeadlessFilterInput["clearLabel"]) | undefined;
14101
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14102
+ sends one request for a word in place of one for each letter. The arrow
14103
+ keys and Enter ask at once. `0` asks on every keystroke. */
14104
+ "filter-delay"?: (HelixHeadlessFilterInput["filterDelay"] | `${number}`) | undefined;
14105
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14106
+ sends one request for a word in place of one for each letter. The arrow
14107
+ keys and Enter ask at once. `0` asks on every keystroke. */
14108
+ filterDelay?: (HelixHeadlessFilterInput["filterDelay"]) | undefined;
14061
14109
  /** Whether the panel narrows itself to the suggestions that hold the term
14062
14110
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
14063
14111
  what you slot and you narrow it. */
@@ -14251,6 +14299,13 @@ imperatively later, and nothing is hydrating by then.
14251
14299
 
14252
14300
  Here rather than on each control. */
14253
14301
  name?: (HelixHeadlessFilterInput["name"]) | undefined;
14302
+ /** Where the suggestions come from: a function given the term at the caret,
14303
+ the field it is a value of, the whole text, and an `AbortSignal`, which
14304
+ returns the suggestions or a promise of them. Each is a string, or a
14305
+ `value` with a `label` and `disabled`. The field draws them as options in
14306
+ the panel, beside any you slot. A property only, there being no way to
14307
+ write a function in markup. See the class description. */
14308
+ source?: (HelixHeadlessFilterInput["source"]) | undefined;
14254
14309
 
14255
14310
  /** Fired from the input when the user finishes editing the text. */
14256
14311
  onchange?: ((e: HelixHeadlessFilterInputElementEvent) => void) | undefined;
@@ -14272,7 +14327,7 @@ Here rather than on each control. */
14272
14327
  ) => void) | undefined;
14273
14328
  /** Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were. */
14274
14329
  "onhelix-facet"?: ((e: HelixHeadlessFilterInputHelixFacetElementEvent) => void) | undefined;
14275
- /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does. */
14330
+ /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it. */
14276
14331
  "onhelix-select"?: ((
14277
14332
  e: HelixHeadlessFilterInputHelixSelectElementEvent,
14278
14333
  ) => void) | undefined;
@@ -14308,6 +14363,14 @@ an icon. */
14308
14363
  /** The name of the clear button, read by screen readers. The button shows only
14309
14364
  an icon. */
14310
14365
  "prop:clearLabel"?: (HelixHeadlessFilterInput["clearLabel"]) | undefined;
14366
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14367
+ sends one request for a word in place of one for each letter. The arrow
14368
+ keys and Enter ask at once. `0` asks on every keystroke. */
14369
+ "attr:filter-delay"?: (HelixHeadlessFilterInput["filterDelay"] | `${number}`) | undefined;
14370
+ /** How long typing rests before `source` is asked, in milliseconds. A delay
14371
+ sends one request for a word in place of one for each letter. The arrow
14372
+ keys and Enter ask at once. `0` asks on every keystroke. */
14373
+ "prop:filterDelay"?: (HelixHeadlessFilterInput["filterDelay"]) | undefined;
14311
14374
  /** Whether the panel narrows itself to the suggestions that hold the term
14312
14375
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
14313
14376
  what you slot and you narrow it. */
@@ -14501,6 +14564,13 @@ imperatively later, and nothing is hydrating by then.
14501
14564
 
14502
14565
  Here rather than on each control. */
14503
14566
  "prop:name"?: (HelixHeadlessFilterInput["name"]) | undefined;
14567
+ /** Where the suggestions come from: a function given the term at the caret,
14568
+ the field it is a value of, the whole text, and an `AbortSignal`, which
14569
+ returns the suggestions or a promise of them. Each is a string, or a
14570
+ `value` with a `label` and `disabled`. The field draws them as options in
14571
+ the panel, beside any you slot. A property only, there being no way to
14572
+ write a function in markup. See the class description. */
14573
+ "prop:source"?: (HelixHeadlessFilterInput["source"]) | undefined;
14504
14574
  /** Fired from the input when the user finishes editing the text. */
14505
14575
  "on:change"?: ((e: HelixHeadlessFilterInputElementEvent) => void) | undefined;
14506
14576
  /** Fired as the text changes. Cancelable: call `preventDefault()` to keep the current text. */
@@ -14523,7 +14593,7 @@ Here rather than on each control. */
14523
14593
  "on:helix-facet"?: ((
14524
14594
  e: HelixHeadlessFilterInputHelixFacetElementEvent,
14525
14595
  ) => void) | undefined;
14526
- /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does. */
14596
+ /** Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it. */
14527
14597
  "on:helix-select"?: ((
14528
14598
  e: HelixHeadlessFilterInputHelixSelectElementEvent,
14529
14599
  ) => void) | undefined;
@@ -14910,6 +14980,14 @@ or hides its notes. Drawn where the notes have two groups or more. */
14910
14980
  "legend-label"?: (HelixHeadlessGraph["legendLabel"]) | undefined;
14911
14981
  /** The legend's name, read by screen readers. */
14912
14982
  legendLabel?: (HelixHeadlessGraph["legendLabel"]) | undefined;
14983
+ /** What screen readers hear when a walk along the links reaches a note that
14984
+ has no link to follow, or goes back to a note: `{note}` for its name and
14985
+ `{count}` for how many notes the list holds that it links to or from. */
14986
+ "link-count-label"?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
14987
+ /** What screen readers hear when a walk along the links reaches a note that
14988
+ has no link to follow, or goes back to a note: `{note}` for its name and
14989
+ `{count}` for how many notes the list holds that it links to or from. */
14990
+ linkCountLabel?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
14913
14991
  /** How a note linked both to and from the selected one is described, with `{note}`. */
14914
14992
  "linked-both-label"?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
14915
14993
  /** How a note linked both to and from the selected one is described, with `{note}`. */
@@ -14989,6 +15067,16 @@ the list then holds, written with `count-label`. */
14989
15067
  "using-label"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
14990
15068
  /** The line shown while the graph, with `gestures="activate"`, has the gestures. */
14991
15069
  usingLabel?: (HelixHeadlessGraph["usingLabel"]) | undefined;
15070
+ /** What screen readers hear when a walk along the links moves to a note:
15071
+ `{note}` for its name, `{relation}` for how it stands to the note the
15072
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15073
+ for its place among that note's links. */
15074
+ "walk-label"?: (HelixHeadlessGraph["walkLabel"]) | undefined;
15075
+ /** What screen readers hear when a walk along the links moves to a note:
15076
+ `{note}` for its name, `{relation}` for how it stands to the note the
15077
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15078
+ for its place among that note's links. */
15079
+ walkLabel?: (HelixHeadlessGraph["walkLabel"]) | undefined;
14992
15080
  /** The hint shown when the wheel scrolls past the graph with
14993
15081
  `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
14994
15082
  "wheel-hint-label"?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
@@ -15187,7 +15275,7 @@ markup. */
15187
15275
  "onhelix-graph-pan"?: ((
15188
15276
  e: HelixHeadlessGraphHelixGraphPanElementEvent,
15189
15277
  ) => void) | undefined;
15190
- /** The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15278
+ /** The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15191
15279
  "onhelix-graph-part-change"?: ((
15192
15280
  e: HelixHeadlessGraphHelixGraphPartChangeElementEvent,
15193
15281
  ) => void) | undefined;
@@ -15249,6 +15337,14 @@ or hides its notes. Drawn where the notes have two groups or more. */
15249
15337
  "attr:legend-label"?: (HelixHeadlessGraph["legendLabel"]) | undefined;
15250
15338
  /** The legend's name, read by screen readers. */
15251
15339
  "prop:legendLabel"?: (HelixHeadlessGraph["legendLabel"]) | undefined;
15340
+ /** What screen readers hear when a walk along the links reaches a note that
15341
+ has no link to follow, or goes back to a note: `{note}` for its name and
15342
+ `{count}` for how many notes the list holds that it links to or from. */
15343
+ "attr:link-count-label"?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
15344
+ /** What screen readers hear when a walk along the links reaches a note that
15345
+ has no link to follow, or goes back to a note: `{note}` for its name and
15346
+ `{count}` for how many notes the list holds that it links to or from. */
15347
+ "prop:linkCountLabel"?: (HelixHeadlessGraph["linkCountLabel"]) | undefined;
15252
15348
  /** How a note linked both to and from the selected one is described, with `{note}`. */
15253
15349
  "attr:linked-both-label"?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
15254
15350
  /** How a note linked both to and from the selected one is described, with `{note}`. */
@@ -15328,6 +15424,16 @@ the list then holds, written with `count-label`. */
15328
15424
  "attr:using-label"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
15329
15425
  /** The line shown while the graph, with `gestures="activate"`, has the gestures. */
15330
15426
  "prop:usingLabel"?: (HelixHeadlessGraph["usingLabel"]) | undefined;
15427
+ /** What screen readers hear when a walk along the links moves to a note:
15428
+ `{note}` for its name, `{relation}` for how it stands to the note the
15429
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15430
+ for its place among that note's links. */
15431
+ "attr:walk-label"?: (HelixHeadlessGraph["walkLabel"]) | undefined;
15432
+ /** What screen readers hear when a walk along the links moves to a note:
15433
+ `{note}` for its name, `{relation}` for how it stands to the note the
15434
+ step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
15435
+ for its place among that note's links. */
15436
+ "prop:walkLabel"?: (HelixHeadlessGraph["walkLabel"]) | undefined;
15331
15437
  /** The hint shown when the wheel scrolls past the graph with
15332
15438
  `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere. */
15333
15439
  "attr:wheel-hint-label"?: (HelixHeadlessGraph["wheelHintLabel"]) | undefined;
@@ -15527,7 +15633,7 @@ markup. */
15527
15633
  "on:helix-graph-pan"?: ((
15528
15634
  e: HelixHeadlessGraphHelixGraphPanElementEvent,
15529
15635
  ) => void) | undefined;
15530
- /** The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15636
+ /** The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it. */
15531
15637
  "on:helix-graph-part-change"?: ((
15532
15638
  e: HelixHeadlessGraphHelixGraphPartChangeElementEvent,
15533
15639
  ) => void) | undefined;
@@ -32384,18 +32490,28 @@ export type HelixHeadlessTimePickerProps = {
32384
32490
  **Every sentence a control raises in the browser's bubble is a property**,
32385
32491
  named for the validity flag it reports, so a form in another language
32386
32492
  speaks it. Unset is the sentence registered for the page's language, then
32387
- the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
32388
- `{mode}` is `single`, `range` or `multiple`, so each can have its own
32389
- sentence. */
32493
+ the English. `{example}` is a time written as the picker writes one,
32494
+ `2:30 PM` in `en-US` and `14:30` in `de-DE`, `{shape}` is `HH:mm` or
32495
+ `HH:mm:ss`, and `{mode}` is `single`, `range` or `multiple`, so each can
32496
+ have its own sentence.
32497
+
32498
+ **The default names a time as the picker shows one.** It said "Enter a
32499
+ time as HH:mm." to a reader whose list showed `2:30 PM`, and a pattern
32500
+ token is words for a developer. Time Input says the same. */
32390
32501
  "bad-input-message"?: (HelixHeadlessTimePicker["badInputMessage"]) | undefined;
32391
32502
  /** The validation message for a value that is not a time.
32392
32503
 
32393
32504
  **Every sentence a control raises in the browser's bubble is a property**,
32394
32505
  named for the validity flag it reports, so a form in another language
32395
32506
  speaks it. Unset is the sentence registered for the page's language, then
32396
- the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
32397
- `{mode}` is `single`, `range` or `multiple`, so each can have its own
32398
- sentence. */
32507
+ the English. `{example}` is a time written as the picker writes one,
32508
+ `2:30 PM` in `en-US` and `14:30` in `de-DE`, `{shape}` is `HH:mm` or
32509
+ `HH:mm:ss`, and `{mode}` is `single`, `range` or `multiple`, so each can
32510
+ have its own sentence.
32511
+
32512
+ **The default names a time as the picker shows one.** It said "Enter a
32513
+ time as HH:mm." to a reader whose list showed `2:30 PM`, and a pattern
32514
+ token is words for a developer. Time Input says the same. */
32399
32515
  badInputMessage?: (HelixHeadlessTimePicker["badInputMessage"]) | undefined;
32400
32516
  /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
32401
32517
 
@@ -32732,18 +32848,28 @@ export type HelixHeadlessTimePickerSolidJsProps = {
32732
32848
  **Every sentence a control raises in the browser's bubble is a property**,
32733
32849
  named for the validity flag it reports, so a form in another language
32734
32850
  speaks it. Unset is the sentence registered for the page's language, then
32735
- the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
32736
- `{mode}` is `single`, `range` or `multiple`, so each can have its own
32737
- sentence. */
32851
+ the English. `{example}` is a time written as the picker writes one,
32852
+ `2:30 PM` in `en-US` and `14:30` in `de-DE`, `{shape}` is `HH:mm` or
32853
+ `HH:mm:ss`, and `{mode}` is `single`, `range` or `multiple`, so each can
32854
+ have its own sentence.
32855
+
32856
+ **The default names a time as the picker shows one.** It said "Enter a
32857
+ time as HH:mm." to a reader whose list showed `2:30 PM`, and a pattern
32858
+ token is words for a developer. Time Input says the same. */
32738
32859
  "attr:bad-input-message"?: (HelixHeadlessTimePicker["badInputMessage"]) | undefined;
32739
32860
  /** The validation message for a value that is not a time.
32740
32861
 
32741
32862
  **Every sentence a control raises in the browser's bubble is a property**,
32742
32863
  named for the validity flag it reports, so a form in another language
32743
32864
  speaks it. Unset is the sentence registered for the page's language, then
32744
- the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
32745
- `{mode}` is `single`, `range` or `multiple`, so each can have its own
32746
- sentence. */
32865
+ the English. `{example}` is a time written as the picker writes one,
32866
+ `2:30 PM` in `en-US` and `14:30` in `de-DE`, `{shape}` is `HH:mm` or
32867
+ `HH:mm:ss`, and `{mode}` is `single`, `range` or `multiple`, so each can
32868
+ have its own sentence.
32869
+
32870
+ **The default names a time as the picker shows one.** It said "Enter a
32871
+ time as HH:mm." to a reader whose list showed `2:30 PM`, and a pattern
32872
+ token is words for a developer. Time Input says the same. */
32747
32873
  "prop:badInputMessage"?: (HelixHeadlessTimePicker["badInputMessage"]) | undefined;
32748
32874
  /** Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
32749
32875
 
@@ -44613,7 +44739,13 @@ export type CustomElements = {
44613
44739
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the calendar, read by screen readers.
44614
44740
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-dates` or `disable-days` bars a date.
44615
44741
  * - `unreadable-message`/`unreadableMessage`: The message for text that is no date, where `bad-input-message` is not
44616
- * set. `{mode}` is `single`, `range`, or `multiple`.
44742
+ * set. `{mode}` is `single`, `range`, or `multiple`, and `{example}` is a
44743
+ * date written as the field writes one, `August 24, 2026` in `en-US` and
44744
+ * `24. August 2026` in `de-DE` at the default `date-style`.
44745
+ *
44746
+ * **The default names a date the field reads back.** It said "Enter a date
44747
+ * as YYYY-MM-DD." to a reader whose field showed `August 4, 2026`, and a
44748
+ * pattern token is words for a developer. Time Input says the same.
44617
44749
  * - `year-view-label`/`yearViewLabel`: The name of the calendar's heading where it shows a page of years, with
44618
44750
  * `{heading}` filled in.
44619
44751
  * - `empty-message`/`emptyMessage`: What a row of segments reports when the field is required and every
@@ -44997,8 +45129,12 @@ export type CustomElements = {
44997
45129
  * **Every sentence a control raises in the browser's bubble is a property**,
44998
45130
  * named for the validity flag it reports, so a form in another language
44999
45131
  * speaks it. Unset is the sentence registered for the page's language, then
45000
- * the English. `{mode}` is `single`, `range` or `multiple`, so each can have
45001
- * its own sentence.
45132
+ * the English. `{example}` is a date written as the calendar names one,
45133
+ * `August 24, 2026` in `en-US` and `24. August 2026` in `de-DE`, and `{mode}`
45134
+ * is `single`, `range` or `multiple`, so each can have its own sentence.
45135
+ *
45136
+ * **The default names a date in words.** It said "Enter a date as
45137
+ * YYYY-MM-DD.", and a pattern token is words for a developer.
45002
45138
  * - `calendar`: The calendar the heading, the days, and the months are written in.
45003
45139
  *
45004
45140
  * `gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five
@@ -47652,9 +47788,15 @@ export type CustomElements = {
47652
47788
  *
47653
47789
  * **The picker has an entry of its own.** `FilterMenu` draws its pages with
47654
47790
  * `Menu`, which a field without a picker does not need, so this family's entry
47655
- * leaves it out. A page that writes one imports
47656
- * `@fusion.dev/helix/filter-input/menu` as well, and a picker written without it
47657
- * is reported once the page has loaded, with the entry to add.
47791
+ * leaves it out. A page that writes a `FilterMenu` imports both entries:
47792
+ *
47793
+ * ```js
47794
+ * import '@fusion.dev/helix/filter-input'
47795
+ * import '@fusion.dev/helix/filter-input/menu'
47796
+ * ```
47797
+ *
47798
+ * A picker written without the second is reported once the page has loaded,
47799
+ * with the entry to add.
47658
47800
  *
47659
47801
  * **Suggestions.** Slot options into `suggestions` and the field shows them,
47660
47802
  * moves through them with the arrow keys, and presses one on Enter. The option
@@ -47670,6 +47812,24 @@ export type CustomElements = {
47670
47812
  * completion back and put the caret after it, or the next parse reads the wrong
47671
47813
  * term.
47672
47814
  *
47815
+ * **Suggestions from a source.** Set `source` to a function, and the field asks
47816
+ * it for suggestions as the text changes and draws them as options in the
47817
+ * panel. It is given the term at the caret, the field the term is a value of,
47818
+ * the whole text, and an `AbortSignal`, and returns the suggestions or a
47819
+ * promise of them. `filter-delay` waits for typing to rest before asking, and
47820
+ * a later keystroke aborts a request still out. While a promise is pending, the
47821
+ * panel shows `loading-text` and a screen reader hears it, then the count.
47822
+ * Choosing a suggestion writes its value over the term at the caret, and a
47823
+ * finished `field:value` is read into a chip as Enter would. Cancel its
47824
+ * `helix-select` to write it yourself.
47825
+ *
47826
+ * ```js
47827
+ * filter.source = async ({ field, term, signal }) => {
47828
+ * const response = await fetch(`/values?field=${field}&q=${term}`, { signal })
47829
+ * return response.json()
47830
+ * }
47831
+ * ```
47832
+ *
47673
47833
  * **State.** Three things have three different owners:
47674
47834
  *
47675
47835
  * - `value` is the text. The user types, the element applies it, and `input`
@@ -47711,6 +47871,9 @@ export type CustomElements = {
47711
47871
  * them.
47712
47872
  * - `clear-label`/`clearLabel`: The name of the clear button, read by screen readers. The button shows only
47713
47873
  * an icon.
47874
+ * - `filter-delay`/`filterDelay`: How long typing rests before `source` is asked, in milliseconds. A delay
47875
+ * sends one request for a word in place of one for each letter. The arrow
47876
+ * keys and Enter ask at once. `0` asks on every keystroke.
47714
47877
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
47715
47878
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
47716
47879
  * what you slot and you narrow it.
@@ -47818,6 +47981,12 @@ export type CustomElements = {
47818
47981
  * imperatively later, and nothing is hydrating by then.
47819
47982
  *
47820
47983
  * Here rather than on each control.
47984
+ * - `source`: Where the suggestions come from: a function given the term at the caret,
47985
+ * the field it is a value of, the whole text, and an `AbortSignal`, which
47986
+ * returns the suggestions or a promise of them. Each is a string, or a
47987
+ * `value` with a `label` and `disabled`. The field draws them as options in
47988
+ * the panel, beside any you slot. A property only, there being no way to
47989
+ * write a function in markup. See the class description. (property only)
47821
47990
  * - `selectionDirection`: The direction of the selection, named as on `<input>`.
47822
47991
  *
47823
47992
  * **Published for the reason `Input` publishes them, and this element needs
@@ -47874,7 +48043,7 @@ export type CustomElements = {
47874
48043
  * - `helix-before-open`: Fired before the suggestions open. Cancelable: call `preventDefault()` to keep them closed.
47875
48044
  * - `helix-dismiss`: Fired when the user removes a token with its remove button or with Backspace in an empty field. A `FilterChip` that names a declared field sends `helix-facet` instead. Cancelable: call `preventDefault()` to keep the token.
47876
48045
  * - `helix-facet`: Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were.
47877
- * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does.
48046
+ * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it.
47878
48047
  * - `input`: Fired when the text changes.
47879
48048
  * - `toggle`: Fired when the suggestions panel opens or closes, with `newState` and `oldState`.
47880
48049
  *
@@ -47981,7 +48150,7 @@ export type CustomElements = {
47981
48150
  * - `label`: The label above the field.
47982
48151
  * - `lead`: The box before the text that holds the `start` slot.
47983
48152
  * - `live`: The live region that says how many suggestions the open panel offers. It is rendered from the first time the panel opens with suggestions.
47984
- * - `loading`: Shown in the panel while the suggestions load.
48153
+ * - `loading`: Shown in the panel while the suggestions load: while `loading` is set, or a request to `source` is out.
47985
48154
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
47986
48155
  * - `surface`: The floating panel the suggestions sit in.
47987
48156
  * - `tags`: The row the tokens sit in.
@@ -47991,7 +48160,7 @@ export type CustomElements = {
47991
48160
  * These can be used to apply styling when a component is in a given state.
47992
48161
  *
47993
48162
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
47994
- * - `loading`: While `loading` is set.
48163
+ * - `loading`: While `loading` is set, or a request to `source` is out.
47995
48164
  * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
47996
48165
  * - `open`: The suggestions are open.
47997
48166
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -48211,6 +48380,23 @@ export type CustomElements = {
48211
48380
  * Set `depth` to show the local graph: only the notes within that many links
48212
48381
  * of the selected one.
48213
48382
  *
48383
+ * The search field is a combobox over the list. Down and Up move through the
48384
+ * notes while the focus stays in the field, and Enter selects one.
48385
+ *
48386
+ * **Walk the links with Alt and the arrow keys**, in the list or in the
48387
+ * search field once its keys are on a note. The note the keys are on is
48388
+ * marked in the drawing.
48389
+ *
48390
+ * | Key | What it does |
48391
+ * |---|---|
48392
+ * | Alt+Right | Follows a link, to the first note the one the keys are on links to or from. |
48393
+ * | Alt+Down, Alt+Up | Moves to the next or the previous note linked to the one the step came from, wrapping. |
48394
+ * | Alt+Left | Goes back along the links walked. |
48395
+ *
48396
+ * Right and Left swap on a right-to-left page. Each step says the note, how it
48397
+ * stands to the note it came from, and its place among that note's links,
48398
+ * such as "Hiring plan. Linked from Roadmap. 2 of 3". Enter selects the note.
48399
+ *
48214
48400
  * Set `legend` to name the groups over the drawing, each a button that shows
48215
48401
  * or hides its notes. `hiddenGroups` holds the groups turned off, and the
48216
48402
  * list holds only what the drawing shows. The legend is a toolbar and one tab
@@ -48246,6 +48432,9 @@ export type CustomElements = {
48246
48432
  * - `legend`: Names the groups over the drawing, each a button in its color that shows
48247
48433
  * or hides its notes. Drawn where the notes have two groups or more.
48248
48434
  * - `legend-label`/`legendLabel`: The legend's name, read by screen readers.
48435
+ * - `link-count-label`/`linkCountLabel`: What screen readers hear when a walk along the links reaches a note that
48436
+ * has no link to follow, or goes back to a note: `{note}` for its name and
48437
+ * `{count}` for how many notes the list holds that it links to or from.
48249
48438
  * - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
48250
48439
  * - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
48251
48440
  * - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
@@ -48270,6 +48459,10 @@ export type CustomElements = {
48270
48459
  * the list then holds, written with `count-label`.
48271
48460
  * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over the graph with `gestures="cooperative"`.
48272
48461
  * - `using-label`/`usingLabel`: The line shown while the graph, with `gestures="activate"`, has the gestures.
48462
+ * - `walk-label`/`walkLabel`: What screen readers hear when a walk along the links moves to a note:
48463
+ * `{note}` for its name, `{relation}` for how it stands to the note the
48464
+ * step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
48465
+ * for its place among that note's links.
48273
48466
  * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past the graph with
48274
48467
  * `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere.
48275
48468
  * - `zoomed-in-label`/`zoomedInLabel`: What screen readers hear once the drawing has zoomed in, after `moved()`.
@@ -48403,7 +48596,7 @@ export type CustomElements = {
48403
48596
  * - `helix-graph-filter`: A group in the legend was pressed, to show or hide its notes. The detail's `hidden` is every group that would be hidden. Cancelable: cancel it to keep the groups as they were, or to set `hiddenGroups` yourself.
48404
48597
  * - `helix-graph-layout`: A layout settled, with where it put each note, sent by `laidOut()`. Keep the positions and pass them back as each note's `x` and `y`, and `z` where a renderer draws in three dimensions.
48405
48598
  * - `helix-graph-pan`: A pan button or arrow key was pressed. `connectGraph` moves the drawing, then calls `moved()`.
48406
- * - `helix-graph-part-change`: The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
48599
+ * - `helix-graph-part-change`: The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
48407
48600
  * - `helix-graph-ready`: The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.
48408
48601
  * - `helix-graph-signal`: Something passed between two notes, sent by `signal()`. Used by `connectGraph`; pages do not need to listen for it.
48409
48602
  * - `helix-graph-zoom`: A zoom button or key was pressed. `connectGraph` zooms the drawing, then calls `moved()`.
@@ -62663,9 +62856,14 @@ export type CustomElements = {
62663
62856
  * **Every sentence a control raises in the browser's bubble is a property**,
62664
62857
  * named for the validity flag it reports, so a form in another language
62665
62858
  * speaks it. Unset is the sentence registered for the page's language, then
62666
- * the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
62667
- * `{mode}` is `single`, `range` or `multiple`, so each can have its own
62668
- * sentence.
62859
+ * the English. `{example}` is a time written as the picker writes one,
62860
+ * `2:30 PM` in `en-US` and `14:30` in `de-DE`, `{shape}` is `HH:mm` or
62861
+ * `HH:mm:ss`, and `{mode}` is `single`, `range` or `multiple`, so each can
62862
+ * have its own sentence.
62863
+ *
62864
+ * **The default names a time as the picker shows one.** It said "Enter a
62865
+ * time as HH:mm." to a reader whose list showed `2:30 PM`, and a pattern
62866
+ * token is words for a developer. Time Input says the same.
62669
62867
  * - `disable-times`/`disableTimes`: Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
62670
62868
  *
62671
62869
  * The counterpart to Date Picker's `disable-dates`, and it exists for the same
@@ -74103,7 +74301,13 @@ export type CustomElementsSolidJs = {
74103
74301
  * - `trigger-label`/`triggerLabel`: The name of the button that opens the calendar, read by screen readers.
74104
74302
  * - `unavailable-message`/`unavailableMessage`: The message shown when `disable-dates` or `disable-days` bars a date.
74105
74303
  * - `unreadable-message`/`unreadableMessage`: The message for text that is no date, where `bad-input-message` is not
74106
- * set. `{mode}` is `single`, `range`, or `multiple`.
74304
+ * set. `{mode}` is `single`, `range`, or `multiple`, and `{example}` is a
74305
+ * date written as the field writes one, `August 24, 2026` in `en-US` and
74306
+ * `24. August 2026` in `de-DE` at the default `date-style`.
74307
+ *
74308
+ * **The default names a date the field reads back.** It said "Enter a date
74309
+ * as YYYY-MM-DD." to a reader whose field showed `August 4, 2026`, and a
74310
+ * pattern token is words for a developer. Time Input says the same.
74107
74311
  * - `year-view-label`/`yearViewLabel`: The name of the calendar's heading where it shows a page of years, with
74108
74312
  * `{heading}` filled in.
74109
74313
  * - `empty-message`/`emptyMessage`: What a row of segments reports when the field is required and every
@@ -74490,8 +74694,12 @@ export type CustomElementsSolidJs = {
74490
74694
  * **Every sentence a control raises in the browser's bubble is a property**,
74491
74695
  * named for the validity flag it reports, so a form in another language
74492
74696
  * speaks it. Unset is the sentence registered for the page's language, then
74493
- * the English. `{mode}` is `single`, `range` or `multiple`, so each can have
74494
- * its own sentence.
74697
+ * the English. `{example}` is a date written as the calendar names one,
74698
+ * `August 24, 2026` in `en-US` and `24. August 2026` in `de-DE`, and `{mode}`
74699
+ * is `single`, `range` or `multiple`, so each can have its own sentence.
74700
+ *
74701
+ * **The default names a date in words.** It said "Enter a date as
74702
+ * YYYY-MM-DD.", and a pattern token is words for a developer.
74495
74703
  * - `calendar`: The calendar the heading, the days, and the months are written in.
74496
74704
  *
74497
74705
  * `gregory`, `buddhist`, `japanese`, `roc`, and `iso8601` are the five
@@ -77172,9 +77380,15 @@ export type CustomElementsSolidJs = {
77172
77380
  *
77173
77381
  * **The picker has an entry of its own.** `FilterMenu` draws its pages with
77174
77382
  * `Menu`, which a field without a picker does not need, so this family's entry
77175
- * leaves it out. A page that writes one imports
77176
- * `@fusion.dev/helix/filter-input/menu` as well, and a picker written without it
77177
- * is reported once the page has loaded, with the entry to add.
77383
+ * leaves it out. A page that writes a `FilterMenu` imports both entries:
77384
+ *
77385
+ * ```js
77386
+ * import '@fusion.dev/helix/filter-input'
77387
+ * import '@fusion.dev/helix/filter-input/menu'
77388
+ * ```
77389
+ *
77390
+ * A picker written without the second is reported once the page has loaded,
77391
+ * with the entry to add.
77178
77392
  *
77179
77393
  * **Suggestions.** Slot options into `suggestions` and the field shows them,
77180
77394
  * moves through them with the arrow keys, and presses one on Enter. The option
@@ -77190,6 +77404,24 @@ export type CustomElementsSolidJs = {
77190
77404
  * completion back and put the caret after it, or the next parse reads the wrong
77191
77405
  * term.
77192
77406
  *
77407
+ * **Suggestions from a source.** Set `source` to a function, and the field asks
77408
+ * it for suggestions as the text changes and draws them as options in the
77409
+ * panel. It is given the term at the caret, the field the term is a value of,
77410
+ * the whole text, and an `AbortSignal`, and returns the suggestions or a
77411
+ * promise of them. `filter-delay` waits for typing to rest before asking, and
77412
+ * a later keystroke aborts a request still out. While a promise is pending, the
77413
+ * panel shows `loading-text` and a screen reader hears it, then the count.
77414
+ * Choosing a suggestion writes its value over the term at the caret, and a
77415
+ * finished `field:value` is read into a chip as Enter would. Cancel its
77416
+ * `helix-select` to write it yourself.
77417
+ *
77418
+ * ```js
77419
+ * filter.source = async ({ field, term, signal }) => {
77420
+ * const response = await fetch(`/values?field=${field}&q=${term}`, { signal })
77421
+ * return response.json()
77422
+ * }
77423
+ * ```
77424
+ *
77193
77425
  * **State.** Three things have three different owners:
77194
77426
  *
77195
77427
  * - `value` is the text. The user types, the element applies it, and `input`
@@ -77231,6 +77463,9 @@ export type CustomElementsSolidJs = {
77231
77463
  * them.
77232
77464
  * - `clear-label`/`clearLabel`: The name of the clear button, read by screen readers. The button shows only
77233
77465
  * an icon.
77466
+ * - `filter-delay`/`filterDelay`: How long typing rests before `source` is asked, in milliseconds. A delay
77467
+ * sends one request for a word in place of one for each letter. The arrow
77468
+ * keys and Enter ask at once. `0` asks on every keystroke.
77234
77469
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
77235
77470
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
77236
77471
  * what you slot and you narrow it.
@@ -77338,6 +77573,12 @@ export type CustomElementsSolidJs = {
77338
77573
  * imperatively later, and nothing is hydrating by then.
77339
77574
  *
77340
77575
  * Here rather than on each control.
77576
+ * - `source`: Where the suggestions come from: a function given the term at the caret,
77577
+ * the field it is a value of, the whole text, and an `AbortSignal`, which
77578
+ * returns the suggestions or a promise of them. Each is a string, or a
77579
+ * `value` with a `label` and `disabled`. The field draws them as options in
77580
+ * the panel, beside any you slot. A property only, there being no way to
77581
+ * write a function in markup. See the class description. (property only)
77341
77582
  * - `selectionDirection`: The direction of the selection, named as on `<input>`.
77342
77583
  *
77343
77584
  * **Published for the reason `Input` publishes them, and this element needs
@@ -77394,7 +77635,7 @@ export type CustomElementsSolidJs = {
77394
77635
  * - `helix-before-open`: Fired before the suggestions open. Cancelable: call `preventDefault()` to keep them closed.
77395
77636
  * - `helix-dismiss`: Fired when the user removes a token with its remove button or with Backspace in an empty field. A `FilterChip` that names a declared field sends `helix-facet` instead. Cancelable: call `preventDefault()` to keep the token.
77396
77637
  * - `helix-facet`: Fired when a filter changes, whether it was typed, picked, or removed. Cancelable: call `preventDefault()` to leave the text and the chip as they were.
77397
- * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on a choice; you decide what it does.
77638
+ * - `helix-select`: Fired by an option in `suggestions` when it is chosen, and bubbles out of the field. Cancelable: call `preventDefault()` to stop other listeners acting on it. The field takes no action on an option you slotted, and you decide what it does. A suggestion from `source` is written over the term at the caret unless you cancel it.
77398
77639
  * - `input`: Fired when the text changes.
77399
77640
  * - `toggle`: Fired when the suggestions panel opens or closes, with `newState` and `oldState`.
77400
77641
  *
@@ -77501,7 +77742,7 @@ export type CustomElementsSolidJs = {
77501
77742
  * - `label`: The label above the field.
77502
77743
  * - `lead`: The box before the text that holds the `start` slot.
77503
77744
  * - `live`: The live region that says how many suggestions the open panel offers. It is rendered from the first time the panel opens with suggestions.
77504
- * - `loading`: Shown in the panel while the suggestions load.
77745
+ * - `loading`: Shown in the panel while the suggestions load: while `loading` is set, or a request to `source` is out.
77505
77746
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
77506
77747
  * - `surface`: The floating panel the suggestions sit in.
77507
77748
  * - `tags`: The row the tokens sit in.
@@ -77511,7 +77752,7 @@ export type CustomElementsSolidJs = {
77511
77752
  * These can be used to apply styling when a component is in a given state.
77512
77753
  *
77513
77754
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
77514
- * - `loading`: While `loading` is set.
77755
+ * - `loading`: While `loading` is set, or a request to `source` is out.
77515
77756
  * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
77516
77757
  * - `open`: The suggestions are open.
77517
77758
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
@@ -77733,6 +77974,23 @@ export type CustomElementsSolidJs = {
77733
77974
  * Set `depth` to show the local graph: only the notes within that many links
77734
77975
  * of the selected one.
77735
77976
  *
77977
+ * The search field is a combobox over the list. Down and Up move through the
77978
+ * notes while the focus stays in the field, and Enter selects one.
77979
+ *
77980
+ * **Walk the links with Alt and the arrow keys**, in the list or in the
77981
+ * search field once its keys are on a note. The note the keys are on is
77982
+ * marked in the drawing.
77983
+ *
77984
+ * | Key | What it does |
77985
+ * |---|---|
77986
+ * | Alt+Right | Follows a link, to the first note the one the keys are on links to or from. |
77987
+ * | Alt+Down, Alt+Up | Moves to the next or the previous note linked to the one the step came from, wrapping. |
77988
+ * | Alt+Left | Goes back along the links walked. |
77989
+ *
77990
+ * Right and Left swap on a right-to-left page. Each step says the note, how it
77991
+ * stands to the note it came from, and its place among that note's links,
77992
+ * such as "Hiring plan. Linked from Roadmap. 2 of 3". Enter selects the note.
77993
+ *
77736
77994
  * Set `legend` to name the groups over the drawing, each a button that shows
77737
77995
  * or hides its notes. `hiddenGroups` holds the groups turned off, and the
77738
77996
  * list holds only what the drawing shows. The legend is a toolbar and one tab
@@ -77768,6 +78026,9 @@ export type CustomElementsSolidJs = {
77768
78026
  * - `legend`: Names the groups over the drawing, each a button in its color that shows
77769
78027
  * or hides its notes. Drawn where the notes have two groups or more.
77770
78028
  * - `legend-label`/`legendLabel`: The legend's name, read by screen readers.
78029
+ * - `link-count-label`/`linkCountLabel`: What screen readers hear when a walk along the links reaches a note that
78030
+ * has no link to follow, or goes back to a note: `{note}` for its name and
78031
+ * `{count}` for how many notes the list holds that it links to or from.
77771
78032
  * - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
77772
78033
  * - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
77773
78034
  * - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
@@ -77792,6 +78053,10 @@ export type CustomElementsSolidJs = {
77792
78053
  * the list then holds, written with `count-label`.
77793
78054
  * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over the graph with `gestures="cooperative"`.
77794
78055
  * - `using-label`/`usingLabel`: The line shown while the graph, with `gestures="activate"`, has the gestures.
78056
+ * - `walk-label`/`walkLabel`: What screen readers hear when a walk along the links moves to a note:
78057
+ * `{note}` for its name, `{relation}` for how it stands to the note the
78058
+ * step came from, such as "Linked from Roadmap", and `{index}` and `{count}`
78059
+ * for its place among that note's links.
77795
78060
  * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past the graph with
77796
78061
  * `gestures="cooperative"`. `{key}` is ⌘ on a Mac and Ctrl elsewhere.
77797
78062
  * - `zoomed-in-label`/`zoomedInLabel`: What screen readers hear once the drawing has zoomed in, after `moved()`.
@@ -77925,7 +78190,7 @@ export type CustomElementsSolidJs = {
77925
78190
  * - `helix-graph-filter`: A group in the legend was pressed, to show or hide its notes. The detail's `hidden` is every group that would be hidden. Cancelable: cancel it to keep the groups as they were, or to set `hiddenGroups` yourself.
77926
78191
  * - `helix-graph-layout`: A layout settled, with where it put each note, sent by `laidOut()`. Keep the positions and pass them back as each note's `x` and `y`, and `z` where a renderer draws in three dimensions.
77927
78192
  * - `helix-graph-pan`: A pan button or arrow key was pressed. `connectGraph` moves the drawing, then calls `moved()`.
77928
- * - `helix-graph-part-change`: The notes, the links, the selection, the depth or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
78193
+ * - `helix-graph-part-change`: The notes, the links, the selection, the depth, the note the keys are on, or the gestures changed. Used by `connectGraph`; pages do not need to listen for it.
77929
78194
  * - `helix-graph-ready`: The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.
77930
78195
  * - `helix-graph-signal`: Something passed between two notes, sent by `signal()`. Used by `connectGraph`; pages do not need to listen for it.
77931
78196
  * - `helix-graph-zoom`: A zoom button or key was pressed. `connectGraph` zooms the drawing, then calls `moved()`.
@@ -92372,9 +92637,14 @@ export type CustomElementsSolidJs = {
92372
92637
  * **Every sentence a control raises in the browser's bubble is a property**,
92373
92638
  * named for the validity flag it reports, so a form in another language
92374
92639
  * speaks it. Unset is the sentence registered for the page's language, then
92375
- * the English. `{shape}` is how a time is written, `HH:mm` or `HH:mm:ss`, and
92376
- * `{mode}` is `single`, `range` or `multiple`, so each can have its own
92377
- * sentence.
92640
+ * the English. `{example}` is a time written as the picker writes one,
92641
+ * `2:30 PM` in `en-US` and `14:30` in `de-DE`, `{shape}` is `HH:mm` or
92642
+ * `HH:mm:ss`, and `{mode}` is `single`, `range` or `multiple`, so each can
92643
+ * have its own sentence.
92644
+ *
92645
+ * **The default names a time as the picker shows one.** It said "Enter a
92646
+ * time as HH:mm." to a reader whose list showed `2:30 PM`, and a pattern
92647
+ * token is words for a developer. Time Input says the same.
92378
92648
  * - `disable-times`/`disableTimes`: Times that cannot be chosen, as `HH:mm`, separated by commas or spaces.
92379
92649
  *
92380
92650
  * The counterpart to Date Picker's `disable-dates`, and it exists for the same