@fusion.dev/helix-headless 0.96.0 → 0.98.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 (2) hide show
  1. package/custom-elements.json +127 -33
  2. package/package.json +5 -5
@@ -2348,7 +2348,7 @@
2348
2348
  "kind": "field",
2349
2349
  "name": "curve",
2350
2350
  "type": {
2351
- "text": "Curve | undefined"
2351
+ "text": "'smooth' | 'step' | 'straight' | undefined"
2352
2352
  },
2353
2353
  "description": "How a band's edge gets from one reading to the next.\n\nThree values, and the class doc argues for each: `straight` is absent and\nis the default, `smooth` is for a stack read as a shape and is the one that\ncan draw a part as less than nothing, `step` is for a quantity that changes\nat a moment and is ordered the way `straight` is.\n\nAbsent rather than defaulted because a reflecting property with a default\nwrites its attribute onto every host, including the ones nobody configured.\nThe resting value therefore lives in the render, as `curve ?? 'straight'`.\n\n**`LineChart` and `Sparkline` rest at `smooth` and are not disagreeing.** A\nline claims a position, so the bounded invention a monotone cubic makes is\na reading aid and costs nothing. A band claims an amount, and two sums\nsmoothed independently can cross, so the same aid here draws a part as less\nthan nothing. Same axis, different mark, different resting value.",
2354
2354
  "attribute": "curve",
@@ -3134,7 +3134,7 @@
3134
3134
  {
3135
3135
  "name": "curve",
3136
3136
  "type": {
3137
- "text": "Curve | undefined"
3137
+ "text": "'smooth' | 'step' | 'straight' | undefined"
3138
3138
  },
3139
3139
  "description": "How a band's edge gets from one reading to the next.\n\nThree values, and the class doc argues for each: `straight` is absent and\nis the default, `smooth` is for a stack read as a shape and is the one that\ncan draw a part as less than nothing, `step` is for a quantity that changes\nat a moment and is ordered the way `straight` is.\n\nAbsent rather than defaulted because a reflecting property with a default\nwrites its attribute onto every host, including the ones nobody configured.\nThe resting value therefore lives in the render, as `curve ?? 'straight'`.\n\n**`LineChart` and `Sparkline` rest at `smooth` and are not disagreeing.** A\nline claims a position, so the bounded invention a monotone cubic makes is\na reading aid and costs nothing. A band claims an amount, and two sums\nsmoothed independently can cross, so the same aid here draws a part as less\nthan nothing. Same axis, different mark, different resting value.",
3140
3140
  "fieldName": "curve"
@@ -3214,6 +3214,9 @@
3214
3214
  "Banded Chart"
3215
3215
  ],
3216
3216
  "tier": "headless",
3217
+ "renders": [
3218
+ "tooltip"
3219
+ ],
3217
3220
  "group": "BaseAreaChart",
3218
3221
  "part": "Root",
3219
3222
  "examples": [
@@ -5833,6 +5836,9 @@
5833
5836
  "Categorical Chart"
5834
5837
  ],
5835
5838
  "tier": "headless",
5839
+ "renders": [
5840
+ "tooltip"
5841
+ ],
5836
5842
  "group": "BaseBarChart",
5837
5843
  "part": "Root",
5838
5844
  "examples": [
@@ -13404,6 +13410,9 @@
13404
13410
  "Messages"
13405
13411
  ],
13406
13412
  "tier": "headless",
13413
+ "renders": [
13414
+ "chat-message"
13415
+ ],
13407
13416
  "group": "BaseChat",
13408
13417
  "part": "Root",
13409
13418
  "examples": [
@@ -16589,6 +16598,9 @@
16589
16598
  "Pre"
16590
16599
  ],
16591
16600
  "tier": "headless",
16601
+ "renders": [
16602
+ "copy-button"
16603
+ ],
16592
16604
  "group": "BaseCodeBlock",
16593
16605
  "part": "Root",
16594
16606
  "examples": [
@@ -17285,7 +17297,7 @@
17285
17297
  "kind": "field",
17286
17298
  "name": "format",
17287
17299
  "type": {
17288
- "text": "ColorFormat | undefined"
17300
+ "text": "'hex' | 'hsl' | 'rgb' | undefined"
17289
17301
  },
17290
17302
  "description": "The syntax the value is written in: `hex`, `rgb` or `hsl`.\n\n**Undefaulted, because it reflects.** The two together stamp an attribute\nonto every host anybody renders, including the ones nobody configured: the\nserver writes `format=\"hex\"` on every color input on the page, and React,\nholding no such prop, reports a hydration mismatch for each one.\n`helix component`'s `reflected-defaults` holds it. Hex is still what an unset one\nwrites; the resting arrangement is the attribute's absence rather than a\nvalue spelled out.",
17291
17303
  "attribute": "format",
@@ -18631,7 +18643,7 @@
18631
18643
  {
18632
18644
  "name": "format",
18633
18645
  "type": {
18634
- "text": "ColorFormat | undefined"
18646
+ "text": "'hex' | 'hsl' | 'rgb' | undefined"
18635
18647
  },
18636
18648
  "description": "The syntax the value is written in: `hex`, `rgb` or `hsl`.\n\n**Undefaulted, because it reflects.** The two together stamp an attribute\nonto every host anybody renders, including the ones nobody configured: the\nserver writes `format=\"hex\"` on every color input on the page, and React,\nholding no such prop, reports a hydration mismatch for each one.\n`helix component`'s `reflected-defaults` holds it. Hex is still what an unset one\nwrites; the resting arrangement is the attribute's absence rather than a\nvalue spelled out.",
18637
18649
  "fieldName": "format"
@@ -18861,6 +18873,9 @@
18861
18873
  "InputColor"
18862
18874
  ],
18863
18875
  "tier": "headless",
18876
+ "renders": [
18877
+ "color-picker"
18878
+ ],
18864
18879
  "group": "BaseColorInput",
18865
18880
  "part": "Root",
18866
18881
  "examples": [
@@ -19071,7 +19086,7 @@
19071
19086
  "kind": "field",
19072
19087
  "name": "format",
19073
19088
  "type": {
19074
- "text": "ColorFormat | undefined"
19089
+ "text": "'hex' | 'hsl' | 'rgb' | undefined"
19075
19090
  },
19076
19091
  "description": "The syntax the value is written in: `hex`, `rgb` or `hsl`.\n\nOnly what is written. Everything is read whatever this says, so a picker on\n`hex` still takes an `rgb()` handed to it and stores the hex for it.",
19077
19092
  "attribute": "format",
@@ -20126,7 +20141,7 @@
20126
20141
  {
20127
20142
  "name": "format",
20128
20143
  "type": {
20129
- "text": "ColorFormat | undefined"
20144
+ "text": "'hex' | 'hsl' | 'rgb' | undefined"
20130
20145
  },
20131
20146
  "description": "The syntax the value is written in: `hex`, `rgb` or `hsl`.\n\nOnly what is written. Everything is read whatever this says, so a picker on\n`hex` still takes an `rgb()` handed to it and stores the hex for it.",
20132
20147
  "fieldName": "format"
@@ -20268,6 +20283,11 @@
20268
20283
  "Swatch picker"
20269
20284
  ],
20270
20285
  "tier": "headless",
20286
+ "renders": [
20287
+ "button",
20288
+ "button-group",
20289
+ "slider"
20290
+ ],
20271
20291
  "group": "BaseColorPicker",
20272
20292
  "part": "Root",
20273
20293
  "examples": [
@@ -22426,6 +22446,10 @@
22426
22446
  "Search select"
22427
22447
  ],
22428
22448
  "tier": "headless",
22449
+ "renders": [
22450
+ "listbox",
22451
+ "tag"
22452
+ ],
22429
22453
  "group": "BaseCombobox",
22430
22454
  "part": "Root",
22431
22455
  "examples": [
@@ -23220,6 +23244,10 @@
23220
23244
  "Spotlight"
23221
23245
  ],
23222
23246
  "tier": "headless",
23247
+ "renders": [
23248
+ "dialog",
23249
+ "listbox"
23250
+ ],
23223
23251
  "group": "BaseCommand",
23224
23252
  "part": "Root",
23225
23253
  "examples": [
@@ -24437,6 +24465,9 @@
24437
24465
  "Copy to clipboard"
24438
24466
  ],
24439
24467
  "tier": "headless",
24468
+ "renders": [
24469
+ "tooltip"
24470
+ ],
24440
24471
  "group": "BaseCopyButton",
24441
24472
  "part": "Root",
24442
24473
  "examples": [
@@ -26620,6 +26651,10 @@
26620
26651
  "Data grid"
26621
26652
  ],
26622
26653
  "tier": "headless",
26654
+ "renders": [
26655
+ "checkbox",
26656
+ "pagination"
26657
+ ],
26623
26658
  "group": "BaseDataTable",
26624
26659
  "part": "Root",
26625
26660
  "examples": [
@@ -29260,6 +29295,10 @@
29260
29295
  "InputDate"
29261
29296
  ],
29262
29297
  "tier": "headless",
29298
+ "renders": [
29299
+ "date-picker",
29300
+ "tag"
29301
+ ],
29263
29302
  "group": "BaseDateInput",
29264
29303
  "part": "Root",
29265
29304
  "examples": [
@@ -33777,6 +33816,9 @@
33777
33816
  "Share Chart"
33778
33817
  ],
33779
33818
  "tier": "headless",
33819
+ "renders": [
33820
+ "tooltip"
33821
+ ],
33780
33822
  "group": "BaseDonutChart",
33781
33823
  "part": "Root",
33782
33824
  "examples": [
@@ -37713,6 +37755,9 @@
37713
37755
  "InputFile"
37714
37756
  ],
37715
37757
  "tier": "headless",
37758
+ "renders": [
37759
+ "tag"
37760
+ ],
37716
37761
  "group": "BaseFileInput",
37717
37762
  "part": "Root",
37718
37763
  "examples": [
@@ -39509,6 +39554,11 @@
39509
39554
  "FilterBuilder"
39510
39555
  ],
39511
39556
  "tier": "headless",
39557
+ "renders": [
39558
+ "divider",
39559
+ "menu",
39560
+ "menu-item"
39561
+ ],
39512
39562
  "group": "BaseFilterInput",
39513
39563
  "part": "Menu"
39514
39564
  },
@@ -43887,6 +43937,9 @@
43887
43937
  "Activity graph"
43888
43938
  ],
43889
43939
  "tier": "headless",
43940
+ "renders": [
43941
+ "tooltip"
43942
+ ],
43890
43943
  "group": "BaseHeatmap",
43891
43944
  "part": "Root",
43892
43945
  "examples": [
@@ -47159,7 +47212,7 @@
47159
47212
  "kind": "field",
47160
47213
  "name": "effectiveType",
47161
47214
  "type": {
47162
- "text": "InputType"
47215
+ "text": "'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url'"
47163
47216
  },
47164
47217
  "privacy": "private",
47165
47218
  "description": "The type the real input is given, which is not always the type asked for.\n\nA revealed password is a text field for exactly as long as the reader is\nlooking at it. Reading through a getter rather than mutating `type` keeps\nthe property the consumer's: what they set is what they get back, whatever\nthe button is doing.",
@@ -47352,7 +47405,7 @@
47352
47405
  "kind": "field",
47353
47406
  "name": "type",
47354
47407
  "type": {
47355
- "text": "InputType"
47408
+ "text": "'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url'"
47356
47409
  },
47357
47410
  "default": "'text'",
47358
47411
  "description": "What the field accepts, which decides the keyboard and the validation.\n\n**Not reflected.** Reflection exists so a selector can reach a value, and\nno stylesheet in this repository selects on `type`. Reflecting it writes\n`type=\"text\"` onto every `<helix-headless-input>` ever rendered, an\nattribute no consumer's markup has, which is the fault the area rules write\nup under `Button`'s `href`, `target` and `rel`.\n\nNothing reads it from the attribute either. The real `<input>` inside takes\nit as a property binding, which is what makes the keyboard and the\nvalidation follow.",
@@ -48318,7 +48371,7 @@
48318
48371
  {
48319
48372
  "name": "type",
48320
48373
  "type": {
48321
- "text": "InputType"
48374
+ "text": "'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url'"
48322
48375
  },
48323
48376
  "default": "'text'",
48324
48377
  "description": "What the field accepts, which decides the keyboard and the validation.\n\n**Not reflected.** Reflection exists so a selector can reach a value, and\nno stylesheet in this repository selects on `type`. Reflecting it writes\n`type=\"text\"` onto every `<helix-headless-input>` ever rendered, an\nattribute no consumer's markup has, which is the fault the area rules write\nup under `Button`'s `href`, `target` and `rel`.\n\nNothing reads it from the attribute either. The real `<input>` inside takes\nit as a property binding, which is what makes the keyboard and the\nvalidation follow.",
@@ -49693,7 +49746,7 @@
49693
49746
  "kind": "field",
49694
49747
  "name": "curve",
49695
49748
  "type": {
49696
- "text": "Curve | undefined"
49749
+ "text": "'smooth' | 'step' | 'straight' | undefined"
49697
49750
  },
49698
49751
  "description": "How the line gets from one reading to the next.\n\n**`smooth` is the resting curve.** A curve invents the values between two\nreadings, which is why `straight` still exists, but the invention is\nbounded: the interpolation is monotone cubic, so it never leaves the band\nthe data sets and never introduces a peak or a trough the series does not\nhave. Within that bound the smoothed line is the easier one to follow\nacross a long series, and `straight` becomes the deliberate claim.\n\n**Absent rather than defaulted on the property**, because a reflecting\nproperty with a default writes its attribute onto every host anybody\nrenders, including the ones nobody configured.\n`line-chart-root.ssr.spec.ts` asserts the host carries only what the\nconsumer wrote. The default therefore lives where the path is built, as\n`curve ?? 'smooth'`.\n\n`step` claims the opposite of both, that a reading holds until the next.\n\n**`AreaChart` rests at `straight` and is not disagreeing.** A line claims a\nposition and a stacked band claims an amount: a curve fitted through one\nsum can pass under the curve fitted through the sum beneath it, so a\nsmoothed stack can draw a part as less than nothing. There is no such edge\nhere, which is what lets a line take the reading aid.",
49699
49752
  "attribute": "curve",
@@ -50476,7 +50529,7 @@
50476
50529
  {
50477
50530
  "name": "curve",
50478
50531
  "type": {
50479
- "text": "Curve | undefined"
50532
+ "text": "'smooth' | 'step' | 'straight' | undefined"
50480
50533
  },
50481
50534
  "description": "How the line gets from one reading to the next.\n\n**`smooth` is the resting curve.** A curve invents the values between two\nreadings, which is why `straight` still exists, but the invention is\nbounded: the interpolation is monotone cubic, so it never leaves the band\nthe data sets and never introduces a peak or a trough the series does not\nhave. Within that bound the smoothed line is the easier one to follow\nacross a long series, and `straight` becomes the deliberate claim.\n\n**Absent rather than defaulted on the property**, because a reflecting\nproperty with a default writes its attribute onto every host anybody\nrenders, including the ones nobody configured.\n`line-chart-root.ssr.spec.ts` asserts the host carries only what the\nconsumer wrote. The default therefore lives where the path is built, as\n`curve ?? 'smooth'`.\n\n`step` claims the opposite of both, that a reading holds until the next.\n\n**`AreaChart` rests at `straight` and is not disagreeing.** A line claims a\nposition and a stacked band claims an amount: a curve fitted through one\nsum can pass under the curve fitted through the sum beneath it, so a\nsmoothed stack can draw a part as less than nothing. There is no such edge\nhere, which is what lets a line take the reading aid.",
50482
50535
  "fieldName": "curve"
@@ -50555,6 +50608,9 @@
50555
50608
  "Multi-line Chart"
50556
50609
  ],
50557
50610
  "tier": "headless",
50611
+ "renders": [
50612
+ "tooltip"
50613
+ ],
50558
50614
  "group": "BaseLineChart",
50559
50615
  "part": "Root",
50560
50616
  "examples": [
@@ -55547,7 +55603,7 @@
55547
55603
  "kind": "field",
55548
55604
  "name": "placement",
55549
55605
  "type": {
55550
- "text": "Placement"
55606
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
55551
55607
  },
55552
55608
  "default": "'bottom-start'",
55553
55609
  "description": "Preferred side.\n\nIt moves if that side does not fit.",
@@ -56364,7 +56420,7 @@
56364
56420
  {
56365
56421
  "name": "placement",
56366
56422
  "type": {
56367
- "text": "Placement"
56423
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
56368
56424
  },
56369
56425
  "default": "'bottom-start'",
56370
56426
  "description": "Preferred side.\n\nIt moves if that side does not fit.",
@@ -56610,7 +56666,7 @@
56610
56666
  "kind": "field",
56611
56667
  "name": "band",
56612
56668
  "type": {
56613
- "text": "MeterBand | undefined"
56669
+ "text": "'fair' | 'good' | 'poor' | undefined"
56614
56670
  },
56615
56671
  "description": "The band, said outright, where the three thresholds cannot say it.\n\n**The specification's model has a shape, and it is worth knowing before\nreaching for this.** Three bands and a point mean it can express a\n*direction* in three grades, or a *target* in two, and never a target in\nthree. Measured across a grid: with `low=\"25\" high=\"50\" optimum=\"0\"` the\nreadings 5, 28 and 60 come out good, fair and poor; with `low=\"15\"\nhigh=\"25\" optimum=\"20\"` the readings 28 and 90 both come out fair, because\nfrom a middle band nothing is ever two bands away.\n\nSo a target you can miss badly in either direction has no expression in\n`low`, `high` and `optimum`, and neither has a rule that is not about\ndistance at all: 28 against a target of 20 is fine for a room's temperature\nand is not fine for a dosage, and no arrangement of thresholds knows which\none it is looking at.\n\nWritten, this wins outright and the thresholds are only for drawing the\nticks. A consumer whose rule is more than three buckets already knows the\nanswer, and asking them to encode it as thresholds so this can decode it\nagain is a worse API than letting them say it.\n\nNot reflected. Nothing selects on it: the band reaches the stylesheet as\n`data-band` on the fill, because that is the element being colored, and a\nstylesheet outside as `indicator-good`, `-fair` or `-poor` among the fill's\npart names, so reflecting here would write an attribute onto the host for\nno reader.",
56616
56672
  "attribute": "band"
@@ -56777,7 +56833,7 @@
56777
56833
  "kind": "field",
56778
56834
  "name": "computedBand",
56779
56835
  "type": {
56780
- "text": "MeterBand | undefined"
56836
+ "text": "'fair' | 'good' | 'poor' | undefined"
56781
56837
  },
56782
56838
  "privacy": "private",
56783
56839
  "description": "Which band the reading is in, by the specification's rule.\n\n`optimum` names a point, and the band containing it is the good one. A\nreading in that band is good, one in a band beside it is fair, and one two\nbands away is poor. Undefined where nothing was declared, which is what\nkeeps an unbanded meter from being painted as good news.",
@@ -57133,7 +57189,7 @@
57133
57189
  {
57134
57190
  "name": "band",
57135
57191
  "type": {
57136
- "text": "MeterBand | undefined"
57192
+ "text": "'fair' | 'good' | 'poor' | undefined"
57137
57193
  },
57138
57194
  "description": "The band, said outright, where the three thresholds cannot say it.\n\n**The specification's model has a shape, and it is worth knowing before\nreaching for this.** Three bands and a point mean it can express a\n*direction* in three grades, or a *target* in two, and never a target in\nthree. Measured across a grid: with `low=\"25\" high=\"50\" optimum=\"0\"` the\nreadings 5, 28 and 60 come out good, fair and poor; with `low=\"15\"\nhigh=\"25\" optimum=\"20\"` the readings 28 and 90 both come out fair, because\nfrom a middle band nothing is ever two bands away.\n\nSo a target you can miss badly in either direction has no expression in\n`low`, `high` and `optimum`, and neither has a rule that is not about\ndistance at all: 28 against a target of 20 is fine for a room's temperature\nand is not fine for a dosage, and no arrangement of thresholds knows which\none it is looking at.\n\nWritten, this wins outright and the thresholds are only for drawing the\nticks. A consumer whose rule is more than three buckets already knows the\nanswer, and asking them to encode it as thresholds so this can decode it\nagain is a worse API than letting them say it.\n\nNot reflected. Nothing selects on it: the band reaches the stylesheet as\n`data-band` on the fill, because that is the element being colored, and a\nstylesheet outside as `indicator-good`, `-fair` or `-poor` among the fill's\npart names, so reflecting here would write an attribute onto the host for\nno reader.",
57139
57195
  "fieldName": "band"
@@ -59219,6 +59275,9 @@
59219
59275
  "Inbox item"
59220
59276
  ],
59221
59277
  "tier": "headless",
59278
+ "renders": [
59279
+ "format-date"
59280
+ ],
59222
59281
  "group": "BaseNotifications",
59223
59282
  "part": "Notification"
59224
59283
  },
@@ -62572,6 +62631,9 @@
62572
62631
  "Data explorer"
62573
62632
  ],
62574
62633
  "tier": "headless",
62634
+ "renders": [
62635
+ "copy-button"
62636
+ ],
62575
62637
  "group": "BaseObjectInspector",
62576
62638
  "part": "Root",
62577
62639
  "examples": [
@@ -66138,6 +66200,10 @@
66138
66200
  "Rows per page"
66139
66201
  ],
66140
66202
  "tier": "headless",
66203
+ "renders": [
66204
+ "option",
66205
+ "select"
66206
+ ],
66141
66207
  "group": "BasePagination",
66142
66208
  "part": "Size"
66143
66209
  },
@@ -66793,7 +66859,7 @@
66793
66859
  "kind": "field",
66794
66860
  "name": "type",
66795
66861
  "type": {
66796
- "text": "PinType"
66862
+ "text": "'alphanumeric' | 'numeric' | 'text'"
66797
66863
  },
66798
66864
  "default": "'numeric'",
66799
66865
  "description": "What a box accepts, which decides the keyboard a phone offers.\n\n`numeric` and `alphanumeric` also refuse anything else on the way in,\nbecause a code that is digits is digits: letting a letter into a box a\nreader cannot submit is a mistake they have to find and undo themselves.\n`text` refuses nothing and only trims, so it is the mode for a code with a\nhyphen in it.\n\n**`alphanumeric` is ASCII letters and digits**, which is narrower than the\nword is in general and is the right narrowness here. A code of this kind\ncomes off a keypad, an SMS or an authenticator, and none of them emit `é`;\na filter that accepted it would let through a character the service on the\nother end is going to reject. A consumer whose codes really do carry\nmarked letters wants `text`, which judges nothing.\n\n**Not reflected**: nothing selects on it, so reflecting only writes\n`type=\"numeric\"` onto every `<helix-headless-pin-input>` ever rendered, an\nattribute no consumer's markup had. The area rules carry the sentence\n\"reflect only what CSS selects on\". The real inputs take it as a binding,\nwhich is what makes the keyboard follow.",
@@ -67944,7 +68010,7 @@
67944
68010
  {
67945
68011
  "name": "type",
67946
68012
  "type": {
67947
- "text": "PinType"
68013
+ "text": "'alphanumeric' | 'numeric' | 'text'"
67948
68014
  },
67949
68015
  "default": "'numeric'",
67950
68016
  "description": "What a box accepts, which decides the keyboard a phone offers.\n\n`numeric` and `alphanumeric` also refuse anything else on the way in,\nbecause a code that is digits is digits: letting a letter into a box a\nreader cannot submit is a mistake they have to find and undo themselves.\n`text` refuses nothing and only trims, so it is the mode for a code with a\nhyphen in it.\n\n**`alphanumeric` is ASCII letters and digits**, which is narrower than the\nword is in general and is the right narrowness here. A code of this kind\ncomes off a keypad, an SMS or an authenticator, and none of them emit `é`;\na filter that accepted it would let through a character the service on the\nother end is going to reject. A consumer whose codes really do carry\nmarked letters wants `text`, which judges nothing.\n\n**Not reflected**: nothing selects on it, so reflecting only writes\n`type=\"numeric\"` onto every `<helix-headless-pin-input>` ever rendered, an\nattribute no consumer's markup had. The area rules carry the sentence\n\"reflect only what CSS selects on\". The real inputs take it as a binding,\nwhich is what makes the keyboard follow.",
@@ -68200,7 +68266,7 @@
68200
68266
  "kind": "field",
68201
68267
  "name": "placement",
68202
68268
  "type": {
68203
- "text": "Placement"
68269
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
68204
68270
  },
68205
68271
  "default": "'bottom-start'",
68206
68272
  "description": "Preferred side.\n\nIt moves if that side does not fit.",
@@ -68761,7 +68827,7 @@
68761
68827
  {
68762
68828
  "name": "placement",
68763
68829
  "type": {
68764
- "text": "Placement"
68830
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
68765
68831
  },
68766
68832
  "default": "'bottom-start'",
68767
68833
  "description": "Preferred side.\n\nIt moves if that side does not fit.",
@@ -69503,7 +69569,7 @@
69503
69569
  "kind": "field",
69504
69570
  "name": "correction",
69505
69571
  "type": {
69506
- "text": "QrCorrection | undefined"
69572
+ "text": "'H' | 'L' | 'M' | 'Q' | undefined"
69507
69573
  },
69508
69574
  "description": "How much of the code can be lost and still read.\n\n`M` by default, which is the level almost every code in the world uses and\ncosts about fifteen percent redundancy. `H` where a mark covers the center,\nchosen automatically when the slot is filled: it is the level that makes\ncovering safe, and a consumer who fills the slot has said what they want\nwithout having to know that.",
69509
69575
  "attribute": "correction"
@@ -69522,7 +69588,7 @@
69522
69588
  "kind": "field",
69523
69589
  "name": "shape",
69524
69590
  "type": {
69525
- "text": "QrStyle | undefined"
69591
+ "text": "'dots' | 'rounded' | 'square' | undefined"
69526
69592
  },
69527
69593
  "description": "How the modules are drawn.\n\n`square` is the resting state and is written by not writing it, per the\nrule that a reflected property takes no default. It is also the only one\nthat joins runs of adjacent modules into a single subpath, which is what\nkeeps a thousand modules to a handful of nodes. `rounded` and `dots` draw\neach module on its own, because the corners are the thing being drawn and a\njoined run has none in the middle. That cost is paid only by a code that\nasks for them.\n\nA scanner reads contrast between cells, not their shape, so all three\nscan. `dots` sits a little under half a module so neighbors do not touch,\nwhich is what makes it read as dots rather than as a softened square code.",
69528
69594
  "attribute": "shape",
@@ -69552,7 +69618,7 @@
69552
69618
  "kind": "field",
69553
69619
  "name": "level",
69554
69620
  "type": {
69555
- "text": "QrCorrection"
69621
+ "text": "'H' | 'L' | 'M' | 'Q'"
69556
69622
  },
69557
69623
  "privacy": "private",
69558
69624
  "description": "The level actually used, which the slot can raise.",
@@ -69897,7 +69963,7 @@
69897
69963
  {
69898
69964
  "name": "correction",
69899
69965
  "type": {
69900
- "text": "QrCorrection | undefined"
69966
+ "text": "'H' | 'L' | 'M' | 'Q' | undefined"
69901
69967
  },
69902
69968
  "description": "How much of the code can be lost and still read.\n\n`M` by default, which is the level almost every code in the world uses and\ncosts about fifteen percent redundancy. `H` where a mark covers the center,\nchosen automatically when the slot is filled: it is the level that makes\ncovering safe, and a consumer who fills the slot has said what they want\nwithout having to know that.",
69903
69969
  "fieldName": "correction"
@@ -69914,7 +69980,7 @@
69914
69980
  {
69915
69981
  "name": "shape",
69916
69982
  "type": {
69917
- "text": "QrStyle | undefined"
69983
+ "text": "'dots' | 'rounded' | 'square' | undefined"
69918
69984
  },
69919
69985
  "description": "How the modules are drawn.\n\n`square` is the resting state and is written by not writing it, per the\nrule that a reflected property takes no default. It is also the only one\nthat joins runs of adjacent modules into a single subpath, which is what\nkeeps a thousand modules to a handful of nodes. `rounded` and `dots` draw\neach module on its own, because the corners are the thing being drawn and a\njoined run has none in the middle. That cost is paid only by a code that\nasks for them.\n\nA scanner reads contrast between cells, not their shape, so all three\nscan. `dots` sits a little under half a module so neighbors do not touch,\nwhich is what makes it read as dots rather than as a softened square code.",
69920
69986
  "fieldName": "shape"
@@ -74558,6 +74624,9 @@
74558
74624
  "Dot Plot"
74559
74625
  ],
74560
74626
  "tier": "headless",
74627
+ "renders": [
74628
+ "tooltip"
74629
+ ],
74561
74630
  "group": "BaseScatterChart",
74562
74631
  "part": "Root",
74563
74632
  "examples": [
@@ -76686,6 +76755,9 @@
76686
76755
  "Picker"
76687
76756
  ],
76688
76757
  "tier": "headless",
76758
+ "renders": [
76759
+ "listbox"
76760
+ ],
76689
76761
  "group": "BaseSelect",
76690
76762
  "part": "Root",
76691
76763
  "examples": [
@@ -79136,7 +79208,7 @@
79136
79208
  "kind": "field",
79137
79209
  "name": "curve",
79138
79210
  "type": {
79139
- "text": "Curve | undefined"
79211
+ "text": "'smooth' | 'step' | 'straight' | undefined"
79140
79212
  },
79141
79213
  "description": "How the line gets from one reading to the next.\n\n**`smooth` is the resting curve.** A straight segment asserts nothing about\nthe values between two readings and a curve invents them, which is why\n`straight` exists. What settles the default the other way is that the\ninvention is bounded: the interpolation is monotone cubic, so it never\nleaves the band the data sets and never introduces a peak or a trough the\nseries does not have. Within that bound the smoothed line is the easier one\nto follow across a long series, which is what the drawing is for. `straight`\nbecomes the claim a consumer makes deliberately rather than the one they get\nby saying nothing.\n\n**The property stays optional and the default lives in the render.** A\nreflecting property with a default writes its attribute onto every host\nanybody renders, including the ones nobody configured, which the SSR specs\nassert against. So the resting state is still the attribute's absence, and\n`curve ?? 'smooth'` is what reads it.\n\n`step` claims the opposite of both, that a reading holds until the next.\nBars ignore it, having no between to interpolate.\n\n**`AreaChart` rests at `straight` and is not disagreeing.** A line claims a\nposition and a stacked band claims an amount: a curve fitted through one\nsum can pass under the curve fitted through the sum beneath it, so a\nsmoothed stack can draw a part as less than nothing. There is no such edge\nhere, which is what lets a line take the reading aid.",
79142
79214
  "attribute": "curve",
@@ -79529,7 +79601,7 @@
79529
79601
  {
79530
79602
  "name": "curve",
79531
79603
  "type": {
79532
- "text": "Curve | undefined"
79604
+ "text": "'smooth' | 'step' | 'straight' | undefined"
79533
79605
  },
79534
79606
  "description": "How the line gets from one reading to the next.\n\n**`smooth` is the resting curve.** A straight segment asserts nothing about\nthe values between two readings and a curve invents them, which is why\n`straight` exists. What settles the default the other way is that the\ninvention is bounded: the interpolation is monotone cubic, so it never\nleaves the band the data sets and never introduces a peak or a trough the\nseries does not have. Within that bound the smoothed line is the easier one\nto follow across a long series, which is what the drawing is for. `straight`\nbecomes the claim a consumer makes deliberately rather than the one they get\nby saying nothing.\n\n**The property stays optional and the default lives in the render.** A\nreflecting property with a default writes its attribute onto every host\nanybody renders, including the ones nobody configured, which the SSR specs\nassert against. So the resting state is still the attribute's absence, and\n`curve ?? 'smooth'` is what reads it.\n\n`step` claims the opposite of both, that a reading holds until the next.\nBars ignore it, having no between to interpolate.\n\n**`AreaChart` rests at `straight` and is not disagreeing.** A line claims a\nposition and a stacked band claims an amount: a curve fitted through one\nsum can pass under the curve fitted through the sum beneath it, so a\nsmoothed stack can draw a part as less than nothing. There is no such edge\nhere, which is what lets a line take the reading aid.",
79535
79607
  "fieldName": "curve"
@@ -80235,7 +80307,7 @@
80235
80307
  "kind": "field",
80236
80308
  "name": "placement",
80237
80309
  "type": {
80238
- "text": "Placement"
80310
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
80239
80311
  },
80240
80312
  "default": "'top-end'",
80241
80313
  "description": "Which way the actions fan out. They move if that side does not fit.\n\nUp by default, because the control this hangs off is usually docked to the\nbottom of the window and there is nothing below it to fan into.",
@@ -80813,7 +80885,7 @@
80813
80885
  {
80814
80886
  "name": "placement",
80815
80887
  "type": {
80816
- "text": "Placement"
80888
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
80817
80889
  },
80818
80890
  "default": "'top-end'",
80819
80891
  "description": "Which way the actions fan out. They move if that side does not fit.\n\nUp by default, because the control this hangs off is usually docked to the\nbottom of the window and there is nothing below it to fan into.",
@@ -84155,6 +84227,9 @@
84155
84227
  "Stage"
84156
84228
  ],
84157
84229
  "tier": "headless",
84230
+ "renders": [
84231
+ "button"
84232
+ ],
84158
84233
  "group": "BaseSteps",
84159
84234
  "part": "Step"
84160
84235
  },
@@ -93833,6 +93908,10 @@
93833
93908
  "InputTime"
93834
93909
  ],
93835
93910
  "tier": "headless",
93911
+ "renders": [
93912
+ "tag",
93913
+ "time-picker"
93914
+ ],
93836
93915
  "group": "BaseTimeInput",
93837
93916
  "part": "Root",
93838
93917
  "examples": [
@@ -95266,6 +95345,10 @@
95266
95345
  "TimeList"
95267
95346
  ],
95268
95347
  "tier": "headless",
95348
+ "renders": [
95349
+ "listbox",
95350
+ "option"
95351
+ ],
95269
95352
  "group": "BaseTimePicker",
95270
95353
  "part": "Root",
95271
95354
  "examples": [
@@ -99914,7 +99997,7 @@
99914
99997
  "kind": "field",
99915
99998
  "name": "placement",
99916
99999
  "type": {
99917
- "text": "Placement"
100000
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
99918
100001
  },
99919
100002
  "default": "'top'",
99920
100003
  "description": "Preferred side.\n\nIt moves if that side does not fit.",
@@ -100687,7 +100770,7 @@
100687
100770
  {
100688
100771
  "name": "placement",
100689
100772
  "type": {
100690
- "text": "Placement"
100773
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
100691
100774
  },
100692
100775
  "default": "'top'",
100693
100776
  "description": "Preferred side.\n\nIt moves if that side does not fit.",
@@ -101807,7 +101890,7 @@
101807
101890
  "kind": "field",
101808
101891
  "name": "placement",
101809
101892
  "type": {
101810
- "text": "Placement"
101893
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
101811
101894
  },
101812
101895
  "default": "'bottom'",
101813
101896
  "description": "Which side of the target the panel prefers.",
@@ -102280,7 +102363,7 @@
102280
102363
  {
102281
102364
  "name": "placement",
102282
102365
  "type": {
102283
- "text": "Placement"
102366
+ "text": "'bottom' | 'bottom-end' | 'bottom-start' | 'left' | 'left-end' | 'left-start' | 'right' | 'right-end' | 'right-start' | 'top' | 'top-end' | 'top-start'"
102284
102367
  },
102285
102368
  "default": "'bottom'",
102286
102369
  "description": "Which side of the target the panel prefers.",
@@ -102333,6 +102416,9 @@
102333
102416
  "status": "stable",
102334
102417
  "documentation": "https://fusion.dev/helix/components/tour",
102335
102418
  "tier": "headless",
102419
+ "renders": [
102420
+ "button"
102421
+ ],
102336
102422
  "group": "BaseTour",
102337
102423
  "part": "Stop"
102338
102424
  },
@@ -105686,6 +105772,10 @@
105686
105772
  "Up Next"
105687
105773
  ],
105688
105774
  "tier": "headless",
105775
+ "renders": [
105776
+ "menu",
105777
+ "menu-item"
105778
+ ],
105689
105779
  "group": "BaseVideoPlaylist",
105690
105780
  "part": "Menu"
105691
105781
  },
@@ -108303,6 +108393,10 @@
108303
108393
  "Movie"
108304
108394
  ],
108305
108395
  "tier": "headless",
108396
+ "renders": [
108397
+ "menu",
108398
+ "menu-item"
108399
+ ],
108306
108400
  "group": "BaseVideo",
108307
108401
  "part": "Root",
108308
108402
  "examples": [
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.96.0",
4
+ "version": "0.98.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -46,13 +46,13 @@
46
46
  },
47
47
  "bugs": "https://github.com/project-fusion/fusion/issues",
48
48
  "dependencies": {
49
- "@fusion.dev/helix-core": "0.96.0",
50
- "@fusion.dev/helix-icons": "0.96.0",
49
+ "@fusion.dev/helix-core": "0.98.0",
50
+ "@fusion.dev/helix-icons": "0.98.0",
51
51
  "uqr": "^0.1.3"
52
52
  },
53
53
  "devDependencies": {
54
- "@fusion.dev/helix-cem": "0.96.0",
55
- "@fusion.dev/helix-testing": "0.96.0",
54
+ "@fusion.dev/helix-cem": "0.98.0",
55
+ "@fusion.dev/helix-testing": "0.98.0",
56
56
  "@fusion.dev/scripts": "0.0.0-dev",
57
57
  "@happy-dom/global-registrator": "^20.0.0",
58
58
  "@lit-labs/ssr": "^4.1.0",