@fusion.dev/helix-headless 0.53.5 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +8 -44
- package/dist/color-picker/root/color-picker-root.d.ts +5 -2
- package/dist/color-picker/root/color-picker-root.js +0 -1
- package/dist/legend/root/legend-root.d.ts +4 -2
- package/dist/legend/root/legend-root.js +0 -1
- package/dist/radio/root/radio-root.d.ts +4 -2
- package/dist/radio/root/radio-root.js +1 -1
- package/dist/steps/step/step.d.ts +7 -2
- package/dist/steps/step/step.js +1 -3
- package/dist/switch/root/switch-root.d.ts +5 -2
- package/dist/switch/root/switch-root.js +0 -1
- package/dist/timeline/item/timeline-item.d.ts +5 -2
- package/dist/timeline/item/timeline-item.js +0 -4
- package/dist/toggle/group/toggle-group.d.ts +5 -2
- package/dist/toggle/group/toggle-group.js +1 -1
- package/dist/video/root/video-root.d.ts +4 -1
- package/dist/video/root/video-root.js +0 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +28 -32
- package/types/vue.d.ts +1 -1
package/custom-elements.json
CHANGED
|
@@ -19169,17 +19169,13 @@
|
|
|
19169
19169
|
"name": "format-button"
|
|
19170
19170
|
},
|
|
19171
19171
|
{
|
|
19172
|
-
"description": "The saturation and brightness square.",
|
|
19172
|
+
"description": "The saturation and brightness square. The mark showing where in the square the color sits is drawn on the square itself, which is `::part(grid)::after` from a consumer's sheet: the two channels are already on the square as `--color-picker-saturation` and `--color-picker-brightness`, so a box would have carried nothing, and this tier ships no CSS.",
|
|
19173
19173
|
"name": "grid"
|
|
19174
19174
|
},
|
|
19175
19175
|
{
|
|
19176
19176
|
"description": "The range input for its vertical axis.",
|
|
19177
19177
|
"name": "grid-brightness"
|
|
19178
19178
|
},
|
|
19179
|
-
{
|
|
19180
|
-
"description": "The mark showing where in the square the color sits.",
|
|
19181
|
-
"name": "grid-handle"
|
|
19182
|
-
},
|
|
19183
19179
|
{
|
|
19184
19180
|
"description": "The range input for the square's horizontal axis.",
|
|
19185
19181
|
"name": "grid-saturation"
|
|
@@ -49308,7 +49304,7 @@
|
|
|
49308
49304
|
"name": "HelixHeadlessLegend",
|
|
49309
49305
|
"cssParts": [
|
|
49310
49306
|
{
|
|
49311
|
-
"description": "One name and its swatch.",
|
|
49307
|
+
"description": "One name and its swatch. The swatch is drawn on the entry, which is `::part(entry)::before` from a consumer's sheet: the series is already on the entry as `--chart-series`, so a box would have carried nothing, and this tier ships no CSS.",
|
|
49312
49308
|
"name": "entry"
|
|
49313
49309
|
},
|
|
49314
49310
|
{
|
|
@@ -49318,10 +49314,6 @@
|
|
|
49318
49314
|
{
|
|
49319
49315
|
"description": "One series name.",
|
|
49320
49316
|
"name": "name"
|
|
49321
|
-
},
|
|
49322
|
-
{
|
|
49323
|
-
"description": "The color a series is drawn in.",
|
|
49324
|
-
"name": "swatch"
|
|
49325
49317
|
}
|
|
49326
49318
|
],
|
|
49327
49319
|
"members": [
|
|
@@ -71873,7 +71865,7 @@
|
|
|
71873
71865
|
"name": "HelixHeadlessRadio",
|
|
71874
71866
|
"cssParts": [
|
|
71875
71867
|
{
|
|
71876
|
-
"description": "The circle.",
|
|
71868
|
+
"description": "The circle. The dot inside it is drawn on the box itself, which is `::part(box)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.",
|
|
71877
71869
|
"name": "box"
|
|
71878
71870
|
},
|
|
71879
71871
|
{
|
|
@@ -71883,10 +71875,6 @@
|
|
|
71883
71875
|
{
|
|
71884
71876
|
"description": "The words beside it.",
|
|
71885
71877
|
"name": "label"
|
|
71886
|
-
},
|
|
71887
|
-
{
|
|
71888
|
-
"description": "The dot inside it.",
|
|
71889
|
-
"name": "mark"
|
|
71890
71878
|
}
|
|
71891
71879
|
],
|
|
71892
71880
|
"slots": [
|
|
@@ -83878,7 +83866,7 @@
|
|
|
83878
83866
|
"declarations": [
|
|
83879
83867
|
{
|
|
83880
83868
|
"kind": "class",
|
|
83881
|
-
"description": "**The name is a button, and only the name.** The marker is `aria-hidden`\ndecoration, so wrapping it would add hit area and no meaning. It is `Button`\nrather than a `<button>` this element resets: the hover wash, the focus ring\nand the disabled treatment are decisions the button carries.\n\n**It says nothing about where a reader may go.** Every step is pressable and\nannounces itself with `helix-select`; refusing the ones ahead is `disabled`,\nwhich the consumer sets, because only they know whether a form can be\nskipped.\n\n**The marker is a slot whose fallback is the state.** A finished stage shows\na check, the current one a target, one not yet reached an empty ring. Exactly\none is rendered, chosen from the step's own two booleans, rather than three\nwith two hidden in CSS: the accessibility tree would otherwise carry marks\nthat are not there.",
|
|
83869
|
+
"description": "**The name is a button, and only the name.** The marker is `aria-hidden`\ndecoration, so wrapping it would add hit area and no meaning. It is `Button`\nrather than a `<button>` this element resets: the hover wash, the focus ring\nand the disabled treatment are decisions the button carries.\n\n**It says nothing about where a reader may go.** Every step is pressable and\nannounces itself with `helix-select`; refusing the ones ahead is `disabled`,\nwhich the consumer sets, because only they know whether a form can be\nskipped.\n\n**The marker is a slot whose fallback is the state.** A finished stage shows\na check, the current one a target, one not yet reached an empty ring. Exactly\none is rendered, chosen from the step's own two booleans, rather than three\nwith two hidden in CSS: the accessibility tree would otherwise carry marks\nthat are not there.\n\n**The two half lines either side of the mark are a sheet's, on `::before` and\n`::after` of the step.** Both are placed entirely from properties the list\nhands down, so there was nothing about them for a box to carry, and this tier\nships no CSS: a box it rendered for one to paint would be an empty child\ncosting whatever the consumer's own layout charges for a child. `ListItem`\nmeasured that.",
|
|
83882
83870
|
"name": "HelixHeadlessStep",
|
|
83883
83871
|
"cssParts": [
|
|
83884
83872
|
{
|
|
@@ -83901,10 +83889,6 @@
|
|
|
83901
83889
|
"description": "The inner control.",
|
|
83902
83890
|
"name": "label-button"
|
|
83903
83891
|
},
|
|
83904
|
-
{
|
|
83905
|
-
"description": "The half line arriving from the step before.",
|
|
83906
|
-
"name": "lead"
|
|
83907
|
-
},
|
|
83908
83892
|
{
|
|
83909
83893
|
"description": "The glyph inside the marker: a tick, a dot, or an empty ring.",
|
|
83910
83894
|
"name": "mark"
|
|
@@ -83912,10 +83896,6 @@
|
|
|
83912
83896
|
{
|
|
83913
83897
|
"description": "The shape carrying the number or the check.",
|
|
83914
83898
|
"name": "marker"
|
|
83915
|
-
},
|
|
83916
|
-
{
|
|
83917
|
-
"description": "The half line running on to the next.",
|
|
83918
|
-
"name": "trail"
|
|
83919
83899
|
}
|
|
83920
83900
|
],
|
|
83921
83901
|
"slots": [
|
|
@@ -84484,11 +84464,7 @@
|
|
|
84484
84464
|
"name": "label"
|
|
84485
84465
|
},
|
|
84486
84466
|
{
|
|
84487
|
-
"description": "The
|
|
84488
|
-
"name": "thumb"
|
|
84489
|
-
},
|
|
84490
|
-
{
|
|
84491
|
-
"description": "The groove the thumb travels in.",
|
|
84467
|
+
"description": "The groove. The thumb that travels in it is drawn on the groove itself, which is `::part(track)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.",
|
|
84492
84468
|
"name": "track"
|
|
84493
84469
|
}
|
|
84494
84470
|
],
|
|
@@ -95705,10 +95681,6 @@
|
|
|
95705
95681
|
"description": "**The time is a `<time>`, and only when there is a time to put in it.** Given\n`datetime`, the label a consumer wrote is wrapped in the element the platform\nhas for exactly this, so the machine-readable instant travels with the human\none: a crawler, a reader's own tooling and a copy-paste all get \"2026-08-19\",\nwhere \"yesterday\" on its own is a word. Given no `datetime`, it stays a span,\nbecause a `<time>` with nothing to be precise about is markup pretending.\n\n**The connector is this element's, not the list's.** Each entry draws the line\nthat arrives at it and hides it when it is first, which `:host(:first-child)`\nsettles with no index, no counting parent and no script. `Steps` and\n`Breadcrumbs` both do it this way and for the same reason.\n\n`tone` says what kind of event it was, and it is the only thing that colors\nthe mark. It takes `Announcement`'s vocabulary rather than a second one.",
|
|
95706
95682
|
"name": "HelixHeadlessTimelineItem",
|
|
95707
95683
|
"cssParts": [
|
|
95708
|
-
{
|
|
95709
|
-
"description": "The line arriving at this entry.",
|
|
95710
|
-
"name": "connector"
|
|
95711
|
-
},
|
|
95712
95684
|
{
|
|
95713
95685
|
"description": "What happened, and the time above it.",
|
|
95714
95686
|
"name": "content"
|
|
@@ -95722,7 +95694,7 @@
|
|
|
95722
95694
|
"name": "marker"
|
|
95723
95695
|
},
|
|
95724
95696
|
{
|
|
95725
|
-
"description": "The column holding the mark and the line.",
|
|
95697
|
+
"description": "The column holding the mark and the line. Both halves of the line are drawn on the rail, which is `::part(rail)::before` and `::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.",
|
|
95726
95698
|
"name": "rail"
|
|
95727
95699
|
},
|
|
95728
95700
|
{
|
|
@@ -97796,10 +97768,6 @@
|
|
|
97796
97768
|
"description": "The indicator is one element that travels, not a background that appears on\nwhichever item is current. A fill that swaps is two things changing at once\nand reads as a flicker; one that moves is a single object the eye follows,\nand it says where the selection came from as well as where it went.\n\nIts box is measured from the selected item and written onto the indicator as\ncustom properties, labels being different lengths. Measurement is client-side\nby necessity, so the server renders the indicator hidden and it fades in once\nit has somewhere to be, which is the harmless direction.",
|
|
97797
97769
|
"name": "HelixHeadlessToggleGroup",
|
|
97798
97770
|
"cssParts": [
|
|
97799
|
-
{
|
|
97800
|
-
"description": "The rule after an inline label, separating it from the items.",
|
|
97801
|
-
"name": "divider"
|
|
97802
|
-
},
|
|
97803
97771
|
{
|
|
97804
97772
|
"description": "What is wrong with it.",
|
|
97805
97773
|
"name": "feedback"
|
|
@@ -97821,7 +97789,7 @@
|
|
|
97821
97789
|
"name": "row"
|
|
97822
97790
|
},
|
|
97823
97791
|
{
|
|
97824
|
-
"description": "The bar the items sit in.",
|
|
97792
|
+
"description": "The bar the items sit in. The rule after an inline label, separating it from the items, is drawn on the bar, which is `::part(track)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.",
|
|
97825
97793
|
"name": "track"
|
|
97826
97794
|
}
|
|
97827
97795
|
],
|
|
@@ -107374,13 +107342,9 @@
|
|
|
107374
107342
|
"name": "fullscreen"
|
|
107375
107343
|
},
|
|
107376
107344
|
{
|
|
107377
|
-
"description": "What is said while the picture waits for more of itself.",
|
|
107345
|
+
"description": "What is said while the picture waits for more of itself. The part of that which spins is drawn on it, which is `::part(loading)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.",
|
|
107378
107346
|
"name": "loading"
|
|
107379
107347
|
},
|
|
107380
|
-
{
|
|
107381
|
-
"description": "The part of that which spins.",
|
|
107382
|
-
"name": "loading-mark"
|
|
107383
|
-
},
|
|
107384
107348
|
{
|
|
107385
107349
|
"description": "The button that opens it.",
|
|
107386
107350
|
"name": "more"
|
|
@@ -57,9 +57,12 @@ declare const HelixHeadlessColorPicker_base: (new (...args: any[]) => import("@f
|
|
|
57
57
|
* @csspart footer - The row holding the value and the tools.
|
|
58
58
|
* @csspart format - The control that changes the syntax the value is written in.
|
|
59
59
|
* @csspart format-button - The inner control.
|
|
60
|
-
* @csspart grid - The saturation and brightness square.
|
|
60
|
+
* @csspart grid - The saturation and brightness square. The mark showing where
|
|
61
|
+
* in the square the color sits is drawn on the square itself, which is
|
|
62
|
+
* `::part(grid)::after` from a consumer's sheet: the two channels are already
|
|
63
|
+
* on the square as `--color-picker-saturation` and `--color-picker-brightness`,
|
|
64
|
+
* so a box would have carried nothing, and this tier ships no CSS.
|
|
61
65
|
* @csspart grid-brightness - The range input for its vertical axis.
|
|
62
|
-
* @csspart grid-handle - The mark showing where in the square the color sits.
|
|
63
66
|
* @csspart grid-saturation - The range input for the square's horizontal axis.
|
|
64
67
|
* @csspart sample - The chip of the current color, which copies it when pressed.
|
|
65
68
|
* @csspart swatch - One preset.
|
|
@@ -234,7 +234,6 @@ let HelixHeadlessColorPicker = class HelixHeadlessColorPicker extends MixinContr
|
|
|
234
234
|
@pointerdown=${this.handleGridPointer}
|
|
235
235
|
@pointermove=${this.handleGridPointer}
|
|
236
236
|
>
|
|
237
|
-
<span part="grid-handle" aria-hidden="true"></span>
|
|
238
237
|
<input
|
|
239
238
|
part="grid-saturation"
|
|
240
239
|
type="range"
|
|
@@ -22,10 +22,12 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
22
22
|
* @aliases Key, Series Key
|
|
23
23
|
* @documentation https://fusion.dev/helix/components/legend
|
|
24
24
|
*
|
|
25
|
-
* @csspart entry - One name and its swatch.
|
|
25
|
+
* @csspart entry - One name and its swatch. The swatch is drawn on the entry,
|
|
26
|
+
* which is `::part(entry)::before` from a consumer's sheet: the series is
|
|
27
|
+
* already on the entry as `--chart-series`, so a box would have carried nothing,
|
|
28
|
+
* and this tier ships no CSS.
|
|
26
29
|
* @csspart list - The list itself.
|
|
27
30
|
* @csspart name - One series name.
|
|
28
|
-
* @csspart swatch - The color a series is drawn in.
|
|
29
31
|
*/
|
|
30
32
|
export declare class HelixHeadlessLegend extends HelixElement {
|
|
31
33
|
/**
|
|
@@ -33,7 +33,6 @@ let HelixHeadlessLegend = class HelixHeadlessLegend extends HelixElement {
|
|
|
33
33
|
style="--chart-series: var(--chart-series-${seriesIndex(index)})"
|
|
34
34
|
role="listitem"
|
|
35
35
|
>
|
|
36
|
-
<span aria-hidden="true" part="swatch"></span>
|
|
37
36
|
<span part="name">${name}</span>
|
|
38
37
|
</li>`)}
|
|
39
38
|
</ul>`;
|
|
@@ -35,10 +35,12 @@ declare const HelixHeadlessRadio_base: (new (...args: any[]) => import("@fusion.
|
|
|
35
35
|
*
|
|
36
36
|
* @event {HelixSelectEvent} helix-select - Fired when this choice is made. Cancelable: refusing it takes the decision and nothing moves.
|
|
37
37
|
*
|
|
38
|
-
* @csspart box - The circle.
|
|
38
|
+
* @csspart box - The circle. The dot inside it is drawn on the box itself,
|
|
39
|
+
* which is `::part(box)::after` from a consumer's sheet: this tier ships no CSS,
|
|
40
|
+
* so a box it renders for one to paint is an empty child costing whatever the
|
|
41
|
+
* consumer's own layout charges for a child. `ListItem` measured that.
|
|
39
42
|
* @csspart item - The button, which is the whole row.
|
|
40
43
|
* @csspart label - The words beside it.
|
|
41
|
-
* @csspart mark - The dot inside it.
|
|
42
44
|
*
|
|
43
45
|
* @cssstate selected - While it is the one chosen.
|
|
44
46
|
*/
|
|
@@ -32,7 +32,7 @@ let HelixHeadlessRadio = class HelixHeadlessRadio extends MixinSelectableItem(He
|
|
|
32
32
|
tabindex=${this.selected || this.focusable || !this.childrenKnown ? '0' : '-1'}
|
|
33
33
|
@click=${() => this.select()}
|
|
34
34
|
>
|
|
35
|
-
<span part="box"
|
|
35
|
+
<span part="box"></span>
|
|
36
36
|
<slot name="icon"></slot>
|
|
37
37
|
<span part="label"><slot></slot></span>
|
|
38
38
|
</button>`;
|
|
@@ -21,6 +21,13 @@ import '../../button/index.js';
|
|
|
21
21
|
* with two hidden in CSS: the accessibility tree would otherwise carry marks
|
|
22
22
|
* that are not there.
|
|
23
23
|
*
|
|
24
|
+
* **The two half lines either side of the mark are a sheet's, on `::before` and
|
|
25
|
+
* `::after` of the step.** Both are placed entirely from properties the list
|
|
26
|
+
* hands down, so there was nothing about them for a box to carry, and this tier
|
|
27
|
+
* ships no CSS: a box it rendered for one to paint would be an empty child
|
|
28
|
+
* costing whatever the consumer's own layout charges for a child. `ListItem`
|
|
29
|
+
* measured that.
|
|
30
|
+
*
|
|
24
31
|
* @since 0.1.0
|
|
25
32
|
* @status stable
|
|
26
33
|
* @aliases Stage
|
|
@@ -38,10 +45,8 @@ import '../../button/index.js';
|
|
|
38
45
|
* @csspart description - The line under it.
|
|
39
46
|
* @csspart label - The step's name, which is a control.
|
|
40
47
|
* @csspart label-button - The inner control.
|
|
41
|
-
* @csspart lead - The half line arriving from the step before.
|
|
42
48
|
* @csspart mark - The glyph inside the marker: a tick, a dot, or an empty ring.
|
|
43
49
|
* @csspart marker - The shape carrying the number or the check.
|
|
44
|
-
* @csspart trail - The half line running on to the next.
|
|
45
50
|
*/
|
|
46
51
|
export declare class HelixHeadlessStep extends HelixElement {
|
|
47
52
|
/**
|
package/dist/steps/step/step.js
CHANGED
|
@@ -49,9 +49,7 @@ let HelixHeadlessStep = class HelixHeadlessStep extends HelixElement {
|
|
|
49
49
|
</${this.tag('button')}>`;
|
|
50
50
|
}
|
|
51
51
|
render() {
|
|
52
|
-
return html `<span part="
|
|
53
|
-
<span part="trail" aria-hidden="true"></span>
|
|
54
|
-
<span part="marker" aria-hidden="true">
|
|
52
|
+
return html `<span part="marker" aria-hidden="true">
|
|
55
53
|
${this.renderMarker()}
|
|
56
54
|
</span>
|
|
57
55
|
<span part="body">
|
|
@@ -38,8 +38,11 @@ declare const HelixHeadlessSwitch_base: (new (...args: any[]) => import("@fusion
|
|
|
38
38
|
* @csspart field - The row: the track and its label.
|
|
39
39
|
* @csspart hint - Help under the control, while nothing is wrong.
|
|
40
40
|
* @csspart label - The words beside it.
|
|
41
|
-
* @csspart
|
|
42
|
-
*
|
|
41
|
+
* @csspart track - The groove. The thumb that travels in it is drawn on the
|
|
42
|
+
* groove itself, which is `::part(track)::after` from a consumer's sheet: this
|
|
43
|
+
* tier ships no CSS, so a box it renders for one to paint is an empty child
|
|
44
|
+
* costing whatever the consumer's own layout charges for a child. `ListItem`
|
|
45
|
+
* measured that.
|
|
43
46
|
*
|
|
44
47
|
* @cssstate checked - While it is on.
|
|
45
48
|
* @cssstate invalid - While there is feedback to show: the platform's verdict, or the consumer's `feedback`.
|
|
@@ -54,7 +54,6 @@ let HelixHeadlessSwitch = class HelixHeadlessSwitch extends MixinControllerCheck
|
|
|
54
54
|
@change=${this.handleChange}
|
|
55
55
|
@input=${this.stopInner}
|
|
56
56
|
/>
|
|
57
|
-
<span part="thumb" aria-hidden="true"></span>
|
|
58
57
|
</span>
|
|
59
58
|
<span part="label"><slot>${this.label}</slot></span>
|
|
60
59
|
</label>
|
|
@@ -31,11 +31,14 @@ import { type PropertyValues, type TemplateResult } from 'lit';
|
|
|
31
31
|
* platform can answer, and it answers it at assignment time.
|
|
32
32
|
* @slot time - When it happened, as a reader should see it written.
|
|
33
33
|
*
|
|
34
|
-
* @csspart connector - The line arriving at this entry.
|
|
35
34
|
* @csspart content - What happened, and the time above it.
|
|
36
35
|
* @csspart dot - The mark drawn where nothing was slotted for one.
|
|
37
36
|
* @csspart marker - The mark on the line.
|
|
38
|
-
* @csspart rail - The column holding the mark and the line.
|
|
37
|
+
* @csspart rail - The column holding the mark and the line. Both halves of the
|
|
38
|
+
* line are drawn on the rail, which is `::part(rail)::before` and `::after` from
|
|
39
|
+
* a consumer's sheet: this tier ships no CSS, so a box it renders for one to
|
|
40
|
+
* paint is an empty child costing whatever the consumer's own layout charges for
|
|
41
|
+
* a child. `ListItem` measured that.
|
|
39
42
|
* @csspart time - When it happened.
|
|
40
43
|
*/
|
|
41
44
|
export declare class HelixHeadlessTimelineItem extends HelixElement {
|
|
@@ -31,10 +31,6 @@ let HelixHeadlessTimelineItem = class HelixHeadlessTimelineItem extends HelixEle
|
|
|
31
31
|
render() {
|
|
32
32
|
const when = html `<slot name="time"></slot>`;
|
|
33
33
|
return html `<div part="rail">
|
|
34
|
-
<div
|
|
35
|
-
part="connector"
|
|
36
|
-
aria-hidden="true"
|
|
37
|
-
></div>
|
|
38
34
|
${this.renderMarker()}
|
|
39
35
|
</div>
|
|
40
36
|
${this.datetime === ''
|
|
@@ -29,13 +29,16 @@ declare const HelixHeadlessToggleGroup_base: (new (...args: any[]) => import("@f
|
|
|
29
29
|
* @event {HelixSelectEvent} helix-select - Fired when an item is chosen. Dispatched by the item and listened for here. Cancelable: refusing it takes the decision and nothing moves.
|
|
30
30
|
* @event {Event} input - Announced once the value has moved.
|
|
31
31
|
*
|
|
32
|
-
* @csspart divider - The rule after an inline label, separating it from the items.
|
|
33
32
|
* @csspart feedback - What is wrong with it.
|
|
34
33
|
* @csspart hint - Help under the row, while nothing is wrong.
|
|
35
34
|
* @csspart indicator - The moving marker behind the selected item.
|
|
36
35
|
* @csspart label - The question, over the row.
|
|
37
36
|
* @csspart row - The line the track sits on, with whatever flanks it.
|
|
38
|
-
* @csspart track - The bar the items sit in.
|
|
37
|
+
* @csspart track - The bar the items sit in. The rule after an inline label,
|
|
38
|
+
* separating it from the items, is drawn on the bar, which is
|
|
39
|
+
* `::part(track)::before` from a consumer's sheet: this tier ships no CSS, so a
|
|
40
|
+
* box it renders for one to paint is an empty child costing whatever the
|
|
41
|
+
* consumer's own layout charges for a child. `ListItem` measured that.
|
|
39
42
|
*
|
|
40
43
|
* @cssstate invalid - While there is feedback to show: the platform's verdict, or the consumer's `feedback`.
|
|
41
44
|
*/
|
|
@@ -83,7 +83,7 @@ let HelixHeadlessToggleGroup = class HelixHeadlessToggleGroup extends MixinContr
|
|
|
83
83
|
<div part="row">
|
|
84
84
|
<slot name="start"></slot>
|
|
85
85
|
<div part="track">
|
|
86
|
-
${inside ?
|
|
86
|
+
${inside ? label : nothing}
|
|
87
87
|
<div part="indicator" aria-hidden="true"></div>
|
|
88
88
|
<slot
|
|
89
89
|
@slotchange=${() => {
|
|
@@ -69,7 +69,10 @@ import '../../menu/index.js';
|
|
|
69
69
|
* @csspart forward - The control that goes on ten seconds.
|
|
70
70
|
* @csspart fullscreen - The whole screen, and back.
|
|
71
71
|
* @csspart loading - What is said while the picture waits for more of itself.
|
|
72
|
-
*
|
|
72
|
+
* The part of that which spins is drawn on it, which is `::part(loading)::before`
|
|
73
|
+
* from a consumer's sheet: this tier ships no CSS, so a box it renders for one to
|
|
74
|
+
* paint is an empty child costing whatever the consumer's own layout charges for
|
|
75
|
+
* a child. `ListItem` measured that.
|
|
73
76
|
* @csspart more - The button that opens it.
|
|
74
77
|
* @csspart mute - Sound on and off.
|
|
75
78
|
* @csspart next - Asks for the next item, where it was asked for.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix-headless",
|
|
3
3
|
"description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.54.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
},
|
|
47
47
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@fusion.dev/helix-core": "0.
|
|
50
|
-
"@fusion.dev/helix-icons": "0.
|
|
49
|
+
"@fusion.dev/helix-core": "0.54.0",
|
|
50
|
+
"@fusion.dev/helix-icons": "0.54.0",
|
|
51
51
|
"uqr": "^0.1.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
55
|
-
"@fusion.dev/helix-cem": "0.
|
|
56
|
-
"@fusion.dev/helix-testing": "0.
|
|
55
|
+
"@fusion.dev/helix-cem": "0.54.0",
|
|
56
|
+
"@fusion.dev/helix-testing": "0.54.0",
|
|
57
57
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
58
58
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
59
59
|
"@lit-labs/ssr": "^4.1.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -21284,9 +21284,8 @@ export type CustomElements = {
|
|
|
21284
21284
|
* - `footer`: The row holding the value and the tools.
|
|
21285
21285
|
* - `format`: The control that changes the syntax the value is written in.
|
|
21286
21286
|
* - `format-button`: The inner control.
|
|
21287
|
-
* - `grid`: The saturation and brightness square.
|
|
21287
|
+
* - `grid`: The saturation and brightness square. The mark showing where in the square the color sits is drawn on the square itself, which is `::part(grid)::after` from a consumer's sheet: the two channels are already on the square as `--color-picker-saturation` and `--color-picker-brightness`, so a box would have carried nothing, and this tier ships no CSS.
|
|
21288
21288
|
* - `grid-brightness`: The range input for its vertical axis.
|
|
21289
|
-
* - `grid-handle`: The mark showing where in the square the color sits.
|
|
21290
21289
|
* - `grid-saturation`: The range input for the square's horizontal axis.
|
|
21291
21290
|
* - `sample`: The chip of the current color, which copies it when pressed.
|
|
21292
21291
|
* - `swatch`: One preset.
|
|
@@ -25954,10 +25953,9 @@ export type CustomElements = {
|
|
|
25954
25953
|
*
|
|
25955
25954
|
* Custom selectors for styling elements within the component.
|
|
25956
25955
|
*
|
|
25957
|
-
* - `entry`: One name and its swatch.
|
|
25956
|
+
* - `entry`: One name and its swatch. The swatch is drawn on the entry, which is `::part(entry)::before` from a consumer's sheet: the series is already on the entry as `--chart-series`, so a box would have carried nothing, and this tier ships no CSS.
|
|
25958
25957
|
* - `list`: The list itself.
|
|
25959
25958
|
* - `name`: One series name.
|
|
25960
|
-
* - `swatch`: The color a series is drawn in.
|
|
25961
25959
|
*
|
|
25962
25960
|
* ## CSS States
|
|
25963
25961
|
*
|
|
@@ -29807,10 +29805,9 @@ export type CustomElements = {
|
|
|
29807
29805
|
*
|
|
29808
29806
|
* Custom selectors for styling elements within the component.
|
|
29809
29807
|
*
|
|
29810
|
-
* - `box`: The circle.
|
|
29808
|
+
* - `box`: The circle. The dot inside it is drawn on the box itself, which is `::part(box)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
29811
29809
|
* - `item`: The button, which is the whole row.
|
|
29812
29810
|
* - `label`: The words beside it.
|
|
29813
|
-
* - `mark`: The dot inside it.
|
|
29814
29811
|
*
|
|
29815
29812
|
* ## CSS States
|
|
29816
29813
|
*
|
|
@@ -31717,6 +31714,13 @@ export type CustomElements = {
|
|
|
31717
31714
|
* with two hidden in CSS: the accessibility tree would otherwise carry marks
|
|
31718
31715
|
* that are not there.
|
|
31719
31716
|
*
|
|
31717
|
+
* **The two half lines either side of the mark are a sheet's, on `::before` and
|
|
31718
|
+
* `::after` of the step.** Both are placed entirely from properties the list
|
|
31719
|
+
* hands down, so there was nothing about them for a box to carry, and this tier
|
|
31720
|
+
* ships no CSS: a box it rendered for one to paint would be an empty child
|
|
31721
|
+
* costing whatever the consumer's own layout charges for a child. `ListItem`
|
|
31722
|
+
* measured that.
|
|
31723
|
+
*
|
|
31720
31724
|
* ## Attributes & Properties
|
|
31721
31725
|
*
|
|
31722
31726
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -31776,10 +31780,8 @@ export type CustomElements = {
|
|
|
31776
31780
|
* - `description`: The line under it.
|
|
31777
31781
|
* - `label`: The step's name, which is a control.
|
|
31778
31782
|
* - `label-button`: The inner control.
|
|
31779
|
-
* - `lead`: The half line arriving from the step before.
|
|
31780
31783
|
* - `mark`: The glyph inside the marker: a tick, a dot, or an empty ring.
|
|
31781
31784
|
* - `marker`: The shape carrying the number or the check.
|
|
31782
|
-
* - `trail`: The half line running on to the next.
|
|
31783
31785
|
*
|
|
31784
31786
|
* ## CSS States
|
|
31785
31787
|
*
|
|
@@ -31957,8 +31959,7 @@ export type CustomElements = {
|
|
|
31957
31959
|
* - `field`: The row: the track and its label.
|
|
31958
31960
|
* - `hint`: Help under the control, while nothing is wrong.
|
|
31959
31961
|
* - `label`: The words beside it.
|
|
31960
|
-
* - `
|
|
31961
|
-
* - `track`: The groove the thumb travels in.
|
|
31962
|
+
* - `track`: The groove. The thumb that travels in it is drawn on the groove itself, which is `::part(track)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
31962
31963
|
*
|
|
31963
31964
|
* ## CSS States
|
|
31964
31965
|
*
|
|
@@ -33609,11 +33610,10 @@ export type CustomElements = {
|
|
|
33609
33610
|
*
|
|
33610
33611
|
* Custom selectors for styling elements within the component.
|
|
33611
33612
|
*
|
|
33612
|
-
* - `connector`: The line arriving at this entry.
|
|
33613
33613
|
* - `content`: What happened, and the time above it.
|
|
33614
33614
|
* - `dot`: The mark drawn where nothing was slotted for one.
|
|
33615
33615
|
* - `marker`: The mark on the line.
|
|
33616
|
-
* - `rail`: The column holding the mark and the line.
|
|
33616
|
+
* - `rail`: The column holding the mark and the line. Both halves of the line are drawn on the rail, which is `::part(rail)::before` and `::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
33617
33617
|
* - `time`: When it happened.
|
|
33618
33618
|
*
|
|
33619
33619
|
* ## CSS States
|
|
@@ -34068,13 +34068,12 @@ export type CustomElements = {
|
|
|
34068
34068
|
*
|
|
34069
34069
|
* Custom selectors for styling elements within the component.
|
|
34070
34070
|
*
|
|
34071
|
-
* - `divider`: The rule after an inline label, separating it from the items.
|
|
34072
34071
|
* - `feedback`: What is wrong with it.
|
|
34073
34072
|
* - `hint`: Help under the row, while nothing is wrong.
|
|
34074
34073
|
* - `indicator`: The moving marker behind the selected item.
|
|
34075
34074
|
* - `label`: The question, over the row.
|
|
34076
34075
|
* - `row`: The line the track sits on, with whatever flanks it.
|
|
34077
|
-
* - `track`: The bar the items sit in.
|
|
34076
|
+
* - `track`: The bar the items sit in. The rule after an inline label, separating it from the items, is drawn on the bar, which is `::part(track)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
34078
34077
|
*
|
|
34079
34078
|
* ## CSS States
|
|
34080
34079
|
*
|
|
@@ -35624,8 +35623,7 @@ export type CustomElements = {
|
|
|
35624
35623
|
* - `failure`: What is said when the source will not play.
|
|
35625
35624
|
* - `forward`: The control that goes on ten seconds.
|
|
35626
35625
|
* - `fullscreen`: The whole screen, and back.
|
|
35627
|
-
* - `loading`: What is said while the picture waits for more of itself.
|
|
35628
|
-
* - `loading-mark`: The part of that which spins.
|
|
35626
|
+
* - `loading`: What is said while the picture waits for more of itself. The part of that which spins is drawn on it, which is `::part(loading)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
35629
35627
|
* - `more`: The button that opens it.
|
|
35630
35628
|
* - `mute`: Sound on and off.
|
|
35631
35629
|
* - `next`: Asks for the next item, where it was asked for.
|
|
@@ -39274,9 +39272,8 @@ export type CustomElementsSolidJs = {
|
|
|
39274
39272
|
* - `footer`: The row holding the value and the tools.
|
|
39275
39273
|
* - `format`: The control that changes the syntax the value is written in.
|
|
39276
39274
|
* - `format-button`: The inner control.
|
|
39277
|
-
* - `grid`: The saturation and brightness square.
|
|
39275
|
+
* - `grid`: The saturation and brightness square. The mark showing where in the square the color sits is drawn on the square itself, which is `::part(grid)::after` from a consumer's sheet: the two channels are already on the square as `--color-picker-saturation` and `--color-picker-brightness`, so a box would have carried nothing, and this tier ships no CSS.
|
|
39278
39276
|
* - `grid-brightness`: The range input for its vertical axis.
|
|
39279
|
-
* - `grid-handle`: The mark showing where in the square the color sits.
|
|
39280
39277
|
* - `grid-saturation`: The range input for the square's horizontal axis.
|
|
39281
39278
|
* - `sample`: The chip of the current color, which copies it when pressed.
|
|
39282
39279
|
* - `swatch`: One preset.
|
|
@@ -44003,10 +44000,9 @@ export type CustomElementsSolidJs = {
|
|
|
44003
44000
|
*
|
|
44004
44001
|
* Custom selectors for styling elements within the component.
|
|
44005
44002
|
*
|
|
44006
|
-
* - `entry`: One name and its swatch.
|
|
44003
|
+
* - `entry`: One name and its swatch. The swatch is drawn on the entry, which is `::part(entry)::before` from a consumer's sheet: the series is already on the entry as `--chart-series`, so a box would have carried nothing, and this tier ships no CSS.
|
|
44007
44004
|
* - `list`: The list itself.
|
|
44008
44005
|
* - `name`: One series name.
|
|
44009
|
-
* - `swatch`: The color a series is drawn in.
|
|
44010
44006
|
*
|
|
44011
44007
|
* ## CSS States
|
|
44012
44008
|
*
|
|
@@ -47918,10 +47914,9 @@ export type CustomElementsSolidJs = {
|
|
|
47918
47914
|
*
|
|
47919
47915
|
* Custom selectors for styling elements within the component.
|
|
47920
47916
|
*
|
|
47921
|
-
* - `box`: The circle.
|
|
47917
|
+
* - `box`: The circle. The dot inside it is drawn on the box itself, which is `::part(box)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
47922
47918
|
* - `item`: The button, which is the whole row.
|
|
47923
47919
|
* - `label`: The words beside it.
|
|
47924
|
-
* - `mark`: The dot inside it.
|
|
47925
47920
|
*
|
|
47926
47921
|
* ## CSS States
|
|
47927
47922
|
*
|
|
@@ -49867,6 +49862,13 @@ export type CustomElementsSolidJs = {
|
|
|
49867
49862
|
* with two hidden in CSS: the accessibility tree would otherwise carry marks
|
|
49868
49863
|
* that are not there.
|
|
49869
49864
|
*
|
|
49865
|
+
* **The two half lines either side of the mark are a sheet's, on `::before` and
|
|
49866
|
+
* `::after` of the step.** Both are placed entirely from properties the list
|
|
49867
|
+
* hands down, so there was nothing about them for a box to carry, and this tier
|
|
49868
|
+
* ships no CSS: a box it rendered for one to paint would be an empty child
|
|
49869
|
+
* costing whatever the consumer's own layout charges for a child. `ListItem`
|
|
49870
|
+
* measured that.
|
|
49871
|
+
*
|
|
49870
49872
|
* ## Attributes & Properties
|
|
49871
49873
|
*
|
|
49872
49874
|
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
@@ -49926,10 +49928,8 @@ export type CustomElementsSolidJs = {
|
|
|
49926
49928
|
* - `description`: The line under it.
|
|
49927
49929
|
* - `label`: The step's name, which is a control.
|
|
49928
49930
|
* - `label-button`: The inner control.
|
|
49929
|
-
* - `lead`: The half line arriving from the step before.
|
|
49930
49931
|
* - `mark`: The glyph inside the marker: a tick, a dot, or an empty ring.
|
|
49931
49932
|
* - `marker`: The shape carrying the number or the check.
|
|
49932
|
-
* - `trail`: The half line running on to the next.
|
|
49933
49933
|
*
|
|
49934
49934
|
* ## CSS States
|
|
49935
49935
|
*
|
|
@@ -50110,8 +50110,7 @@ export type CustomElementsSolidJs = {
|
|
|
50110
50110
|
* - `field`: The row: the track and its label.
|
|
50111
50111
|
* - `hint`: Help under the control, while nothing is wrong.
|
|
50112
50112
|
* - `label`: The words beside it.
|
|
50113
|
-
* - `
|
|
50114
|
-
* - `track`: The groove the thumb travels in.
|
|
50113
|
+
* - `track`: The groove. The thumb that travels in it is drawn on the groove itself, which is `::part(track)::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
50115
50114
|
*
|
|
50116
50115
|
* ## CSS States
|
|
50117
50116
|
*
|
|
@@ -51794,11 +51793,10 @@ export type CustomElementsSolidJs = {
|
|
|
51794
51793
|
*
|
|
51795
51794
|
* Custom selectors for styling elements within the component.
|
|
51796
51795
|
*
|
|
51797
|
-
* - `connector`: The line arriving at this entry.
|
|
51798
51796
|
* - `content`: What happened, and the time above it.
|
|
51799
51797
|
* - `dot`: The mark drawn where nothing was slotted for one.
|
|
51800
51798
|
* - `marker`: The mark on the line.
|
|
51801
|
-
* - `rail`: The column holding the mark and the line.
|
|
51799
|
+
* - `rail`: The column holding the mark and the line. Both halves of the line are drawn on the rail, which is `::part(rail)::before` and `::after` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
51802
51800
|
* - `time`: When it happened.
|
|
51803
51801
|
*
|
|
51804
51802
|
* ## CSS States
|
|
@@ -52263,13 +52261,12 @@ export type CustomElementsSolidJs = {
|
|
|
52263
52261
|
*
|
|
52264
52262
|
* Custom selectors for styling elements within the component.
|
|
52265
52263
|
*
|
|
52266
|
-
* - `divider`: The rule after an inline label, separating it from the items.
|
|
52267
52264
|
* - `feedback`: What is wrong with it.
|
|
52268
52265
|
* - `hint`: Help under the row, while nothing is wrong.
|
|
52269
52266
|
* - `indicator`: The moving marker behind the selected item.
|
|
52270
52267
|
* - `label`: The question, over the row.
|
|
52271
52268
|
* - `row`: The line the track sits on, with whatever flanks it.
|
|
52272
|
-
* - `track`: The bar the items sit in.
|
|
52269
|
+
* - `track`: The bar the items sit in. The rule after an inline label, separating it from the items, is drawn on the bar, which is `::part(track)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
52273
52270
|
*
|
|
52274
52271
|
* ## CSS States
|
|
52275
52272
|
*
|
|
@@ -53847,8 +53844,7 @@ export type CustomElementsSolidJs = {
|
|
|
53847
53844
|
* - `failure`: What is said when the source will not play.
|
|
53848
53845
|
* - `forward`: The control that goes on ten seconds.
|
|
53849
53846
|
* - `fullscreen`: The whole screen, and back.
|
|
53850
|
-
* - `loading`: What is said while the picture waits for more of itself.
|
|
53851
|
-
* - `loading-mark`: The part of that which spins.
|
|
53847
|
+
* - `loading`: What is said while the picture waits for more of itself. The part of that which spins is drawn on it, which is `::part(loading)::before` from a consumer's sheet: this tier ships no CSS, so a box it renders for one to paint is an empty child costing whatever the consumer's own layout charges for a child. `ListItem` measured that.
|
|
53852
53848
|
* - `more`: The button that opens it.
|
|
53853
53849
|
* - `mute`: Sound on and off.
|
|
53854
53850
|
* - `next`: Asks for the next item, where it was asked for.
|
package/types/vue.d.ts
CHANGED
|
@@ -9843,7 +9843,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
9843
9843
|
HelixHeadlessStepsVueProps,
|
|
9844
9844
|
HelixHeadlessStepsVueEvents
|
|
9845
9845
|
>;
|
|
9846
|
-
/** **The name is a button, and only the name.** The marker is 'aria-hidden' decoration, so wrapping it would add hit area and no meaning. It is 'Button' rather than a '<button>' this element resets: the hover wash, the focus ring and the disabled treatment are decisions the button carries. **It says nothing about where a reader may go.** Every step is pressable and announces itself with 'helix-select'; refusing the ones ahead is 'disabled', which the consumer sets, because only they know whether a form can be skipped. **The marker is a slot whose fallback is the state.** A finished stage shows a check, the current one a target, one not yet reached an empty ring. Exactly one is rendered, chosen from the step's own two booleans, rather than three with two hidden in CSS: the accessibility tree would otherwise carry marks that are not there. */
|
|
9846
|
+
/** **The name is a button, and only the name.** The marker is 'aria-hidden' decoration, so wrapping it would add hit area and no meaning. It is 'Button' rather than a '<button>' this element resets: the hover wash, the focus ring and the disabled treatment are decisions the button carries. **It says nothing about where a reader may go.** Every step is pressable and announces itself with 'helix-select'; refusing the ones ahead is 'disabled', which the consumer sets, because only they know whether a form can be skipped. **The marker is a slot whose fallback is the state.** A finished stage shows a check, the current one a target, one not yet reached an empty ring. Exactly one is rendered, chosen from the step's own two booleans, rather than three with two hidden in CSS: the accessibility tree would otherwise carry marks that are not there. **The two half lines either side of the mark are a sheet's, on '::before' and '::after' of the step.** Both are placed entirely from properties the list hands down, so there was nothing about them for a box to carry, and this tier ships no CSS: a box it rendered for one to paint would be an empty child costing whatever the consumer's own layout charges for a child. 'ListItem' measured that. */
|
|
9847
9847
|
"helix-headless-step": DefineCustomElement<
|
|
9848
9848
|
HelixHeadlessStep,
|
|
9849
9849
|
HelixHeadlessStepVueProps,
|