@fusion.dev/helix 0.183.0 → 0.185.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix",
3
3
  "description": "Styled component tier. Extends the headless tier with token-driven presentation.",
4
- "version": "0.183.0",
4
+ "version": "0.185.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -54,14 +54,14 @@
54
54
  },
55
55
  "bugs": "https://github.com/project-fusion/fusion/issues",
56
56
  "dependencies": {
57
- "@fusion.dev/helix-core": "0.183.0",
58
- "@fusion.dev/helix-headless": "0.183.0",
59
- "@fusion.dev/helix-styles": "0.183.0",
57
+ "@fusion.dev/helix-core": "0.185.0",
58
+ "@fusion.dev/helix-headless": "0.185.0",
59
+ "@fusion.dev/helix-styles": "0.185.0",
60
60
  "tslib": "^2.8.1"
61
61
  },
62
62
  "devDependencies": {
63
- "@fusion.dev/helix-cem": "0.183.0",
64
- "@fusion.dev/helix-testing": "0.183.0",
63
+ "@fusion.dev/helix-cem": "0.185.0",
64
+ "@fusion.dev/helix-testing": "0.185.0",
65
65
  "@fusion.dev/scripts": "0.0.0-dev",
66
66
  "@happy-dom/global-registrator": "^20.14.5",
67
67
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -8045,7 +8045,11 @@ whole of it, which Shiki writes, are taken off, so the lines sit level
8045
8045
  with the gutter's numbers and the block keeps one tab stop. The code stays
8046
8046
  in the slot, so the copy button copies it as written and a reader without
8047
8047
  the script still has it. Not called on a server, which has no code to
8048
- read, nor for a diff. */
8048
+ read, nor for a diff.
8049
+
8050
+ Absent, the block draws with the highlighter `registerHighlighter` gave
8051
+ every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
8052
+ registered one, and plain otherwise. */
8049
8053
  highlight?: (HelixCodeBlock["highlight"]) | undefined;
8050
8054
 
8051
8055
  /** A file tab showed its file, whose name `file` now holds. */
@@ -8285,7 +8289,11 @@ whole of it, which Shiki writes, are taken off, so the lines sit level
8285
8289
  with the gutter's numbers and the block keeps one tab stop. The code stays
8286
8290
  in the slot, so the copy button copies it as written and a reader without
8287
8291
  the script still has it. Not called on a server, which has no code to
8288
- read, nor for a diff. */
8292
+ read, nor for a diff.
8293
+
8294
+ Absent, the block draws with the highlighter `registerHighlighter` gave
8295
+ every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
8296
+ registered one, and plain otherwise. */
8289
8297
  "prop:highlight"?: (HelixCodeBlock["highlight"]) | undefined;
8290
8298
  /** A file tab showed its file, whose name `file` now holds. */
8291
8299
  "on:change"?: ((e: HelixCodeBlockElementEvent) => void) | undefined;
@@ -11133,6 +11141,16 @@ and the grid becomes a tree grid.
11133
11141
  Reflected, because the styled tier indents a tree grid's row headers by
11134
11142
  it. No default, so a table that sets none writes nothing onto its host. */
11135
11143
  childField?: (HelixDataTable["childField"]) | undefined;
11144
+ /** The column tracks, as a grid track list such as `2fr 1fr max-content`,
11145
+ dealt out one track to a column in the order the columns are written. A
11146
+ column's own `width` wins in its place, and a column it does not reach
11147
+ takes the track a column with no `width` takes.
11148
+
11149
+ **The one track list a server can send.** A server rendering this element
11150
+ has no columns to read a `width` from, and neither has a stylesheet laying
11151
+ out the rows a page served before the table upgrades, so a table sized here
11152
+ lays those rows out at the widths it draws. */
11153
+ columns?: (HelixDataTable["columns"]) | undefined;
11136
11154
  /** The keys of the rows open at the start, separated by commas. Used until
11137
11155
  `expanded` is set. */
11138
11156
  "default-expanded"?: (HelixDataTable["defaultExpanded"]) | undefined;
@@ -11552,6 +11570,16 @@ and the grid becomes a tree grid.
11552
11570
  Reflected, because the styled tier indents a tree grid's row headers by
11553
11571
  it. No default, so a table that sets none writes nothing onto its host. */
11554
11572
  "prop:childField"?: (HelixDataTable["childField"]) | undefined;
11573
+ /** The column tracks, as a grid track list such as `2fr 1fr max-content`,
11574
+ dealt out one track to a column in the order the columns are written. A
11575
+ column's own `width` wins in its place, and a column it does not reach
11576
+ takes the track a column with no `width` takes.
11577
+
11578
+ **The one track list a server can send.** A server rendering this element
11579
+ has no columns to read a `width` from, and neither has a stylesheet laying
11580
+ out the rows a page served before the table upgrades, so a table sized here
11581
+ lays those rows out at the widths it draws. */
11582
+ "prop:columns"?: (HelixDataTable["columns"]) | undefined;
11555
11583
  /** The keys of the rows open at the start, separated by commas. Used until
11556
11584
  `expanded` is set. */
11557
11585
  "attr:default-expanded"?: (HelixDataTable["defaultExpanded"]) | undefined;
@@ -24301,7 +24329,11 @@ Cleared as the menu closes and as a submenu opens or closes, so each page
24301
24329
  starts with every row showing. */
24302
24330
  filter?: (HelixMenu["filter"]) | undefined;
24303
24331
  /** Whether the menu shows a field above its rows that narrows them as the
24304
- reader types, with focus staying in the field. */
24332
+ reader types, with focus staying in the field, once
24333
+ `@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
24334
+ is imported. Without that import it does nothing, so a menu that never
24335
+ filters carries none of the filter's code, and a development build says
24336
+ which import is missing. */
24305
24337
  filterable?: (HelixMenu["filterable"]) | undefined;
24306
24338
  /** The filter field's name and placeholder. */
24307
24339
  "filter-label"?: (HelixMenu["filterLabel"]) | undefined;
@@ -24435,7 +24467,11 @@ Cleared as the menu closes and as a submenu opens or closes, so each page
24435
24467
  starts with every row showing. */
24436
24468
  "prop:filter"?: (HelixMenu["filter"]) | undefined;
24437
24469
  /** Whether the menu shows a field above its rows that narrows them as the
24438
- reader types, with focus staying in the field. */
24470
+ reader types, with focus staying in the field, once
24471
+ `@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
24472
+ is imported. Without that import it does nothing, so a menu that never
24473
+ filters carries none of the filter's code, and a development build says
24474
+ which import is missing. */
24439
24475
  "prop:filterable"?: (HelixMenu["filterable"]) | undefined;
24440
24476
  /** The filter field's name and placeholder. */
24441
24477
  "attr:filter-label"?: (HelixMenu["filterLabel"]) | undefined;
@@ -34736,13 +34772,11 @@ and each column may say otherwise.
34736
34772
  **It is also the only track list a server can send.** The shim has no tree
34737
34773
  to walk, so a render there knows of no columns and this attribute is the
34738
34774
  whole answer: a table given one lays its grid out in the first paint, and a
34739
- table sized only by its columns is one track wide until it upgrades.
34775
+ table sized only by its columns takes, until it upgrades, a track for each
34776
+ column at the width a column with no `width` takes (`helix.css`).
34740
34777
 
34741
- **Data Table has none of this, and should not.** Its columns are its schema
34742
- rather than an option, so there is always a column to write a `width` on
34743
- and a list here would be a second way to say what that says. This table's
34744
- cells are markup, and a table written as rows of cells with no column
34745
- declared in it has nowhere else to be sized from. */
34778
+ Data Table takes the same list, for the same reason: a data table that
34779
+ serves its first page as rows is laid out by it before it upgrades. */
34746
34780
  columns?: (HelixTable["columns"]) | undefined;
34747
34781
  /** The keys of the rows whose rows are shown at the start, separated by
34748
34782
  commas. Used until `expanded` is set. */
@@ -34999,13 +35033,11 @@ and each column may say otherwise.
34999
35033
  **It is also the only track list a server can send.** The shim has no tree
35000
35034
  to walk, so a render there knows of no columns and this attribute is the
35001
35035
  whole answer: a table given one lays its grid out in the first paint, and a
35002
- table sized only by its columns is one track wide until it upgrades.
35036
+ table sized only by its columns takes, until it upgrades, a track for each
35037
+ column at the width a column with no `width` takes (`helix.css`).
35003
35038
 
35004
- **Data Table has none of this, and should not.** Its columns are its schema
35005
- rather than an option, so there is always a column to write a `width` on
35006
- and a list here would be a second way to say what that says. This table's
35007
- cells are markup, and a table written as rows of cells with no column
35008
- declared in it has nowhere else to be sized from. */
35039
+ Data Table takes the same list, for the same reason: a data table that
35040
+ serves its first page as rows is laid out by it before it upgrades. */
35009
35041
  "prop:columns"?: (HelixTable["columns"]) | undefined;
35010
35042
  /** The keys of the rows whose rows are shown at the start, separated by
35011
35043
  commas. Used until `expanded` is set. */
@@ -36806,6 +36838,12 @@ number, and both are carried as one comma-separated value, which is what a
36806
36838
  form submits. `TimePicker` carries the longer note on the interaction and
36807
36839
  on why a wheel cannot do either. */
36808
36840
  mode?: (HelixTimeInput["mode"]) | undefined;
36841
+ /** The words on the list's button that chooses the current time, drawn with
36842
+ `show-now`. */
36843
+ "now-label"?: (HelixTimeInput["nowLabel"]) | undefined;
36844
+ /** The words on the list's button that chooses the current time, drawn with
36845
+ `show-now`. */
36846
+ nowLabel?: (HelixTimeInput["nowLabel"]) | undefined;
36809
36847
  /** Placeholder text shown before a time is entered. */
36810
36848
  placeholder?: (HelixTimeInput["placeholder"]) | undefined;
36811
36849
  /** The message shown when a range holds more than two times.
@@ -36846,6 +36884,14 @@ removes rather than as "Remove" said once per time. */
36846
36884
  may give them, the field writes them, and the list's `step` counts seconds.
36847
36885
  See Time Picker's `seconds`. */
36848
36886
  seconds?: (HelixTimeInput["seconds"]) | undefined;
36887
+ /** Draws a button under the times in the list that chooses the current time,
36888
+ moved to the nearest time on offer. See Time Picker's `show-now`. Its words
36889
+ are `now-label`. */
36890
+ "show-now"?: (HelixTimeInput["showNow"]) | undefined;
36891
+ /** Draws a button under the times in the list that chooses the current time,
36892
+ moved to the nearest time on offer. See Time Picker's `show-now`. Its words
36893
+ are `now-label`. */
36894
+ showNow?: (HelixTimeInput["showNow"]) | undefined;
36849
36895
  /** How far apart the offered times are, in minutes, or in seconds with
36850
36896
  `seconds`. */
36851
36897
  step?: (HelixTimeInput["step"]) | undefined;
@@ -37214,6 +37260,12 @@ number, and both are carried as one comma-separated value, which is what a
37214
37260
  form submits. `TimePicker` carries the longer note on the interaction and
37215
37261
  on why a wheel cannot do either. */
37216
37262
  "prop:mode"?: (HelixTimeInput["mode"]) | undefined;
37263
+ /** The words on the list's button that chooses the current time, drawn with
37264
+ `show-now`. */
37265
+ "attr:now-label"?: (HelixTimeInput["nowLabel"]) | undefined;
37266
+ /** The words on the list's button that chooses the current time, drawn with
37267
+ `show-now`. */
37268
+ "prop:nowLabel"?: (HelixTimeInput["nowLabel"]) | undefined;
37217
37269
  /** Placeholder text shown before a time is entered. */
37218
37270
  "prop:placeholder"?: (HelixTimeInput["placeholder"]) | undefined;
37219
37271
  /** The message shown when a range holds more than two times.
@@ -37254,6 +37306,14 @@ removes rather than as "Remove" said once per time. */
37254
37306
  may give them, the field writes them, and the list's `step` counts seconds.
37255
37307
  See Time Picker's `seconds`. */
37256
37308
  "prop:seconds"?: (HelixTimeInput["seconds"]) | undefined;
37309
+ /** Draws a button under the times in the list that chooses the current time,
37310
+ moved to the nearest time on offer. See Time Picker's `show-now`. Its words
37311
+ are `now-label`. */
37312
+ "bool:show-now"?: (HelixTimeInput["showNow"]) | undefined;
37313
+ /** Draws a button under the times in the list that chooses the current time,
37314
+ moved to the nearest time on offer. See Time Picker's `show-now`. Its words
37315
+ are `now-label`. */
37316
+ "prop:showNow"?: (HelixTimeInput["showNow"]) | undefined;
37257
37317
  /** How far apart the offered times are, in minutes, or in seconds with
37258
37318
  `seconds`. */
37259
37319
  "prop:step"?: (HelixTimeInput["step"]) | undefined;
@@ -47510,7 +47570,11 @@ export type CustomElements = {
47510
47570
  * with the gutter's numbers and the block keeps one tab stop. The code stays
47511
47571
  * in the slot, so the copy button copies it as written and a reader without
47512
47572
  * the script still has it. Not called on a server, which has no code to
47513
- * read, nor for a diff. (property only)
47573
+ * read, nor for a diff.
47574
+ *
47575
+ * Absent, the block draws with the highlighter `registerHighlighter` gave
47576
+ * every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
47577
+ * registered one, and plain otherwise. (property only)
47514
47578
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
47515
47579
  *
47516
47580
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -49363,7 +49427,9 @@ export type CustomElements = {
49363
49427
  * Write it under the columns as `helix-table-row` and `helix-table-cell`
49364
49428
  * elements. `@fusion.dev/helix-styles/helix.css` lays them out as the table
49365
49429
  * draws them before it upgrades, and the table shows them until `rows` holds a
49366
- * row.
49430
+ * row. It holds the checkbox column and the pagination's row from the first
49431
+ * paint, and takes the widths from `columns`, so nothing moves when the table
49432
+ * upgrades or draws its own rows.
49367
49433
  *
49368
49434
  * ## Attributes & Properties
49369
49435
  *
@@ -49384,6 +49450,15 @@ export type CustomElements = {
49384
49450
  *
49385
49451
  * Reflected, because the styled tier indents a tree grid's row headers by
49386
49452
  * it. No default, so a table that sets none writes nothing onto its host.
49453
+ * - `columns`: The column tracks, as a grid track list such as `2fr 1fr max-content`,
49454
+ * dealt out one track to a column in the order the columns are written. A
49455
+ * column's own `width` wins in its place, and a column it does not reach
49456
+ * takes the track a column with no `width` takes.
49457
+ *
49458
+ * **The one track list a server can send.** A server rendering this element
49459
+ * has no columns to read a `width` from, and neither has a stylesheet laying
49460
+ * out the rows a page served before the table upgrades, so a table sized here
49461
+ * lays those rows out at the widths it draws.
49387
49462
  * - `default-expanded`/`defaultExpanded`: The keys of the rows open at the start, separated by commas. Used until
49388
49463
  * `expanded` is set.
49389
49464
  * - `default-filter`/`defaultFilter`: The starting search query, used until `filter` is set.
@@ -58364,7 +58439,11 @@ export type CustomElements = {
58364
58439
  * Cleared as the menu closes and as a submenu opens or closes, so each page
58365
58440
  * starts with every row showing.
58366
58441
  * - `filterable`: Whether the menu shows a field above its rows that narrows them as the
58367
- * reader types, with focus staying in the field.
58442
+ * reader types, with focus staying in the field, once
58443
+ * `@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
58444
+ * is imported. Without that import it does nothing, so a menu that never
58445
+ * filters carries none of the filter's code, and a development build says
58446
+ * which import is missing.
58368
58447
  * - `filter-label`/`filterLabel`: The filter field's name and placeholder.
58369
58448
  * - `label`: Accessible name for the surface.
58370
58449
  *
@@ -62677,6 +62756,15 @@ export type CustomElements = {
62677
62756
  * in the `js` pane or in another module loads it. A sandbox writes each pane
62678
62757
  * named for a module file here.
62679
62758
  *
62759
+ * **A module in TypeScript or JSX runs too**: a path ending in `.ts`, `.tsx`
62760
+ * or `.jsx` is compiled to JavaScript first, and imported by its path or by
62761
+ * its path without the extension. The compiler, Sucrase, loads from `cdn` the
62762
+ * first time a module needs it, so the package carries none and a preview
62763
+ * with no such module loads none. JSX compiles to the automatic runtime,
62764
+ * `react/jsx-runtime`, from `dependencies`, or to the one a
62765
+ * `@jsxImportSource` comment names. What fails to compile shows in the
62766
+ * `error` part as an error the example threw, when the example imports it.
62767
+ *
62680
62768
  * **Examples render in a frame**, so an example's styles and scripts do not
62681
62769
  * affect the page around the sandbox, and `position: fixed` stays inside the
62682
62770
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -62860,6 +62948,10 @@ export type CustomElements = {
62860
62948
  * - `js` sets a script that runs as a module after the markup.
62861
62949
  * - A module file name ending in `.js` or `.mjs`, such as `utils.js`, is a
62862
62950
  * module the other scripts import by its path, `./utils.js`.
62951
+ * - A module file name ending in `.ts`, `.tsx` or `.jsx`, such as `app.tsx`,
62952
+ * is one too, which the preview compiles to JavaScript first. The `js` pane
62953
+ * runs it with `import './app.tsx'`. A file that does not compile shows
62954
+ * why over the preview, as an error the example threw.
62863
62955
  * - `package.json` sets the npm packages the scripts import by name, from its
62864
62956
  * `dependencies`, which load from the preview's `cdn`.
62865
62957
  *
@@ -66046,7 +66138,7 @@ export type CustomElements = {
66046
66138
  *
66047
66139
  * The ribbon stops moving in these cases:
66048
66140
  * - `prefers-reduced-motion` is set. The element shows one still frame, and in
66049
- * `travel` still follows the scroll, without easing.
66141
+ * `travel` still follows the scroll.
66050
66142
  * - The element is off screen or in a background tab.
66051
66143
  *
66052
66144
  * It shows a gradient from the same tokens in these cases, and matches
@@ -66775,13 +66867,11 @@ export type CustomElements = {
66775
66867
  * **It is also the only track list a server can send.** The shim has no tree
66776
66868
  * to walk, so a render there knows of no columns and this attribute is the
66777
66869
  * whole answer: a table given one lays its grid out in the first paint, and a
66778
- * table sized only by its columns is one track wide until it upgrades.
66870
+ * table sized only by its columns takes, until it upgrades, a track for each
66871
+ * column at the width a column with no `width` takes (`helix.css`).
66779
66872
  *
66780
- * **Data Table has none of this, and should not.** Its columns are its schema
66781
- * rather than an option, so there is always a column to write a `width` on
66782
- * and a list here would be a second way to say what that says. This table's
66783
- * cells are markup, and a table written as rows of cells with no column
66784
- * declared in it has nowhere else to be sized from.
66873
+ * Data Table takes the same list, for the same reason: a data table that
66874
+ * serves its first page as rows is laid out by it before it upgrades.
66785
66875
  * - `default-expanded`/`defaultExpanded`: The keys of the rows whose rows are shown at the start, separated by
66786
66876
  * commas. Used until `expanded` is set.
66787
66877
  * - `default-selected`/`defaultSelected`: The keys selected at the start, separated by commas. Used until `selected`
@@ -68241,6 +68331,8 @@ export type CustomElements = {
68241
68331
  * number, and both are carried as one comma-separated value, which is what a
68242
68332
  * form submits. `TimePicker` carries the longer note on the interaction and
68243
68333
  * on why a wheel cannot do either.
68334
+ * - `now-label`/`nowLabel`: The words on the list's button that chooses the current time, drawn with
68335
+ * `show-now`.
68244
68336
  * - `placeholder`: Placeholder text shown before a time is entered.
68245
68337
  * - `range-length-message`/`rangeLengthMessage`: The message shown when a range holds more than two times.
68246
68338
  *
@@ -68258,6 +68350,9 @@ export type CustomElements = {
68258
68350
  * - `seconds`: Whether times carry their seconds: the value is `HH:mm:ss`, a typed time
68259
68351
  * may give them, the field writes them, and the list's `step` counts seconds.
68260
68352
  * See Time Picker's `seconds`.
68353
+ * - `show-now`/`showNow`: Draws a button under the times in the list that chooses the current time,
68354
+ * moved to the nearest time on offer. See Time Picker's `show-now`. Its words
68355
+ * are `now-label`.
68261
68356
  * - `step`: How far apart the offered times are, in minutes, or in seconds with
68262
68357
  * `seconds`.
68263
68358
  * - `time-style`/`timeStyle`: Whether the field shows the time in the local style or as the value
@@ -77307,7 +77402,11 @@ export type CustomElementsSolidJs = {
77307
77402
  * with the gutter's numbers and the block keeps one tab stop. The code stays
77308
77403
  * in the slot, so the copy button copies it as written and a reader without
77309
77404
  * the script still has it. Not called on a server, which has no code to
77310
- * read, nor for a diff. (property only)
77405
+ * read, nor for a diff.
77406
+ *
77407
+ * Absent, the block draws with the highlighter `registerHighlighter` gave
77408
+ * every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
77409
+ * registered one, and plain otherwise. (property only)
77311
77410
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
77312
77411
  *
77313
77412
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -79180,7 +79279,9 @@ export type CustomElementsSolidJs = {
79180
79279
  * Write it under the columns as `helix-table-row` and `helix-table-cell`
79181
79280
  * elements. `@fusion.dev/helix-styles/helix.css` lays them out as the table
79182
79281
  * draws them before it upgrades, and the table shows them until `rows` holds a
79183
- * row.
79282
+ * row. It holds the checkbox column and the pagination's row from the first
79283
+ * paint, and takes the widths from `columns`, so nothing moves when the table
79284
+ * upgrades or draws its own rows.
79184
79285
  *
79185
79286
  * ## Attributes & Properties
79186
79287
  *
@@ -79201,6 +79302,15 @@ export type CustomElementsSolidJs = {
79201
79302
  *
79202
79303
  * Reflected, because the styled tier indents a tree grid's row headers by
79203
79304
  * it. No default, so a table that sets none writes nothing onto its host.
79305
+ * - `columns`: The column tracks, as a grid track list such as `2fr 1fr max-content`,
79306
+ * dealt out one track to a column in the order the columns are written. A
79307
+ * column's own `width` wins in its place, and a column it does not reach
79308
+ * takes the track a column with no `width` takes.
79309
+ *
79310
+ * **The one track list a server can send.** A server rendering this element
79311
+ * has no columns to read a `width` from, and neither has a stylesheet laying
79312
+ * out the rows a page served before the table upgrades, so a table sized here
79313
+ * lays those rows out at the widths it draws.
79204
79314
  * - `default-expanded`/`defaultExpanded`: The keys of the rows open at the start, separated by commas. Used until
79205
79315
  * `expanded` is set.
79206
79316
  * - `default-filter`/`defaultFilter`: The starting search query, used until `filter` is set.
@@ -88328,7 +88438,11 @@ export type CustomElementsSolidJs = {
88328
88438
  * Cleared as the menu closes and as a submenu opens or closes, so each page
88329
88439
  * starts with every row showing.
88330
88440
  * - `filterable`: Whether the menu shows a field above its rows that narrows them as the
88331
- * reader types, with focus staying in the field.
88441
+ * reader types, with focus staying in the field, once
88442
+ * `@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
88443
+ * is imported. Without that import it does nothing, so a menu that never
88444
+ * filters carries none of the filter's code, and a development build says
88445
+ * which import is missing.
88332
88446
  * - `filter-label`/`filterLabel`: The filter field's name and placeholder.
88333
88447
  * - `label`: Accessible name for the surface.
88334
88448
  *
@@ -92720,6 +92834,15 @@ export type CustomElementsSolidJs = {
92720
92834
  * in the `js` pane or in another module loads it. A sandbox writes each pane
92721
92835
  * named for a module file here.
92722
92836
  *
92837
+ * **A module in TypeScript or JSX runs too**: a path ending in `.ts`, `.tsx`
92838
+ * or `.jsx` is compiled to JavaScript first, and imported by its path or by
92839
+ * its path without the extension. The compiler, Sucrase, loads from `cdn` the
92840
+ * first time a module needs it, so the package carries none and a preview
92841
+ * with no such module loads none. JSX compiles to the automatic runtime,
92842
+ * `react/jsx-runtime`, from `dependencies`, or to the one a
92843
+ * `@jsxImportSource` comment names. What fails to compile shows in the
92844
+ * `error` part as an error the example threw, when the example imports it.
92845
+ *
92723
92846
  * **Examples render in a frame**, so an example's styles and scripts do not
92724
92847
  * affect the page around the sandbox, and `position: fixed` stays inside the
92725
92848
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -92906,6 +93029,10 @@ export type CustomElementsSolidJs = {
92906
93029
  * - `js` sets a script that runs as a module after the markup.
92907
93030
  * - A module file name ending in `.js` or `.mjs`, such as `utils.js`, is a
92908
93031
  * module the other scripts import by its path, `./utils.js`.
93032
+ * - A module file name ending in `.ts`, `.tsx` or `.jsx`, such as `app.tsx`,
93033
+ * is one too, which the preview compiles to JavaScript first. The `js` pane
93034
+ * runs it with `import './app.tsx'`. A file that does not compile shows
93035
+ * why over the preview, as an error the example threw.
92909
93036
  * - `package.json` sets the npm packages the scripts import by name, from its
92910
93037
  * `dependencies`, which load from the preview's `cdn`.
92911
93038
  *
@@ -96152,7 +96279,7 @@ export type CustomElementsSolidJs = {
96152
96279
  *
96153
96280
  * The ribbon stops moving in these cases:
96154
96281
  * - `prefers-reduced-motion` is set. The element shows one still frame, and in
96155
- * `travel` still follows the scroll, without easing.
96282
+ * `travel` still follows the scroll.
96156
96283
  * - The element is off screen or in a background tab.
96157
96284
  *
96158
96285
  * It shows a gradient from the same tokens in these cases, and matches
@@ -96896,13 +97023,11 @@ export type CustomElementsSolidJs = {
96896
97023
  * **It is also the only track list a server can send.** The shim has no tree
96897
97024
  * to walk, so a render there knows of no columns and this attribute is the
96898
97025
  * whole answer: a table given one lays its grid out in the first paint, and a
96899
- * table sized only by its columns is one track wide until it upgrades.
97026
+ * table sized only by its columns takes, until it upgrades, a track for each
97027
+ * column at the width a column with no `width` takes (`helix.css`).
96900
97028
  *
96901
- * **Data Table has none of this, and should not.** Its columns are its schema
96902
- * rather than an option, so there is always a column to write a `width` on
96903
- * and a list here would be a second way to say what that says. This table's
96904
- * cells are markup, and a table written as rows of cells with no column
96905
- * declared in it has nowhere else to be sized from.
97029
+ * Data Table takes the same list, for the same reason: a data table that
97030
+ * serves its first page as rows is laid out by it before it upgrades.
96906
97031
  * - `default-expanded`/`defaultExpanded`: The keys of the rows whose rows are shown at the start, separated by
96907
97032
  * commas. Used until `expanded` is set.
96908
97033
  * - `default-selected`/`defaultSelected`: The keys selected at the start, separated by commas. Used until `selected`
@@ -98387,6 +98512,8 @@ export type CustomElementsSolidJs = {
98387
98512
  * number, and both are carried as one comma-separated value, which is what a
98388
98513
  * form submits. `TimePicker` carries the longer note on the interaction and
98389
98514
  * on why a wheel cannot do either.
98515
+ * - `now-label`/`nowLabel`: The words on the list's button that chooses the current time, drawn with
98516
+ * `show-now`.
98390
98517
  * - `placeholder`: Placeholder text shown before a time is entered.
98391
98518
  * - `range-length-message`/`rangeLengthMessage`: The message shown when a range holds more than two times.
98392
98519
  *
@@ -98404,6 +98531,9 @@ export type CustomElementsSolidJs = {
98404
98531
  * - `seconds`: Whether times carry their seconds: the value is `HH:mm:ss`, a typed time
98405
98532
  * may give them, the field writes them, and the list's `step` counts seconds.
98406
98533
  * See Time Picker's `seconds`.
98534
+ * - `show-now`/`showNow`: Draws a button under the times in the list that chooses the current time,
98535
+ * moved to the nearest time on offer. See Time Picker's `show-now`. Its words
98536
+ * are `now-label`.
98407
98537
  * - `step`: How far apart the offered times are, in minutes, or in seconds with
98408
98538
  * `seconds`.
98409
98539
  * - `time-style`/`timeStyle`: Whether the field shows the time in the local style or as the value
package/types/vue.d.ts CHANGED
@@ -4261,7 +4261,11 @@ whole of it, which Shiki writes, are taken off, so the lines sit level
4261
4261
  with the gutter's numbers and the block keeps one tab stop. The code stays
4262
4262
  in the slot, so the copy button copies it as written and a reader without
4263
4263
  the script still has it. Not called on a server, which has no code to
4264
- read, nor for a diff. */
4264
+ read, nor for a diff.
4265
+
4266
+ Absent, the block draws with the highlighter `registerHighlighter` gave
4267
+ every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
4268
+ registered one, and plain otherwise. */
4265
4269
  highlight?: (HelixCodeBlock["highlight"]) | undefined;
4266
4270
  };
4267
4271
 
@@ -5758,6 +5762,16 @@ and the grid becomes a tree grid.
5758
5762
  Reflected, because the styled tier indents a tree grid's row headers by
5759
5763
  it. No default, so a table that sets none writes nothing onto its host. */
5760
5764
  childField?: (HelixDataTable["childField"]) | undefined;
5765
+ /** The column tracks, as a grid track list such as `2fr 1fr max-content`,
5766
+ dealt out one track to a column in the order the columns are written. A
5767
+ column's own `width` wins in its place, and a column it does not reach
5768
+ takes the track a column with no `width` takes.
5769
+
5770
+ **The one track list a server can send.** A server rendering this element
5771
+ has no columns to read a `width` from, and neither has a stylesheet laying
5772
+ out the rows a page served before the table upgrades, so a table sized here
5773
+ lays those rows out at the widths it draws. */
5774
+ columns?: (HelixDataTable["columns"]) | undefined;
5761
5775
  /** The keys of the rows open at the start, separated by commas. Used until
5762
5776
  `expanded` is set. */
5763
5777
  "default-expanded"?: (HelixDataTable["defaultExpanded"]) | undefined;
@@ -12495,7 +12509,11 @@ Cleared as the menu closes and as a submenu opens or closes, so each page
12495
12509
  starts with every row showing. */
12496
12510
  filter?: (HelixMenu["filter"]) | undefined;
12497
12511
  /** Whether the menu shows a field above its rows that narrows them as the
12498
- reader types, with focus staying in the field. */
12512
+ reader types, with focus staying in the field, once
12513
+ `@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
12514
+ is imported. Without that import it does nothing, so a menu that never
12515
+ filters carries none of the filter's code, and a development build says
12516
+ which import is missing. */
12499
12517
  filterable?: (HelixMenu["filterable"]) | undefined;
12500
12518
  /** The filter field's name and placeholder. */
12501
12519
  "filter-label"?: (HelixMenu["filterLabel"]) | undefined;
@@ -17840,13 +17858,11 @@ and each column may say otherwise.
17840
17858
  **It is also the only track list a server can send.** The shim has no tree
17841
17859
  to walk, so a render there knows of no columns and this attribute is the
17842
17860
  whole answer: a table given one lays its grid out in the first paint, and a
17843
- table sized only by its columns is one track wide until it upgrades.
17861
+ table sized only by its columns takes, until it upgrades, a track for each
17862
+ column at the width a column with no `width` takes (`helix.css`).
17844
17863
 
17845
- **Data Table has none of this, and should not.** Its columns are its schema
17846
- rather than an option, so there is always a column to write a `width` on
17847
- and a list here would be a second way to say what that says. This table's
17848
- cells are markup, and a table written as rows of cells with no column
17849
- declared in it has nowhere else to be sized from. */
17864
+ Data Table takes the same list, for the same reason: a data table that
17865
+ serves its first page as rows is laid out by it before it upgrades. */
17850
17866
  columns?: (HelixTable["columns"]) | undefined;
17851
17867
  /** The keys of the rows whose rows are shown at the start, separated by
17852
17868
  commas. Used until `expanded` is set. */
@@ -19001,6 +19017,12 @@ number, and both are carried as one comma-separated value, which is what a
19001
19017
  form submits. `TimePicker` carries the longer note on the interaction and
19002
19018
  on why a wheel cannot do either. */
19003
19019
  mode?: (HelixTimeInput["mode"]) | undefined;
19020
+ /** The words on the list's button that chooses the current time, drawn with
19021
+ `show-now`. */
19022
+ "now-label"?: (HelixTimeInput["nowLabel"]) | undefined;
19023
+ /** The words on the list's button that chooses the current time, drawn with
19024
+ `show-now`. */
19025
+ nowLabel?: (HelixTimeInput["nowLabel"]) | undefined;
19004
19026
  /** Placeholder text shown before a time is entered. */
19005
19027
  placeholder?: (HelixTimeInput["placeholder"]) | undefined;
19006
19028
  /** The message shown when a range holds more than two times.
@@ -19041,6 +19063,14 @@ removes rather than as "Remove" said once per time. */
19041
19063
  may give them, the field writes them, and the list's `step` counts seconds.
19042
19064
  See Time Picker's `seconds`. */
19043
19065
  seconds?: (HelixTimeInput["seconds"]) | undefined;
19066
+ /** Draws a button under the times in the list that chooses the current time,
19067
+ moved to the nearest time on offer. See Time Picker's `show-now`. Its words
19068
+ are `now-label`. */
19069
+ "show-now"?: (HelixTimeInput["showNow"]) | undefined;
19070
+ /** Draws a button under the times in the list that chooses the current time,
19071
+ moved to the nearest time on offer. See Time Picker's `show-now`. Its words
19072
+ are `now-label`. */
19073
+ showNow?: (HelixTimeInput["showNow"]) | undefined;
19044
19074
  /** How far apart the offered times are, in minutes, or in seconds with
19045
19075
  `seconds`. */
19046
19076
  step?: (HelixTimeInput["step"]) | undefined;
@@ -24433,7 +24463,7 @@ export interface WcToolkitVueGlobalComponents {
24433
24463
  HelixCopyButtonVueProps,
24434
24464
  HelixCopyButtonVueEvents
24435
24465
  >;
24436
- /** Rows have hairline rules between them and no fill, and the headings are set apart by weight and color. Helix shows depth with a single border and no elevation, and a header band would be elevation. The grid scrolls in its own box, and the toolbar and footer sit outside it, so the search field stays in place when the columns scroll sideways. 'windowed' draws only the rows in view, for a result too long to lay out at once, and the headings stay in place while the rows scroll. It works with or without 'paginated' and with either 'mode', so a page or a chunk from a server can be windowed. **Write the first page as rows, so the served HTML carries the values.** Write it under the columns as 'helix-table-row' and 'helix-table-cell' elements. '@fusion.dev/helix-styles/helix.css' lays them out as the table draws them before it upgrades, and the table shows them until 'rows' holds a row. */
24466
+ /** Rows have hairline rules between them and no fill, and the headings are set apart by weight and color. Helix shows depth with a single border and no elevation, and a header band would be elevation. The grid scrolls in its own box, and the toolbar and footer sit outside it, so the search field stays in place when the columns scroll sideways. 'windowed' draws only the rows in view, for a result too long to lay out at once, and the headings stay in place while the rows scroll. It works with or without 'paginated' and with either 'mode', so a page or a chunk from a server can be windowed. **Write the first page as rows, so the served HTML carries the values.** Write it under the columns as 'helix-table-row' and 'helix-table-cell' elements. '@fusion.dev/helix-styles/helix.css' lays them out as the table draws them before it upgrades, and the table shows them until 'rows' holds a row. It holds the checkbox column and the pagination's row from the first paint, and takes the widths from 'columns', so nothing moves when the table upgrades or draws its own rows. */
24437
24467
  "helix-data-table": DefineCustomElement<
24438
24468
  HelixDataTable,
24439
24469
  HelixDataTableVueProps,
@@ -24877,13 +24907,13 @@ export interface WcToolkitVueGlobalComponents {
24877
24907
  HelixRatingVueProps,
24878
24908
  HelixRatingVueEvents
24879
24909
  >;
24880
- /** A sandboxed '<iframe>' that loads 'src', a document you provide. That document imports what the examples need, listens for a render message, and writes the markup into itself. **Without 'src', the frame loads a built-in document**, so a sandbox renders with nothing to host. It runs HTML, CSS, and scripts, and reports the console, uncaught errors, its height, and presses as a frame on 'servePreview' does. It defines no element, so an example that uses Helix components needs a 'src' that imports them. **'imports' lets an example import packages by name** in the built-in document, as an import map: each name maps to the address of an ES module, such as '{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}', and 'import confetti from 'canvas-confetti'' in the 'js' pane then loads it. A CDN that serves npm packages as modules, such as esm.sh or jsDelivr's '+esm', gives every package an address. A new map loads the document again, since a browser reads one only as a document starts. A 'src' document declares its own. **'dependencies' names packages by version instead**, as a 'package.json' does: '{"canvas-confetti": "^1.9"}' loads 'canvas-confetti' and the paths under it from 'cdn', 'https://esm.sh/' by default, at the version or range given. An address in 'imports' wins over a package of the same name. **'modules' holds files the example imports by a relative path**: each path, such as 'utils.js', to its source, and 'import { add } from './utils.js'' in the 'js' pane or in another module loads it. A sandbox writes each pane named for a module file here. **Examples render in a frame**, so an example's styles and scripts do not affect the page around the sandbox, and 'position: fixed' stays inside the pane. The frame starts empty, with its own stylesheets and its own custom element registry, so 'src' must load the styles and components the examples use. **The source is untrusted, and the frame keeps it isolated.** The frame uses 'sandbox="allow-scripts"' and never 'allow-same-origin'. Together, the two let a document on the same origin remove its own sandbox, which is the same as having none. **A preview says where it is.** It is ':state(loading)' from the moment it has a 'src' until that document can take the example, and again through 'reload()'. It is ':state(failed)' once the example throws an error it does not catch, until the next source is sent, which a frame on 'servePreview' reports. A page draws its own spinner or message from either, such as a sibling shown by 'helix-sandbox-preview:state(failed) + .message'. **A failed preview shows the error over the example**, in the 'error' part, until the next source is sent. The terminal says it too, so the part is not announced, and it is the frame's description while it shows, so a screen reader reads it with the frame. Hide it with '::part(error) { display: none }' where the page draws its own. **'controls' draws two buttons in the preview's corner**: one reloads the frame's document, as 'reload()' does, and one opens the example in a new tab, as 'open()' does. The tab runs it in a frame sandboxed as this one is. */
24910
+ /** A sandboxed '<iframe>' that loads 'src', a document you provide. That document imports what the examples need, listens for a render message, and writes the markup into itself. **Without 'src', the frame loads a built-in document**, so a sandbox renders with nothing to host. It runs HTML, CSS, and scripts, and reports the console, uncaught errors, its height, and presses as a frame on 'servePreview' does. It defines no element, so an example that uses Helix components needs a 'src' that imports them. **'imports' lets an example import packages by name** in the built-in document, as an import map: each name maps to the address of an ES module, such as '{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}', and 'import confetti from 'canvas-confetti'' in the 'js' pane then loads it. A CDN that serves npm packages as modules, such as esm.sh or jsDelivr's '+esm', gives every package an address. A new map loads the document again, since a browser reads one only as a document starts. A 'src' document declares its own. **'dependencies' names packages by version instead**, as a 'package.json' does: '{"canvas-confetti": "^1.9"}' loads 'canvas-confetti' and the paths under it from 'cdn', 'https://esm.sh/' by default, at the version or range given. An address in 'imports' wins over a package of the same name. **'modules' holds files the example imports by a relative path**: each path, such as 'utils.js', to its source, and 'import { add } from './utils.js'' in the 'js' pane or in another module loads it. A sandbox writes each pane named for a module file here. **A module in TypeScript or JSX runs too**: a path ending in '.ts', '.tsx' or '.jsx' is compiled to JavaScript first, and imported by its path or by its path without the extension. The compiler, Sucrase, loads from 'cdn' the first time a module needs it, so the package carries none and a preview with no such module loads none. JSX compiles to the automatic runtime, 'react/jsx-runtime', from 'dependencies', or to the one a '@jsxImportSource' comment names. What fails to compile shows in the 'error' part as an error the example threw, when the example imports it. **Examples render in a frame**, so an example's styles and scripts do not affect the page around the sandbox, and 'position: fixed' stays inside the pane. The frame starts empty, with its own stylesheets and its own custom element registry, so 'src' must load the styles and components the examples use. **The source is untrusted, and the frame keeps it isolated.** The frame uses 'sandbox="allow-scripts"' and never 'allow-same-origin'. Together, the two let a document on the same origin remove its own sandbox, which is the same as having none. **A preview says where it is.** It is ':state(loading)' from the moment it has a 'src' until that document can take the example, and again through 'reload()'. It is ':state(failed)' once the example throws an error it does not catch, until the next source is sent, which a frame on 'servePreview' reports. A page draws its own spinner or message from either, such as a sibling shown by 'helix-sandbox-preview:state(failed) + .message'. **A failed preview shows the error over the example**, in the 'error' part, until the next source is sent. The terminal says it too, so the part is not announced, and it is the frame's description while it shows, so a screen reader reads it with the frame. Hide it with '::part(error) { display: none }' where the page draws its own. **'controls' draws two buttons in the preview's corner**: one reloads the frame's document, as 'reload()' does, and one opens the example in a new tab, as 'open()' does. The tab runs it in a frame sandboxed as this one is. */
24881
24911
  "helix-sandbox-preview": DefineCustomElement<
24882
24912
  HelixSandboxPreview,
24883
24913
  HelixSandboxPreviewVueProps,
24884
24914
  HelixSandboxPreviewVueEvents
24885
24915
  >;
24886
- /** A source pane dispatches 'helix-before-edit', which bubbles, and the sandbox passes the value to the preview slotted into it. The source pane and the preview do not reference each other, so you can replace either one or use it alone. The preview runs an edit once typing has rested for 'preview-delay', 300 milliseconds by default, so a word typed reloads it once. A pane's text when the sandbox starts reaches it at once. The event carries the pane's 'name', so one sandbox can hold several panes. The names the sandbox writes into its previews: - 'html' sets the preview's markup. - 'css' sets its stylesheet. - 'js' sets a script that runs as a module after the markup. - A module file name ending in '.js' or '.mjs', such as 'utils.js', is a module the other scripts import by its path, './utils.js'. - 'package.json' sets the npm packages the scripts import by name, from its 'dependencies', which load from the preview's 'cdn'. The sandbox ignores a pane with any other name, so that pane can show content without changing the preview. **The sandbox is ':state(modified)' while a source pane holds an edit**, and that pane's file tab is also 'file-modified' and described as modified to a screen reader. 'reset()' puts every pane back to the source it was given. **The dividers are two nested 'helix-splitter' elements**, which handle the pointer, the keyboard, and the corner. The inner splitter holds the panes and the outer one holds the panel, so the panel spans the full width. **Several source panes are files**, one shown at a time under a row of tabs, each named by the pane's 'label' or, without one, its 'name'. 'file' holds the 'name' of the pane shown. The tabs are a tab list: the arrow keys move between them and show each pane, and 'Home' and 'End' go to the first and the last. Choosing one sends 'helix-before-change' with the pane's 'name', which you can cancel, and 'change' once 'file' holds it. The panes not shown carry 'hidden'. One pane draws no tabs. **Any editor can be the source pane**: an element in the 'source' slot with a 'name' that dispatches 'helix-before-edit' with its text, which bubbles. A wrapper around CodeMirror or Monaco sends one on each change and is a pane like 'helix-sandbox-source', and the sandbox reads its 'value' to seed the preview. Dispatch 'helix-caret' from it too for the status bar's position. Sandbox is styled only and has behavior, as 'Aura' is. Its behavior is the hand-off from a source pane to a preview frame, which works with any pane that sends 'helix-before-edit', and what it draws is the layout around them: dividers, file tabs, and a panel. A page that wants another look slots its own panes and keeps the hand-off, so there is nothing for a headless version to hold. A development build warns about a source pane with no 'label' and no 'name', whose file tab would have no words. On a focused divider, the arrow keys move it, and 'Home' and 'End' move it to its ends. 'Enter' on the panes divider shuts the lead pane, and pressed again it opens the pane where it was. 'Enter' on the panel divider shuts the panel to 'panel-collapsed-size', and pressed again it opens the panel to its last height. */
24916
+ /** A source pane dispatches 'helix-before-edit', which bubbles, and the sandbox passes the value to the preview slotted into it. The source pane and the preview do not reference each other, so you can replace either one or use it alone. The preview runs an edit once typing has rested for 'preview-delay', 300 milliseconds by default, so a word typed reloads it once. A pane's text when the sandbox starts reaches it at once. The event carries the pane's 'name', so one sandbox can hold several panes. The names the sandbox writes into its previews: - 'html' sets the preview's markup. - 'css' sets its stylesheet. - 'js' sets a script that runs as a module after the markup. - A module file name ending in '.js' or '.mjs', such as 'utils.js', is a module the other scripts import by its path, './utils.js'. - A module file name ending in '.ts', '.tsx' or '.jsx', such as 'app.tsx', is one too, which the preview compiles to JavaScript first. The 'js' pane runs it with 'import './app.tsx''. A file that does not compile shows why over the preview, as an error the example threw. - 'package.json' sets the npm packages the scripts import by name, from its 'dependencies', which load from the preview's 'cdn'. The sandbox ignores a pane with any other name, so that pane can show content without changing the preview. **The sandbox is ':state(modified)' while a source pane holds an edit**, and that pane's file tab is also 'file-modified' and described as modified to a screen reader. 'reset()' puts every pane back to the source it was given. **The dividers are two nested 'helix-splitter' elements**, which handle the pointer, the keyboard, and the corner. The inner splitter holds the panes and the outer one holds the panel, so the panel spans the full width. **Several source panes are files**, one shown at a time under a row of tabs, each named by the pane's 'label' or, without one, its 'name'. 'file' holds the 'name' of the pane shown. The tabs are a tab list: the arrow keys move between them and show each pane, and 'Home' and 'End' go to the first and the last. Choosing one sends 'helix-before-change' with the pane's 'name', which you can cancel, and 'change' once 'file' holds it. The panes not shown carry 'hidden'. One pane draws no tabs. **Any editor can be the source pane**: an element in the 'source' slot with a 'name' that dispatches 'helix-before-edit' with its text, which bubbles. A wrapper around CodeMirror or Monaco sends one on each change and is a pane like 'helix-sandbox-source', and the sandbox reads its 'value' to seed the preview. Dispatch 'helix-caret' from it too for the status bar's position. Sandbox is styled only and has behavior, as 'Aura' is. Its behavior is the hand-off from a source pane to a preview frame, which works with any pane that sends 'helix-before-edit', and what it draws is the layout around them: dividers, file tabs, and a panel. A page that wants another look slots its own panes and keeps the hand-off, so there is nothing for a headless version to hold. A development build warns about a source pane with no 'label' and no 'name', whose file tab would have no words. On a focused divider, the arrow keys move it, and 'Home' and 'End' move it to its ends. 'Enter' on the panes divider shuts the lead pane, and pressed again it opens the pane where it was. 'Enter' on the panel divider shuts the panel to 'panel-collapsed-size', and pressed again it opens the panel to its last height. */
24887
24917
  "helix-sandbox": DefineCustomElement<
24888
24918
  HelixSandbox,
24889
24919
  HelixSandboxVueProps,
@@ -25003,7 +25033,7 @@ export interface WcToolkitVueGlobalComponents {
25003
25033
  HelixStepVueProps,
25004
25034
  HelixStepVueEvents
25005
25035
  >;
25006
- /** Hundreds of thin strands are drawn as one ribbon, and the light they add together is bloomed, so where they converge the ribbon burns hot. The ribbon moves on its own all the time: it sways and breathes, its strands wave and roll over one another, and light runs along them. Its palette comes from the tokens. The strands are '--helix-color-primary', a few are '--helix-color-accent' for depth, and the page they light is '--helix-color-background'. On a light page the light becomes ink, because light added to near-white cannot be seen. **Four forms, set with 'variant'.** 'bend' turns bright strands through one tight point, with its arms opening to the right. 'ribbon', the default, is a broad, soft ribbon in long curves. 'sweep' enters at a top corner, the one 'at' is nearer, and crosses in one diagonal to the far side. 'waves' is sharp strands crossing the full width. **Quiet behind words.** 'quiet' names elements, such as a hero's words, that the light dims behind to a faint glow, so a bright ribbon can cross the page under them and they stay crisp. **In its own box, by default.** The element fills the box it is given, the way an image does, and 'at' places the bend's apex or the ribbon's axis across it. Content placed inside sits over the ribbon, in the 'content' part. **Down the whole page, with 'travel'.** The element fixes itself behind the page, on '--helix-layer-beneath', and lays one ribbon from the top of the page to the bottom, so scrolling travels along it. Put 'helix-strands-stop' elements inside to pin a form to a section: each names an element with 'for' and says which form the ribbon takes there. Between stops the ribbon fills the gap in its own 'variant', and between two waves less than a screen and a half apart it turns off screen so each wave reads alone. Set 'z-index' on the element to move it. The ribbon stops moving in these cases: - 'prefers-reduced-motion' is set. The element shows one still frame, and in 'travel' still follows the scroll, without easing. - The element is off screen or in a background tab. It shows a gradient from the same tokens in these cases, and matches ':state(fallback)' and sends 'helix-strands-fallback' with the reason: - The renderer draws on the CPU, such as a headless browser or a machine with no usable GPU. - There is no WebGL, or the browser took the drawing context back. Strands is styled only and has behavior, as 'Aura' does: its behavior is drawing to a canvas, so there is no structure for a headless version to hold. */
25036
+ /** Hundreds of thin strands are drawn as one ribbon, and the light they add together is bloomed, so where they converge the ribbon burns hot. The ribbon moves on its own all the time: it sways and breathes, its strands wave and roll over one another, and light runs along them. Its palette comes from the tokens. The strands are '--helix-color-primary', a few are '--helix-color-accent' for depth, and the page they light is '--helix-color-background'. On a light page the light becomes ink, because light added to near-white cannot be seen. **Four forms, set with 'variant'.** 'bend' turns bright strands through one tight point, with its arms opening to the right. 'ribbon', the default, is a broad, soft ribbon in long curves. 'sweep' enters at a top corner, the one 'at' is nearer, and crosses in one diagonal to the far side. 'waves' is sharp strands crossing the full width. **Quiet behind words.** 'quiet' names elements, such as a hero's words, that the light dims behind to a faint glow, so a bright ribbon can cross the page under them and they stay crisp. **In its own box, by default.** The element fills the box it is given, the way an image does, and 'at' places the bend's apex or the ribbon's axis across it. Content placed inside sits over the ribbon, in the 'content' part. **Down the whole page, with 'travel'.** The element fixes itself behind the page, on '--helix-layer-beneath', and lays one ribbon from the top of the page to the bottom, so scrolling travels along it. Put 'helix-strands-stop' elements inside to pin a form to a section: each names an element with 'for' and says which form the ribbon takes there. Between stops the ribbon fills the gap in its own 'variant', and between two waves less than a screen and a half apart it turns off screen so each wave reads alone. Set 'z-index' on the element to move it. The ribbon stops moving in these cases: - 'prefers-reduced-motion' is set. The element shows one still frame, and in 'travel' still follows the scroll. - The element is off screen or in a background tab. It shows a gradient from the same tokens in these cases, and matches ':state(fallback)' and sends 'helix-strands-fallback' with the reason: - The renderer draws on the CPU, such as a headless browser or a machine with no usable GPU. - There is no WebGL, or the browser took the drawing context back. Strands is styled only and has behavior, as 'Aura' does: its behavior is drawing to a canvas, so there is no structure for a headless version to hold. */
25007
25037
  "helix-strands": DefineCustomElement<
25008
25038
  HelixStrands,
25009
25039
  HelixStrandsVueProps,
package/types/words.d.ts CHANGED
@@ -502,6 +502,13 @@ declare module '@fusion.dev/helix-core' {
502
502
  * English: `Notes`
503
503
  */
504
504
  notesLabel: Message
505
+ /**
506
+ * The words on the list's button that chooses the current time, drawn with
507
+ * `show-now`.
508
+ *
509
+ * English: `Now`
510
+ */
511
+ nowLabel: Message
505
512
  /**
506
513
  * The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
507
514
  * `busiest-label` and `total-label`, `{busiest}` the busiest reading's name