@fusion.dev/helix 0.42.0 → 0.43.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.
@@ -36776,7 +36776,7 @@
36776
36776
  "declarations": [
36777
36777
  {
36778
36778
  "kind": "class",
36779
- "description": "Six week rows always, so the grid keeps one height and a month change does\nnot move whatever sits beneath it.\n\nThe column track is wider than the day, and the day is centered in it. The\ndifference is the space between days, which belongs to the track rather than\nto a `gap`, so a range can paint across the whole track and stay continuous.\n\nDays from the neighboring months stay in place and stay selectable, marked\nquieter rather than hidden, so the first and last weeks are whole and the\ngrid reads as a continuous run of dates.",
36779
+ "description": "Six week rows always, so the grid keeps one height and a month change does\nnot move whatever sits beneath it.\n\nThe column track is wider than the day, and the day is centered in it. The\ndifference is the space between days, which belongs to the track rather than\nto a `gap`, so a range can paint across the whole track and stay continuous.\n\nDays from the neighboring months stay in place, marked quieter rather than\nhidden, so the first and last weeks are whole rows rather than ragged ones.\nThey are filler and take no click, which the pointer says: no hover, and the\ncursor a box that does nothing has. At `months=\"2\"` the same date is a\ntrailing cell in one grid and a real one in the next, so a filler day that\ncould be chosen would put one answer on the page twice.",
36780
36780
  "name": "HelixDatePicker",
36781
36781
  "cssProperties": [
36782
36782
  {
@@ -38075,7 +38075,7 @@
38075
38075
  "helix": {
38076
38076
  "category": "forms",
38077
38077
  "since": "0.1.0",
38078
- "status": "experimental",
38078
+ "status": "stable",
38079
38079
  "documentation": "https://fusion.dev/helix/components/date-picker",
38080
38080
  "aliases": [
38081
38081
  "Calendar",
@@ -53069,7 +53069,7 @@
53069
53069
  "helix": {
53070
53070
  "category": "typography",
53071
53071
  "since": "0.1.0",
53072
- "status": "experimental",
53072
+ "status": "stable",
53073
53073
  "documentation": "https://fusion.dev/helix/components/format-date",
53074
53074
  "tier": "styled",
53075
53075
  "group": "FormatDate",
@@ -78526,17 +78526,7 @@
78526
78526
  "type": {
78527
78527
  "text": "boolean"
78528
78528
  },
78529
- "description": "Whether the markup declared this one chosen, which is what a reset returns to.\n\n`<option selected>` reflects to `defaultSelected` and `option.selected` is\nlive state that does not reflect, and those are two different facts. This\nelement has one `selected` doing both jobs, so what is captured here is what\nthe markup said at upgrade, before anything could overwrite it: read the\nattribute later and the listbox's own writes answer instead.\n\n**The deeper half is 302 and is not this.** State reflecting under the\ndeclaration's name is the fault `TreeItem` already avoids by mirroring to\n`data-selected`, and four families here still write `selected` back into a\nconsumer's markup. Splitting them means moving what every stylesheet selects\non, which is a change of its own rather than a property being added.",
78530
- "inheritedFrom": {
78531
- "name": "HelixHeadlessOption",
78532
- "module": "src/option/root/option-root.ts"
78533
- }
78534
- },
78535
- {
78536
- "kind": "field",
78537
- "name": "seeded",
78538
- "privacy": "private",
78539
- "description": "What the markup said, read once at construction for the reason above.",
78529
+ "description": "Whether the markup declared this one chosen, which is what a reset returns to.\n\n`<option selected>` reflects to `defaultSelected` and `option.selected` is\nlive state that does not reflect, and those are two different facts. This\nelement has one `selected` doing both jobs, so the declaration is the\nattribute and the state is the property.\n\n**The attribute, read when it is asked for, and never a snapshot taken in\nthe constructor.** A field initializer runs there, and an element the HTML\nparser created has none of its attributes yet at that moment: measured on\nthis element, on `Radio` and on `Toggle`, `<helix-option value=\"a\"\nselected>` reported `defaultSelected` as `false` both from parsed markup\nand from `createElement` followed by `setAttribute`, which is every way a\nconsumer writes one. The snapshot could only ever be true for an element\nalready in the document when `customElements.define` ran.\n\nNothing overwrites it either, which is what makes reading it late correct\nrather than merely later: `selected` does not reflect, for the reason\n`willUpdate` records, so the listbox's writes never reach the attribute and\nwhat it says is what the markup said.\n\n**The deeper half is not this.** State reflecting under the declaration's\nname is the fault `TreeItem` avoids by mirroring to `data-selected`.\nSplitting them means moving what every stylesheet selects on, which is a\nchange of its own rather than a property being added.",
78540
78530
  "inheritedFrom": {
78541
78531
  "name": "HelixHeadlessOption",
78542
78532
  "module": "src/option/root/option-root.ts"
@@ -90017,17 +90007,7 @@
90017
90007
  "type": {
90018
90008
  "text": "boolean"
90019
90009
  },
90020
- "description": "Whether the markup declared this one chosen, which is what a reset returns to.\n\n`<option selected>` reflects to `defaultSelected` and `option.selected` is\nlive state that does not reflect, and those are two different facts. This\nelement has one `selected` doing both jobs, so what is captured here is what\nthe markup said at upgrade, before anything could overwrite it: read the\nattribute later and the listbox's own writes answer instead.\n\n**The deeper half is not this.** State reflecting under the declaration's\nname is the fault `TreeItem` avoids by mirroring to `data-selected`.\nSplitting them means moving what every stylesheet selects on, which is a\nchange of its own rather than a property being added.",
90021
- "inheritedFrom": {
90022
- "name": "HelixHeadlessRadio",
90023
- "module": "src/radio/root/radio-root.ts"
90024
- }
90025
- },
90026
- {
90027
- "kind": "field",
90028
- "name": "seeded",
90029
- "privacy": "private",
90030
- "description": "What the markup said, read once at construction for the reason above.",
90010
+ "description": "Whether the markup declared this one chosen, which is what a reset returns to.\n\n`<option selected>` reflects to `defaultSelected` and `option.selected` is\nlive state that does not reflect, and those are two different facts. This\nelement has one `selected` doing both jobs, so the declaration is the\nattribute and the state is the property.\n\n**The attribute, read when it is asked for, and never a snapshot taken in\nthe constructor.** A field initializer runs there, and an element the HTML\nparser created has none of its attributes yet at that moment: measured on\nthis element, on `Option` and on `Toggle`, `<helix-radio value=\"a\"\nselected>` reported `defaultSelected` as `false` both from parsed markup\nand from `createElement` followed by `setAttribute`, which is every way a\nconsumer writes one. The snapshot could only ever be true for an element\nalready in the document when `customElements.define` ran.\n\nNothing overwrites it either, which is what makes reading it late correct\nrather than merely later: `selected` does not reflect, for the reason\n`willUpdate` records, so the group's writes never reach the attribute and\nwhat it says is what the markup said.\n\n**The deeper half is not this.** State reflecting under the declaration's\nname is the fault `TreeItem` avoids by mirroring to `data-selected`.\nSplitting them means moving what every stylesheet selects on, which is a\nchange of its own rather than a property being added.",
90031
90011
  "inheritedFrom": {
90032
90012
  "name": "HelixHeadlessRadio",
90033
90013
  "module": "src/radio/root/radio-root.ts"
@@ -101167,7 +101147,7 @@
101167
101147
  }
101168
101148
  },
101169
101149
  {
101170
- "description": "Where the filled span starts, as a percentage of the track.",
101150
+ "description": "Where a range's filled span starts, as a fraction of the track, 0 to 1.",
101171
101151
  "name": "--slider-from",
101172
101152
  "inheritedFrom": {
101173
101153
  "name": "HelixHeadlessSlider",
@@ -101183,7 +101163,7 @@
101183
101163
  }
101184
101164
  },
101185
101165
  {
101186
- "description": "Where the filled span ends, as a percentage of the track.",
101166
+ "description": "Where a range's filled span ends, as a fraction of the track, 0 to 1.",
101187
101167
  "name": "--slider-to",
101188
101168
  "inheritedFrom": {
101189
101169
  "name": "HelixHeadlessSlider",
@@ -102356,7 +102336,7 @@
102356
102336
  "helix": {
102357
102337
  "category": "forms",
102358
102338
  "since": "0.1.0",
102359
- "status": "experimental",
102339
+ "status": "stable",
102360
102340
  "documentation": "https://fusion.dev/helix/components/slider",
102361
102341
  "aliases": [
102362
102342
  "Range",
@@ -124969,6 +124949,22 @@
124969
124949
  "name": "HelixHeadlessToggleGroup",
124970
124950
  "module": "src/toggle/group/toggle-group.ts"
124971
124951
  }
124952
+ },
124953
+ {
124954
+ "description": "Whatever sits after the track on its own line, such as a count or a reset.",
124955
+ "name": "end",
124956
+ "inheritedFrom": {
124957
+ "name": "HelixHeadlessToggleGroup",
124958
+ "module": "src/toggle/group/toggle-group.ts"
124959
+ }
124960
+ },
124961
+ {
124962
+ "description": "Whatever sits before the track on its own line, such as an icon or a caption.",
124963
+ "name": "start",
124964
+ "inheritedFrom": {
124965
+ "name": "HelixHeadlessToggleGroup",
124966
+ "module": "src/toggle/group/toggle-group.ts"
124967
+ }
124972
124968
  }
124973
124969
  ],
124974
124970
  "members": [
@@ -125344,6 +125340,21 @@
125344
125340
  "module": "src/mixins/mixin-field/mixin-field.ts"
125345
125341
  }
125346
125342
  },
125343
+ {
125344
+ "kind": "method",
125345
+ "name": "adopt",
125346
+ "privacy": "private",
125347
+ "return": {
125348
+ "type": {
125349
+ "text": "void"
125350
+ }
125351
+ },
125352
+ "description": "Takes the markup's own answer where nothing has set a value.\n\n**The case a server renders**, and `Tabs` records the same fault from the\nother side. This element cannot choose on the server, having no children to\ncount, so a consumer whose first paint is right wrote `selected` on the\nitem: that serves `aria-checked=\"true\"`, and `sync` then cleared it one\nframe later, because `value` is `''` and nothing matches it. The shipped\n`disabled` example is exactly that markup, and drew both of its groups with\nnothing chosen.\n\n**Onto `defaultValue`, never onto `value`**, which is the same call\n`Slider` makes about the midpoint it seeds: what the markup declared is a\nfact about the markup, so it is where a reset returns to rather than\nsomething the reader chose. It also makes the group report the answer it is\nshowing, which marking the item alone would not: a `required` group would\notherwise tell a reader a value is missing while they are looking at one.\n\nA written `value` still wins, a declared property being a seed and a\ncorrection, and a group with neither still marks nothing at all.\n\n**The property and never `defaultSelected`, which is the attribute.** React\nassigns a JSX prop as a property where the custom element has one, and\nwrites no attribute at all, so keying on the attribute answers for markup\nand not for JSX. Measured by the parity check on the shipped `disabled`\nexample, whose two syntaxes are the same tree: 192 pixels apart, the HTML\nmarking `List` and the TSX marking nothing. The attribute seeds the\nproperty at upgrade, so reading the property covers both.\n\nRead before `sync` writes to it, which is the only moment it still holds\nwhat the consumer declared: after that it holds this group's answer, and\n`value` is no longer empty, so this returns above.\n\n**Called from `willUpdate` and from the slot, never from `sync`**, which\nruns in `updated`: a reactive property set there schedules a second update,\nand Lit's development build warns about exactly that once per group. From\n`willUpdate` the first render already carries the value, which is the pass\nthat has to be right. `children` is undefined on the server, whose element\nshim carries attributes and no tree, and that is the same guard\n`MixinCollection` records for the same reason.",
125353
+ "inheritedFrom": {
125354
+ "name": "HelixHeadlessToggleGroup",
125355
+ "module": "src/toggle/group/toggle-group.ts"
125356
+ }
125357
+ },
125347
125358
  {
125348
125359
  "kind": "method",
125349
125360
  "name": "sync",
@@ -126057,7 +126068,7 @@
126057
126068
  "summary": "A row of options with the selection marked by a moving indicator.",
126058
126069
  "helix": {
126059
126070
  "since": "0.1.0",
126060
- "status": "experimental",
126071
+ "status": "stable",
126061
126072
  "documentation": "https://fusion.dev/helix/components/toggle",
126062
126073
  "aliases": [
126063
126074
  "SegmentedControl",
@@ -126215,7 +126226,7 @@
126215
126226
  "name": "HelixToggle",
126216
126227
  "cssParts": [
126217
126228
  {
126218
- "description": "The button or anchor.",
126229
+ "description": "The radio button.",
126219
126230
  "name": "item",
126220
126231
  "inheritedFrom": {
126221
126232
  "name": "HelixHeadlessToggle",
@@ -126255,17 +126266,7 @@
126255
126266
  "type": {
126256
126267
  "text": "boolean"
126257
126268
  },
126258
- "description": "Whether the markup declared this one chosen, which is what a reset returns to.\n\n`<option selected>` reflects to `defaultSelected` and `option.selected` is\nlive state that does not reflect, and those are two different facts. This\nelement has one `selected` doing both jobs, so what is captured here is what\nthe markup said at upgrade, before anything could overwrite it: read the\nattribute later and the listbox's own writes answer instead.\n\n**The deeper half is not this.** State reflecting under the declaration's\nname is the fault `TreeItem` avoids by mirroring to `data-selected`.\nSplitting them means moving what every stylesheet selects on, which is a\nchange of its own rather than a property being added.",
126259
- "inheritedFrom": {
126260
- "name": "HelixHeadlessToggle",
126261
- "module": "src/toggle/root/toggle-root.ts"
126262
- }
126263
- },
126264
- {
126265
- "kind": "field",
126266
- "name": "seeded",
126267
- "privacy": "private",
126268
- "description": "What the markup said, read once at construction for the reason above.",
126269
+ "description": "Whether the markup declared this one chosen, which is what a reset returns to.\n\n`<option selected>` reflects to `defaultSelected` and `option.selected` is\nlive state that does not reflect, and those are two different facts. This\nelement has one `selected` doing both jobs, so the declaration is the\nattribute and the state is the property.\n\n**The attribute, read when it is asked for, and never a snapshot taken in\nthe constructor.** A field initializer runs there, and an element the HTML\nparser created has none of its attributes yet at that moment: measured on\nthis element, on `Option` and on `Radio`, `<helix-toggle value=\"light\"\nselected>` reported `defaultSelected` as `false` both from parsed markup\nand from `createElement` followed by `setAttribute`, which is every way a\nconsumer writes one. The snapshot could only ever be true for an element\nalready in the document when `customElements.define` ran.\n\nNothing overwrites it either, which is what makes reading it late correct\nrather than merely later: `selected` does not reflect, for the reason\n`willUpdate` records, so the group's writes never reach the attribute and\nwhat it says is what the markup said.\n\n**The deeper half is not this.** State reflecting under the declaration's\nname is the fault `TreeItem` avoids by mirroring to `data-selected`.\nSplitting them means moving what every stylesheet selects on, which is a\nchange of its own rather than a property being added.",
126269
126270
  "inheritedFrom": {
126270
126271
  "name": "HelixHeadlessToggle",
126271
126272
  "module": "src/toggle/root/toggle-root.ts"
@@ -126679,7 +126680,7 @@
126679
126680
  "helix": {
126680
126681
  "category": "actions",
126681
126682
  "since": "0.1.0",
126682
- "status": "experimental",
126683
+ "status": "stable",
126683
126684
  "documentation": "https://fusion.dev/helix/components/toggle",
126684
126685
  "aliases": [
126685
126686
  "Segment",
@@ -116,6 +116,10 @@ box-shadow: inset 0 0 0 var(--helix-border-thin) var(--helix-color-border);
116
116
  color: var(--helix-color-foreground-subtle);
117
117
  }
118
118
 
119
+ [part~="cell"][data-outside] {
120
+ cursor: default;
121
+ }
122
+
119
123
  [part~="cell"]:hover:not([aria-disabled], [data-outside]) [part~="day"] {
120
124
  background-color: var(--helix-color-surface-sunken);
121
125
  }
@@ -11,12 +11,15 @@ import type { CSSResultGroup } from 'lit';
11
11
  * difference is the space between days, which belongs to the track rather than
12
12
  * to a `gap`, so a range can paint across the whole track and stay continuous.
13
13
  *
14
- * Days from the neighboring months stay in place and stay selectable, marked
15
- * quieter rather than hidden, so the first and last weeks are whole and the
16
- * grid reads as a continuous run of dates.
14
+ * Days from the neighboring months stay in place, marked quieter rather than
15
+ * hidden, so the first and last weeks are whole rows rather than ragged ones.
16
+ * They are filler and take no click, which the pointer says: no hover, and the
17
+ * cursor a box that does nothing has. At `months="2"` the same date is a
18
+ * trailing cell in one grid and a real one in the next, so a filler day that
19
+ * could be chosen would put one answer on the page twice.
17
20
  *
18
21
  * @since 0.1.0
19
- * @status experimental
22
+ * @status stable
20
23
  * @category forms
21
24
  * @aliases Calendar, Date grid, Month view
22
25
  * @documentation https://fusion.dev/helix/components/date-picker
@@ -13,7 +13,7 @@ import type { CSSResultGroup } from 'lit';
13
13
  * date is written once and should sit in the text like the text.
14
14
  *
15
15
  * @since 0.1.0
16
- * @status experimental
16
+ * @status stable
17
17
  * @category typography
18
18
  * @documentation https://fusion.dev/helix/components/format-date
19
19
  */
@@ -15,7 +15,7 @@ import type { CSSResultGroup } from 'lit';
15
15
  * the thumb being dragged.
16
16
  *
17
17
  * @since 0.1.0
18
- * @status experimental
18
+ * @status stable
19
19
  * @category forms
20
20
  * @aliases Range, Range input
21
21
  * @documentation https://fusion.dev/helix/components/slider
@@ -15,11 +15,13 @@ import type { CSSResultGroup } from 'lit';
15
15
  * corner radius, which is worse than the exception.
16
16
  *
17
17
  * @since 0.1.0
18
- * @status experimental
18
+ * @status stable
19
19
  * @aliases SegmentedControl, Segmented, Navigation, Switcher
20
20
  * @documentation https://fusion.dev/helix/components/toggle
21
21
  *
22
22
  * @slot - The group's items.
23
+ * @slot end - Whatever sits after the track on its own line, such as a count or a reset.
24
+ * @slot start - Whatever sits before the track on its own line, such as an icon or a caption.
23
25
  *
24
26
  * @csspart indicator - The moving marker behind the selected item.
25
27
  *
@@ -9,14 +9,14 @@ import type { CSSResultGroup } from 'lit';
9
9
  * one fill appearing as another disappears.
10
10
  *
11
11
  * @since 0.1.0
12
- * @status experimental
12
+ * @status stable
13
13
  * @category actions
14
14
  * @aliases Segment, NavItem, Option
15
15
  * @documentation https://fusion.dev/helix/components/toggle
16
16
  *
17
17
  * @slot - The item's label.
18
18
  *
19
- * @csspart item - The button or anchor.
19
+ * @csspart item - The radio button.
20
20
  */
21
21
  export declare class HelixToggle extends HelixHeadlessToggle {
22
22
  static styles: CSSResultGroup;
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.42.0",
4
+ "version": "0.43.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.42.0",
51
- "@fusion.dev/helix-headless": "0.42.0",
52
- "@fusion.dev/helix-styles": "0.42.0"
50
+ "@fusion.dev/helix-core": "0.43.0",
51
+ "@fusion.dev/helix-headless": "0.43.0",
52
+ "@fusion.dev/helix-styles": "0.43.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.42.0",
57
- "@fusion.dev/helix-testing": "0.42.0",
56
+ "@fusion.dev/helix-cem": "0.43.0",
57
+ "@fusion.dev/helix-testing": "0.43.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
@@ -12088,15 +12088,27 @@ Written by the listbox. */
12088
12088
 
12089
12089
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
12090
12090
  live state that does not reflect, and those are two different facts. This
12091
- element has one `selected` doing both jobs, so what is captured here is what
12092
- the markup said at upgrade, before anything could overwrite it: read the
12093
- attribute later and the listbox's own writes answer instead.
12094
-
12095
- **The deeper half is 302 and is not this.** State reflecting under the
12096
- declaration's name is the fault `TreeItem` already avoids by mirroring to
12097
- `data-selected`, and four families here still write `selected` back into a
12098
- consumer's markup. Splitting them means moving what every stylesheet selects
12099
- on, which is a change of its own rather than a property being added. */
12091
+ element has one `selected` doing both jobs, so the declaration is the
12092
+ attribute and the state is the property.
12093
+
12094
+ **The attribute, read when it is asked for, and never a snapshot taken in
12095
+ the constructor.** A field initializer runs there, and an element the HTML
12096
+ parser created has none of its attributes yet at that moment: measured on
12097
+ this element, on `Radio` and on `Toggle`, `<helix-option value="a"
12098
+ selected>` reported `defaultSelected` as `false` both from parsed markup
12099
+ and from `createElement` followed by `setAttribute`, which is every way a
12100
+ consumer writes one. The snapshot could only ever be true for an element
12101
+ already in the document when `customElements.define` ran.
12102
+
12103
+ Nothing overwrites it either, which is what makes reading it late correct
12104
+ rather than merely later: `selected` does not reflect, for the reason
12105
+ `willUpdate` records, so the listbox's writes never reach the attribute and
12106
+ what it says is what the markup said.
12107
+
12108
+ **The deeper half is not this.** State reflecting under the declaration's
12109
+ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
12110
+ Splitting them means moving what every stylesheet selects on, which is a
12111
+ change of its own rather than a property being added. */
12100
12112
  defaultSelected?: (HelixOption["defaultSelected"]) | undefined;
12101
12113
 
12102
12114
  /** Fired when this choice is made. Cancelable: refusing it takes the decision and nothing moves. */
@@ -12183,15 +12195,27 @@ Written by the listbox. */
12183
12195
 
12184
12196
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
12185
12197
  live state that does not reflect, and those are two different facts. This
12186
- element has one `selected` doing both jobs, so what is captured here is what
12187
- the markup said at upgrade, before anything could overwrite it: read the
12188
- attribute later and the listbox's own writes answer instead.
12189
-
12190
- **The deeper half is 302 and is not this.** State reflecting under the
12191
- declaration's name is the fault `TreeItem` already avoids by mirroring to
12192
- `data-selected`, and four families here still write `selected` back into a
12193
- consumer's markup. Splitting them means moving what every stylesheet selects
12194
- on, which is a change of its own rather than a property being added. */
12198
+ element has one `selected` doing both jobs, so the declaration is the
12199
+ attribute and the state is the property.
12200
+
12201
+ **The attribute, read when it is asked for, and never a snapshot taken in
12202
+ the constructor.** A field initializer runs there, and an element the HTML
12203
+ parser created has none of its attributes yet at that moment: measured on
12204
+ this element, on `Radio` and on `Toggle`, `<helix-option value="a"
12205
+ selected>` reported `defaultSelected` as `false` both from parsed markup
12206
+ and from `createElement` followed by `setAttribute`, which is every way a
12207
+ consumer writes one. The snapshot could only ever be true for an element
12208
+ already in the document when `customElements.define` ran.
12209
+
12210
+ Nothing overwrites it either, which is what makes reading it late correct
12211
+ rather than merely later: `selected` does not reflect, for the reason
12212
+ `willUpdate` records, so the listbox's writes never reach the attribute and
12213
+ what it says is what the markup said.
12214
+
12215
+ **The deeper half is not this.** State reflecting under the declaration's
12216
+ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
12217
+ Splitting them means moving what every stylesheet selects on, which is a
12218
+ change of its own rather than a property being added. */
12195
12219
  "prop:defaultSelected"?: (HelixOption["defaultSelected"]) | undefined;
12196
12220
  /** Fired when this choice is made. Cancelable: refusing it takes the decision and nothing moves. */
12197
12221
  "on:helix-select"?: ((e: HelixOptionHelixSelectElementEvent) => void) | undefined;
@@ -13590,9 +13614,22 @@ Written by the group. */
13590
13614
 
13591
13615
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
13592
13616
  live state that does not reflect, and those are two different facts. This
13593
- element has one `selected` doing both jobs, so what is captured here is what
13594
- the markup said at upgrade, before anything could overwrite it: read the
13595
- attribute later and the listbox's own writes answer instead.
13617
+ element has one `selected` doing both jobs, so the declaration is the
13618
+ attribute and the state is the property.
13619
+
13620
+ **The attribute, read when it is asked for, and never a snapshot taken in
13621
+ the constructor.** A field initializer runs there, and an element the HTML
13622
+ parser created has none of its attributes yet at that moment: measured on
13623
+ this element, on `Option` and on `Toggle`, `<helix-radio value="a"
13624
+ selected>` reported `defaultSelected` as `false` both from parsed markup
13625
+ and from `createElement` followed by `setAttribute`, which is every way a
13626
+ consumer writes one. The snapshot could only ever be true for an element
13627
+ already in the document when `customElements.define` ran.
13628
+
13629
+ Nothing overwrites it either, which is what makes reading it late correct
13630
+ rather than merely later: `selected` does not reflect, for the reason
13631
+ `willUpdate` records, so the group's writes never reach the attribute and
13632
+ what it says is what the markup said.
13596
13633
 
13597
13634
  **The deeper half is not this.** State reflecting under the declaration's
13598
13635
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -13667,9 +13704,22 @@ Written by the group. */
13667
13704
 
13668
13705
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
13669
13706
  live state that does not reflect, and those are two different facts. This
13670
- element has one `selected` doing both jobs, so what is captured here is what
13671
- the markup said at upgrade, before anything could overwrite it: read the
13672
- attribute later and the listbox's own writes answer instead.
13707
+ element has one `selected` doing both jobs, so the declaration is the
13708
+ attribute and the state is the property.
13709
+
13710
+ **The attribute, read when it is asked for, and never a snapshot taken in
13711
+ the constructor.** A field initializer runs there, and an element the HTML
13712
+ parser created has none of its attributes yet at that moment: measured on
13713
+ this element, on `Option` and on `Toggle`, `<helix-radio value="a"
13714
+ selected>` reported `defaultSelected` as `false` both from parsed markup
13715
+ and from `createElement` followed by `setAttribute`, which is every way a
13716
+ consumer writes one. The snapshot could only ever be true for an element
13717
+ already in the document when `customElements.define` ran.
13718
+
13719
+ Nothing overwrites it either, which is what makes reading it late correct
13720
+ rather than merely later: `selected` does not reflect, for the reason
13721
+ `willUpdate` records, so the group's writes never reach the attribute and
13722
+ what it says is what the markup said.
13673
13723
 
13674
13724
  **The deeper half is not this.** State reflecting under the declaration's
13675
13725
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -18309,9 +18359,22 @@ export type HelixToggleProps = {
18309
18359
 
18310
18360
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
18311
18361
  live state that does not reflect, and those are two different facts. This
18312
- element has one `selected` doing both jobs, so what is captured here is what
18313
- the markup said at upgrade, before anything could overwrite it: read the
18314
- attribute later and the listbox's own writes answer instead.
18362
+ element has one `selected` doing both jobs, so the declaration is the
18363
+ attribute and the state is the property.
18364
+
18365
+ **The attribute, read when it is asked for, and never a snapshot taken in
18366
+ the constructor.** A field initializer runs there, and an element the HTML
18367
+ parser created has none of its attributes yet at that moment: measured on
18368
+ this element, on `Option` and on `Radio`, `<helix-toggle value="light"
18369
+ selected>` reported `defaultSelected` as `false` both from parsed markup
18370
+ and from `createElement` followed by `setAttribute`, which is every way a
18371
+ consumer writes one. The snapshot could only ever be true for an element
18372
+ already in the document when `customElements.define` ran.
18373
+
18374
+ Nothing overwrites it either, which is what makes reading it late correct
18375
+ rather than merely later: `selected` does not reflect, for the reason
18376
+ `willUpdate` records, so the group's writes never reach the attribute and
18377
+ what it says is what the markup said.
18315
18378
 
18316
18379
  **The deeper half is not this.** State reflecting under the declaration's
18317
18380
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -18342,9 +18405,22 @@ export type HelixToggleSolidJsProps = {
18342
18405
 
18343
18406
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
18344
18407
  live state that does not reflect, and those are two different facts. This
18345
- element has one `selected` doing both jobs, so what is captured here is what
18346
- the markup said at upgrade, before anything could overwrite it: read the
18347
- attribute later and the listbox's own writes answer instead.
18408
+ element has one `selected` doing both jobs, so the declaration is the
18409
+ attribute and the state is the property.
18410
+
18411
+ **The attribute, read when it is asked for, and never a snapshot taken in
18412
+ the constructor.** A field initializer runs there, and an element the HTML
18413
+ parser created has none of its attributes yet at that moment: measured on
18414
+ this element, on `Option` and on `Radio`, `<helix-toggle value="light"
18415
+ selected>` reported `defaultSelected` as `false` both from parsed markup
18416
+ and from `createElement` followed by `setAttribute`, which is every way a
18417
+ consumer writes one. The snapshot could only ever be true for an element
18418
+ already in the document when `customElements.define` ran.
18419
+
18420
+ Nothing overwrites it either, which is what makes reading it late correct
18421
+ rather than merely later: `selected` does not reflect, for the reason
18422
+ `willUpdate` records, so the group's writes never reach the attribute and
18423
+ what it says is what the markup said.
18348
18424
 
18349
18425
  **The deeper half is not this.** State reflecting under the declaration's
18350
18426
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -25278,9 +25354,12 @@ export type CustomElements = {
25278
25354
  * difference is the space between days, which belongs to the track rather than
25279
25355
  * to a `gap`, so a range can paint across the whole track and stay continuous.
25280
25356
  *
25281
- * Days from the neighboring months stay in place and stay selectable, marked
25282
- * quieter rather than hidden, so the first and last weeks are whole and the
25283
- * grid reads as a continuous run of dates.
25357
+ * Days from the neighboring months stay in place, marked quieter rather than
25358
+ * hidden, so the first and last weeks are whole rows rather than ragged ones.
25359
+ * They are filler and take no click, which the pointer says: no hover, and the
25360
+ * cursor a box that does nothing has. At `months="2"` the same date is a
25361
+ * trailing cell in one grid and a real one in the next, so a filler day that
25362
+ * could be chosen would put one answer on the page twice.
25284
25363
  *
25285
25364
  * ## Attributes & Properties
25286
25365
  *
@@ -31209,15 +31288,27 @@ export type CustomElements = {
31209
31288
  *
31210
31289
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
31211
31290
  * live state that does not reflect, and those are two different facts. This
31212
- * element has one `selected` doing both jobs, so what is captured here is what
31213
- * the markup said at upgrade, before anything could overwrite it: read the
31214
- * attribute later and the listbox's own writes answer instead.
31215
- *
31216
- * **The deeper half is 302 and is not this.** State reflecting under the
31217
- * declaration's name is the fault `TreeItem` already avoids by mirroring to
31218
- * `data-selected`, and four families here still write `selected` back into a
31219
- * consumer's markup. Splitting them means moving what every stylesheet selects
31220
- * on, which is a change of its own rather than a property being added. (property only)
31291
+ * element has one `selected` doing both jobs, so the declaration is the
31292
+ * attribute and the state is the property.
31293
+ *
31294
+ * **The attribute, read when it is asked for, and never a snapshot taken in
31295
+ * the constructor.** A field initializer runs there, and an element the HTML
31296
+ * parser created has none of its attributes yet at that moment: measured on
31297
+ * this element, on `Radio` and on `Toggle`, `<helix-option value="a"
31298
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
31299
+ * and from `createElement` followed by `setAttribute`, which is every way a
31300
+ * consumer writes one. The snapshot could only ever be true for an element
31301
+ * already in the document when `customElements.define` ran.
31302
+ *
31303
+ * Nothing overwrites it either, which is what makes reading it late correct
31304
+ * rather than merely later: `selected` does not reflect, for the reason
31305
+ * `willUpdate` records, so the listbox's writes never reach the attribute and
31306
+ * what it says is what the markup said.
31307
+ *
31308
+ * **The deeper half is not this.** State reflecting under the declaration's
31309
+ * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
31310
+ * Splitting them means moving what every stylesheet selects on, which is a
31311
+ * change of its own rather than a property being added. (property only)
31221
31312
  * - `text`: The words, for a listbox that has to match text against them.
31222
31313
  *
31223
31314
  * Read from the rendered content rather than required as a property, because
@@ -32715,9 +32806,22 @@ export type CustomElements = {
32715
32806
  *
32716
32807
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
32717
32808
  * live state that does not reflect, and those are two different facts. This
32718
- * element has one `selected` doing both jobs, so what is captured here is what
32719
- * the markup said at upgrade, before anything could overwrite it: read the
32720
- * attribute later and the listbox's own writes answer instead.
32809
+ * element has one `selected` doing both jobs, so the declaration is the
32810
+ * attribute and the state is the property.
32811
+ *
32812
+ * **The attribute, read when it is asked for, and never a snapshot taken in
32813
+ * the constructor.** A field initializer runs there, and an element the HTML
32814
+ * parser created has none of its attributes yet at that moment: measured on
32815
+ * this element, on `Option` and on `Toggle`, `<helix-radio value="a"
32816
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
32817
+ * and from `createElement` followed by `setAttribute`, which is every way a
32818
+ * consumer writes one. The snapshot could only ever be true for an element
32819
+ * already in the document when `customElements.define` ran.
32820
+ *
32821
+ * Nothing overwrites it either, which is what makes reading it late correct
32822
+ * rather than merely later: `selected` does not reflect, for the reason
32823
+ * `willUpdate` records, so the group's writes never reach the attribute and
32824
+ * what it says is what the markup said.
32721
32825
  *
32722
32826
  * **The deeper half is not this.** State reflecting under the declaration's
32723
32827
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -34399,9 +34503,9 @@ export type CustomElements = {
34399
34503
  * - `--slider-track-image`: The whole track, for a slider whose color is the value. (default: `undefined`)
34400
34504
  * - `--slider-track-size`: How thick the track is. The progress bar's own size by default, the two being the same object. (default: `undefined`)
34401
34505
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1. (default: `undefined`)
34402
- * - `--slider-from`: Where the filled span starts, as a percentage of the track. (default: `undefined`)
34506
+ * - `--slider-from`: Where a range's filled span starts, as a fraction of the track, 0 to 1. (default: `undefined`)
34403
34507
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track. (default: `undefined`)
34404
- * - `--slider-to`: Where the filled span ends, as a percentage of the track. (default: `undefined`)
34508
+ * - `--slider-to`: Where a range's filled span ends, as a fraction of the track, 0 to 1. (default: `undefined`)
34405
34509
  *
34406
34510
  * ## CSS Parts
34407
34511
  *
@@ -37589,6 +37693,8 @@ export type CustomElements = {
37589
37693
  * Areas where markup can be added to the component.
37590
37694
  *
37591
37695
  * - `(default)`: The group's items.
37696
+ * - `end`: Whatever sits after the track on its own line, such as a count or a reset.
37697
+ * - `start`: Whatever sits before the track on its own line, such as an icon or a caption.
37592
37698
  *
37593
37699
  * ## Methods
37594
37700
  *
@@ -37690,9 +37796,22 @@ export type CustomElements = {
37690
37796
  *
37691
37797
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
37692
37798
  * live state that does not reflect, and those are two different facts. This
37693
- * element has one `selected` doing both jobs, so what is captured here is what
37694
- * the markup said at upgrade, before anything could overwrite it: read the
37695
- * attribute later and the listbox's own writes answer instead.
37799
+ * element has one `selected` doing both jobs, so the declaration is the
37800
+ * attribute and the state is the property.
37801
+ *
37802
+ * **The attribute, read when it is asked for, and never a snapshot taken in
37803
+ * the constructor.** A field initializer runs there, and an element the HTML
37804
+ * parser created has none of its attributes yet at that moment: measured on
37805
+ * this element, on `Option` and on `Radio`, `<helix-toggle value="light"
37806
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
37807
+ * and from `createElement` followed by `setAttribute`, which is every way a
37808
+ * consumer writes one. The snapshot could only ever be true for an element
37809
+ * already in the document when `customElements.define` ran.
37810
+ *
37811
+ * Nothing overwrites it either, which is what makes reading it late correct
37812
+ * rather than merely later: `selected` does not reflect, for the reason
37813
+ * `willUpdate` records, so the group's writes never reach the attribute and
37814
+ * what it says is what the markup said.
37696
37815
  *
37697
37816
  * **The deeper half is not this.** State reflecting under the declaration's
37698
37817
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -37753,7 +37872,7 @@ export type CustomElements = {
37753
37872
  *
37754
37873
  * Custom selectors for styling elements within the component.
37755
37874
  *
37756
- * - `item`: The button or anchor.
37875
+ * - `item`: The radio button.
37757
37876
  *
37758
37877
  * ## CSS States
37759
37878
  *
@@ -44544,9 +44663,12 @@ export type CustomElementsSolidJs = {
44544
44663
  * difference is the space between days, which belongs to the track rather than
44545
44664
  * to a `gap`, so a range can paint across the whole track and stay continuous.
44546
44665
  *
44547
- * Days from the neighboring months stay in place and stay selectable, marked
44548
- * quieter rather than hidden, so the first and last weeks are whole and the
44549
- * grid reads as a continuous run of dates.
44666
+ * Days from the neighboring months stay in place, marked quieter rather than
44667
+ * hidden, so the first and last weeks are whole rows rather than ragged ones.
44668
+ * They are filler and take no click, which the pointer says: no hover, and the
44669
+ * cursor a box that does nothing has. At `months="2"` the same date is a
44670
+ * trailing cell in one grid and a real one in the next, so a filler day that
44671
+ * could be chosen would put one answer on the page twice.
44550
44672
  *
44551
44673
  * ## Attributes & Properties
44552
44674
  *
@@ -50601,15 +50723,27 @@ export type CustomElementsSolidJs = {
50601
50723
  *
50602
50724
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
50603
50725
  * live state that does not reflect, and those are two different facts. This
50604
- * element has one `selected` doing both jobs, so what is captured here is what
50605
- * the markup said at upgrade, before anything could overwrite it: read the
50606
- * attribute later and the listbox's own writes answer instead.
50607
- *
50608
- * **The deeper half is 302 and is not this.** State reflecting under the
50609
- * declaration's name is the fault `TreeItem` already avoids by mirroring to
50610
- * `data-selected`, and four families here still write `selected` back into a
50611
- * consumer's markup. Splitting them means moving what every stylesheet selects
50612
- * on, which is a change of its own rather than a property being added. (property only)
50726
+ * element has one `selected` doing both jobs, so the declaration is the
50727
+ * attribute and the state is the property.
50728
+ *
50729
+ * **The attribute, read when it is asked for, and never a snapshot taken in
50730
+ * the constructor.** A field initializer runs there, and an element the HTML
50731
+ * parser created has none of its attributes yet at that moment: measured on
50732
+ * this element, on `Radio` and on `Toggle`, `<helix-option value="a"
50733
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
50734
+ * and from `createElement` followed by `setAttribute`, which is every way a
50735
+ * consumer writes one. The snapshot could only ever be true for an element
50736
+ * already in the document when `customElements.define` ran.
50737
+ *
50738
+ * Nothing overwrites it either, which is what makes reading it late correct
50739
+ * rather than merely later: `selected` does not reflect, for the reason
50740
+ * `willUpdate` records, so the listbox's writes never reach the attribute and
50741
+ * what it says is what the markup said.
50742
+ *
50743
+ * **The deeper half is not this.** State reflecting under the declaration's
50744
+ * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
50745
+ * Splitting them means moving what every stylesheet selects on, which is a
50746
+ * change of its own rather than a property being added. (property only)
50613
50747
  * - `text`: The words, for a listbox that has to match text against them.
50614
50748
  *
50615
50749
  * Read from the rendered content rather than required as a property, because
@@ -52144,9 +52278,22 @@ export type CustomElementsSolidJs = {
52144
52278
  *
52145
52279
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
52146
52280
  * live state that does not reflect, and those are two different facts. This
52147
- * element has one `selected` doing both jobs, so what is captured here is what
52148
- * the markup said at upgrade, before anything could overwrite it: read the
52149
- * attribute later and the listbox's own writes answer instead.
52281
+ * element has one `selected` doing both jobs, so the declaration is the
52282
+ * attribute and the state is the property.
52283
+ *
52284
+ * **The attribute, read when it is asked for, and never a snapshot taken in
52285
+ * the constructor.** A field initializer runs there, and an element the HTML
52286
+ * parser created has none of its attributes yet at that moment: measured on
52287
+ * this element, on `Option` and on `Toggle`, `<helix-radio value="a"
52288
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
52289
+ * and from `createElement` followed by `setAttribute`, which is every way a
52290
+ * consumer writes one. The snapshot could only ever be true for an element
52291
+ * already in the document when `customElements.define` ran.
52292
+ *
52293
+ * Nothing overwrites it either, which is what makes reading it late correct
52294
+ * rather than merely later: `selected` does not reflect, for the reason
52295
+ * `willUpdate` records, so the group's writes never reach the attribute and
52296
+ * what it says is what the markup said.
52150
52297
  *
52151
52298
  * **The deeper half is not this.** State reflecting under the declaration's
52152
52299
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -53869,9 +54016,9 @@ export type CustomElementsSolidJs = {
53869
54016
  * - `--slider-track-image`: The whole track, for a slider whose color is the value. (default: `undefined`)
53870
54017
  * - `--slider-track-size`: How thick the track is. The progress bar's own size by default, the two being the same object. (default: `undefined`)
53871
54018
  * - `--slider-fraction`: The value as a fraction of the range, 0 to 1. (default: `undefined`)
53872
- * - `--slider-from`: Where the filled span starts, as a percentage of the track. (default: `undefined`)
54019
+ * - `--slider-from`: Where a range's filled span starts, as a fraction of the track, 0 to 1. (default: `undefined`)
53873
54020
  * - `--slider-marker-at`: Where one marker sits, as a percentage of the track. (default: `undefined`)
53874
- * - `--slider-to`: Where the filled span ends, as a percentage of the track. (default: `undefined`)
54021
+ * - `--slider-to`: Where a range's filled span ends, as a fraction of the track, 0 to 1. (default: `undefined`)
53875
54022
  *
53876
54023
  * ## CSS Parts
53877
54024
  *
@@ -57137,6 +57284,8 @@ export type CustomElementsSolidJs = {
57137
57284
  * Areas where markup can be added to the component.
57138
57285
  *
57139
57286
  * - `(default)`: The group's items.
57287
+ * - `end`: Whatever sits after the track on its own line, such as a count or a reset.
57288
+ * - `start`: Whatever sits before the track on its own line, such as an icon or a caption.
57140
57289
  *
57141
57290
  * ## Methods
57142
57291
  *
@@ -57241,9 +57390,22 @@ export type CustomElementsSolidJs = {
57241
57390
  *
57242
57391
  * `<option selected>` reflects to `defaultSelected` and `option.selected` is
57243
57392
  * live state that does not reflect, and those are two different facts. This
57244
- * element has one `selected` doing both jobs, so what is captured here is what
57245
- * the markup said at upgrade, before anything could overwrite it: read the
57246
- * attribute later and the listbox's own writes answer instead.
57393
+ * element has one `selected` doing both jobs, so the declaration is the
57394
+ * attribute and the state is the property.
57395
+ *
57396
+ * **The attribute, read when it is asked for, and never a snapshot taken in
57397
+ * the constructor.** A field initializer runs there, and an element the HTML
57398
+ * parser created has none of its attributes yet at that moment: measured on
57399
+ * this element, on `Option` and on `Radio`, `<helix-toggle value="light"
57400
+ * selected>` reported `defaultSelected` as `false` both from parsed markup
57401
+ * and from `createElement` followed by `setAttribute`, which is every way a
57402
+ * consumer writes one. The snapshot could only ever be true for an element
57403
+ * already in the document when `customElements.define` ran.
57404
+ *
57405
+ * Nothing overwrites it either, which is what makes reading it late correct
57406
+ * rather than merely later: `selected` does not reflect, for the reason
57407
+ * `willUpdate` records, so the group's writes never reach the attribute and
57408
+ * what it says is what the markup said.
57247
57409
  *
57248
57410
  * **The deeper half is not this.** State reflecting under the declaration's
57249
57411
  * name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -57304,7 +57466,7 @@ export type CustomElementsSolidJs = {
57304
57466
  *
57305
57467
  * Custom selectors for styling elements within the component.
57306
57468
  *
57307
- * - `item`: The button or anchor.
57469
+ * - `item`: The radio button.
57308
57470
  *
57309
57471
  * ## CSS States
57310
57472
  *
@@ -59731,11 +59893,11 @@ export type CustomCssProperties = {
59731
59893
  "--slider-track-size"?: (string) | undefined;
59732
59894
  /** The value as a fraction of the range, 0 to 1. */
59733
59895
  "--slider-fraction"?: (string) | undefined;
59734
- /** Where the filled span starts, as a percentage of the track. */
59896
+ /** Where a range's filled span starts, as a fraction of the track, 0 to 1. */
59735
59897
  "--slider-from"?: (string) | undefined;
59736
59898
  /** Where one marker sits, as a percentage of the track. */
59737
59899
  "--slider-marker-at"?: (string) | undefined;
59738
- /** Where the filled span ends, as a percentage of the track. */
59900
+ /** Where a range's filled span ends, as a fraction of the track, 0 to 1. */
59739
59901
  "--slider-to"?: (string) | undefined;
59740
59902
  /** How much of the line's color the wash takes where it meets the line. */
59741
59903
  "--sparkline-area-opacity"?: (string) | undefined;
package/types/vue.d.ts CHANGED
@@ -6233,15 +6233,27 @@ Written by the listbox. */
6233
6233
 
6234
6234
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
6235
6235
  live state that does not reflect, and those are two different facts. This
6236
- element has one `selected` doing both jobs, so what is captured here is what
6237
- the markup said at upgrade, before anything could overwrite it: read the
6238
- attribute later and the listbox's own writes answer instead.
6239
-
6240
- **The deeper half is 302 and is not this.** State reflecting under the
6241
- declaration's name is the fault `TreeItem` already avoids by mirroring to
6242
- `data-selected`, and four families here still write `selected` back into a
6243
- consumer's markup. Splitting them means moving what every stylesheet selects
6244
- on, which is a change of its own rather than a property being added. */
6236
+ element has one `selected` doing both jobs, so the declaration is the
6237
+ attribute and the state is the property.
6238
+
6239
+ **The attribute, read when it is asked for, and never a snapshot taken in
6240
+ the constructor.** A field initializer runs there, and an element the HTML
6241
+ parser created has none of its attributes yet at that moment: measured on
6242
+ this element, on `Radio` and on `Toggle`, `<helix-option value="a"
6243
+ selected>` reported `defaultSelected` as `false` both from parsed markup
6244
+ and from `createElement` followed by `setAttribute`, which is every way a
6245
+ consumer writes one. The snapshot could only ever be true for an element
6246
+ already in the document when `customElements.define` ran.
6247
+
6248
+ Nothing overwrites it either, which is what makes reading it late correct
6249
+ rather than merely later: `selected` does not reflect, for the reason
6250
+ `willUpdate` records, so the listbox's writes never reach the attribute and
6251
+ what it says is what the markup said.
6252
+
6253
+ **The deeper half is not this.** State reflecting under the declaration's
6254
+ name is the fault `TreeItem` avoids by mirroring to `data-selected`.
6255
+ Splitting them means moving what every stylesheet selects on, which is a
6256
+ change of its own rather than a property being added. */
6245
6257
  defaultSelected?: (HelixOption["defaultSelected"]) | undefined;
6246
6258
  };
6247
6259
 
@@ -6995,9 +7007,22 @@ Written by the group. */
6995
7007
 
6996
7008
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
6997
7009
  live state that does not reflect, and those are two different facts. This
6998
- element has one `selected` doing both jobs, so what is captured here is what
6999
- the markup said at upgrade, before anything could overwrite it: read the
7000
- attribute later and the listbox's own writes answer instead.
7010
+ element has one `selected` doing both jobs, so the declaration is the
7011
+ attribute and the state is the property.
7012
+
7013
+ **The attribute, read when it is asked for, and never a snapshot taken in
7014
+ the constructor.** A field initializer runs there, and an element the HTML
7015
+ parser created has none of its attributes yet at that moment: measured on
7016
+ this element, on `Option` and on `Toggle`, `<helix-radio value="a"
7017
+ selected>` reported `defaultSelected` as `false` both from parsed markup
7018
+ and from `createElement` followed by `setAttribute`, which is every way a
7019
+ consumer writes one. The snapshot could only ever be true for an element
7020
+ already in the document when `customElements.define` ran.
7021
+
7022
+ Nothing overwrites it either, which is what makes reading it late correct
7023
+ rather than merely later: `selected` does not reflect, for the reason
7024
+ `willUpdate` records, so the group's writes never reach the attribute and
7025
+ what it says is what the markup said.
7001
7026
 
7002
7027
  **The deeper half is not this.** State reflecting under the declaration's
7003
7028
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -9390,9 +9415,22 @@ export type HelixToggleVueProps = {
9390
9415
 
9391
9416
  `<option selected>` reflects to `defaultSelected` and `option.selected` is
9392
9417
  live state that does not reflect, and those are two different facts. This
9393
- element has one `selected` doing both jobs, so what is captured here is what
9394
- the markup said at upgrade, before anything could overwrite it: read the
9395
- attribute later and the listbox's own writes answer instead.
9418
+ element has one `selected` doing both jobs, so the declaration is the
9419
+ attribute and the state is the property.
9420
+
9421
+ **The attribute, read when it is asked for, and never a snapshot taken in
9422
+ the constructor.** A field initializer runs there, and an element the HTML
9423
+ parser created has none of its attributes yet at that moment: measured on
9424
+ this element, on `Option` and on `Radio`, `<helix-toggle value="light"
9425
+ selected>` reported `defaultSelected` as `false` both from parsed markup
9426
+ and from `createElement` followed by `setAttribute`, which is every way a
9427
+ consumer writes one. The snapshot could only ever be true for an element
9428
+ already in the document when `customElements.define` ran.
9429
+
9430
+ Nothing overwrites it either, which is what makes reading it late correct
9431
+ rather than merely later: `selected` does not reflect, for the reason
9432
+ `willUpdate` records, so the group's writes never reach the attribute and
9433
+ what it says is what the markup said.
9396
9434
 
9397
9435
  **The deeper half is not this.** State reflecting under the declaration's
9398
9436
  name is the fault `TreeItem` avoids by mirroring to `data-selected`.
@@ -11157,11 +11195,11 @@ export type CustomCssProperties = {
11157
11195
  "--slider-track-size"?: (string) | undefined;
11158
11196
  /** The value as a fraction of the range, 0 to 1. */
11159
11197
  "--slider-fraction"?: (string) | undefined;
11160
- /** Where the filled span starts, as a percentage of the track. */
11198
+ /** Where a range's filled span starts, as a fraction of the track, 0 to 1. */
11161
11199
  "--slider-from"?: (string) | undefined;
11162
11200
  /** Where one marker sits, as a percentage of the track. */
11163
11201
  "--slider-marker-at"?: (string) | undefined;
11164
- /** Where the filled span ends, as a percentage of the track. */
11202
+ /** Where a range's filled span ends, as a fraction of the track, 0 to 1. */
11165
11203
  "--slider-to"?: (string) | undefined;
11166
11204
  /** How much of the line's color the wash takes where it meets the line. */
11167
11205
  "--sparkline-area-opacity"?: (string) | undefined;
@@ -11561,7 +11599,7 @@ export interface WcToolkitVueGlobalComponents {
11561
11599
  HelixDateInputVueProps,
11562
11600
  HelixDateInputVueEvents
11563
11601
  >;
11564
- /** Six week rows always, so the grid keeps one height and a month change does not move whatever sits beneath it. The column track is wider than the day, and the day is centered in it. The difference is the space between days, which belongs to the track rather than to a 'gap', so a range can paint across the whole track and stay continuous. Days from the neighboring months stay in place and stay selectable, marked quieter rather than hidden, so the first and last weeks are whole and the grid reads as a continuous run of dates. */
11602
+ /** Six week rows always, so the grid keeps one height and a month change does not move whatever sits beneath it. The column track is wider than the day, and the day is centered in it. The difference is the space between days, which belongs to the track rather than to a 'gap', so a range can paint across the whole track and stay continuous. Days from the neighboring months stay in place, marked quieter rather than hidden, so the first and last weeks are whole rows rather than ragged ones. They are filler and take no click, which the pointer says: no hover, and the cursor a box that does nothing has. At 'months="2"' the same date is a trailing cell in one grid and a real one in the next, so a filler day that could be chosen would put one answer on the page twice. */
11565
11603
  "helix-date-picker": DefineCustomElement<
11566
11604
  HelixDatePicker,
11567
11605
  HelixDatePickerVueProps,