@fusion.dev/helix 0.33.4 → 0.34.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.
@@ -13154,8 +13154,28 @@
13154
13154
  "name": "--carousel-block-size"
13155
13155
  },
13156
13156
  {
13157
- "description": "Space between slides.",
13158
- "name": "--carousel-gap"
13157
+ "description": "Space between slides. A sheet sets it and the component measures the run with it.",
13158
+ "name": "--carousel-gap",
13159
+ "inheritedFrom": {
13160
+ "name": "HelixHeadlessCarousel",
13161
+ "module": "src/carousel/root/carousel-root.ts"
13162
+ }
13163
+ },
13164
+ {
13165
+ "description": "The size one pane is laid out at. A sheet sets it and the component measures the run with it.",
13166
+ "name": "--carousel-pane",
13167
+ "inheritedFrom": {
13168
+ "name": "HelixHeadlessCarousel",
13169
+ "module": "src/carousel/root/carousel-root.ts"
13170
+ }
13171
+ },
13172
+ {
13173
+ "description": "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`.",
13174
+ "name": "--carousel-run-end",
13175
+ "inheritedFrom": {
13176
+ "name": "HelixHeadlessCarousel",
13177
+ "module": "src/carousel/root/carousel-root.ts"
13178
+ }
13159
13179
  }
13160
13180
  ],
13161
13181
  "members": [
@@ -13726,6 +13746,21 @@
13726
13746
  "module": "src/carousel/root/carousel-root.ts"
13727
13747
  }
13728
13748
  },
13749
+ {
13750
+ "kind": "method",
13751
+ "name": "runEnd",
13752
+ "privacy": "private",
13753
+ "return": {
13754
+ "type": {
13755
+ "text": "string | typeof nothing"
13756
+ }
13757
+ },
13758
+ "description": "How far short of a whole pixel the run of slides ends, for the last one.\n\n**The run has to end on a whole pixel, because a right-to-left track cannot\nreach a fraction.** Three across 692 makes the run 450.66 longer than the\ntrack. Chromium measures a right-to-left scroller from its far end and\nfloors that length, so the track stops at -450 where a left-to-right one\nrounds to 451, and two thirds of a pixel of the slide before stays at the\nleading edge. Ending on a whole pixel, the far end is one number both ways\nand the last place rests on it in both, so a swipe to the end stops there\ntoo.\n\n**Here rather than in a stylesheet, because the count is the component's.**\nThe arithmetic wants how many slides there are, and CSS can only ask\n`sibling-count()`, which is Chromium-only, evaluates to 0 through\n`::part()`, and needs a `:last-child` that `::part()` cannot carry either.\nSo the styled tier could correct its run and a consumer writing their own\nseveral-across sheet could not: measured in Chromium at three across, the\nheadless tier rested at 451 against -450 while the styled tier rested at\none number both ways. Published from here, one declaration reading this\ngets both tiers and any consumer to the same place.\n\n**WebKit takes the margin and does not need it**, which is the reason a\ncorrection written in CSS looked like enough. It has no `sibling-count()`\nat all, so nothing reached that engine, and its track rested on one number\nboth ways anyway. Measured with the margin in place, the same widths:\nevery resting place is the number it was without it.\n\n**On the last slide alone, which is what makes that one declaration\nenough.** A sheet writes `margin-inline-end: var(--carousel-run-end, 0px)`\nacross every pane and the fallback answers on all but the last, so nothing\nhas to select a slide by its position in the run.\n\n**A sheet says how wide a pane is and how far apart they sit, and this\nreads both back.** Set neither and the correction is invalid at\ncomputed-value time, which is the fallback rather than a broken margin. The\npercentage resolves where the value is used, on the last pane, so it is the\ntrack's content box and not the track's own containing block: the width the\nrun is actually measured against.\n\nHorizontal only. A vertical track scrolls the other axis, `scrollTop`\ncounts up from zero whatever the writing mode, and there is no far end to\nfloor.",
13759
+ "inheritedFrom": {
13760
+ "name": "HelixHeadlessCarousel",
13761
+ "module": "src/carousel/root/carousel-root.ts"
13762
+ }
13763
+ },
13729
13764
  {
13730
13765
  "kind": "field",
13731
13766
  "name": "tier",
@@ -131846,6 +131881,20 @@
131846
131881
  "module": "src/tree/root/tree-root.ts"
131847
131882
  }
131848
131883
  },
131884
+ {
131885
+ "kind": "field",
131886
+ "name": "nesting",
131887
+ "type": {
131888
+ "text": "'heading' | 'peer' | 'subordinate' | undefined"
131889
+ },
131890
+ "description": "What a step inward means: nothing, a rank, or a heading over what follows.\n\nAll three answers are right, for different trees, which is why this is\nasked rather than decided. `peer` is a file explorer: every row is the same\nkind of thing, a name that may hold more names, and the indent alone says\nwhere one sits. `subordinate` is side navigation or a categorization: a\nsection holds pages and a facet holds values, so a step inward is a change\nof kind and the rows say so. `heading` is a documentation sidebar, where\nthe change is at the *parent*: \"Getting started\" is not a lesser page than\nthe pages under it and not a page at all, it is the name of the list, so\nthe branch takes the rail-heading treatment and its children stay at the\nsize every other row is.\n\n`subordinate` and `heading` are not the same answer said twice. One keys on\ndepth and quiets the child; the other keys on holding children and relabels\nthe parent, so a top-level leaf beside a branch is untouched by the first\nand untouched by the second for opposite reasons.\n\nOn the root rather than the item, because it is a fact about the tree. Set\nper row it would make a tree writable in which one branch ranks its\nchildren and the next does not, and it would have to be repeated on every\nrow to say one thing.\n\nHere rather than on the styled tier, because it is not about paint: with\nevery stylesheet deleted it is still true that this tree ranks its depths,\nthat this one heads them, and that a file explorer does neither. The styled\ntier steps a subordinate row once down the type scale and sets a heading\nbranch as a label; a headless consumer reads the attribute and the\n`--tree-level` each row carries, and draws either however they like.\n\n**Optional, with no default**, per the reflected-property rule: a value\nwritten here appears in the served markup of every tree anybody renders.\nThe resting state is the absence of the attribute, which is `peer`.",
131891
+ "attribute": "nesting",
131892
+ "reflects": true,
131893
+ "inheritedFrom": {
131894
+ "name": "HelixHeadlessTree",
131895
+ "module": "src/tree/root/tree-root.ts"
131896
+ }
131897
+ },
131849
131898
  {
131850
131899
  "kind": "field",
131851
131900
  "name": "watcher",
@@ -132430,6 +132479,18 @@
132430
132479
  "name": "HelixHeadlessTree",
132431
132480
  "module": "src/tree/root/tree-root.ts"
132432
132481
  }
132482
+ },
132483
+ {
132484
+ "name": "nesting",
132485
+ "type": {
132486
+ "text": "'heading' | 'peer' | 'subordinate' | undefined"
132487
+ },
132488
+ "description": "What a step inward means: nothing, a rank, or a heading over what follows.\n\nAll three answers are right, for different trees, which is why this is\nasked rather than decided. `peer` is a file explorer: every row is the same\nkind of thing, a name that may hold more names, and the indent alone says\nwhere one sits. `subordinate` is side navigation or a categorization: a\nsection holds pages and a facet holds values, so a step inward is a change\nof kind and the rows say so. `heading` is a documentation sidebar, where\nthe change is at the *parent*: \"Getting started\" is not a lesser page than\nthe pages under it and not a page at all, it is the name of the list, so\nthe branch takes the rail-heading treatment and its children stay at the\nsize every other row is.\n\n`subordinate` and `heading` are not the same answer said twice. One keys on\ndepth and quiets the child; the other keys on holding children and relabels\nthe parent, so a top-level leaf beside a branch is untouched by the first\nand untouched by the second for opposite reasons.\n\nOn the root rather than the item, because it is a fact about the tree. Set\nper row it would make a tree writable in which one branch ranks its\nchildren and the next does not, and it would have to be repeated on every\nrow to say one thing.\n\nHere rather than on the styled tier, because it is not about paint: with\nevery stylesheet deleted it is still true that this tree ranks its depths,\nthat this one heads them, and that a file explorer does neither. The styled\ntier steps a subordinate row once down the type scale and sets a heading\nbranch as a label; a headless consumer reads the attribute and the\n`--tree-level` each row carries, and draws either however they like.\n\n**Optional, with no default**, per the reflected-property rule: a value\nwritten here appears in the served markup of every tree anybody renders.\nThe resting state is the absence of the attribute, which is `peer`.",
132489
+ "fieldName": "nesting",
132490
+ "inheritedFrom": {
132491
+ "name": "HelixHeadlessTree",
132492
+ "module": "src/tree/root/tree-root.ts"
132493
+ }
132433
132494
  }
132434
132495
  ],
132435
132496
  "superclass": {
@@ -132470,6 +132531,10 @@
132470
132531
  "description": "A node told its own depth, for a tree built from a flat list rather than by nesting.",
132471
132532
  "slug": "flattened"
132472
132533
  },
132534
+ {
132535
+ "description": "Depth as a position, depth as a rank, and a branch that is a heading.",
132536
+ "slug": "nesting"
132537
+ },
132473
132538
  {
132474
132539
  "description": "The same tree with a glyph on each node.",
132475
132540
  "slug": "with-icons"
@@ -2,13 +2,13 @@ import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
3
  --_carousel-bleed: var(--carousel-bleed, var(--helix-space-md));
4
4
  --_carousel-gap: var(--carousel-gap, var(--helix-space-md));
5
-
6
- --_carousel-pane: calc(round(var(--_carousel-share) - 0.015625px, 0.03125px) + 0.015625px);
7
5
  --_carousel-per-view: 1;
8
6
  --_carousel-share: calc(
9
7
  (100% - (var(--_carousel-per-view) - 1) * var(--_carousel-gap)) /
10
8
  var(--_carousel-per-view)
11
9
  );
10
+
11
+ --carousel-pane: calc(round(var(--_carousel-share) - 0.015625px, 0.03125px) + 0.015625px);
12
12
  }
13
13
 
14
14
  :host {
@@ -179,6 +179,8 @@ inline-size: 1em;
179
179
  }
180
180
 
181
181
  [part="track"] {
182
+
183
+ --carousel-gap: var(--_carousel-gap);
182
184
  display: flex;
183
185
  gap: var(--_carousel-gap);
184
186
  overflow-x: auto;
@@ -204,21 +206,11 @@ scroll-snap-type: y mandatory;
204
206
 
205
207
  [part="slide"] {
206
208
  display: flex;
207
- flex: 0 0 var(--_carousel-pane);
209
+ flex: 0 0 var(--carousel-pane);
210
+ margin-inline-end: var(--carousel-run-end, 0px);
208
211
  scroll-snap-align: start;
209
212
  }
210
213
 
211
- :host(:not([orientation="vertical"])) [part="slide"]:last-child {
212
- --_carousel-overrun: calc(
213
- sibling-count() *
214
- (var(--_carousel-pane) + var(--_carousel-gap)) -
215
- var(--_carousel-gap) -
216
- 100%
217
- );
218
- --_carousel-run-end: calc(round(var(--_carousel-overrun), 1px) - var(--_carousel-overrun));
219
- margin-inline-end: var(--_carousel-run-end);
220
- }
221
-
222
214
  [part="slide"] ::slotted(*) {
223
215
  flex: 1 1 0;
224
216
  min-block-size: 0;
@@ -22,7 +22,6 @@ import type { CSSResultGroup } from 'lit';
22
22
  * focus ring is not clipped by it. Defaults to enough for `--helix-shadow-md`, which reaches
23
23
  * 16px below the box it is on; a slide on `--helix-shadow-lg` reaches 44px and wants more.
24
24
  * @cssproperty --carousel-block-size - Height of a vertical track.
25
- * @cssproperty --carousel-gap - Space between slides.
26
25
  */
27
26
  export declare class HelixCarousel extends HelixHeadlessCarousel {
28
27
  /**
@@ -18,7 +18,7 @@ color: var(--helix-color-foreground-muted);
18
18
  cursor: pointer;
19
19
  display: flex;
20
20
 
21
- font-size: var(--helix-text-sm);
21
+ font-size: var(--_tree-text, var(--helix-text-sm));
22
22
  gap: var(--helix-space-2xs);
23
23
 
24
24
  margin-block-end: var(--tree-gap, var(--helix-space-2xs));
@@ -50,13 +50,20 @@ var(--_tree-reserve, calc(var(--_tree-chevron) + var(--helix-space-2xs)))
50
50
  }
51
51
 
52
52
  [part="row"]:has([part="toggle"]) {
53
+ color: var(--_tree-heading-ink, var(--helix-color-foreground-muted));
54
+ font-size: var(--_tree-heading-text, var(--_tree-text, var(--helix-text-sm)));
53
55
  font-weight: var(--helix-weight-medium);
56
+ letter-spacing: var(--_tree-heading-tracking, var(--helix-tracking-normal));
54
57
  }
55
58
 
56
59
  [part="row"]:not(:has([part="toggle"])) {
57
60
  font-weight: var(--helix-weight-medium);
58
61
  }
59
62
 
63
+ slot[name="children"]::slotted(*) {
64
+ --_tree-text: var(--_tree-nested-text, var(--helix-text-sm));
65
+ }
66
+
60
67
  [part="row"]:hover {
61
68
  background-color: var(--helix-color-surface-raised);
62
69
  color: var(--helix-color-foreground);
@@ -20,6 +20,16 @@ flex-direction: column;
20
20
  --_tree-reserve: var(--helix-space-none);
21
21
  }
22
22
 
23
+ :host([nesting="subordinate"]) {
24
+ --_tree-nested-text: var(--helix-text-xs);
25
+ }
26
+
27
+ :host([nesting="heading"]) {
28
+ --_tree-heading-ink: var(--helix-color-foreground-subtle);
29
+ --_tree-heading-text: var(--helix-text-xs);
30
+ --_tree-heading-tracking: var(--helix-tracking-wide);
31
+ }
32
+
23
33
  :host([loading]) [part="tree"] {
24
34
  opacity: 0.5;
25
35
  }
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.33.4",
4
+ "version": "0.34.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -47,14 +47,14 @@
47
47
  },
48
48
  "bugs": "https://github.com/project-fusion/fusion/issues",
49
49
  "dependencies": {
50
- "@fusion.dev/helix-core": "0.33.4",
51
- "@fusion.dev/helix-headless": "0.33.4",
52
- "@fusion.dev/helix-styles": "0.33.4"
50
+ "@fusion.dev/helix-core": "0.34.0",
51
+ "@fusion.dev/helix-headless": "0.34.0",
52
+ "@fusion.dev/helix-styles": "0.34.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.33.4",
57
- "@fusion.dev/helix-testing": "0.33.4",
56
+ "@fusion.dev/helix-cem": "0.34.0",
57
+ "@fusion.dev/helix-testing": "0.34.0",
58
58
  "@fusion.dev/scripts": "0.0.0-dev",
59
59
  "@happy-dom/global-registrator": "^20.0.0",
60
60
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -18861,6 +18861,40 @@ Ignored once `active` is written. */
18861
18861
  defaultActive?: (HelixTree["defaultActive"]) | undefined;
18862
18862
  /** Accessible name for the tree. */
18863
18863
  label?: (HelixTree["label"]) | undefined;
18864
+ /** What a step inward means: nothing, a rank, or a heading over what follows.
18865
+
18866
+ All three answers are right, for different trees, which is why this is
18867
+ asked rather than decided. `peer` is a file explorer: every row is the same
18868
+ kind of thing, a name that may hold more names, and the indent alone says
18869
+ where one sits. `subordinate` is side navigation or a categorization: a
18870
+ section holds pages and a facet holds values, so a step inward is a change
18871
+ of kind and the rows say so. `heading` is a documentation sidebar, where
18872
+ the change is at the *parent*: "Getting started" is not a lesser page than
18873
+ the pages under it and not a page at all, it is the name of the list, so
18874
+ the branch takes the rail-heading treatment and its children stay at the
18875
+ size every other row is.
18876
+
18877
+ `subordinate` and `heading` are not the same answer said twice. One keys on
18878
+ depth and quiets the child; the other keys on holding children and relabels
18879
+ the parent, so a top-level leaf beside a branch is untouched by the first
18880
+ and untouched by the second for opposite reasons.
18881
+
18882
+ On the root rather than the item, because it is a fact about the tree. Set
18883
+ per row it would make a tree writable in which one branch ranks its
18884
+ children and the next does not, and it would have to be repeated on every
18885
+ row to say one thing.
18886
+
18887
+ Here rather than on the styled tier, because it is not about paint: with
18888
+ every stylesheet deleted it is still true that this tree ranks its depths,
18889
+ that this one heads them, and that a file explorer does neither. The styled
18890
+ tier steps a subordinate row once down the type scale and sets a heading
18891
+ branch as a label; a headless consumer reads the attribute and the
18892
+ `--tree-level` each row carries, and draws either however they like.
18893
+
18894
+ **Optional, with no default**, per the reflected-property rule: a value
18895
+ written here appears in the served markup of every tree anybody renders.
18896
+ The resting state is the absence of the attribute, which is `peer`. */
18897
+ nesting?: (HelixTree["nesting"]) | undefined;
18864
18898
 
18865
18899
  /** Fired when an item is chosen. Dispatched by the item and listened for here, because the tree is what a consumer holds a reference to. Cancelable: refusing it takes the decision and nothing moves. */
18866
18900
  "onhelix-select"?: ((e: HelixTreeHelixSelectElementEvent) => void) | undefined;
@@ -18950,6 +18984,40 @@ Ignored once `active` is written. */
18950
18984
  "prop:defaultActive"?: (HelixTree["defaultActive"]) | undefined;
18951
18985
  /** Accessible name for the tree. */
18952
18986
  "prop:label"?: (HelixTree["label"]) | undefined;
18987
+ /** What a step inward means: nothing, a rank, or a heading over what follows.
18988
+
18989
+ All three answers are right, for different trees, which is why this is
18990
+ asked rather than decided. `peer` is a file explorer: every row is the same
18991
+ kind of thing, a name that may hold more names, and the indent alone says
18992
+ where one sits. `subordinate` is side navigation or a categorization: a
18993
+ section holds pages and a facet holds values, so a step inward is a change
18994
+ of kind and the rows say so. `heading` is a documentation sidebar, where
18995
+ the change is at the *parent*: "Getting started" is not a lesser page than
18996
+ the pages under it and not a page at all, it is the name of the list, so
18997
+ the branch takes the rail-heading treatment and its children stay at the
18998
+ size every other row is.
18999
+
19000
+ `subordinate` and `heading` are not the same answer said twice. One keys on
19001
+ depth and quiets the child; the other keys on holding children and relabels
19002
+ the parent, so a top-level leaf beside a branch is untouched by the first
19003
+ and untouched by the second for opposite reasons.
19004
+
19005
+ On the root rather than the item, because it is a fact about the tree. Set
19006
+ per row it would make a tree writable in which one branch ranks its
19007
+ children and the next does not, and it would have to be repeated on every
19008
+ row to say one thing.
19009
+
19010
+ Here rather than on the styled tier, because it is not about paint: with
19011
+ every stylesheet deleted it is still true that this tree ranks its depths,
19012
+ that this one heads them, and that a file explorer does neither. The styled
19013
+ tier steps a subordinate row once down the type scale and sets a heading
19014
+ branch as a label; a headless consumer reads the attribute and the
19015
+ `--tree-level` each row carries, and draws either however they like.
19016
+
19017
+ **Optional, with no default**, per the reflected-property rule: a value
19018
+ written here appears in the served markup of every tree anybody renders.
19019
+ The resting state is the absence of the attribute, which is `peer`. */
19020
+ "prop:nesting"?: (HelixTree["nesting"]) | undefined;
18953
19021
  /** Fired when an item is chosen. Dispatched by the item and listened for here, because the tree is what a consumer holds a reference to. Cancelable: refusing it takes the decision and nothing moves. */
18954
19022
  "on:helix-select"?: ((e: HelixTreeHelixSelectElementEvent) => void) | undefined;
18955
19023
  /** Fired once the current one has moved, so the element already holds it. */
@@ -22041,7 +22109,9 @@ export type CustomElements = {
22041
22109
  *
22042
22110
  * - `--carousel-bleed`: Room inside the scroller so a slide's own shadow, border or focus ring is not clipped by it. Defaults to enough for `--helix-shadow-md`, which reaches 16px below the box it is on; a slide on `--helix-shadow-lg` reaches 44px and wants more. (default: `undefined`)
22043
22111
  * - `--carousel-block-size`: Height of a vertical track. (default: `undefined`)
22044
- * - `--carousel-gap`: Space between slides. (default: `undefined`)
22112
+ * - `--carousel-gap`: Space between slides. A sheet sets it and the component measures the run with it. (default: `undefined`)
22113
+ * - `--carousel-pane`: The size one pane is laid out at. A sheet sets it and the component measures the run with it. (default: `undefined`)
22114
+ * - `--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`)
22045
22115
  *
22046
22116
  * ## CSS Parts
22047
22117
  *
@@ -37715,6 +37785,39 @@ export type CustomElements = {
37715
37785
  *
37716
37786
  * Ignored once `active` is written.
37717
37787
  * - `label`: Accessible name for the tree.
37788
+ * - `nesting`: What a step inward means: nothing, a rank, or a heading over what follows.
37789
+ *
37790
+ * All three answers are right, for different trees, which is why this is
37791
+ * asked rather than decided. `peer` is a file explorer: every row is the same
37792
+ * kind of thing, a name that may hold more names, and the indent alone says
37793
+ * where one sits. `subordinate` is side navigation or a categorization: a
37794
+ * section holds pages and a facet holds values, so a step inward is a change
37795
+ * of kind and the rows say so. `heading` is a documentation sidebar, where
37796
+ * the change is at the *parent*: "Getting started" is not a lesser page than
37797
+ * the pages under it and not a page at all, it is the name of the list, so
37798
+ * the branch takes the rail-heading treatment and its children stay at the
37799
+ * size every other row is.
37800
+ *
37801
+ * `subordinate` and `heading` are not the same answer said twice. One keys on
37802
+ * depth and quiets the child; the other keys on holding children and relabels
37803
+ * the parent, so a top-level leaf beside a branch is untouched by the first
37804
+ * and untouched by the second for opposite reasons.
37805
+ *
37806
+ * On the root rather than the item, because it is a fact about the tree. Set
37807
+ * per row it would make a tree writable in which one branch ranks its
37808
+ * children and the next does not, and it would have to be repeated on every
37809
+ * row to say one thing.
37810
+ *
37811
+ * Here rather than on the styled tier, because it is not about paint: with
37812
+ * every stylesheet deleted it is still true that this tree ranks its depths,
37813
+ * that this one heads them, and that a file explorer does neither. The styled
37814
+ * tier steps a subordinate row once down the type scale and sets a heading
37815
+ * branch as a label; a headless consumer reads the attribute and the
37816
+ * `--tree-level` each row carries, and draws either however they like.
37817
+ *
37818
+ * **Optional, with no default**, per the reflected-property rule: a value
37819
+ * written here appears in the served markup of every tree anybody renders.
37820
+ * The resting state is the absence of the attribute, which is `peer`.
37718
37821
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
37719
37822
  *
37720
37823
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -40862,7 +40965,9 @@ export type CustomElementsSolidJs = {
40862
40965
  *
40863
40966
  * - `--carousel-bleed`: Room inside the scroller so a slide's own shadow, border or focus ring is not clipped by it. Defaults to enough for `--helix-shadow-md`, which reaches 16px below the box it is on; a slide on `--helix-shadow-lg` reaches 44px and wants more. (default: `undefined`)
40864
40967
  * - `--carousel-block-size`: Height of a vertical track. (default: `undefined`)
40865
- * - `--carousel-gap`: Space between slides. (default: `undefined`)
40968
+ * - `--carousel-gap`: Space between slides. A sheet sets it and the component measures the run with it. (default: `undefined`)
40969
+ * - `--carousel-pane`: The size one pane is laid out at. A sheet sets it and the component measures the run with it. (default: `undefined`)
40970
+ * - `--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`)
40866
40971
  *
40867
40972
  * ## CSS Parts
40868
40973
  *
@@ -56881,6 +56986,39 @@ export type CustomElementsSolidJs = {
56881
56986
  *
56882
56987
  * Ignored once `active` is written.
56883
56988
  * - `label`: Accessible name for the tree.
56989
+ * - `nesting`: What a step inward means: nothing, a rank, or a heading over what follows.
56990
+ *
56991
+ * All three answers are right, for different trees, which is why this is
56992
+ * asked rather than decided. `peer` is a file explorer: every row is the same
56993
+ * kind of thing, a name that may hold more names, and the indent alone says
56994
+ * where one sits. `subordinate` is side navigation or a categorization: a
56995
+ * section holds pages and a facet holds values, so a step inward is a change
56996
+ * of kind and the rows say so. `heading` is a documentation sidebar, where
56997
+ * the change is at the *parent*: "Getting started" is not a lesser page than
56998
+ * the pages under it and not a page at all, it is the name of the list, so
56999
+ * the branch takes the rail-heading treatment and its children stay at the
57000
+ * size every other row is.
57001
+ *
57002
+ * `subordinate` and `heading` are not the same answer said twice. One keys on
57003
+ * depth and quiets the child; the other keys on holding children and relabels
57004
+ * the parent, so a top-level leaf beside a branch is untouched by the first
57005
+ * and untouched by the second for opposite reasons.
57006
+ *
57007
+ * On the root rather than the item, because it is a fact about the tree. Set
57008
+ * per row it would make a tree writable in which one branch ranks its
57009
+ * children and the next does not, and it would have to be repeated on every
57010
+ * row to say one thing.
57011
+ *
57012
+ * Here rather than on the styled tier, because it is not about paint: with
57013
+ * every stylesheet deleted it is still true that this tree ranks its depths,
57014
+ * that this one heads them, and that a file explorer does neither. The styled
57015
+ * tier steps a subordinate row once down the type scale and sets a heading
57016
+ * branch as a label; a headless consumer reads the attribute and the
57017
+ * `--tree-level` each row carries, and draws either however they like.
57018
+ *
57019
+ * **Optional, with no default**, per the reflected-property rule: a value
57020
+ * written here appears in the served markup of every tree anybody renders.
57021
+ * The resting state is the absence of the attribute, which is `peer`.
56884
57022
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
56885
57023
  *
56886
57024
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -57855,8 +57993,12 @@ export type CustomCssProperties = {
57855
57993
  "--carousel-bleed"?: (string) | undefined;
57856
57994
  /** Height of a vertical track. */
57857
57995
  "--carousel-block-size"?: (string) | undefined;
57858
- /** Space between slides. */
57996
+ /** Space between slides. A sheet sets it and the component measures the run with it. */
57859
57997
  "--carousel-gap"?: (string) | undefined;
57998
+ /** The size one pane is laid out at. A sheet sets it and the component measures the run with it. */
57999
+ "--carousel-pane"?: (string) | undefined;
58000
+ /** 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`. */
58001
+ "--carousel-run-end"?: (string) | undefined;
57860
58002
  /** Fill behind the composer. */
57861
58003
  "--chat-composer-background-color"?: (string) | undefined;
57862
58004
  /** The composer's edge, so a theme can remove it. */
package/types/vue.d.ts CHANGED
@@ -9717,6 +9717,40 @@ Ignored once `active` is written. */
9717
9717
  defaultActive?: (HelixTree["defaultActive"]) | undefined;
9718
9718
  /** Accessible name for the tree. */
9719
9719
  label?: (HelixTree["label"]) | undefined;
9720
+ /** What a step inward means: nothing, a rank, or a heading over what follows.
9721
+
9722
+ All three answers are right, for different trees, which is why this is
9723
+ asked rather than decided. `peer` is a file explorer: every row is the same
9724
+ kind of thing, a name that may hold more names, and the indent alone says
9725
+ where one sits. `subordinate` is side navigation or a categorization: a
9726
+ section holds pages and a facet holds values, so a step inward is a change
9727
+ of kind and the rows say so. `heading` is a documentation sidebar, where
9728
+ the change is at the *parent*: "Getting started" is not a lesser page than
9729
+ the pages under it and not a page at all, it is the name of the list, so
9730
+ the branch takes the rail-heading treatment and its children stay at the
9731
+ size every other row is.
9732
+
9733
+ `subordinate` and `heading` are not the same answer said twice. One keys on
9734
+ depth and quiets the child; the other keys on holding children and relabels
9735
+ the parent, so a top-level leaf beside a branch is untouched by the first
9736
+ and untouched by the second for opposite reasons.
9737
+
9738
+ On the root rather than the item, because it is a fact about the tree. Set
9739
+ per row it would make a tree writable in which one branch ranks its
9740
+ children and the next does not, and it would have to be repeated on every
9741
+ row to say one thing.
9742
+
9743
+ Here rather than on the styled tier, because it is not about paint: with
9744
+ every stylesheet deleted it is still true that this tree ranks its depths,
9745
+ that this one heads them, and that a file explorer does neither. The styled
9746
+ tier steps a subordinate row once down the type scale and sets a heading
9747
+ branch as a label; a headless consumer reads the attribute and the
9748
+ `--tree-level` each row carries, and draws either however they like.
9749
+
9750
+ **Optional, with no default**, per the reflected-property rule: a value
9751
+ written here appears in the served markup of every tree anybody renders.
9752
+ The resting state is the absence of the attribute, which is `peer`. */
9753
+ nesting?: (HelixTree["nesting"]) | undefined;
9720
9754
  };
9721
9755
 
9722
9756
  export type HelixTreeVueEvents = {
@@ -10277,8 +10311,12 @@ export type CustomCssProperties = {
10277
10311
  "--carousel-bleed"?: (string) | undefined;
10278
10312
  /** Height of a vertical track. */
10279
10313
  "--carousel-block-size"?: (string) | undefined;
10280
- /** Space between slides. */
10314
+ /** Space between slides. A sheet sets it and the component measures the run with it. */
10281
10315
  "--carousel-gap"?: (string) | undefined;
10316
+ /** The size one pane is laid out at. A sheet sets it and the component measures the run with it. */
10317
+ "--carousel-pane"?: (string) | undefined;
10318
+ /** 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`. */
10319
+ "--carousel-run-end"?: (string) | undefined;
10282
10320
  /** Fill behind the composer. */
10283
10321
  "--chat-composer-background-color"?: (string) | undefined;
10284
10322
  /** The composer's edge, so a theme can remove it. */