@fusion.dev/helix-headless 0.46.1 → 0.47.1

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
@@ -1839,6 +1839,27 @@ clamps to the last *slide*, so three of the six indicators point at an
1839
1839
  offset the track has already reached: pressing next walks the dots to the
1840
1840
  end while the slides stop moving a third of the way through.
1841
1841
 
1842
+ **The number is published to the styles rather than enumerated by them**,
1843
+ as `--carousel-per-view` on the track, which is what keeps a width and a
1844
+ count from disagreeing. A sheet can only name a value it wrote a rule for,
1845
+ so the styled tier enumerated `per-view="2"` through `5` and called five a
1846
+ judgment; above it the pane fell back to one across while this file went on
1847
+ counting positions. Measured in Chromium over eight slides, six across gave
1848
+ three dots, a pane taking the whole track and five slides reachable only by
1849
+ dragging. Written from here there is no ceiling to exceed, and a consumer's
1850
+ own sheet reads the same declaration the styled one does. `runEnd` publishes
1851
+ its correction the same way and for the same reason.
1852
+
1853
+ **On the track and not on the host.** A custom property on the host is a
1854
+ reflected attribute by another name: it would arrive on upgrade, and a
1855
+ consumer's server markup never had it. Inside the component's own shadow
1856
+ root it serializes with the rest of the template on the server, and the
1857
+ track's own declaration beats anything a consumer inherits in, so the
1858
+ attribute is the one answer to how wide a pane is.
1859
+
1860
+ A value the track cannot honor is taken to the nearest one it can, by
1861
+ `across`, and both tiers read that rather than this.
1862
+
1842
1863
  No default, because it reflects. A reflected property with a value writes
1843
1864
  its attribute on upgrade, and the host then carries something a consumer's
1844
1865
  server markup never had, which React reports as a mismatch. The one-across
@@ -1855,6 +1876,27 @@ clamps to the last *slide*, so three of the six indicators point at an
1855
1876
  offset the track has already reached: pressing next walks the dots to the
1856
1877
  end while the slides stop moving a third of the way through.
1857
1878
 
1879
+ **The number is published to the styles rather than enumerated by them**,
1880
+ as `--carousel-per-view` on the track, which is what keeps a width and a
1881
+ count from disagreeing. A sheet can only name a value it wrote a rule for,
1882
+ so the styled tier enumerated `per-view="2"` through `5` and called five a
1883
+ judgment; above it the pane fell back to one across while this file went on
1884
+ counting positions. Measured in Chromium over eight slides, six across gave
1885
+ three dots, a pane taking the whole track and five slides reachable only by
1886
+ dragging. Written from here there is no ceiling to exceed, and a consumer's
1887
+ own sheet reads the same declaration the styled one does. `runEnd` publishes
1888
+ its correction the same way and for the same reason.
1889
+
1890
+ **On the track and not on the host.** A custom property on the host is a
1891
+ reflected attribute by another name: it would arrive on upgrade, and a
1892
+ consumer's server markup never had it. Inside the component's own shadow
1893
+ root it serializes with the rest of the template on the server, and the
1894
+ track's own declaration beats anything a consumer inherits in, so the
1895
+ attribute is the one answer to how wide a pane is.
1896
+
1897
+ A value the track cannot honor is taken to the nearest one it can, by
1898
+ `across`, and both tiers read that rather than this.
1899
+
1858
1900
  No default, because it reflects. A reflected property with a value writes
1859
1901
  its attribute on upgrade, and the host then carries something a consumer's
1860
1902
  server markup never had, which React reports as a mismatch. The one-across
@@ -1940,6 +1982,27 @@ clamps to the last *slide*, so three of the six indicators point at an
1940
1982
  offset the track has already reached: pressing next walks the dots to the
1941
1983
  end while the slides stop moving a third of the way through.
1942
1984
 
1985
+ **The number is published to the styles rather than enumerated by them**,
1986
+ as `--carousel-per-view` on the track, which is what keeps a width and a
1987
+ count from disagreeing. A sheet can only name a value it wrote a rule for,
1988
+ so the styled tier enumerated `per-view="2"` through `5` and called five a
1989
+ judgment; above it the pane fell back to one across while this file went on
1990
+ counting positions. Measured in Chromium over eight slides, six across gave
1991
+ three dots, a pane taking the whole track and five slides reachable only by
1992
+ dragging. Written from here there is no ceiling to exceed, and a consumer's
1993
+ own sheet reads the same declaration the styled one does. `runEnd` publishes
1994
+ its correction the same way and for the same reason.
1995
+
1996
+ **On the track and not on the host.** A custom property on the host is a
1997
+ reflected attribute by another name: it would arrive on upgrade, and a
1998
+ consumer's server markup never had it. Inside the component's own shadow
1999
+ root it serializes with the rest of the template on the server, and the
2000
+ track's own declaration beats anything a consumer inherits in, so the
2001
+ attribute is the one answer to how wide a pane is.
2002
+
2003
+ A value the track cannot honor is taken to the nearest one it can, by
2004
+ `across`, and both tiers read that rather than this.
2005
+
1943
2006
  No default, because it reflects. A reflected property with a value writes
1944
2007
  its attribute on upgrade, and the host then carries something a consumer's
1945
2008
  server markup never had, which React reports as a mismatch. The one-across
@@ -1956,6 +2019,27 @@ clamps to the last *slide*, so three of the six indicators point at an
1956
2019
  offset the track has already reached: pressing next walks the dots to the
1957
2020
  end while the slides stop moving a third of the way through.
1958
2021
 
2022
+ **The number is published to the styles rather than enumerated by them**,
2023
+ as `--carousel-per-view` on the track, which is what keeps a width and a
2024
+ count from disagreeing. A sheet can only name a value it wrote a rule for,
2025
+ so the styled tier enumerated `per-view="2"` through `5` and called five a
2026
+ judgment; above it the pane fell back to one across while this file went on
2027
+ counting positions. Measured in Chromium over eight slides, six across gave
2028
+ three dots, a pane taking the whole track and five slides reachable only by
2029
+ dragging. Written from here there is no ceiling to exceed, and a consumer's
2030
+ own sheet reads the same declaration the styled one does. `runEnd` publishes
2031
+ its correction the same way and for the same reason.
2032
+
2033
+ **On the track and not on the host.** A custom property on the host is a
2034
+ reflected attribute by another name: it would arrive on upgrade, and a
2035
+ consumer's server markup never had it. Inside the component's own shadow
2036
+ root it serializes with the rest of the template on the server, and the
2037
+ track's own declaration beats anything a consumer inherits in, so the
2038
+ attribute is the one answer to how wide a pane is.
2039
+
2040
+ A value the track cannot honor is taken to the nearest one it can, by
2041
+ `across`, and both tiers read that rather than this.
2042
+
1959
2043
  No default, because it reflects. A reflected property with a value writes
1960
2044
  its attribute on upgrade, and the host then carries something a consumer's
1961
2045
  server markup never had, which React reports as a mismatch. The one-across
@@ -13809,7 +13893,20 @@ on the column it sizes, which is the more particular statement, and it is
13809
13893
  where a resize lands: a reader dragging a column's edge writes `width`, so
13810
13894
  were this list to win, the drag would move the separator and leave the
13811
13895
  track where the list put it. This is the table's default for its columns,
13812
- and each column may say otherwise. */
13896
+ and each column may say otherwise.
13897
+
13898
+ **It is also the only track list a server can send.** The shim has no tree
13899
+ to walk, so a render there knows of no columns and this attribute is the
13900
+ whole answer: a table given one lays its grid out in the first paint, and a
13901
+ table sized only by its columns is one track wide until it upgrades.
13902
+
13903
+ **`helix-data-table` has none of this, and should not.** Its columns are
13904
+ its schema rather than an option, so there is always a column to write a
13905
+ `width` on and a list here would be a second way to say what that says.
13906
+ This table's cells are markup, and a table written as rows of cells with no
13907
+ `helix-table-column` in it has nowhere else to be sized from. Both families
13908
+ take the same CSS hook, `--table-columns` and `--data-table-columns`, which
13909
+ wins over whichever list the element worked out. */
13813
13910
  columns?: (HelixHeadlessTable["columns"]) | undefined;
13814
13911
  /** Accessible name for the table. */
13815
13912
  label?: (HelixHeadlessTable["label"]) | undefined;
@@ -13847,7 +13944,20 @@ on the column it sizes, which is the more particular statement, and it is
13847
13944
  where a resize lands: a reader dragging a column's edge writes `width`, so
13848
13945
  were this list to win, the drag would move the separator and leave the
13849
13946
  track where the list put it. This is the table's default for its columns,
13850
- and each column may say otherwise. */
13947
+ and each column may say otherwise.
13948
+
13949
+ **It is also the only track list a server can send.** The shim has no tree
13950
+ to walk, so a render there knows of no columns and this attribute is the
13951
+ whole answer: a table given one lays its grid out in the first paint, and a
13952
+ table sized only by its columns is one track wide until it upgrades.
13953
+
13954
+ **`helix-data-table` has none of this, and should not.** Its columns are
13955
+ its schema rather than an option, so there is always a column to write a
13956
+ `width` on and a list here would be a second way to say what that says.
13957
+ This table's cells are markup, and a table written as rows of cells with no
13958
+ `helix-table-column` in it has nowhere else to be sized from. Both families
13959
+ take the same CSS hook, `--table-columns` and `--data-table-columns`, which
13960
+ wins over whichever list the element worked out. */
13851
13961
  "prop:columns"?: (HelixHeadlessTable["columns"]) | undefined;
13852
13962
  /** Accessible name for the table. */
13853
13963
  "prop:label"?: (HelixHeadlessTable["label"]) | undefined;
@@ -16189,13 +16299,6 @@ Unset by default, and unreflected: a tree of choosable nodes is not a tree
16189
16299
  of links, and an empty `href` written onto every row would be a link to the
16190
16300
  current page on every item a consumer never asked to be one. */
16191
16301
  href?: (HelixHeadlessTreeItem["href"]) | undefined;
16192
- /** Depth from the root, set by the tree so indentation needs no CSS nesting.
16193
-
16194
- Not reflected. The tree assigns this after it upgrades, so an attribute
16195
- here would be a change to markup the consumer rendered and hydration would
16196
- report it. The indent it drives is written onto the row instead, inside the
16197
- shadow root, which is not part of the tree React hydrates. */
16198
- level?: (HelixHeadlessTreeItem["level"]) | undefined;
16199
16302
  /** What the link declares about where it goes.
16200
16303
 
16201
16304
  Set by the consumer rather than derived from `target`: `noreferrer` is a
@@ -16205,7 +16308,7 @@ this library supports implies it for `target="_blank"` already. */
16205
16308
  rel?: (HelixHeadlessTreeItem["rel"]) | undefined;
16206
16309
  /** Whether this item is the current one.
16207
16310
 
16208
- Not reflected, for the reason `level` below gives in full: the tree assigns
16311
+ Not reflected, for the reason `level` above gives in full: the tree assigns
16209
16312
  this after it upgrades, so the attribute would be a change to markup the
16210
16313
  consumer rendered and hydration would report it. Mirroring to
16211
16314
  `data-selected` on the host instead is the same fault under another name.
@@ -16234,6 +16337,24 @@ the resolved state for stylesheets, which is what the mirror is for. */
16234
16337
  "default-open"?: (HelixHeadlessTreeItem["defaultOpen"]) | undefined;
16235
16338
  /** Initial open state for uncontrolled use, where nothing declared one. */
16236
16339
  defaultOpen?: (HelixHeadlessTreeItem["defaultOpen"]) | undefined;
16340
+ /** Depth from the root, counted by the tree so indentation needs no CSS nesting.
16341
+
16342
+ **Read rather than written, and no attribute at all.** The tree counts the
16343
+ items a row sits inside and assigns this on every sync, so a value declared
16344
+ here is overwritten before the first paint: measured at `level="2"` on three
16345
+ rows of a flat list, all three back to 1 with `--tree-level: 1` on every
16346
+ row. It carried an attribute and a shipped example setting it for as long as
16347
+ both existed, which is a depth a consumer could state and nothing would
16348
+ honor. Depth in this tree is where a row is, not what it claims: a branch's
16349
+ children go in its `children` slot, and that nesting is also what decides
16350
+ which rows a shut branch hides and which row the outward arrow moves to.
16351
+
16352
+ Not reflected either. The tree assigns this after it upgrades, so an
16353
+ attribute here would be a change to markup the consumer rendered and
16354
+ hydration would report it. The indent it drives is written onto the row
16355
+ instead, inside the shadow root, which is not part of the tree React
16356
+ hydrates. */
16357
+ level?: (HelixHeadlessTreeItem["level"]) | undefined;
16237
16358
  /** Whether this item holds the tree's single tab stop. */
16238
16359
  focusable?: (HelixHeadlessTreeItem["focusable"]) | undefined;
16239
16360
 
@@ -16258,13 +16379,6 @@ Unset by default, and unreflected: a tree of choosable nodes is not a tree
16258
16379
  of links, and an empty `href` written onto every row would be a link to the
16259
16380
  current page on every item a consumer never asked to be one. */
16260
16381
  "prop:href"?: (HelixHeadlessTreeItem["href"]) | undefined;
16261
- /** Depth from the root, set by the tree so indentation needs no CSS nesting.
16262
-
16263
- Not reflected. The tree assigns this after it upgrades, so an attribute
16264
- here would be a change to markup the consumer rendered and hydration would
16265
- report it. The indent it drives is written onto the row instead, inside the
16266
- shadow root, which is not part of the tree React hydrates. */
16267
- "prop:level"?: (HelixHeadlessTreeItem["level"]) | undefined;
16268
16382
  /** What the link declares about where it goes.
16269
16383
 
16270
16384
  Set by the consumer rather than derived from `target`: `noreferrer` is a
@@ -16274,7 +16388,7 @@ this library supports implies it for `target="_blank"` already. */
16274
16388
  "prop:rel"?: (HelixHeadlessTreeItem["rel"]) | undefined;
16275
16389
  /** Whether this item is the current one.
16276
16390
 
16277
- Not reflected, for the reason `level` below gives in full: the tree assigns
16391
+ Not reflected, for the reason `level` above gives in full: the tree assigns
16278
16392
  this after it upgrades, so the attribute would be a change to markup the
16279
16393
  consumer rendered and hydration would report it. Mirroring to
16280
16394
  `data-selected` on the host instead is the same fault under another name.
@@ -16303,6 +16417,24 @@ the resolved state for stylesheets, which is what the mirror is for. */
16303
16417
  "bool:default-open"?: (HelixHeadlessTreeItem["defaultOpen"]) | undefined;
16304
16418
  /** Initial open state for uncontrolled use, where nothing declared one. */
16305
16419
  "prop:defaultOpen"?: (HelixHeadlessTreeItem["defaultOpen"]) | undefined;
16420
+ /** Depth from the root, counted by the tree so indentation needs no CSS nesting.
16421
+
16422
+ **Read rather than written, and no attribute at all.** The tree counts the
16423
+ items a row sits inside and assigns this on every sync, so a value declared
16424
+ here is overwritten before the first paint: measured at `level="2"` on three
16425
+ rows of a flat list, all three back to 1 with `--tree-level: 1` on every
16426
+ row. It carried an attribute and a shipped example setting it for as long as
16427
+ both existed, which is a depth a consumer could state and nothing would
16428
+ honor. Depth in this tree is where a row is, not what it claims: a branch's
16429
+ children go in its `children` slot, and that nesting is also what decides
16430
+ which rows a shut branch hides and which row the outward arrow moves to.
16431
+
16432
+ Not reflected either. The tree assigns this after it upgrades, so an
16433
+ attribute here would be a change to markup the consumer rendered and
16434
+ hydration would report it. The indent it drives is written onto the row
16435
+ instead, inside the shadow root, which is not part of the tree React
16436
+ hydrates. */
16437
+ "prop:level"?: (HelixHeadlessTreeItem["level"]) | undefined;
16306
16438
  /** Whether this item holds the tree's single tab stop. */
16307
16439
  "prop:focusable"?: (HelixHeadlessTreeItem["focusable"]) | undefined;
16308
16440
  /** Fired before a branch closes, and cancelable. */
@@ -19148,6 +19280,27 @@ export type CustomElements = {
19148
19280
  * offset the track has already reached: pressing next walks the dots to the
19149
19281
  * end while the slides stop moving a third of the way through.
19150
19282
  *
19283
+ * **The number is published to the styles rather than enumerated by them**,
19284
+ * as `--carousel-per-view` on the track, which is what keeps a width and a
19285
+ * count from disagreeing. A sheet can only name a value it wrote a rule for,
19286
+ * so the styled tier enumerated `per-view="2"` through `5` and called five a
19287
+ * judgment; above it the pane fell back to one across while this file went on
19288
+ * counting positions. Measured in Chromium over eight slides, six across gave
19289
+ * three dots, a pane taking the whole track and five slides reachable only by
19290
+ * dragging. Written from here there is no ceiling to exceed, and a consumer's
19291
+ * own sheet reads the same declaration the styled one does. `runEnd` publishes
19292
+ * its correction the same way and for the same reason.
19293
+ *
19294
+ * **On the track and not on the host.** A custom property on the host is a
19295
+ * reflected attribute by another name: it would arrive on upgrade, and a
19296
+ * consumer's server markup never had it. Inside the component's own shadow
19297
+ * root it serializes with the rest of the template on the server, and the
19298
+ * track's own declaration beats anything a consumer inherits in, so the
19299
+ * attribute is the one answer to how wide a pane is.
19300
+ *
19301
+ * A value the track cannot honor is taken to the nearest one it can, by
19302
+ * `across`, and both tiers read that rather than this.
19303
+ *
19151
19304
  * No default, because it reflects. A reflected property with a value writes
19152
19305
  * its attribute on upgrade, and the host then carries something a consumer's
19153
19306
  * server markup never had, which React reports as a mismatch. The one-across
@@ -19204,6 +19357,7 @@ export type CustomElements = {
19204
19357
  *
19205
19358
  * - `--carousel-gap`: Space between slides. A sheet sets it and the component measures the run with it. (default: `undefined`)
19206
19359
  * - `--carousel-pane`: The size one pane is laid out at. A sheet sets it and the component measures the run with it. (default: `undefined`)
19360
+ * - `--carousel-per-view`: How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. See `perView`. (default: `undefined`)
19207
19361
  * - `--carousel-run-end`: How far short of a whole pixel the run ends, on the last slide alone, for a sheet to take up as `margin-inline-end`. See `runEnd`. (default: `undefined`)
19208
19362
  *
19209
19363
  * ## CSS Parts
@@ -21393,6 +21547,15 @@ export type CustomElements = {
21393
21547
  * in the order on screen, in the columns on screen. Saving it is the page's
21394
21548
  * business, the same as any other file.
21395
21549
  *
21550
+ * **There is no `columns` attribute here, and `helix-table` has one.** The
21551
+ * difference is what a column is in each: here it is the schema, so a table
21552
+ * without one has nothing to read a row with, and every column is a place to
21553
+ * write a `width`. A `helix-table` holds cells a consumer wrote and can be
21554
+ * written with no column at all, so its `columns` is where such a table is
21555
+ * sized from. Written on this element the attribute is inert, which is the trap
21556
+ * worth knowing when moving between the two. What both take is the CSS hook,
21557
+ * `--data-table-columns` here and `--table-columns` there.
21558
+ *
21396
21559
  * ## Attributes & Properties
21397
21560
  *
21398
21561
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -31339,11 +31502,14 @@ export type CustomElements = {
31339
31502
 
31340
31503
  /**
31341
31504
  * **The column is the source of both its heading and its track.** Add one and
31342
- * the table has another track; remove one and it does not. Declaring the widths
31343
- * separately, as a CSS track list on the table, leaves nothing tying the two
31344
- * together: a table with three headings and a two-track list renders without
31345
- * complaint, and a track list that is accidentally the headings is invalid CSS
31346
- * the grid silently ignores, collapsing the whole table into one column.
31505
+ * the table has another track; remove one and it does not. That is what ties
31506
+ * the two together, and a table-level track list on its own does not: a list
31507
+ * that is accidentally the headings is invalid CSS a grid ignores in silence,
31508
+ * drawing the whole table as one column. `helix-table`'s `columns` is dealt out
31509
+ * a track at a time against the columns declared under it, so a heading among
31510
+ * the widths costs its own column a width and no more, and a list longer or
31511
+ * shorter than the columns is trimmed or shared rather than being a second
31512
+ * count of them. A column's own `width` wins over the track in its place.
31347
31513
  *
31348
31514
  * **It is also where every per-column fact goes**, which is the reason
31349
31515
  * `helix-data-table` needs no column config object. `field` names the key the
@@ -31577,6 +31743,19 @@ export type CustomElements = {
31577
31743
  * were this list to win, the drag would move the separator and leave the
31578
31744
  * track where the list put it. This is the table's default for its columns,
31579
31745
  * and each column may say otherwise.
31746
+ *
31747
+ * **It is also the only track list a server can send.** The shim has no tree
31748
+ * to walk, so a render there knows of no columns and this attribute is the
31749
+ * whole answer: a table given one lays its grid out in the first paint, and a
31750
+ * table sized only by its columns is one track wide until it upgrades.
31751
+ *
31752
+ * **`helix-data-table` has none of this, and should not.** Its columns are
31753
+ * its schema rather than an option, so there is always a column to write a
31754
+ * `width` on and a list here would be a second way to say what that says.
31755
+ * This table's cells are markup, and a table written as rows of cells with no
31756
+ * `helix-table-column` in it has nowhere else to be sized from. Both families
31757
+ * take the same CSS hook, `--table-columns` and `--data-table-columns`, which
31758
+ * wins over whichever list the element worked out.
31580
31759
  * - `label`: Accessible name for the table.
31581
31760
  * - `empty-text`/`emptyText`: What is said where there are none, and none are coming.
31582
31761
  * - `loading`: Whether the rows are still on their way.
@@ -31617,7 +31796,6 @@ export type CustomElements = {
31617
31796
  *
31618
31797
  * CSS variables available for styling the component.
31619
31798
  *
31620
- * - `--table-columns`: Track list for the columns. (default: `undefined`)
31621
31799
  * - `--table-template`: The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `--table-columns` is the one to set. (default: `undefined`)
31622
31800
  *
31623
31801
  * ## CSS Parts
@@ -33987,12 +34165,6 @@ export type CustomElements = {
33987
34165
  * Unset by default, and unreflected: a tree of choosable nodes is not a tree
33988
34166
  * of links, and an empty `href` written onto every row would be a link to the
33989
34167
  * current page on every item a consumer never asked to be one.
33990
- * - `level`: Depth from the root, set by the tree so indentation needs no CSS nesting.
33991
- *
33992
- * Not reflected. The tree assigns this after it upgrades, so an attribute
33993
- * here would be a change to markup the consumer rendered and hydration would
33994
- * report it. The indent it drives is written onto the row instead, inside the
33995
- * shadow root, which is not part of the tree React hydrates.
33996
34168
  * - `rel`: What the link declares about where it goes.
33997
34169
  *
33998
34170
  * Set by the consumer rather than derived from `target`: `noreferrer` is a
@@ -34001,7 +34173,7 @@ export type CustomElements = {
34001
34173
  * this library supports implies it for `target="_blank"` already.
34002
34174
  * - `selected`: Whether this item is the current one.
34003
34175
  *
34004
- * Not reflected, for the reason `level` below gives in full: the tree assigns
34176
+ * Not reflected, for the reason `level` above gives in full: the tree assigns
34005
34177
  * this after it upgrades, so the attribute would be a change to markup the
34006
34178
  * consumer rendered and hydration would report it. Mirroring to
34007
34179
  * `data-selected` on the host instead is the same fault under another name.
@@ -34023,6 +34195,23 @@ export type CustomElements = {
34023
34195
  * last reader did rather than what the author wrote. `:state(open)` carries
34024
34196
  * the resolved state for stylesheets, which is what the mirror is for.
34025
34197
  * - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
34198
+ * - `level`: Depth from the root, counted by the tree so indentation needs no CSS nesting.
34199
+ *
34200
+ * **Read rather than written, and no attribute at all.** The tree counts the
34201
+ * items a row sits inside and assigns this on every sync, so a value declared
34202
+ * here is overwritten before the first paint: measured at `level="2"` on three
34203
+ * rows of a flat list, all three back to 1 with `--tree-level: 1` on every
34204
+ * row. It carried an attribute and a shipped example setting it for as long as
34205
+ * both existed, which is a depth a consumer could state and nothing would
34206
+ * honor. Depth in this tree is where a row is, not what it claims: a branch's
34207
+ * children go in its `children` slot, and that nesting is also what decides
34208
+ * which rows a shut branch hides and which row the outward arrow moves to.
34209
+ *
34210
+ * Not reflected either. The tree assigns this after it upgrades, so an
34211
+ * attribute here would be a change to markup the consumer rendered and
34212
+ * hydration would report it. The indent it drives is written onto the row
34213
+ * instead, inside the shadow root, which is not part of the tree React
34214
+ * hydrates. (property only)
34026
34215
  * - `focusable`: Whether this item holds the tree's single tab stop. (property only)
34027
34216
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
34028
34217
  *
@@ -36890,6 +37079,27 @@ export type CustomElementsSolidJs = {
36890
37079
  * offset the track has already reached: pressing next walks the dots to the
36891
37080
  * end while the slides stop moving a third of the way through.
36892
37081
  *
37082
+ * **The number is published to the styles rather than enumerated by them**,
37083
+ * as `--carousel-per-view` on the track, which is what keeps a width and a
37084
+ * count from disagreeing. A sheet can only name a value it wrote a rule for,
37085
+ * so the styled tier enumerated `per-view="2"` through `5` and called five a
37086
+ * judgment; above it the pane fell back to one across while this file went on
37087
+ * counting positions. Measured in Chromium over eight slides, six across gave
37088
+ * three dots, a pane taking the whole track and five slides reachable only by
37089
+ * dragging. Written from here there is no ceiling to exceed, and a consumer's
37090
+ * own sheet reads the same declaration the styled one does. `runEnd` publishes
37091
+ * its correction the same way and for the same reason.
37092
+ *
37093
+ * **On the track and not on the host.** A custom property on the host is a
37094
+ * reflected attribute by another name: it would arrive on upgrade, and a
37095
+ * consumer's server markup never had it. Inside the component's own shadow
37096
+ * root it serializes with the rest of the template on the server, and the
37097
+ * track's own declaration beats anything a consumer inherits in, so the
37098
+ * attribute is the one answer to how wide a pane is.
37099
+ *
37100
+ * A value the track cannot honor is taken to the nearest one it can, by
37101
+ * `across`, and both tiers read that rather than this.
37102
+ *
36893
37103
  * No default, because it reflects. A reflected property with a value writes
36894
37104
  * its attribute on upgrade, and the host then carries something a consumer's
36895
37105
  * server markup never had, which React reports as a mismatch. The one-across
@@ -36946,6 +37156,7 @@ export type CustomElementsSolidJs = {
36946
37156
  *
36947
37157
  * - `--carousel-gap`: Space between slides. A sheet sets it and the component measures the run with it. (default: `undefined`)
36948
37158
  * - `--carousel-pane`: The size one pane is laid out at. A sheet sets it and the component measures the run with it. (default: `undefined`)
37159
+ * - `--carousel-per-view`: How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. See `perView`. (default: `undefined`)
36949
37160
  * - `--carousel-run-end`: How far short of a whole pixel the run ends, on the last slide alone, for a sheet to take up as `margin-inline-end`. See `runEnd`. (default: `undefined`)
36950
37161
  *
36951
37162
  * ## CSS Parts
@@ -39162,6 +39373,15 @@ export type CustomElementsSolidJs = {
39162
39373
  * in the order on screen, in the columns on screen. Saving it is the page's
39163
39374
  * business, the same as any other file.
39164
39375
  *
39376
+ * **There is no `columns` attribute here, and `helix-table` has one.** The
39377
+ * difference is what a column is in each: here it is the schema, so a table
39378
+ * without one has nothing to read a row with, and every column is a place to
39379
+ * write a `width`. A `helix-table` holds cells a consumer wrote and can be
39380
+ * written with no column at all, so its `columns` is where such a table is
39381
+ * sized from. Written on this element the attribute is inert, which is the trap
39382
+ * worth knowing when moving between the two. What both take is the CSS hook,
39383
+ * `--data-table-columns` here and `--table-columns` there.
39384
+ *
39165
39385
  * ## Attributes & Properties
39166
39386
  *
39167
39387
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -49269,11 +49489,14 @@ export type CustomElementsSolidJs = {
49269
49489
 
49270
49490
  /**
49271
49491
  * **The column is the source of both its heading and its track.** Add one and
49272
- * the table has another track; remove one and it does not. Declaring the widths
49273
- * separately, as a CSS track list on the table, leaves nothing tying the two
49274
- * together: a table with three headings and a two-track list renders without
49275
- * complaint, and a track list that is accidentally the headings is invalid CSS
49276
- * the grid silently ignores, collapsing the whole table into one column.
49492
+ * the table has another track; remove one and it does not. That is what ties
49493
+ * the two together, and a table-level track list on its own does not: a list
49494
+ * that is accidentally the headings is invalid CSS a grid ignores in silence,
49495
+ * drawing the whole table as one column. `helix-table`'s `columns` is dealt out
49496
+ * a track at a time against the columns declared under it, so a heading among
49497
+ * the widths costs its own column a width and no more, and a list longer or
49498
+ * shorter than the columns is trimmed or shared rather than being a second
49499
+ * count of them. A column's own `width` wins over the track in its place.
49277
49500
  *
49278
49501
  * **It is also where every per-column fact goes**, which is the reason
49279
49502
  * `helix-data-table` needs no column config object. `field` names the key the
@@ -49508,6 +49731,19 @@ export type CustomElementsSolidJs = {
49508
49731
  * were this list to win, the drag would move the separator and leave the
49509
49732
  * track where the list put it. This is the table's default for its columns,
49510
49733
  * and each column may say otherwise.
49734
+ *
49735
+ * **It is also the only track list a server can send.** The shim has no tree
49736
+ * to walk, so a render there knows of no columns and this attribute is the
49737
+ * whole answer: a table given one lays its grid out in the first paint, and a
49738
+ * table sized only by its columns is one track wide until it upgrades.
49739
+ *
49740
+ * **`helix-data-table` has none of this, and should not.** Its columns are
49741
+ * its schema rather than an option, so there is always a column to write a
49742
+ * `width` on and a list here would be a second way to say what that says.
49743
+ * This table's cells are markup, and a table written as rows of cells with no
49744
+ * `helix-table-column` in it has nowhere else to be sized from. Both families
49745
+ * take the same CSS hook, `--table-columns` and `--data-table-columns`, which
49746
+ * wins over whichever list the element worked out.
49511
49747
  * - `label`: Accessible name for the table.
49512
49748
  * - `empty-text`/`emptyText`: What is said where there are none, and none are coming.
49513
49749
  * - `loading`: Whether the rows are still on their way.
@@ -49548,7 +49784,6 @@ export type CustomElementsSolidJs = {
49548
49784
  *
49549
49785
  * CSS variables available for styling the component.
49550
49786
  *
49551
- * - `--table-columns`: Track list for the columns. (default: `undefined`)
49552
49787
  * - `--table-template`: The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `--table-columns` is the one to set. (default: `undefined`)
49553
49788
  *
49554
49789
  * ## CSS Parts
@@ -51969,12 +52204,6 @@ export type CustomElementsSolidJs = {
51969
52204
  * Unset by default, and unreflected: a tree of choosable nodes is not a tree
51970
52205
  * of links, and an empty `href` written onto every row would be a link to the
51971
52206
  * current page on every item a consumer never asked to be one.
51972
- * - `level`: Depth from the root, set by the tree so indentation needs no CSS nesting.
51973
- *
51974
- * Not reflected. The tree assigns this after it upgrades, so an attribute
51975
- * here would be a change to markup the consumer rendered and hydration would
51976
- * report it. The indent it drives is written onto the row instead, inside the
51977
- * shadow root, which is not part of the tree React hydrates.
51978
52207
  * - `rel`: What the link declares about where it goes.
51979
52208
  *
51980
52209
  * Set by the consumer rather than derived from `target`: `noreferrer` is a
@@ -51983,7 +52212,7 @@ export type CustomElementsSolidJs = {
51983
52212
  * this library supports implies it for `target="_blank"` already.
51984
52213
  * - `selected`: Whether this item is the current one.
51985
52214
  *
51986
- * Not reflected, for the reason `level` below gives in full: the tree assigns
52215
+ * Not reflected, for the reason `level` above gives in full: the tree assigns
51987
52216
  * this after it upgrades, so the attribute would be a change to markup the
51988
52217
  * consumer rendered and hydration would report it. Mirroring to
51989
52218
  * `data-selected` on the host instead is the same fault under another name.
@@ -52005,6 +52234,23 @@ export type CustomElementsSolidJs = {
52005
52234
  * last reader did rather than what the author wrote. `:state(open)` carries
52006
52235
  * the resolved state for stylesheets, which is what the mirror is for.
52007
52236
  * - `default-open`/`defaultOpen`: Initial open state for uncontrolled use, where nothing declared one.
52237
+ * - `level`: Depth from the root, counted by the tree so indentation needs no CSS nesting.
52238
+ *
52239
+ * **Read rather than written, and no attribute at all.** The tree counts the
52240
+ * items a row sits inside and assigns this on every sync, so a value declared
52241
+ * here is overwritten before the first paint: measured at `level="2"` on three
52242
+ * rows of a flat list, all three back to 1 with `--tree-level: 1` on every
52243
+ * row. It carried an attribute and a shipped example setting it for as long as
52244
+ * both existed, which is a depth a consumer could state and nothing would
52245
+ * honor. Depth in this tree is where a row is, not what it claims: a branch's
52246
+ * children go in its `children` slot, and that nesting is also what decides
52247
+ * which rows a shut branch hides and which row the outward arrow moves to.
52248
+ *
52249
+ * Not reflected either. The tree assigns this after it upgrades, so an
52250
+ * attribute here would be a change to markup the consumer rendered and
52251
+ * hydration would report it. The indent it drives is written onto the row
52252
+ * instead, inside the shadow root, which is not part of the tree React
52253
+ * hydrates. (property only)
52008
52254
  * - `focusable`: Whether this item holds the tree's single tab stop. (property only)
52009
52255
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
52010
52256
  *
@@ -53014,6 +53260,8 @@ export type CustomCssProperties = {
53014
53260
  "--carousel-gap"?: (string) | undefined;
53015
53261
  /** The size one pane is laid out at. A sheet sets it and the component measures the run with it. */
53016
53262
  "--carousel-pane"?: (string) | undefined;
53263
+ /** How many slides go across, written onto the track by the component so a sheet divides the track by the same number the positions are counted from. Read it rather than selecting on `per-view`, which cannot be enumerated without a ceiling. See `perView`. */
53264
+ "--carousel-per-view"?: (string) | undefined;
53017
53265
  /** How far short of a whole pixel the run ends, on the last slide alone, for a sheet to take up as `margin-inline-end`. See `runEnd`. */
53018
53266
  "--carousel-run-end"?: (string) | undefined;
53019
53267
  /** The chosen color, to paint over the transparency check. */
@@ -53118,8 +53366,6 @@ export type CustomCssProperties = {
53118
53366
  "--splitter-position"?: (string) | undefined;
53119
53367
  /** The edge the column this cell sits under is set to, `start`, `center` or `end`, and unset under a column that sets none. Written by the table around it, since the cell is the consumer's markup and nothing is written onto it; read by the sheet that draws the cell, where `justify-content` and `text-align` both take it as it comes and both follow the writing direction. */
53120
53368
  "--table-cell-align"?: (string) | undefined;
53121
- /** Track list for the columns. */
53122
- "--table-columns"?: (string) | undefined;
53123
53369
  /** The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `--table-columns` is the one to set. */
53124
53370
  "--table-template"?: (string) | undefined;
53125
53371
  /** How long this message stays, in milliseconds, for a progress hint. */