@fusion.dev/helix-headless 0.58.1 → 0.59.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.
Files changed (34) hide show
  1. package/custom-elements.json +24 -203
  2. package/dist/button/root/button-root.d.ts +1 -7
  3. package/dist/button/root/button-root.js +2 -3
  4. package/dist/carousel/root/carousel-root.js +2 -2
  5. package/dist/color-picker/root/color-picker-root.d.ts +7 -1
  6. package/dist/color-picker/root/color-picker-root.js +3 -3
  7. package/dist/data-table/root/data-table-root.js +2 -2
  8. package/dist/heatmap/index.d.ts +1 -1
  9. package/dist/heatmap/index.js +1 -1
  10. package/dist/heatmap/root/buckets.d.ts +0 -4
  11. package/dist/heatmap/root/buckets.js +0 -5
  12. package/dist/heatmap/root/heatmap-root.d.ts +5 -3
  13. package/dist/heatmap/root/heatmap-root.js +5 -6
  14. package/dist/legend/root/legend-root.d.ts +2 -2
  15. package/dist/outline/root/outline-root.d.ts +8 -1
  16. package/dist/outline/root/outline-root.js +2 -3
  17. package/dist/scatter-chart/root/scatter-chart-root.js +2 -2
  18. package/dist/skip-link/root/skip-link-root.d.ts +11 -1
  19. package/dist/skip-link/root/skip-link-root.js +2 -4
  20. package/dist/sparkline/root/sparkline-root.js +2 -5
  21. package/dist/splitter/root/splitter-root.js +3 -3
  22. package/dist/table/column/table-column.js +2 -2
  23. package/dist/table/root/table-root.js +2 -24
  24. package/dist/textarea/root/textarea-root.js +2 -2
  25. package/dist/time-input/root/time-input-root.js +10 -11
  26. package/dist/time-picker/root/time-picker-root.d.ts +0 -27
  27. package/dist/time-picker/root/time-picker-root.js +9 -32
  28. package/dist/tooltip/root/tooltip-root.d.ts +3 -10
  29. package/dist/tooltip/root/tooltip-root.js +3 -13
  30. package/dist/tour/stop/tour-stop.js +2 -3
  31. package/dist/video/root/video-root.js +2 -4
  32. package/package.json +5 -5
  33. package/types/jsx.d.ts +64 -68
  34. package/types/vue.d.ts +16 -20
@@ -2694,7 +2694,7 @@
2694
2694
  "text": "string"
2695
2695
  },
2696
2696
  "default": "''",
2697
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
2697
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
2698
2698
  "attribute": "for",
2699
2699
  "inheritedFrom": {
2700
2700
  "name": "MixinChartSource",
@@ -3171,7 +3171,7 @@
3171
3171
  "text": "string"
3172
3172
  },
3173
3173
  "default": "''",
3174
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
3174
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
3175
3175
  "fieldName": "for",
3176
3176
  "inheritedFrom": {
3177
3177
  "name": "MixinChartSource",
@@ -5316,7 +5316,7 @@
5316
5316
  "text": "string"
5317
5317
  },
5318
5318
  "default": "''",
5319
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
5319
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
5320
5320
  "attribute": "for",
5321
5321
  "inheritedFrom": {
5322
5322
  "name": "MixinChartSource",
@@ -5791,7 +5791,7 @@
5791
5791
  "text": "string"
5792
5792
  },
5793
5793
  "default": "''",
5794
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
5794
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
5795
5795
  "fieldName": "for",
5796
5796
  "inheritedFrom": {
5797
5797
  "name": "MixinChartSource",
@@ -7980,7 +7980,7 @@
7980
7980
  "text": "HTMLElement | null"
7981
7981
  }
7982
7982
  },
7983
- "description": "The element this button commands, or nothing.\n\nLooked up in the button's own root rather than in the document, so a button\ninside somebody else's shadow root finds a target in that same root and not\na coincidence in the page."
7983
+ "description": "The element this button commands, or nothing."
7984
7984
  },
7985
7985
  {
7986
7986
  "kind": "method",
@@ -19205,7 +19205,7 @@
19205
19205
  "text": "string[]"
19206
19206
  },
19207
19207
  "privacy": "private",
19208
- "description": "The presets, as written, with anything that is not a color dropped.",
19208
+ "description": "The presets, as written, with anything that is not a color dropped.\n\nSplit on the commas between colors and never inside one, so\n`rgba(34,197,94,.5)` stays one swatch rather than four fragments none of\nwhich parses.",
19209
19209
  "readonly": true
19210
19210
  },
19211
19211
  {
@@ -23743,7 +23743,7 @@
23743
23743
  "text": "HTMLElement | null"
23744
23744
  }
23745
23745
  },
23746
- "description": "The element this button commands, or nothing.\n\nLooked up in the button's own root rather than in the document, so a button\ninside somebody else's shadow root finds a target in that same root and not\na coincidence in the page.",
23746
+ "description": "The element this button commands, or nothing.",
23747
23747
  "inheritedFrom": {
23748
23748
  "name": "HelixHeadlessButton",
23749
23749
  "module": "src/button/root/button-root.ts"
@@ -33275,7 +33275,7 @@
33275
33275
  "text": "string"
33276
33276
  },
33277
33277
  "default": "''",
33278
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
33278
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
33279
33279
  "attribute": "for",
33280
33280
  "inheritedFrom": {
33281
33281
  "name": "MixinChartSource",
@@ -33734,7 +33734,7 @@
33734
33734
  "text": "string"
33735
33735
  },
33736
33736
  "default": "''",
33737
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
33737
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
33738
33738
  "fieldName": "for",
33739
33739
  "inheritedFrom": {
33740
33740
  "name": "MixinChartSource",
@@ -42778,14 +42778,6 @@
42778
42778
  "module": "./root/buckets.js"
42779
42779
  }
42780
42780
  },
42781
- {
42782
- "kind": "js",
42783
- "name": "numbers",
42784
- "declaration": {
42785
- "name": "numbers",
42786
- "module": "./root/buckets.js"
42787
- }
42788
- },
42789
42781
  {
42790
42782
  "kind": "js",
42791
42783
  "name": "Reading",
@@ -42802,14 +42794,6 @@
42802
42794
  "module": "./root/buckets.js"
42803
42795
  }
42804
42796
  },
42805
- {
42806
- "kind": "js",
42807
- "name": "words",
42808
- "declaration": {
42809
- "name": "words",
42810
- "module": "./root/buckets.js"
42811
- }
42812
- },
42813
42797
  {
42814
42798
  "kind": "js",
42815
42799
  "name": "HelixHeadlessHeatmap",
@@ -42854,42 +42838,6 @@
42854
42838
  ],
42855
42839
  "description": "The tone for one reading, from its own `data-tone` or from the thresholds.\n\n**The cell's own tone wins**, and that ordering is the whole reason both\nexist. A status page already knows a day was degraded; making it encode that\nas a number so a component can decode it again is work for nothing, and the\nencoding would have to agree with the thresholds or the colors would drift\nfrom the truth. A contribution graph has only counts and wants the buckets.\n\nThresholds are read as lower bounds, in the order given, and the last one that\na value reaches wins. `thresholds=\"0,1,3,6\"` with `tones=\"muted,info,accent,success\"`\nputs 0 in `muted`, 1 and 2 in `info`, 3 to 5 in `accent`, and 6 upward in\n`success`. A value below the first bound gets no tone rather than the first\none: an empty cell in a contribution graph is a day with nothing in it, and\npainting it as the lowest bucket claims a reading that does not exist."
42856
42840
  },
42857
- {
42858
- "kind": "function",
42859
- "name": "numbers",
42860
- "return": {
42861
- "type": {
42862
- "text": "number[]"
42863
- }
42864
- },
42865
- "parameters": [
42866
- {
42867
- "name": "source",
42868
- "type": {
42869
- "text": "string"
42870
- }
42871
- }
42872
- ],
42873
- "description": "A consumer's list of numbers, in the order written, with the rest dropped."
42874
- },
42875
- {
42876
- "kind": "function",
42877
- "name": "words",
42878
- "return": {
42879
- "type": {
42880
- "text": "string[]"
42881
- }
42882
- },
42883
- "parameters": [
42884
- {
42885
- "name": "source",
42886
- "type": {
42887
- "text": "string"
42888
- }
42889
- }
42890
- ],
42891
- "description": "A consumer's list of names, in the order written."
42892
- },
42893
42841
  {
42894
42842
  "kind": "function",
42895
42843
  "name": "fits",
@@ -42940,22 +42888,6 @@
42940
42888
  "module": "src/heatmap/root/buckets.ts"
42941
42889
  }
42942
42890
  },
42943
- {
42944
- "kind": "js",
42945
- "name": "numbers",
42946
- "declaration": {
42947
- "name": "numbers",
42948
- "module": "src/heatmap/root/buckets.ts"
42949
- }
42950
- },
42951
- {
42952
- "kind": "js",
42953
- "name": "words",
42954
- "declaration": {
42955
- "name": "words",
42956
- "module": "src/heatmap/root/buckets.ts"
42957
- }
42958
- },
42959
42891
  {
42960
42892
  "kind": "js",
42961
42893
  "name": "fits",
@@ -43275,7 +43207,7 @@
43275
43207
  "text": "boolean"
43276
43208
  },
43277
43209
  "privacy": "private",
43278
- "description": "Whether this render can tell a table with no readings from one it has not\nresolved yet.\n\n**Unknown is not empty, which is what an empty state must never say.**\n`for` names an id and resolving an id wants a document, so a server has\nnone and a hydrating render must not look either. Without this the server\ndrew \"No readings\" over a table holding ninety days of them, a crawler read\nthat sentence, and the strip flipped to a full one on hydration: the fault\n`MixinCollection` names for a slotted collection, arriving through the one\nchannel that mixin cannot see.\n\nThe same shape as `childrenKnown`, asked of a document rather than of a\ntree. An id that resolves to nothing in a browser is still known, and still\nempty: a `for` naming no table should say so rather than sit blank.",
43210
+ "description": "Whether this render can tell a table with no readings from one it has not\nresolved yet.\n\n**Unknown is not empty, which is what an empty state must never say.**\n`for` names an id and resolving an id wants a document, so a server has\nnone and a hydrating render must not look either. Without this the server\ndrew \"No readings\" over a table holding ninety days of them, a crawler read\nthat sentence, and the strip flipped to a full one on hydration: the fault\n`MixinCollection` names for a slotted collection, arriving through the one\nchannel that mixin cannot see.\n\nThe same shape as `childrenKnown`, asked of a tree that can answer about\nids rather than of one that holds children. An id that resolves to nothing\nin a browser is still known, and still empty: a `for` naming no table\nshould say so rather than sit blank, which is why this asks\n`searchableById` and not `elementById`.",
43279
43211
  "readonly": true
43280
43212
  },
43281
43213
  {
@@ -43404,7 +43336,7 @@
43404
43336
  "text": "string"
43405
43337
  },
43406
43338
  "default": "''",
43407
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
43339
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
43408
43340
  "attribute": "for",
43409
43341
  "inheritedFrom": {
43410
43342
  "name": "MixinChartSource",
@@ -43911,7 +43843,7 @@
43911
43843
  "text": "string"
43912
43844
  },
43913
43845
  "default": "''",
43914
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
43846
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
43915
43847
  "fieldName": "for",
43916
43848
  "inheritedFrom": {
43917
43849
  "name": "MixinChartSource",
@@ -44520,7 +44452,7 @@
44520
44452
  "text": "HTMLElement | null"
44521
44453
  }
44522
44454
  },
44523
- "description": "The element this button commands, or nothing.\n\nLooked up in the button's own root rather than in the document, so a button\ninside somebody else's shadow root finds a target in that same root and not\na coincidence in the page.",
44455
+ "description": "The element this button commands, or nothing.",
44524
44456
  "inheritedFrom": {
44525
44457
  "name": "HelixHeadlessButton",
44526
44458
  "module": "src/button/root/button-root.ts"
@@ -49176,7 +49108,7 @@
49176
49108
  "text": "string"
49177
49109
  },
49178
49110
  "default": "''",
49179
- "description": "The id of the table to take the names from.\n\nResolved through `getRootNode()`, so a legend inside another component's\nshadow root names a table in that root rather than in the document.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
49111
+ "description": "The id of the table to take the names from.\n\nNames a table in the same tree, so a legend inside another component's\nshadow root reads a table in that root rather than one in the document.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
49180
49112
  "attribute": "for"
49181
49113
  },
49182
49114
  {
@@ -49537,7 +49469,7 @@
49537
49469
  "text": "string"
49538
49470
  },
49539
49471
  "default": "''",
49540
- "description": "The id of the table to take the names from.\n\nResolved through `getRootNode()`, so a legend inside another component's\nshadow root names a table in that root rather than in the document.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
49472
+ "description": "The id of the table to take the names from.\n\nNames a table in the same tree, so a legend inside another component's\nshadow root reads a table in that root rather than one in the document.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
49541
49473
  "fieldName": "for"
49542
49474
  }
49543
49475
  ],
@@ -50095,7 +50027,7 @@
50095
50027
  "text": "string"
50096
50028
  },
50097
50029
  "default": "''",
50098
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
50030
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
50099
50031
  "attribute": "for",
50100
50032
  "inheritedFrom": {
50101
50033
  "name": "MixinChartSource",
@@ -50580,7 +50512,7 @@
50580
50512
  "text": "string"
50581
50513
  },
50582
50514
  "default": "''",
50583
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
50515
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
50584
50516
  "fieldName": "for",
50585
50517
  "inheritedFrom": {
50586
50518
  "name": "MixinChartSource",
@@ -63925,7 +63857,7 @@
63925
63857
  "text": "{ link: HTMLAnchorElement; target: Element }[]"
63926
63858
  },
63927
63859
  "privacy": "private",
63928
- "description": "What each link points at, paired with the link, skipping anything missing.",
63860
+ "description": "What each link points at, paired with the link, skipping anything missing.\n\nThe fragment is decoded first because these are `href`s and not ids. The\nlookup is the tree's alone: this intercepts no press, so it has no\nnavigation to agree with, and a section it cannot see is one it is not\ndescribing.",
63929
63861
  "readonly": true
63930
63862
  },
63931
63863
  {
@@ -74138,7 +74070,7 @@
74138
74070
  "text": "string"
74139
74071
  },
74140
74072
  "default": "''",
74141
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
74073
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
74142
74074
  "attribute": "for",
74143
74075
  "inheritedFrom": {
74144
74076
  "name": "MixinChartSource",
@@ -74582,7 +74514,7 @@
74582
74514
  "text": "string"
74583
74515
  },
74584
74516
  "default": "''",
74585
- "description": "The id of the table to read.\n\nResolved through `getRootNode()`, so a chart inside another component's\nshadow root names a table in that root rather than in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
74517
+ "description": "The id of the table to read.\n\nNames a table in the same tree, so a chart inside another component's\nshadow root reads a table in that root rather than one in the document. A\n`<table>` or anything built from grid roles, including `helix-table`.\n\n**In React this arrives as a property and not as an attribute**, the way\n`Tooltip.for` does, so it does not reflect and nothing styles on it.",
74586
74518
  "fieldName": "for",
74587
74519
  "inheritedFrom": {
74588
74520
  "name": "MixinChartSource",
@@ -77279,7 +77211,7 @@
77279
77211
  "text": "HTMLElement | null"
77280
77212
  },
77281
77213
  "privacy": "private",
77282
- "description": "The element `href` names, looked up in the tree this link sits in.",
77214
+ "description": "The element `href` names, looked up the way the browser would.\n\n`orDocument`, which no other caller of `elementById` passes and which that\noption is written for: a press handled here has to land where following the\nanchor would, and the platform resolves a fragment against the document\nwhatever tree the anchor is in. A skip link inside an app shell's shadow\nroot pointing at the page's `#main` is the arrangement that needs it.\n\nThe fragment is decoded first because this is an `href` and not an id.",
77283
77215
  "readonly": true
77284
77216
  },
77285
77217
  {
@@ -93955,85 +93887,6 @@
93955
93887
  "kind": "javascript-module",
93956
93888
  "path": "src/time-picker/root/time-picker-root.ts",
93957
93889
  "declarations": [
93958
- {
93959
- "kind": "function",
93960
- "name": "isTime",
93961
- "return": {
93962
- "type": {
93963
- "text": "boolean"
93964
- }
93965
- },
93966
- "parameters": [
93967
- {
93968
- "name": "value",
93969
- "type": {
93970
- "text": "string"
93971
- }
93972
- }
93973
- ],
93974
- "description": "Whether a string is a time the rest of this component can reason about.\n\n**Narrower than core's `valueAsTime` on purpose, and the difference is\nseconds.** That one takes them because `<input type=\"time\">` does, at a step\nbelow a minute. This library has no such step: `step` here is minutes and is\nfloored at one, so nothing it offers or writes ever carries a second, and\n`toMinutes` below would drop one silently if this let it through. Widening\nthis to the platform's shape would let a value in that the rest of the family\ncannot hold."
93975
- },
93976
- {
93977
- "kind": "function",
93978
- "name": "toMinutes",
93979
- "return": {
93980
- "type": {
93981
- "text": "number | null"
93982
- }
93983
- },
93984
- "parameters": [
93985
- {
93986
- "name": "value",
93987
- "type": {
93988
- "text": "string"
93989
- }
93990
- }
93991
- ],
93992
- "description": "Minutes since midnight, or `null` where it is not a time."
93993
- },
93994
- {
93995
- "kind": "function",
93996
- "name": "fromMinutes",
93997
- "return": {
93998
- "type": {
93999
- "text": "string"
94000
- }
94001
- },
94002
- "parameters": [
94003
- {
94004
- "name": "minutes",
94005
- "type": {
94006
- "text": "number"
94007
- }
94008
- }
94009
- ],
94010
- "description": "Minutes since midnight back to `HH:mm`, which is the value shape throughout."
94011
- },
94012
- {
94013
- "kind": "function",
94014
- "name": "writeTime",
94015
- "return": {
94016
- "type": {
94017
- "text": "string"
94018
- }
94019
- },
94020
- "parameters": [
94021
- {
94022
- "name": "value",
94023
- "type": {
94024
- "text": "string"
94025
- }
94026
- },
94027
- {
94028
- "name": "locale",
94029
- "optional": true,
94030
- "type": {
94031
- "text": "string"
94032
- }
94033
- }
94034
- ],
94035
- "description": "A time written the way the reader's locale writes one.\n\n`Intl` decides between a twelve and a twenty-four hour clock, because that is\na property of the locale rather than of this component: `en-US` gets\n`2:30 PM` and `en-GB` gets `14:30` without either being configured. There is\nno flag to force one, deliberately. A product that needs to override its\nreader's own convention has a locale problem rather than a component one, and\nthe value is 24 hour regardless."
94036
- },
94037
93890
  {
94038
93891
  "kind": "class",
94039
93892
  "description": "**A list rather than three wheels**, and the reason is what a list already\nis. `Listbox` brings the keyboard, the typeahead, the scroll into view and\nthe announcement of a set of options, and a time at a step is a set of\noptions. Three little wheels for hours, minutes and a meridiem are three\ncontrols to build, three to test, and a tab stop each for something a reader\nanswers once.\n\n**A step is what makes it a list at all.** Fifteen minutes is ninety-six rows,\nwhich a reader scrolls or types into; one minute is one thousand four hundred\nand forty, which is a listbox in name only. So the list is for the times a\nproduct actually offers, and arbitrary times are the field's job in Input\nTime, the same division Date Input draws between typing a date and using the\ncalendar.\n\n**The value is `HH:mm` on a twenty-four hour clock, always.** That is what a\nform submits and what `min` and `max` compare against, and it sorts as a\nstring, which is the whole reason the shape is that one. What each row *says*\nis the reader's own convention, from `Intl`.\n\n**The chosen row is marked in the markup, not worked out on upgrade.** The\nlistbox is handed the answer as `.value`, and lit-ssr serializes no property\nbinding, so a served `value=\"09:30\"` shipped ninety-six rows with nothing on\nany of them saying which one it was: the mark arrived when the listbox\nupgraded and ran `place`. So each option is given `selected` as well, which\nis an attribute binding and does serve, and which the listbox then agrees\nwith rather than fights, `place` writing the same answer from the same value.\n`selected` is the declaration a consumer writes on `Option` anywhere else in\nthe library, and Date Picker expresses its own choice as markup for the same\nreason: a picker whose answer is invisible until a script runs is a picker\nwhose answer is not served at all. Both readings do it, the list and the\nwheels, a wheel being a listbox like the list is.",
@@ -95441,38 +95294,6 @@
95441
95294
  }
95442
95295
  ],
95443
95296
  "exports": [
95444
- {
95445
- "kind": "js",
95446
- "name": "isTime",
95447
- "declaration": {
95448
- "name": "isTime",
95449
- "module": "src/time-picker/root/time-picker-root.ts"
95450
- }
95451
- },
95452
- {
95453
- "kind": "js",
95454
- "name": "toMinutes",
95455
- "declaration": {
95456
- "name": "toMinutes",
95457
- "module": "src/time-picker/root/time-picker-root.ts"
95458
- }
95459
- },
95460
- {
95461
- "kind": "js",
95462
- "name": "fromMinutes",
95463
- "declaration": {
95464
- "name": "fromMinutes",
95465
- "module": "src/time-picker/root/time-picker-root.ts"
95466
- }
95467
- },
95468
- {
95469
- "kind": "js",
95470
- "name": "writeTime",
95471
- "declaration": {
95472
- "name": "writeTime",
95473
- "module": "src/time-picker/root/time-picker-root.ts"
95474
- }
95475
- },
95476
95297
  {
95477
95298
  "kind": "js",
95478
95299
  "name": "HelixHeadlessTimePicker",
@@ -100065,7 +99886,7 @@
100065
99886
  "text": "string"
100066
99887
  },
100067
99888
  "default": "''",
100068
- "description": "The id of the element this describes, in this tooltip's own tree.\n\nSet it and the tooltip stops wrapping: it renders no trigger, listens on\nthe element it names, and points its bubble there. Leave it unset and the\ndefault slot is the trigger, which is the older form.\n\nResolved through `getRootNode()`, so a tooltip inside another component's\nshadow root names an element in that root rather than in the document.\n\n**In React this arrives as a property and not as an attribute**, which is\nworth knowing before someone reads the DOM and thinks it did not take.\nMeasured against React 19.2.8: `for` exists on the prototype, so React sets\n`element.for = 'save'` and writes nothing to the markup, where `content`\nand `placement`, which are not properties on the class at that moment, come\nthrough as attributes. Both paths reach the same place through Lit, so\nnothing is broken by it; a `[for]` selector would find nothing, which is\nwhy this does not reflect and nothing styles on it.",
99889
+ "description": "The id of the element this describes, in this tooltip's own tree.\n\nSet it and the tooltip stops wrapping: it renders no trigger, listens on\nthe element it names, and points its bubble there. Leave it unset and the\ndefault slot is the trigger, which is the older form.\n\nNames an element in the same tree, so a tooltip inside another component's\nshadow root points at one in that root rather than one in the document.\n\n**In React this arrives as a property and not as an attribute**, which is\nworth knowing before someone reads the DOM and thinks it did not take.\nMeasured against React 19.2.8: `for` exists on the prototype, so React sets\n`element.for = 'save'` and writes nothing to the markup, where `content`\nand `placement`, which are not properties on the class at that moment, come\nthrough as attributes. Both paths reach the same place through Lit, so\nnothing is broken by it; a `[for]` selector would find nothing, which is\nwhy this does not reflect and nothing styles on it.",
100069
99890
  "attribute": "for"
100070
99891
  },
100071
99892
  {
@@ -100164,7 +99985,7 @@
100164
99985
  "text": "HTMLElement | null"
100165
99986
  },
100166
99987
  "privacy": "private",
100167
- "description": "The element `for` names, or null.\n\n`getRootNode()` rather than `document`, which is what makes this work inside\nanother component: an id is unique to a tree, and a tooltip in a shadow root\nnames an element in that root. Client only, since the server has no tree to\nsearch.",
99988
+ "description": "The element `for` names, or null.",
100168
99989
  "readonly": true
100169
99990
  },
100170
99991
  {
@@ -100842,7 +100663,7 @@
100842
100663
  "text": "string"
100843
100664
  },
100844
100665
  "default": "''",
100845
- "description": "The id of the element this describes, in this tooltip's own tree.\n\nSet it and the tooltip stops wrapping: it renders no trigger, listens on\nthe element it names, and points its bubble there. Leave it unset and the\ndefault slot is the trigger, which is the older form.\n\nResolved through `getRootNode()`, so a tooltip inside another component's\nshadow root names an element in that root rather than in the document.\n\n**In React this arrives as a property and not as an attribute**, which is\nworth knowing before someone reads the DOM and thinks it did not take.\nMeasured against React 19.2.8: `for` exists on the prototype, so React sets\n`element.for = 'save'` and writes nothing to the markup, where `content`\nand `placement`, which are not properties on the class at that moment, come\nthrough as attributes. Both paths reach the same place through Lit, so\nnothing is broken by it; a `[for]` selector would find nothing, which is\nwhy this does not reflect and nothing styles on it.",
100666
+ "description": "The id of the element this describes, in this tooltip's own tree.\n\nSet it and the tooltip stops wrapping: it renders no trigger, listens on\nthe element it names, and points its bubble there. Leave it unset and the\ndefault slot is the trigger, which is the older form.\n\nNames an element in the same tree, so a tooltip inside another component's\nshadow root points at one in that root rather than one in the document.\n\n**In React this arrives as a property and not as an attribute**, which is\nworth knowing before someone reads the DOM and thinks it did not take.\nMeasured against React 19.2.8: `for` exists on the prototype, so React sets\n`element.for = 'save'` and writes nothing to the markup, where `content`\nand `placement`, which are not properties on the class at that moment, come\nthrough as attributes. Both paths reach the same place through Lit, so\nnothing is broken by it; a `[for]` selector would find nothing, which is\nwhy this does not reflect and nothing styles on it.",
100846
100667
  "fieldName": "for"
100847
100668
  },
100848
100669
  {
@@ -209,13 +209,7 @@ export declare class HelixHeadlessButton extends HelixFormElement {
209
209
  * The same asymmetry the listbox relies on for `aria-activedescendant`.
210
210
  */
211
211
  private linkCommand;
212
- /**
213
- * The element this button commands, or nothing.
214
- *
215
- * Looked up in the button's own root rather than in the document, so a button
216
- * inside somebody else's shadow root finds a target in that same root and not
217
- * a coincidence in the page.
218
- */
212
+ /** The element this button commands, or nothing. */
219
213
  private commandTarget;
220
214
  /**
221
215
  * Sends the `command` event where the browser will not.
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { AriaForwardController, customElement, HelixFallbackCommandEvent, HelixFormElement, supportsInvokers, } from '@fusion.dev/helix-core';
7
+ import { AriaForwardController, customElement, elementById, HelixFallbackCommandEvent, HelixFormElement, supportsInvokers, } from '@fusion.dev/helix-core';
8
8
  import { html, nothing } from 'lit';
9
9
  import { property } from 'lit/decorators.js';
10
10
  let HelixHeadlessButton = class HelixHeadlessButton extends HelixFormElement {
@@ -104,8 +104,7 @@ let HelixHeadlessButton = class HelixHeadlessButton extends HelixFormElement {
104
104
  this.commandTarget();
105
105
  }
106
106
  commandTarget() {
107
- const root = this.getRootNode();
108
- return this.commandFor ? (root.getElementById?.(this.commandFor) ?? null) : null;
107
+ return this.commandFor ? elementById(this, this.commandFor) : null;
109
108
  }
110
109
  sendCommand() {
111
110
  if (!this.command || supportsInvokers()) {
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { customElement, HelixElement, HelixSelectEvent, hostAria, inlineStep, requestChange, } from '@fusion.dev/helix-core';
7
+ import { customElement, HelixElement, HelixSelectEvent, hostAria, inlineStep, isRtl, requestChange, } from '@fusion.dev/helix-core';
8
8
  import { caretLeft, caretRight, play, stop } from '@fusion.dev/helix-icons';
9
9
  import { html, nothing } from 'lit';
10
10
  import { property, state } from 'lit/decorators.js';
@@ -199,7 +199,7 @@ let HelixHeadlessCarousel = class HelixHeadlessCarousel extends HelixElement {
199
199
  if (this.orientation === 'vertical') {
200
200
  return slide.offsetTop - track.offsetTop - bleed;
201
201
  }
202
- if (getComputedStyle(track).direction === 'rtl') {
202
+ if (isRtl(track)) {
203
203
  return slide.offsetLeft + slide.offsetWidth - (track.offsetLeft + track.offsetWidth) + bleed;
204
204
  }
205
205
  return slide.offsetLeft - track.offsetLeft - bleed;
@@ -222,7 +222,13 @@ export declare class HelixHeadlessColorPicker extends HelixHeadlessColorPicker_b
222
222
  * padding with nothing in it.
223
223
  */
224
224
  private get tools();
225
- /** The presets, as written, with anything that is not a color dropped. */
225
+ /**
226
+ * The presets, as written, with anything that is not a color dropped.
227
+ *
228
+ * Split on the commas between colors and never inside one, so
229
+ * `rgba(34,197,94,.5)` stays one swatch rather than four fragments none of
230
+ * which parses.
231
+ */
226
232
  private get presets();
227
233
  /**
228
234
  * The last value that was a color.
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { CopyController, capturePointer, customElement, drawIcon, formatColor, HelixFormElement, HelixSampleEndEvent, HelixSampleStartEvent, MixinControllerValue, parseColor, splitColors, toCss, } from '@fusion.dev/helix-core';
7
+ import { CopyController, capturePointer, customElement, drawIcon, formatColor, HelixFormElement, HelixSampleEndEvent, HelixSampleStartEvent, isRtl, MixinControllerValue, parseColor, splitValues, toCss, } from '@fusion.dev/helix-core';
8
8
  import { eyedropper } from '@fusion.dev/helix-icons';
9
9
  import { nothing } from 'lit';
10
10
  import { property, state } from 'lit/decorators.js';
@@ -101,7 +101,7 @@ let HelixHeadlessColorPicker = class HelixHeadlessColorPicker extends MixinContr
101
101
  return;
102
102
  }
103
103
  const fromLeft = Math.min(1, Math.max(0, (event.clientX - box.left) / box.width));
104
- const across = getComputedStyle(grid).direction === 'rtl' ? 1 - fromLeft : fromLeft;
104
+ const across = isRtl(grid) ? 1 - fromLeft : fromLeft;
105
105
  const down = Math.min(1, Math.max(0, (event.clientY - box.top) / box.height));
106
106
  this.move({ brightness: Math.round((1 - down) * 100), saturation: Math.round(across * 100) });
107
107
  };
@@ -113,7 +113,7 @@ let HelixHeadlessColorPicker = class HelixHeadlessColorPicker extends MixinContr
113
113
  return (this.sampling && !this.noEyedropper) || !this.noFormat;
114
114
  }
115
115
  get presets() {
116
- return splitColors(this.swatches).filter((one) => parseColor(one) !== null);
116
+ return splitValues(this.swatches, ',').filter((one) => parseColor(one) !== null);
117
117
  }
118
118
  requestValue(next) {
119
119
  if (this.readOnly) {
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var HelixHeadlessDataTable_1;
8
- import { customElement, HelixElement, HelixFilterEvent, HelixNavigateEvent, HelixReorderEvent, HelixSelectEvent, HelixSortEvent, hostAria, inlineStep, MixinCollection, markRegion, requestChange, VirtualizeController, writtenList, } from '@fusion.dev/helix-core';
8
+ import { customElement, HelixElement, HelixFilterEvent, HelixNavigateEvent, HelixReorderEvent, HelixSelectEvent, HelixSortEvent, hostAria, inlineStep, isRtl, MixinCollection, markRegion, requestChange, VirtualizeController, writtenList, } from '@fusion.dev/helix-core';
9
9
  import { nothing } from 'lit';
10
10
  import { property, state } from 'lit/decorators.js';
11
11
  import { repeat } from 'lit/directives/repeat.js';
@@ -124,7 +124,7 @@ let HelixHeadlessDataTable = class HelixHeadlessDataTable extends MixinCollectio
124
124
  if (!dragging || event.pointerId !== dragging.pointer || !this.dragOrder) {
125
125
  return;
126
126
  }
127
- const rtl = getComputedStyle(this).direction === 'rtl';
127
+ const rtl = isRtl(this);
128
128
  const others = this.shownColumns.filter((column) => column.field !== '' && column.field !== dragging.field);
129
129
  const place = others.filter((column) => {
130
130
  const box = column.shadowRoot?.querySelector('[part="column"]')?.getBoundingClientRect();
@@ -1,2 +1,2 @@
1
- export { fits, numbers, type Reading, toneOf, words } from './root/buckets.js';
1
+ export { fits, type Reading, toneOf } from './root/buckets.js';
2
2
  export { HelixHeadlessHeatmap } from './root/heatmap-root.js';
@@ -1,2 +1,2 @@
1
- export { fits, numbers, toneOf, words } from './root/buckets.js';
1
+ export { fits, toneOf } from './root/buckets.js';
2
2
  export { HelixHeadlessHeatmap } from './root/heatmap-root.js';
@@ -29,10 +29,6 @@ export interface Reading {
29
29
  * painting it as the lowest bucket claims a reading that does not exist.
30
30
  */
31
31
  export declare const toneOf: (reading: Reading, thresholds: readonly number[], tones: readonly string[]) => string | undefined;
32
- /** A consumer's list of numbers, in the order written, with the rest dropped. */
33
- export declare const numbers: (source: string) => number[];
34
- /** A consumer's list of names, in the order written. */
35
- export declare const words: (source: string) => string[];
36
32
  /**
37
33
  * How many readings fit across a given width, and which ones they are.
38
34
  *
@@ -1,4 +1,3 @@
1
- import { writtenList } from '@fusion.dev/helix-core';
2
1
  export const toneOf = (reading, thresholds, tones) => {
3
2
  if (reading.tone) {
4
3
  return reading.tone;
@@ -14,10 +13,6 @@ export const toneOf = (reading, thresholds, tones) => {
14
13
  }
15
14
  return chosen;
16
15
  };
17
- export const numbers = (source) => writtenList(source)
18
- .map(Number)
19
- .filter((one) => Number.isFinite(one));
20
- export const words = (source) => writtenList(source);
21
16
  export const fits = (total, width, minimum, gap, rows = 1) => {
22
17
  if (!Number.isFinite(width) || width <= 0 || minimum <= 0) {
23
18
  return total;
@@ -211,9 +211,11 @@ export declare class HelixHeadlessHeatmap extends HelixHeadlessHeatmap_base {
211
211
  * `MixinCollection` names for a slotted collection, arriving through the one
212
212
  * channel that mixin cannot see.
213
213
  *
214
- * The same shape as `childrenKnown`, asked of a document rather than of a
215
- * tree. An id that resolves to nothing in a browser is still known, and still
216
- * empty: a `for` naming no table should say so rather than sit blank.
214
+ * The same shape as `childrenKnown`, asked of a tree that can answer about
215
+ * ids rather than of one that holds children. An id that resolves to nothing
216
+ * in a browser is still known, and still empty: a `for` naming no table
217
+ * should say so rather than sit blank, which is why this asks
218
+ * `searchableById` and not `elementById`.
217
219
  */
218
220
  private get sourceKnown();
219
221
  /**