@fusion.dev/helix 0.54.0 → 0.55.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 (36) hide show
  1. package/custom-elements.json +180 -156
  2. package/dist/avatar/root/avatar-root.css.js +1 -1
  3. package/dist/avatar/root/avatar-root.d.ts +5 -1
  4. package/dist/bar-chart/root/bar-chart-root.css.js +19 -19
  5. package/dist/carousel/root/carousel-root.css.js +18 -18
  6. package/dist/carousel/root/carousel-root.d.ts +22 -15
  7. package/dist/checkbox/root/checkbox-root.css.js +20 -11
  8. package/dist/checkbox/root/checkbox-root.d.ts +19 -7
  9. package/dist/checkbox/root/checkbox-root.js +1 -1
  10. package/dist/description-list/root/description-list-root.d.ts +6 -3
  11. package/dist/dialog/root/dialog-root.css.js +3 -3
  12. package/dist/dialog/root/dialog-root.d.ts +24 -16
  13. package/dist/dialog/root/dialog-root.js +3 -3
  14. package/dist/flex/root/flex-root.css.js +8 -12
  15. package/dist/flex/root/flex-root.d.ts +23 -4
  16. package/dist/flex/root/flex-root.js +4 -4
  17. package/dist/grid/root/grid-root.css.js +3 -7
  18. package/dist/grid/root/grid-root.d.ts +14 -2
  19. package/dist/grid/root/grid-root.js +2 -2
  20. package/dist/image/root/image-root.css.js +1 -1
  21. package/dist/image/root/image-root.d.ts +7 -6
  22. package/dist/image/root/image-root.js +2 -6
  23. package/dist/megamenu/root/megamenu-root.css.js +6 -6
  24. package/dist/orb/root/orb-root.d.ts +8 -1
  25. package/dist/progress/root/progress-root.d.ts +2 -2
  26. package/dist/radio/root/radio-root.css.js +22 -12
  27. package/dist/radio/root/radio-root.d.ts +36 -14
  28. package/dist/radio/root/radio-root.js +3 -0
  29. package/dist/rating/root/rating-root.css.js +2 -2
  30. package/dist/rating/root/rating-root.d.ts +17 -12
  31. package/dist/rating/root/rating-root.js +1 -1
  32. package/dist/select/root/select-root.d.ts +5 -5
  33. package/dist/table/column/table-column.css.js +4 -4
  34. package/package.json +6 -6
  35. package/types/jsx.d.ts +1139 -487
  36. package/types/vue.d.ts +347 -136
@@ -5990,9 +5990,9 @@
5990
5990
  "kind": "field",
5991
5991
  "name": "shape",
5992
5992
  "type": {
5993
- "text": "'circle' | 'square' | undefined"
5993
+ "text": "'circle' | 'rounded' | undefined"
5994
5994
  },
5995
- "description": "Whether the avatar is a circle or a rounded square.",
5995
+ "description": "Whether the avatar is a circle or a rounded square.\n\n`rounded` and not `square`, which is the sharp-cornered pole of the same\naxis and what `QrCode` draws with it. This corner is `radii-md`, so the word\nfor it is the one the registry already has.",
5996
5996
  "attribute": "shape",
5997
5997
  "reflects": true
5998
5998
  },
@@ -6425,9 +6425,9 @@
6425
6425
  {
6426
6426
  "name": "shape",
6427
6427
  "type": {
6428
- "text": "'circle' | 'square' | undefined"
6428
+ "text": "'circle' | 'rounded' | undefined"
6429
6429
  },
6430
- "description": "Whether the avatar is a circle or a rounded square.",
6430
+ "description": "Whether the avatar is a circle or a rounded square.\n\n`rounded` and not `square`, which is the sharp-cornered pole of the same\naxis and what `QrCode` draws with it. This corner is `radii-md`, so the word\nfor it is the one the registry already has.",
6431
6431
  "fieldName": "shape"
6432
6432
  },
6433
6433
  {
@@ -7517,13 +7517,12 @@
7517
7517
  },
7518
7518
  {
7519
7519
  "kind": "field",
7520
- "name": "direction",
7520
+ "name": "gridlines",
7521
7521
  "type": {
7522
- "text": "'horizontal' | undefined"
7522
+ "text": "'both' | 'category' | 'value' | undefined"
7523
7523
  },
7524
- "description": "Whether the categories run down the side rather than along the bottom.\n\nAbsent is columns. `horizontal` is the one to reach for when the category\nnames are words rather than dates: a row of long names either overlaps or\nturns on its side, and neither is as readable as putting them down the left\nwhere they read normally.",
7525
- "attribute": "direction",
7526
- "reflects": true,
7524
+ "description": "Which rules are drawn across the plot, if any.\n\nAbsent draws none. `value` rules the axis the columns are *measured* on,\n`category` rules the axis they are *arranged* on with one through each\ngroup, and `both` draws both. Which of those is horizontal turns with\n`orientation`, because a rule belongs to an axis and not to a screen edge.\n\n**A bare `gridlines` means `value`**, and so does anything unrecognized: an\nunrecognized value that draws nothing is indistinguishable from the\nattribute being absent, which is the one thing a reader cannot debug.\n\n`category` is the quieter half of this on a bar chart: columns already\ndivide the categories by being separate columns, and a rule through each\none is a second statement of the same fact. It earns its place on a chart\nof many thin bars, where the eye has stopped counting.\n\nFurniture rather than data, so the rules are inside the `aria-hidden` plot\nand reach no reader through the table.",
7525
+ "attribute": "gridlines",
7527
7526
  "inheritedFrom": {
7528
7527
  "name": "HelixHeadlessBarChart",
7529
7528
  "module": "src/bar-chart/root/bar-chart-root.ts"
@@ -7531,12 +7530,12 @@
7531
7530
  },
7532
7531
  {
7533
7532
  "kind": "field",
7534
- "name": "gridlines",
7533
+ "name": "lines",
7535
7534
  "type": {
7536
- "text": "'both' | 'category' | 'value' | undefined"
7535
+ "text": "string | undefined"
7537
7536
  },
7538
- "description": "Which rules are drawn across the plot, if any.\n\nAbsent draws none. `value` rules the axis the columns are *measured* on,\n`category` rules the axis they are *arranged* on with one through each\ngroup, and `both` draws both. Which of those is horizontal turns with\n`direction`, because a rule belongs to an axis and not to a screen edge.\n\n**A bare `gridlines` means `value`**, and so does anything unrecognized: an\nunrecognized value that draws nothing is indistinguishable from the\nattribute being absent, which is the one thing a reader cannot debug.\n\n`category` is the quieter half of this on a bar chart: columns already\ndivide the categories by being separate columns, and a rule through each\none is a second statement of the same fact. It earns its place on a chart\nof many thin bars, where the eye has stopped counting.\n\nFurniture rather than data, so the rules are inside the `aria-hidden` plot\nand reach no reader through the table.",
7539
- "attribute": "gridlines",
7537
+ "description": "Which series are drawn as a line instead of as columns, by name.\n\nSeparated by whitespace or commas and matched against the column headings\nthe table gives, so a chart says `lines=\"Margin\"` rather than counting\ncolumns. Names because they are what the table already carries and what the\nlegend already shows: an index is a fourth place the column order is\nwritten down and the first one to go stale when somebody moves a column.\n\n**This says which mark a series takes and nothing about which scale it is\nmeasured on.** Named here alone, a line shares the columns' domain, so it\nsays something comparable to the columns beside it.\n\nThe other half of a combination chart, a count against a percentage on a\nscale of its own, is `secondary`, which is a separate property because it\nis a separate question and because the two compose: `with-a-second-axis`\nships naming one series in both. The argument for why a second scale is opt\nin, and why setting it labels both axes, is written there.\n\nA line among columns measures from zero, because the columns do and they\nshare the axis. So does a line on the second scale, which is that scale's\nown rule rather than this one's.",
7538
+ "attribute": "lines",
7540
7539
  "inheritedFrom": {
7541
7540
  "name": "HelixHeadlessBarChart",
7542
7541
  "module": "src/bar-chart/root/bar-chart-root.ts"
@@ -7544,12 +7543,13 @@
7544
7543
  },
7545
7544
  {
7546
7545
  "kind": "field",
7547
- "name": "lines",
7546
+ "name": "orientation",
7548
7547
  "type": {
7549
- "text": "string | undefined"
7548
+ "text": "'horizontal' | undefined"
7550
7549
  },
7551
- "description": "Which series are drawn as a line instead of as columns, by name.\n\nSeparated by whitespace or commas and matched against the column headings\nthe table gives, so a chart says `lines=\"Margin\"` rather than counting\ncolumns. Names because they are what the table already carries and what the\nlegend already shows: an index is a fourth place the column order is\nwritten down and the first one to go stale when somebody moves a column.\n\n**This says which mark a series takes and nothing about which scale it is\nmeasured on.** Named here alone, a line shares the columns' domain, so it\nsays something comparable to the columns beside it.\n\nThe other half of a combination chart, a count against a percentage on a\nscale of its own, is `secondary`, which is a separate property because it\nis a separate question and because the two compose: `with-a-second-axis`\nships naming one series in both. The argument for why a second scale is opt\nin, and why setting it labels both axes, is written there.\n\nA line among columns measures from zero, because the columns do and they\nshare the axis. So does a line on the second scale, which is that scale's\nown rule rather than this one's.",
7552
- "attribute": "lines",
7550
+ "description": "Whether the categories run down the side rather than along the bottom.\n\nAbsent is columns. `horizontal` is the one to reach for when the category\nnames are words rather than dates: a row of long names either overlaps or\nturns on its side, and neither is as readable as putting them down the left\nwhere they read normally.\n\n`orientation` and not `orientation`, which `Trend` uses in the same group for\nwhich way a number moved.",
7551
+ "attribute": "orientation",
7552
+ "reflects": true,
7553
7553
  "inheritedFrom": {
7554
7554
  "name": "HelixHeadlessBarChart",
7555
7555
  "module": "src/bar-chart/root/bar-chart-root.ts"
@@ -7768,7 +7768,7 @@
7768
7768
  }
7769
7769
  }
7770
7770
  ],
7771
- "description": "The grid, behind everything, or nothing at all.\n\nAcross the measured axis, which turns with `direction`: a rule belongs to\nthe axis the bars are measured on and not the one they are arranged on, so\ncolumns get horizontal rules and rows get vertical ones. Getting that\nbackwards draws a grid that divides the categories, which are already\ndivided by being separate bars.\n\nDrawn before the baseline, so where a gridline and zero coincide the\nbaseline is what shows: zero is a fact about the data and a gridline is a\nruler.",
7771
+ "description": "The grid, behind everything, or nothing at all.\n\nAcross the measured axis, which turns with `orientation`: a rule belongs to\nthe axis the bars are measured on and not the one they are arranged on, so\ncolumns get horizontal rules and rows get vertical ones. Getting that\nbackwards draws a grid that divides the categories, which are already\ndivided by being separate bars.\n\nDrawn before the baseline, so where a gridline and zero coincide the\nbaseline is what shows: zero is a fact about the data and a gridline is a\nruler.",
7772
7772
  "inheritedFrom": {
7773
7773
  "name": "HelixHeadlessBarChart",
7774
7774
  "module": "src/bar-chart/root/bar-chart-root.ts"
@@ -8274,36 +8274,36 @@
8274
8274
  }
8275
8275
  },
8276
8276
  {
8277
- "name": "direction",
8277
+ "name": "gridlines",
8278
8278
  "type": {
8279
- "text": "'horizontal' | undefined"
8279
+ "text": "'both' | 'category' | 'value' | undefined"
8280
8280
  },
8281
- "description": "Whether the categories run down the side rather than along the bottom.\n\nAbsent is columns. `horizontal` is the one to reach for when the category\nnames are words rather than dates: a row of long names either overlaps or\nturns on its side, and neither is as readable as putting them down the left\nwhere they read normally.",
8282
- "fieldName": "direction",
8281
+ "description": "Which rules are drawn across the plot, if any.\n\nAbsent draws none. `value` rules the axis the columns are *measured* on,\n`category` rules the axis they are *arranged* on with one through each\ngroup, and `both` draws both. Which of those is horizontal turns with\n`orientation`, because a rule belongs to an axis and not to a screen edge.\n\n**A bare `gridlines` means `value`**, and so does anything unrecognized: an\nunrecognized value that draws nothing is indistinguishable from the\nattribute being absent, which is the one thing a reader cannot debug.\n\n`category` is the quieter half of this on a bar chart: columns already\ndivide the categories by being separate columns, and a rule through each\none is a second statement of the same fact. It earns its place on a chart\nof many thin bars, where the eye has stopped counting.\n\nFurniture rather than data, so the rules are inside the `aria-hidden` plot\nand reach no reader through the table.",
8282
+ "fieldName": "gridlines",
8283
8283
  "inheritedFrom": {
8284
8284
  "name": "HelixHeadlessBarChart",
8285
8285
  "module": "src/bar-chart/root/bar-chart-root.ts"
8286
8286
  }
8287
8287
  },
8288
8288
  {
8289
- "name": "gridlines",
8289
+ "name": "lines",
8290
8290
  "type": {
8291
- "text": "'both' | 'category' | 'value' | undefined"
8291
+ "text": "string | undefined"
8292
8292
  },
8293
- "description": "Which rules are drawn across the plot, if any.\n\nAbsent draws none. `value` rules the axis the columns are *measured* on,\n`category` rules the axis they are *arranged* on with one through each\ngroup, and `both` draws both. Which of those is horizontal turns with\n`direction`, because a rule belongs to an axis and not to a screen edge.\n\n**A bare `gridlines` means `value`**, and so does anything unrecognized: an\nunrecognized value that draws nothing is indistinguishable from the\nattribute being absent, which is the one thing a reader cannot debug.\n\n`category` is the quieter half of this on a bar chart: columns already\ndivide the categories by being separate columns, and a rule through each\none is a second statement of the same fact. It earns its place on a chart\nof many thin bars, where the eye has stopped counting.\n\nFurniture rather than data, so the rules are inside the `aria-hidden` plot\nand reach no reader through the table.",
8294
- "fieldName": "gridlines",
8293
+ "description": "Which series are drawn as a line instead of as columns, by name.\n\nSeparated by whitespace or commas and matched against the column headings\nthe table gives, so a chart says `lines=\"Margin\"` rather than counting\ncolumns. Names because they are what the table already carries and what the\nlegend already shows: an index is a fourth place the column order is\nwritten down and the first one to go stale when somebody moves a column.\n\n**This says which mark a series takes and nothing about which scale it is\nmeasured on.** Named here alone, a line shares the columns' domain, so it\nsays something comparable to the columns beside it.\n\nThe other half of a combination chart, a count against a percentage on a\nscale of its own, is `secondary`, which is a separate property because it\nis a separate question and because the two compose: `with-a-second-axis`\nships naming one series in both. The argument for why a second scale is opt\nin, and why setting it labels both axes, is written there.\n\nA line among columns measures from zero, because the columns do and they\nshare the axis. So does a line on the second scale, which is that scale's\nown rule rather than this one's.",
8294
+ "fieldName": "lines",
8295
8295
  "inheritedFrom": {
8296
8296
  "name": "HelixHeadlessBarChart",
8297
8297
  "module": "src/bar-chart/root/bar-chart-root.ts"
8298
8298
  }
8299
8299
  },
8300
8300
  {
8301
- "name": "lines",
8301
+ "name": "orientation",
8302
8302
  "type": {
8303
- "text": "string | undefined"
8303
+ "text": "'horizontal' | undefined"
8304
8304
  },
8305
- "description": "Which series are drawn as a line instead of as columns, by name.\n\nSeparated by whitespace or commas and matched against the column headings\nthe table gives, so a chart says `lines=\"Margin\"` rather than counting\ncolumns. Names because they are what the table already carries and what the\nlegend already shows: an index is a fourth place the column order is\nwritten down and the first one to go stale when somebody moves a column.\n\n**This says which mark a series takes and nothing about which scale it is\nmeasured on.** Named here alone, a line shares the columns' domain, so it\nsays something comparable to the columns beside it.\n\nThe other half of a combination chart, a count against a percentage on a\nscale of its own, is `secondary`, which is a separate property because it\nis a separate question and because the two compose: `with-a-second-axis`\nships naming one series in both. The argument for why a second scale is opt\nin, and why setting it labels both axes, is written there.\n\nA line among columns measures from zero, because the columns do and they\nshare the axis. So does a line on the second scale, which is that scale's\nown rule rather than this one's.",
8306
- "fieldName": "lines",
8305
+ "description": "Whether the categories run down the side rather than along the bottom.\n\nAbsent is columns. `horizontal` is the one to reach for when the category\nnames are words rather than dates: a row of long names either overlaps or\nturns on its side, and neither is as readable as putting them down the left\nwhere they read normally.\n\n`orientation` and not `orientation`, which `Trend` uses in the same group for\nwhich way a number moved.",
8306
+ "fieldName": "orientation",
8307
8307
  "inheritedFrom": {
8308
8308
  "name": "HelixHeadlessBarChart",
8309
8309
  "module": "src/bar-chart/root/bar-chart-root.ts"
@@ -13328,9 +13328,9 @@
13328
13328
  "kind": "field",
13329
13329
  "name": "controlsPlacement",
13330
13330
  "type": {
13331
- "text": "'block-end' | 'block-start' | 'inline-end' | 'inline-start' | 'overlay' | undefined"
13331
+ "text": "'start' | 'end' | 'top' | 'bottom' | 'overlay' | undefined"
13332
13332
  },
13333
- "description": "Which side of the slides the arrows sit on.\n\nThe same four sides as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was.\n`inline-start` or `inline-end` stacks the arrows into a column, which is\nwhat a vertical track usually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. These two placements are the whole of where a carousel's\nchrome can go.",
13333
+ "description": "Which side of the slides the arrows sit on.\n\nThe same four sides as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was. `start`\nor `end` stacks the arrows into a column, which is what a vertical track\nusually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. These two placements are the whole of where a carousel's\nchrome can go.",
13334
13334
  "attribute": "controls-placement",
13335
13335
  "reflects": true
13336
13336
  },
@@ -13340,7 +13340,7 @@
13340
13340
  "type": {
13341
13341
  "text": "'center' | 'end' | 'start' | undefined"
13342
13342
  },
13343
- "description": "Where along that side the dots sit.\n\nThe second half of the answer to \"where do they go\". `indicatorPlacement`\nsays which edge and this says where along it, so the pair spells out the\nnine positions a consumer asks for in words: bottom left, bottom center,\ntop right, and so on. One attribute with nine values was the alternative\nand it multiplies rather than composing, since every value has to name both\nfacts and a consumer changing one has to rewrite the other.\n\n**One word for both axes, because the edge decides which axis it is.** On a\nblock edge the run is a row and this is `justify-self`; on an inline edge it\nis a column and the same question is `align-self`. A consumer should not\nhave to know which of those two words their edge wanted.\n\nLogical, like the placement: `start` is the left in English and the right in\nArabic on a horizontal run, and the top on a vertical one.\n\nUnset splits the row, dots to the start and arrows to the end, which is\nwhat keeps two items in one grid cell from landing on each other. Beside the\nslides, and over them, both center instead, because a column there has\nnothing to split the edge with. Putting both groups on the same edge with\nthe same alignment overlaps them, which is what the two different defaults\nexist to avoid.",
13343
+ "description": "Where along that side the dots sit.\n\nThe second half of the answer to \"where do they go\". `indicatorPlacement`\nsays which edge and this says where along it, so the pair spells out the\nnine positions a consumer asks for in words: bottom left, bottom center,\ntop right, and so on. One attribute with nine values was the alternative\nand it multiplies rather than composing, since every value has to name both\nfacts and a consumer changing one has to rewrite the other.\n\n**One word for both axes, because the edge decides which axis it is.** On a\nblock edge the run is a row and this is `justify-self`; on an inline edge it\nis a column and the same question is `align-self`. A consumer should not\nhave to know which of those two words their edge wanted.\n\nLogical, like the placement's own `start` and `end`: `start` is the left in\nEnglish and the right in Arabic on a horizontal run, and the top on a\nvertical one.\n\nUnset splits the row, dots to the start and arrows to the end, which is\nwhat keeps two items in one grid cell from landing on each other. Beside the\nslides, and over them, both center instead, because a column there has\nnothing to split the edge with. Putting both groups on the same edge with\nthe same alignment overlaps them, which is what the two different defaults\nexist to avoid.",
13344
13344
  "attribute": "indicator-align",
13345
13345
  "reflects": true
13346
13346
  },
@@ -13348,9 +13348,9 @@
13348
13348
  "kind": "field",
13349
13349
  "name": "indicatorPlacement",
13350
13350
  "type": {
13351
- "text": "'block-end' | 'block-start' | 'inline-end' | 'inline-start' | undefined"
13351
+ "text": "'start' | 'end' | 'top' | 'bottom' | undefined"
13352
13352
  },
13353
- "description": "Which side of the slides the dots sit on.\n\nUnset is `block-end`, under them. `block-start` puts them above,\n`inline-start` and `inline-end` beside, where a run of dots becomes a\ncolumn.\n\n**The sides of the content, not positions along a bar**, and logical names\nrather than `top`/`left`: an `inline-start` carousel should put its dots on\nthe right in Arabic without being told.\n\nIndependent of `controlsPlacement`. Both default to the block end, where\nthey share the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
13353
+ "description": "Which side of the slides the dots sit on.\n\nUnset is `bottom`, under them. `top` puts them above, `start` and `end`\nbeside, where a run of dots becomes a column.\n\n**The sides of the content, not positions along a bar.** `start` and `end`\nare the logical ones and they are logical because that axis flips: a\ncarousel with its dots at the start should put them on the right in Arabic\nwithout being told. `top` and `bottom` are the block edges, which flip in\nno writing mode this library draws for, so the plain word is the honest one\nand `block-start` would be jargon standing in for it.\n\n**`Drawer` and `Toast` say it in exactly these four words**, and one\nvocabulary across the three is worth more than each family's own: a\nconsumer who has placed a drawer knows where a carousel's dots go.\n\nIndependent of `controlsPlacement`. Both default to the bottom, where they\nshare the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
13354
13354
  "attribute": "indicator-placement",
13355
13355
  "reflects": true
13356
13356
  },
@@ -14370,9 +14370,9 @@
14370
14370
  {
14371
14371
  "name": "controls-placement",
14372
14372
  "type": {
14373
- "text": "'block-end' | 'block-start' | 'inline-end' | 'inline-start' | 'overlay' | undefined"
14373
+ "text": "'start' | 'end' | 'top' | 'bottom' | 'overlay' | undefined"
14374
14374
  },
14375
- "description": "Which side of the slides the arrows sit on.\n\nThe same four sides as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was.\n`inline-start` or `inline-end` stacks the arrows into a column, which is\nwhat a vertical track usually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. These two placements are the whole of where a carousel's\nchrome can go.",
14375
+ "description": "Which side of the slides the arrows sit on.\n\nThe same four sides as `indicatorPlacement` and the same default, so a\ncarousel that moves only one of them keeps the other where it was. `start`\nor `end` stacks the arrows into a column, which is what a vertical track\nusually wants.\n\n`overlay` puts them on the slides, at the track's own edges, which is what a\nfull-bleed carousel wants: the slide is the page and the controls are on it\nrather than in a bar beneath it. It carries its own treatment with it, a\nsurface and a shadow under each arrow, because a glyph drawn straight onto a\nphotograph is legible against about half of one.\n\n**It is a value here rather than an axis of its own.** \"The controls are\nover the content\" is the whole of what a `hero` appearance would say, and\nthe surface, the edge-to-edge arrows and the bar that catches no presses all\nfollow from it. These two placements are the whole of where a carousel's\nchrome can go.",
14376
14376
  "fieldName": "controlsPlacement"
14377
14377
  },
14378
14378
  {
@@ -14380,15 +14380,15 @@
14380
14380
  "type": {
14381
14381
  "text": "'center' | 'end' | 'start' | undefined"
14382
14382
  },
14383
- "description": "Where along that side the dots sit.\n\nThe second half of the answer to \"where do they go\". `indicatorPlacement`\nsays which edge and this says where along it, so the pair spells out the\nnine positions a consumer asks for in words: bottom left, bottom center,\ntop right, and so on. One attribute with nine values was the alternative\nand it multiplies rather than composing, since every value has to name both\nfacts and a consumer changing one has to rewrite the other.\n\n**One word for both axes, because the edge decides which axis it is.** On a\nblock edge the run is a row and this is `justify-self`; on an inline edge it\nis a column and the same question is `align-self`. A consumer should not\nhave to know which of those two words their edge wanted.\n\nLogical, like the placement: `start` is the left in English and the right in\nArabic on a horizontal run, and the top on a vertical one.\n\nUnset splits the row, dots to the start and arrows to the end, which is\nwhat keeps two items in one grid cell from landing on each other. Beside the\nslides, and over them, both center instead, because a column there has\nnothing to split the edge with. Putting both groups on the same edge with\nthe same alignment overlaps them, which is what the two different defaults\nexist to avoid.",
14383
+ "description": "Where along that side the dots sit.\n\nThe second half of the answer to \"where do they go\". `indicatorPlacement`\nsays which edge and this says where along it, so the pair spells out the\nnine positions a consumer asks for in words: bottom left, bottom center,\ntop right, and so on. One attribute with nine values was the alternative\nand it multiplies rather than composing, since every value has to name both\nfacts and a consumer changing one has to rewrite the other.\n\n**One word for both axes, because the edge decides which axis it is.** On a\nblock edge the run is a row and this is `justify-self`; on an inline edge it\nis a column and the same question is `align-self`. A consumer should not\nhave to know which of those two words their edge wanted.\n\nLogical, like the placement's own `start` and `end`: `start` is the left in\nEnglish and the right in Arabic on a horizontal run, and the top on a\nvertical one.\n\nUnset splits the row, dots to the start and arrows to the end, which is\nwhat keeps two items in one grid cell from landing on each other. Beside the\nslides, and over them, both center instead, because a column there has\nnothing to split the edge with. Putting both groups on the same edge with\nthe same alignment overlaps them, which is what the two different defaults\nexist to avoid.",
14384
14384
  "fieldName": "indicatorAlign"
14385
14385
  },
14386
14386
  {
14387
14387
  "name": "indicator-placement",
14388
14388
  "type": {
14389
- "text": "'block-end' | 'block-start' | 'inline-end' | 'inline-start' | undefined"
14389
+ "text": "'start' | 'end' | 'top' | 'bottom' | undefined"
14390
14390
  },
14391
- "description": "Which side of the slides the dots sit on.\n\nUnset is `block-end`, under them. `block-start` puts them above,\n`inline-start` and `inline-end` beside, where a run of dots becomes a\ncolumn.\n\n**The sides of the content, not positions along a bar**, and logical names\nrather than `top`/`left`: an `inline-start` carousel should put its dots on\nthe right in Arabic without being told.\n\nIndependent of `controlsPlacement`. Both default to the block end, where\nthey share the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
14391
+ "description": "Which side of the slides the dots sit on.\n\nUnset is `bottom`, under them. `top` puts them above, `start` and `end`\nbeside, where a run of dots becomes a column.\n\n**The sides of the content, not positions along a bar.** `start` and `end`\nare the logical ones and they are logical because that axis flips: a\ncarousel with its dots at the start should put them on the right in Arabic\nwithout being told. `top` and `bottom` are the block edges, which flip in\nno writing mode this library draws for, so the plain word is the honest one\nand `block-start` would be jargon standing in for it.\n\n**`Drawer` and `Toast` say it in exactly these four words**, and one\nvocabulary across the three is worth more than each family's own: a\nconsumer who has placed a drawer knows where a carousel's dots go.\n\nIndependent of `controlsPlacement`. Both default to the bottom, where they\nshare the row and split it, dots to the start and arrows to the end,\narrived at by two defaults rather than by a rule about the pair, so moving\none leaves the other alone.",
14392
14392
  "fieldName": "indicatorPlacement"
14393
14393
  },
14394
14394
  {
@@ -19648,12 +19648,12 @@
19648
19648
  "members": [
19649
19649
  {
19650
19650
  "kind": "field",
19651
- "name": "variant",
19651
+ "name": "separation",
19652
19652
  "type": {
19653
- "text": "'plain' | 'card' | undefined"
19653
+ "text": "'filled' | 'outlined' | 'plain' | undefined"
19654
19654
  },
19655
- "description": "How the choice presents itself.\n\n- `plain` is the default and is never written: a box beside its words,\n which is what a list of choices should be almost always.\n- `card` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n\nThe box stays in both. A card whose only marker was its own border would\nask a reader to compare surfaces across a row to find the answer, and would\nleave nothing for a high-contrast display.",
19656
- "attribute": "variant",
19655
+ "description": "Where the choice's own surface ends.\n\nThe question `separation` asks everywhere else, asked of one option, so it\nis that word: what these values pick is a surface, and `plain` is already\nthe registry's own word for the answer this family used it for. `Radio`\ntakes the same three for the same reason.\n\n- `plain` is the resting one and is never written: a box beside its words,\n which is what a list of choices should be almost always.\n- `outlined` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n- `filled` is that same card on a ground of its own with no edge, which is\n what a column of options wants where a hairline around every one of them\n is a grid of lines rather than a set of answers.\n\n**`elevated` is the one value of the axis this family does not take.** A\nraised choice competes with a dialog: the top layer is where a thing that\ninterrupts you lives, and an option in a form is not one of those.\n\nThe box stays in all of them. A card whose only marker was its own border\nwould ask a reader to compare surfaces across a row to find the answer, and\nwould leave nothing for a high-contrast display.",
19656
+ "attribute": "separation",
19657
19657
  "reflects": true
19658
19658
  },
19659
19659
  {
@@ -20624,12 +20624,12 @@
20624
20624
  ],
20625
20625
  "attributes": [
20626
20626
  {
20627
- "name": "variant",
20627
+ "name": "separation",
20628
20628
  "type": {
20629
- "text": "'plain' | 'card' | undefined"
20629
+ "text": "'filled' | 'outlined' | 'plain' | undefined"
20630
20630
  },
20631
- "description": "How the choice presents itself.\n\n- `plain` is the default and is never written: a box beside its words,\n which is what a list of choices should be almost always.\n- `card` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n\nThe box stays in both. A card whose only marker was its own border would\nask a reader to compare surfaces across a row to find the answer, and would\nleave nothing for a high-contrast display.",
20632
- "fieldName": "variant"
20631
+ "description": "Where the choice's own surface ends.\n\nThe question `separation` asks everywhere else, asked of one option, so it\nis that word: what these values pick is a surface, and `plain` is already\nthe registry's own word for the answer this family used it for. `Radio`\ntakes the same three for the same reason.\n\n- `plain` is the resting one and is never written: a box beside its words,\n which is what a list of choices should be almost always.\n- `outlined` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n- `filled` is that same card on a ground of its own with no edge, which is\n what a column of options wants where a hairline around every one of them\n is a grid of lines rather than a set of answers.\n\n**`elevated` is the one value of the axis this family does not take.** A\nraised choice competes with a dialog: the top layer is where a thing that\ninterrupts you lives, and an option in a form is not one of those.\n\nThe box stays in all of them. A card whose only marker was its own border\nwould ask a reader to compare surfaces across a row to find the answer, and\nwould leave nothing for a high-contrast display.",
20632
+ "fieldName": "separation"
20633
20633
  },
20634
20634
  {
20635
20635
  "name": "checked",
@@ -33219,7 +33219,7 @@
33219
33219
  }
33220
33220
  }
33221
33221
  ],
33222
- "description": "One cell, carrying its column's edge as a fact rather than as a decision.\n\n**A fact published rather than a property chosen**, which is what `Table`\ndoes with the same attribute: what lining up *means*, a `justify-content`\nfor a value that fits or a `text-align` for one that wraps, belongs to\nwhoever draws the cell. Written here as an inline `text-align` it was this\ntier choosing, in the tier that ships no CSS, and a consumer could not\noverrule it either, an inline declaration beating any `::part(cell)` rule\nthey wrote.\n\nOnly the three edges reach it, `align` being a string anybody can write and\nthis being a style attribute: `edgeOf` is that guard, and `Table` holds the\nsame value to the same three.",
33222
+ "description": "One cell, carrying its column's edge as a fact rather than as a decision.\n\n**A fact published rather than a property chosen**, which is what `Table`\ndoes with the same attribute: what lining up *means*, a `justify-content`\nfor a value that fits or a `text-align` for one that wraps, belongs to\nwhoever draws the cell. Written here as an inline `text-align` it was this\ntier choosing, in the tier that ships no CSS, and a consumer could not\noverrule it either, an inline declaration beating any `::part(cell)` rule\nthey wrote.\n\nOnly the three edges reach it, `text-align` being a string anybody can write and\nthis being a style attribute: `edgeOf` is that guard, and `Table` holds the\nsame value to the same three.",
33223
33223
  "inheritedFrom": {
33224
33224
  "name": "HelixHeadlessDataTable",
33225
33225
  "module": "src/data-table/root/data-table-root.ts"
@@ -39527,7 +39527,7 @@
39527
39527
  "type": {
39528
39528
  "text": "'between' | undefined"
39529
39529
  },
39530
- "description": "Where the values sit, beside their labels.\n\nAbsent, each value starts right after the label column. `between` sets it on\nthe end edge instead, with the label on the start one, and in figures of one\nwidth so a column of numbers lines up by its digits. Only with\n`direction=\"row\"`: stacked, a label and its value share one edge already.\n\nFlex's word for the same thing, and a grid rather than a flex row\nunderneath, so the labels still share one column while the values share an\nend.",
39530
+ "description": "Where the values sit, beside their labels.\n\nAbsent, each value starts right after the label column. `between` sets it on\nthe end edge instead, with the label on the start one, and in figures of one\nwidth so a column of numbers lines up by its digits. Only with\n`direction=\"row\"`: stacked, a label and its value share one edge already.\n\nFlex's value for the same idea, under a shorter name than Flex's own:\nthere it is `justify-content`, the CSS property it sets, and here the\nunderlying layout is a grid handing an edge down to each item as a custom\nproperty, so the labels still share one column while the values share an\nend. Naming a property this does not set after it would be the wrong kind\nof precision.",
39531
39531
  "attribute": "justify",
39532
39532
  "reflects": true
39533
39533
  },
@@ -39886,7 +39886,7 @@
39886
39886
  "type": {
39887
39887
  "text": "'between' | undefined"
39888
39888
  },
39889
- "description": "Where the values sit, beside their labels.\n\nAbsent, each value starts right after the label column. `between` sets it on\nthe end edge instead, with the label on the start one, and in figures of one\nwidth so a column of numbers lines up by its digits. Only with\n`direction=\"row\"`: stacked, a label and its value share one edge already.\n\nFlex's word for the same thing, and a grid rather than a flex row\nunderneath, so the labels still share one column while the values share an\nend.",
39889
+ "description": "Where the values sit, beside their labels.\n\nAbsent, each value starts right after the label column. `between` sets it on\nthe end edge instead, with the label on the start one, and in figures of one\nwidth so a column of numbers lines up by its digits. Only with\n`direction=\"row\"`: stacked, a label and its value share one edge already.\n\nFlex's value for the same idea, under a shorter name than Flex's own:\nthere it is `justify-content`, the CSS property it sets, and here the\nunderlying layout is a grid handing an edge down to each item as a custom\nproperty, so the labels still share one column while the values share an\nend. Naming a property this does not set after it would be the wrong kind\nof precision.",
39890
39890
  "fieldName": "justify"
39891
39891
  },
39892
39892
  {
@@ -40080,22 +40080,22 @@
40080
40080
  "members": [
40081
40081
  {
40082
40082
  "kind": "field",
40083
- "name": "align",
40083
+ "name": "size",
40084
40084
  "type": {
40085
- "text": "'center' | 'start' | undefined"
40085
+ "text": "'sm' | 'md' | 'lg' | 'full' | undefined"
40086
40086
  },
40087
- "description": "Which way the panel's contents read.\n\nOne property for the whole panel rather than one per region. The regions are\nnever mixed in practice: a dialog that asks a short question centers its\nmark, its title, its sentence and its buttons together, and a dialog holding\na form runs all four from the start. Three properties would be three ways to\nwrite the same two arrangements, and a fourth way to get one of them wrong.\n\nUnset is `start` and stays unset, so a reflected default cannot appear on a\nhost whose server output never had it.",
40088
- "attribute": "align",
40087
+ "description": "How wide the panel is allowed to be.\n\nSteps rather than a number, because a dialog's width is a fact about what is\nin it: a confirmation is narrow, a form is not, and picking pixels per\ndialog is how a product ends up with nine of them. `full` takes the viewport\nless the same inset every step already stops short by, so a takeover is one\nmore rung and not a second property.\n\nUnset is `md`, read as `:host(:not([size]))` beside `:host([size=\"md\"])`\nrather than assigned here, for the reason `Drawer.placement` gives: this\nreflects, and a default would put `size=\"md\"` into markup no consumer wrote.\n\n`size` is right despite the rule that controls have no size, because that\nrule's own test is whether two of them sitting together could legitimately\ndiffer, and it is answering \"a ragged row is unwritable\". Two dialogs never\nsit together. One is on screen at a time, in the top layer, and it is the\nregion rather than a control in one, which is the other half of the axis's\ndomain: the rest of it is pictures, which are not controls either. Not\n`appearance`, which says how a thing reads rather than how wide it is.",
40088
+ "attribute": "size",
40089
40089
  "reflects": true
40090
40090
  },
40091
40091
  {
40092
40092
  "kind": "field",
40093
- "name": "size",
40093
+ "name": "textAlign",
40094
40094
  "type": {
40095
- "text": "'sm' | 'md' | 'lg' | 'full' | undefined"
40095
+ "text": "'center' | 'start' | undefined"
40096
40096
  },
40097
- "description": "How wide the panel is allowed to be.\n\nSteps rather than a number, because a dialog's width is a fact about what is\nin it: a confirmation is narrow, a form is not, and picking pixels per\ndialog is how a product ends up with nine of them. `full` takes the viewport\nless the same inset every step already stops short by, so a takeover is one\nmore rung and not a second property.\n\nUnset is `md`, read as `:host(:not([size]))` beside `:host([size=\"md\"])`\nrather than assigned here, for the reason `Drawer.placement` gives: this\nreflects, and a default would put `size=\"md\"` into markup no consumer wrote.\n\n`size` is right despite the rule that controls have no size, because that\nrule's own test is whether two of them sitting together could legitimately\ndiffer, and it is answering \"a ragged row is unwritable\". Two dialogs never\nsit together. One is on screen at a time, in the top layer, and it is the\nregion rather than a control in one, which is the same reason `Avatar` and\n`Spinner` keep theirs. Not `appearance`, which says how a thing reads\nrather than how wide it is.",
40098
- "attribute": "size",
40097
+ "description": "Which way the panel's contents read.\n\n**Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS\nbox-alignment question, where things sit in a container, and they are named\nfor the properties they mirror; this one is `text-align` on a panel of\nprose, and `Table.Column` answers the same question under the same name.\nOne word for both questions is how a consumer who learned it on a layout\nwrites it here and gets no error, a value a component does not have leaving\nthe default in place and looking deliberate.\n\nOne property for the whole panel rather than one per region. The regions are\nnever mixed in practice: a dialog that asks a short question centers its\nmark, its title, its sentence and its buttons together, and a dialog holding\na form runs all four from the start. Three properties would be three ways to\nwrite the same two arrangements, and a fourth way to get one of them wrong.\n\nUnset is `start` and stays unset, so a reflected default cannot appear on a\nhost whose server output never had it.",
40098
+ "attribute": "text-align",
40099
40099
  "reflects": true
40100
40100
  },
40101
40101
  {
@@ -40752,20 +40752,20 @@
40752
40752
  ],
40753
40753
  "attributes": [
40754
40754
  {
40755
- "name": "align",
40755
+ "name": "size",
40756
40756
  "type": {
40757
- "text": "'center' | 'start' | undefined"
40757
+ "text": "'sm' | 'md' | 'lg' | 'full' | undefined"
40758
40758
  },
40759
- "description": "Which way the panel's contents read.\n\nOne property for the whole panel rather than one per region. The regions are\nnever mixed in practice: a dialog that asks a short question centers its\nmark, its title, its sentence and its buttons together, and a dialog holding\na form runs all four from the start. Three properties would be three ways to\nwrite the same two arrangements, and a fourth way to get one of them wrong.\n\nUnset is `start` and stays unset, so a reflected default cannot appear on a\nhost whose server output never had it.",
40760
- "fieldName": "align"
40759
+ "description": "How wide the panel is allowed to be.\n\nSteps rather than a number, because a dialog's width is a fact about what is\nin it: a confirmation is narrow, a form is not, and picking pixels per\ndialog is how a product ends up with nine of them. `full` takes the viewport\nless the same inset every step already stops short by, so a takeover is one\nmore rung and not a second property.\n\nUnset is `md`, read as `:host(:not([size]))` beside `:host([size=\"md\"])`\nrather than assigned here, for the reason `Drawer.placement` gives: this\nreflects, and a default would put `size=\"md\"` into markup no consumer wrote.\n\n`size` is right despite the rule that controls have no size, because that\nrule's own test is whether two of them sitting together could legitimately\ndiffer, and it is answering \"a ragged row is unwritable\". Two dialogs never\nsit together. One is on screen at a time, in the top layer, and it is the\nregion rather than a control in one, which is the other half of the axis's\ndomain: the rest of it is pictures, which are not controls either. Not\n`appearance`, which says how a thing reads rather than how wide it is.",
40760
+ "fieldName": "size"
40761
40761
  },
40762
40762
  {
40763
- "name": "size",
40763
+ "name": "text-align",
40764
40764
  "type": {
40765
- "text": "'sm' | 'md' | 'lg' | 'full' | undefined"
40765
+ "text": "'center' | 'start' | undefined"
40766
40766
  },
40767
- "description": "How wide the panel is allowed to be.\n\nSteps rather than a number, because a dialog's width is a fact about what is\nin it: a confirmation is narrow, a form is not, and picking pixels per\ndialog is how a product ends up with nine of them. `full` takes the viewport\nless the same inset every step already stops short by, so a takeover is one\nmore rung and not a second property.\n\nUnset is `md`, read as `:host(:not([size]))` beside `:host([size=\"md\"])`\nrather than assigned here, for the reason `Drawer.placement` gives: this\nreflects, and a default would put `size=\"md\"` into markup no consumer wrote.\n\n`size` is right despite the rule that controls have no size, because that\nrule's own test is whether two of them sitting together could legitimately\ndiffer, and it is answering \"a ragged row is unwritable\". Two dialogs never\nsit together. One is on screen at a time, in the top layer, and it is the\nregion rather than a control in one, which is the same reason `Avatar` and\n`Spinner` keep theirs. Not `appearance`, which says how a thing reads\nrather than how wide it is.",
40768
- "fieldName": "size"
40767
+ "description": "Which way the panel's contents read.\n\n**Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS\nbox-alignment question, where things sit in a container, and they are named\nfor the properties they mirror; this one is `text-align` on a panel of\nprose, and `Table.Column` answers the same question under the same name.\nOne word for both questions is how a consumer who learned it on a layout\nwrites it here and gets no error, a value a component does not have leaving\nthe default in place and looking deliberate.\n\nOne property for the whole panel rather than one per region. The regions are\nnever mixed in practice: a dialog that asks a short question centers its\nmark, its title, its sentence and its buttons together, and a dialog holding\na form runs all four from the start. Three properties would be three ways to\nwrite the same two arrangements, and a fourth way to get one of them wrong.\n\nUnset is `start` and stays unset, so a reflected default cannot appear on a\nhost whose server output never had it.",
40768
+ "fieldName": "textAlign"
40769
40769
  },
40770
40770
  {
40771
40771
  "name": "open",
@@ -52355,12 +52355,12 @@
52355
52355
  "members": [
52356
52356
  {
52357
52357
  "kind": "field",
52358
- "name": "align",
52358
+ "name": "alignItems",
52359
52359
  "type": {
52360
52360
  "text": "'start' | 'center' | 'end' | 'stretch' | 'baseline' | undefined"
52361
52361
  },
52362
- "description": "Alignment across the direction.",
52363
- "attribute": "align",
52362
+ "description": "Alignment across the direction, which is `align-items`.\n\n**Named for the CSS property it sets, because it is that property.** A flex\ncontainer is the one place where the box-alignment words are already the\nreader's, so a shorter name would be a second vocabulary for something they\ncan already say, and `align` alone is the word four other families use for\nfour other questions: `Dialog` and `Table.Column` mean `text-align` by it.\n\n**It also keeps the name out of the browser's way.** `align` is a legacy\nHTML presentational attribute mapped to `text-align` on any element that\ncarries one, this one included: measured, an invented tag with\n`align=\"center\"` computes centered text too, so it is nothing to do with\nbeing a known element. A row that carried it therefore centered the text\ninside every field in it, through a hint no rule here declares and none can\nsee, and the fix is a name the platform has no opinion about rather than a\nguard against the hint.",
52363
+ "attribute": "align-items",
52364
52364
  "reflects": true
52365
52365
  },
52366
52366
  {
@@ -52396,12 +52396,12 @@
52396
52396
  },
52397
52397
  {
52398
52398
  "kind": "field",
52399
- "name": "justify",
52399
+ "name": "justifyContent",
52400
52400
  "type": {
52401
52401
  "text": "'start' | 'center' | 'end' | 'between' | 'around' | undefined"
52402
52402
  },
52403
- "description": "Distribution along the direction.",
52404
- "attribute": "justify",
52403
+ "description": "Distribution along the direction, which is `justify-content`.\n\nNamed for the property it sets, the way `alignItems` is. `between` and\n`around` drop the `space-` prefix and nothing else does, because those two\nare the only values whose CSS spelling is two words.",
52404
+ "attribute": "justify-content",
52405
52405
  "reflects": true
52406
52406
  },
52407
52407
  {
@@ -52742,12 +52742,12 @@
52742
52742
  ],
52743
52743
  "attributes": [
52744
52744
  {
52745
- "name": "align",
52745
+ "name": "align-items",
52746
52746
  "type": {
52747
52747
  "text": "'start' | 'center' | 'end' | 'stretch' | 'baseline' | undefined"
52748
52748
  },
52749
- "description": "Alignment across the direction.",
52750
- "fieldName": "align"
52749
+ "description": "Alignment across the direction, which is `align-items`.\n\n**Named for the CSS property it sets, because it is that property.** A flex\ncontainer is the one place where the box-alignment words are already the\nreader's, so a shorter name would be a second vocabulary for something they\ncan already say, and `align` alone is the word four other families use for\nfour other questions: `Dialog` and `Table.Column` mean `text-align` by it.\n\n**It also keeps the name out of the browser's way.** `align` is a legacy\nHTML presentational attribute mapped to `text-align` on any element that\ncarries one, this one included: measured, an invented tag with\n`align=\"center\"` computes centered text too, so it is nothing to do with\nbeing a known element. A row that carried it therefore centered the text\ninside every field in it, through a hint no rule here declares and none can\nsee, and the fix is a name the platform has no opinion about rather than a\nguard against the hint.",
52750
+ "fieldName": "alignItems"
52751
52751
  },
52752
52752
  {
52753
52753
  "name": "direction",
@@ -52775,12 +52775,12 @@
52775
52775
  "fieldName": "inline"
52776
52776
  },
52777
52777
  {
52778
- "name": "justify",
52778
+ "name": "justify-content",
52779
52779
  "type": {
52780
52780
  "text": "'start' | 'center' | 'end' | 'between' | 'around' | undefined"
52781
52781
  },
52782
- "description": "Distribution along the direction.",
52783
- "fieldName": "justify"
52782
+ "description": "Distribution along the direction, which is `justify-content`.\n\nNamed for the property it sets, the way `alignItems` is. `between` and\n`around` drop the `space-` prefix and nothing else does, because those two\nare the only values whose CSS spelling is two words.",
52783
+ "fieldName": "justifyContent"
52784
52784
  },
52785
52785
  {
52786
52786
  "name": "wrap",
@@ -53791,12 +53791,12 @@
53791
53791
  "members": [
53792
53792
  {
53793
53793
  "kind": "field",
53794
- "name": "align",
53794
+ "name": "alignItems",
53795
53795
  "type": {
53796
53796
  "text": "'start' | 'center' | 'end' | 'stretch' | undefined"
53797
53797
  },
53798
- "description": "Alignment of each cell within its row.",
53799
- "attribute": "align",
53798
+ "description": "Alignment of each cell within its row, which is `align-items`.\n\n**Named for the CSS property it sets**, the way `Flex` is, and the same\nproperty on a grid: it places every cell in its row's track rather than\nplacing the tracks. No `baseline`, which `Flex` offers, because cells in a\nrow of a grid are boxes of unrelated content and lining their first lines\nup is a thing a reader asks for between siblings in a row, not between\ncells in a table of them.\n\nThere is no `justifyContent` here for the same reason: the tracks are\n`1fr`, so they already fill the row and there is nothing left over to\ndistribute. `columns`, `min` and `--grid-columns` are how a grid says how\nwide its tracks are.",
53799
+ "attribute": "align-items",
53800
53800
  "reflects": true
53801
53801
  },
53802
53802
  {
@@ -54167,12 +54167,12 @@
54167
54167
  ],
54168
54168
  "attributes": [
54169
54169
  {
54170
- "name": "align",
54170
+ "name": "align-items",
54171
54171
  "type": {
54172
54172
  "text": "'start' | 'center' | 'end' | 'stretch' | undefined"
54173
54173
  },
54174
- "description": "Alignment of each cell within its row.",
54175
- "fieldName": "align"
54174
+ "description": "Alignment of each cell within its row, which is `align-items`.\n\n**Named for the CSS property it sets**, the way `Flex` is, and the same\nproperty on a grid: it places every cell in its row's track rather than\nplacing the tracks. No `baseline`, which `Flex` offers, because cells in a\nrow of a grid are boxes of unrelated content and lining their first lines\nup is a thing a reader asks for between siblings in a row, not between\ncells in a table of them.\n\nThere is no `justifyContent` here for the same reason: the tracks are\n`1fr`, so they already fill the row and there is nothing left over to\ndistribute. `columns`, `min` and `--grid-columns` are how a grid says how\nwide its tracks are.",
54175
+ "fieldName": "alignItems"
54176
54176
  },
54177
54177
  {
54178
54178
  "name": "columns",
@@ -57447,20 +57447,19 @@
57447
57447
  "name": "--image-position"
57448
57448
  },
57449
57449
  {
57450
- "description": "Corner radius, under `rounded`.",
57450
+ "description": "Corner radius, under `shape=\"rounded\"`.",
57451
57451
  "name": "--image-radius"
57452
57452
  }
57453
57453
  ],
57454
57454
  "members": [
57455
57455
  {
57456
57456
  "kind": "field",
57457
- "name": "rounded",
57457
+ "name": "shape",
57458
57458
  "type": {
57459
- "text": "boolean"
57459
+ "text": "'rounded' | undefined"
57460
57460
  },
57461
- "default": "false",
57462
- "description": "Whether the corners are cut.\n\nA boolean rather than a radius, because the radius is a token and the\nquestion a consumer is answering is whether this picture is a card's\nsurface or a page's. `--image-radius` moves it for the case that is\nneither.",
57463
- "attribute": "rounded",
57461
+ "description": "Whether the corners are cut.\n\nThe axis and not a boolean, because `rounded` is a registered word and a\nprivate spelling of a registry question is what `appearance` was retired\nfor. Not a radius either: the radius is a token and the question a consumer\nis answering is whether this picture is a card's surface or a page's.\n`--image-radius` moves it for the case that is neither.",
57462
+ "attribute": "shape",
57464
57463
  "reflects": true
57465
57464
  },
57466
57465
  {
@@ -58088,13 +58087,12 @@
58088
58087
  ],
58089
58088
  "attributes": [
58090
58089
  {
58091
- "name": "rounded",
58090
+ "name": "shape",
58092
58091
  "type": {
58093
- "text": "boolean"
58092
+ "text": "'rounded' | undefined"
58094
58093
  },
58095
- "default": "false",
58096
- "description": "Whether the corners are cut.\n\nA boolean rather than a radius, because the radius is a token and the\nquestion a consumer is answering is whether this picture is a card's\nsurface or a page's. `--image-radius` moves it for the case that is\nneither.",
58097
- "fieldName": "rounded"
58094
+ "description": "Whether the corners are cut.\n\nThe axis and not a boolean, because `rounded` is a registered word and a\nprivate spelling of a registry question is what `appearance` was retired\nfor. Not a radius either: the radius is a token and the question a consumer\nis answering is whether this picture is a card's surface or a page's.\n`--image-radius` moves it for the case that is neither.",
58095
+ "fieldName": "shape"
58098
58096
  },
58099
58097
  {
58100
58098
  "name": "alt",
@@ -67673,13 +67671,13 @@
67673
67671
  },
67674
67672
  {
67675
67673
  "kind": "field",
67676
- "name": "fullBelow",
67674
+ "name": "bandBelow",
67677
67675
  "type": {
67678
67676
  "text": "number"
67679
67677
  },
67680
67678
  "default": "640",
67681
67679
  "description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
67682
- "attribute": "full-below",
67680
+ "attribute": "band-below",
67683
67681
  "inheritedFrom": {
67684
67682
  "name": "HelixHeadlessMegamenu",
67685
67683
  "module": "src/megamenu/root/megamenu-root.ts"
@@ -67717,9 +67715,9 @@
67717
67715
  "kind": "field",
67718
67716
  "name": "variant",
67719
67717
  "type": {
67720
- "text": "'full' | undefined"
67718
+ "text": "'band' | undefined"
67721
67719
  },
67722
- "description": "Whether the panel is a card under the trigger or a band across the page.\n\nThe resting one is the card, hanging off the trigger and as wide as it\nneeds to be. `full` is the other shape navigations use: a band from edge to\nedge under the header, with its contents held to the page's own measure, so\na set of destinations too wide to sit under one word gets the whole width\nto lay out in.\n\nIt changes where the panel goes as well as how it looks, which is why this\ntier knows about it at all: a band spans the viewport, so there is nothing\nto measure it against and nothing to flip or shift to, and the placing pass\nis told not to run. Everything else the popover gives, the top layer and\nthe dismissal, is exactly what such a band needs.",
67720
+ "description": "Whether the panel is a card under the trigger or a band across the page.\n\nThe resting one is the card, hanging off the trigger and as wide as it\nneeds to be. `band` is the other shape navigations use: a run from edge to\nedge under the header, with its contents held to the page's own measure, so\na set of destinations too wide to sit under one word gets the whole width\nto lay out in.\n\n**A band and not a width, which is why the word is not `full`.** It changes\nwhere the panel goes as well as how wide it is, which is why this tier\nknows about it at all: a band spans the viewport, so there is nothing to\nmeasure it against and nothing to flip or shift to, and the placing pass is\ntold not to run. Everything else the popover gives, the top layer and the\ndismissal, is exactly what such a band needs. `full` is the registry's word\nfor a width, and `Button` and `Dialog` are the two families answering that\nquestion; borrowing it here would put a third meaning on it.\n\n`variant` and not an axis, for the reason the registry gives: a card under\na word and a band under a header are two arrangements this family has, and\nno other family is being asked the same question.",
67723
67721
  "attribute": "variant",
67724
67722
  "reflects": true,
67725
67723
  "inheritedFrom": {
@@ -68413,16 +68411,16 @@
68413
68411
  "min": 360,
68414
68412
  "slug": "preview"
68415
68413
  },
68414
+ {
68415
+ "description": "A band from edge to edge, for a panel too wide to hang off one word.",
68416
+ "slug": "band"
68417
+ },
68416
68418
  {
68417
68419
  "description": "A panel across the navigation, announcing before it moves and after.",
68418
68420
  "layout": "padded",
68419
68421
  "min": 360,
68420
68422
  "slug": "events"
68421
68423
  },
68422
- {
68423
- "description": "A band from edge to edge, for a panel too wide to hang off one word.",
68424
- "slug": "full"
68425
- },
68426
68424
  {
68427
68425
  "description": "Opening only on a press, for a trigger that is also a link.",
68428
68426
  "slug": "on-press"
@@ -68464,13 +68462,13 @@
68464
68462
  }
68465
68463
  },
68466
68464
  {
68467
- "name": "full-below",
68465
+ "name": "band-below",
68468
68466
  "type": {
68469
68467
  "text": "number"
68470
68468
  },
68471
68469
  "default": "640",
68472
68470
  "description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
68473
- "fieldName": "fullBelow",
68471
+ "fieldName": "bandBelow",
68474
68472
  "inheritedFrom": {
68475
68473
  "name": "HelixHeadlessMegamenu",
68476
68474
  "module": "src/megamenu/root/megamenu-root.ts"
@@ -68505,9 +68503,9 @@
68505
68503
  {
68506
68504
  "name": "variant",
68507
68505
  "type": {
68508
- "text": "'full' | undefined"
68506
+ "text": "'band' | undefined"
68509
68507
  },
68510
- "description": "Whether the panel is a card under the trigger or a band across the page.\n\nThe resting one is the card, hanging off the trigger and as wide as it\nneeds to be. `full` is the other shape navigations use: a band from edge to\nedge under the header, with its contents held to the page's own measure, so\na set of destinations too wide to sit under one word gets the whole width\nto lay out in.\n\nIt changes where the panel goes as well as how it looks, which is why this\ntier knows about it at all: a band spans the viewport, so there is nothing\nto measure it against and nothing to flip or shift to, and the placing pass\nis told not to run. Everything else the popover gives, the top layer and\nthe dismissal, is exactly what such a band needs.",
68508
+ "description": "Whether the panel is a card under the trigger or a band across the page.\n\nThe resting one is the card, hanging off the trigger and as wide as it\nneeds to be. `band` is the other shape navigations use: a run from edge to\nedge under the header, with its contents held to the page's own measure, so\na set of destinations too wide to sit under one word gets the whole width\nto lay out in.\n\n**A band and not a width, which is why the word is not `full`.** It changes\nwhere the panel goes as well as how wide it is, which is why this tier\nknows about it at all: a band spans the viewport, so there is nothing to\nmeasure it against and nothing to flip or shift to, and the placing pass is\ntold not to run. Everything else the popover gives, the top layer and the\ndismissal, is exactly what such a band needs. `full` is the registry's word\nfor a width, and `Button` and `Dialog` are the two families answering that\nquestion; borrowing it here would put a third meaning on it.\n\n`variant` and not an axis, for the reason the registry gives: a card under\na word and a band under a header are two arrangements this family has, and\nno other family is being asked the same question.",
68511
68509
  "fieldName": "variant",
68512
68510
  "inheritedFrom": {
68513
68511
  "name": "HelixHeadlessMegamenu",
@@ -68591,7 +68589,7 @@
68591
68589
  ],
68592
68590
  "cssStates": [
68593
68591
  {
68594
- "description": "While the page is under `full-below`, so the panel is a band whether or not one was asked for.",
68592
+ "description": "While the page is under `band-below`, so the panel is a band whether or not one was asked for.",
68595
68593
  "name": "narrow",
68596
68594
  "inheritedFrom": {
68597
68595
  "name": "HelixHeadlessMegamenu",
@@ -79827,9 +79825,9 @@
79827
79825
  "kind": "field",
79828
79826
  "name": "size",
79829
79827
  "type": {
79830
- "text": "'lg' | 'sm' | undefined"
79828
+ "text": "'sm' | 'md' | 'lg' | undefined"
79831
79829
  },
79832
- "description": "Diameter relative to the surrounding text.\n\nReflected because the stylesheet selects on it. The mesh is chosen from the\nrendered box rather than from this, so `--orb-size` and a consumer's own\n`inline-size` get the same treatment as the named steps.",
79830
+ "description": "Diameter relative to the surrounding text.\n\n**`Loader`'s three steps, because the two are swapped for each other.** An\norb and a spinner are the same job drawn differently, a wait a reader is\nlooking at, and a product that replaces one with the other should not find\nthat a step it was writing has stopped existing. `md` is the resting one\nand selects nothing, landing on the base rule the way a written resting\nvalue does everywhere else.\n\nReflected because the stylesheet selects on it. The mesh is chosen from the\nrendered box rather than from this, so `--orb-size` and a consumer's own\n`inline-size` get the same treatment as the named steps.",
79833
79831
  "attribute": "size",
79834
79832
  "reflects": true
79835
79833
  },
@@ -80449,9 +80447,9 @@
80449
80447
  {
80450
80448
  "name": "size",
80451
80449
  "type": {
80452
- "text": "'lg' | 'sm' | undefined"
80450
+ "text": "'sm' | 'md' | 'lg' | undefined"
80453
80451
  },
80454
- "description": "Diameter relative to the surrounding text.\n\nReflected because the stylesheet selects on it. The mesh is chosen from the\nrendered box rather than from this, so `--orb-size` and a consumer's own\n`inline-size` get the same treatment as the named steps.",
80452
+ "description": "Diameter relative to the surrounding text.\n\n**`Loader`'s three steps, because the two are swapped for each other.** An\norb and a spinner are the same job drawn differently, a wait a reader is\nlooking at, and a product that replaces one with the other should not find\nthat a step it was writing has stopped existing. `md` is the resting one\nand selects nothing, landing on the base rule the way a written resting\nvalue does everywhere else.\n\nReflected because the stylesheet selects on it. The mesh is chosen from the\nrendered box rather than from this, so `--orb-size` and a consumer's own\n`inline-size` get the same treatment as the named steps.",
80455
80453
  "fieldName": "size"
80456
80454
  },
80457
80455
  {
@@ -87295,6 +87293,14 @@
87295
87293
  "description": "Thickness of its stroke.",
87296
87294
  "name": "--progress-ring-width"
87297
87295
  },
87296
+ {
87297
+ "description": "Thickness of the bar.",
87298
+ "name": "--progress-size"
87299
+ },
87300
+ {
87301
+ "description": "Fill of the part that is not.",
87302
+ "name": "--progress-track-color"
87303
+ },
87298
87304
  {
87299
87305
  "description": "The value as a fraction of the range, 0 to 1. Pinned to 1 while indeterminate.",
87300
87306
  "name": "--progress-fraction",
@@ -90481,17 +90487,27 @@
90481
90487
  "text": "boolean"
90482
90488
  },
90483
90489
  "default": "false",
90484
- "description": "Takes the circle away, leaving the card as the whole control.\n\nUnnecessary under `chip`, which has no room for a circle beside its mark\nand hides it already.\n\n`card` only, and it is a graphic that goes rather than a radio: the control\nin the shadow root is untouched, so the row is still focusable, still\nreported to a screen reader, and still the thing a form submits.\n\nSafe because the card already carries the answer in its surface, a raised\nfill inside a primary edge and a three-pixel ring of it. Without that ring\nnothing would be left saying which card was chosen.\n\nNot on `Checkbox`, deliberately. A radio card with no circle is still\nunmistakably one-of-many because its siblings behave that way; a checkbox\ncard with no box loses the only thing that says you may pick several.",
90490
+ "description": "Takes the circle away, leaving the card as the whole control.\n\nUnnecessary under `chip`, which has no room for a circle beside its mark\nand hides it already.\n\nA separated choice only, and it is a graphic that goes rather than a radio:\nthe control in the shadow root is untouched, so the row is still focusable,\nstill reported to a screen reader, and still the thing a form submits.\n\nSafe because the card already carries the answer in its surface, a raised\nfill inside a primary edge and a three-pixel ring of it. Without that ring\nnothing would be left saying which card was chosen.\n\nNot on `Checkbox`, deliberately. A radio card with no circle is still\nunmistakably one-of-many because its siblings behave that way; a checkbox\ncard with no box loses the only thing that says you may pick several.",
90485
90491
  "attribute": "hide-control",
90486
90492
  "reflects": true
90487
90493
  },
90494
+ {
90495
+ "kind": "field",
90496
+ "name": "separation",
90497
+ "type": {
90498
+ "text": "'filled' | 'outlined' | 'plain' | undefined"
90499
+ },
90500
+ "description": "Where the choice's own surface ends.\n\nThe question `separation` asks everywhere else, asked of one option, so it\nis that word: what these values pick is a surface, and `plain` is already\nthe registry's own word for the answer this family used it for.\n\n- `plain` is the resting one and is never written: a circle beside its\n words, which is what a list of choices should be almost always.\n- `outlined` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n- `filled` is that same card on a ground of its own with no edge, which is\n what a column of choices wants where a hairline around every one of them\n is a grid of lines rather than a set of answers.\n\n**`elevated` is the one value of the axis this family does not take.** A\nraised choice competes with a dialog: the top layer is where a thing that\ninterrupts you lives, and an option in a form is not one of those, so a\ncolumn of lifted cards reads as a stack of floating things none of which is\nsettled.\n\nThe circle stays in all of them. A card whose only marker was its own\nborder would ask a reader to compare surfaces across a row to find the\nanswer, and would leave nothing for a high-contrast display.",
90501
+ "attribute": "separation",
90502
+ "reflects": true
90503
+ },
90488
90504
  {
90489
90505
  "kind": "field",
90490
90506
  "name": "variant",
90491
90507
  "type": {
90492
- "text": "'chip' | 'plain' | 'card' | undefined"
90508
+ "text": "'chip' | undefined"
90493
90509
  },
90494
- "description": "How the choice presents itself.\n\n- `plain` is the default and is never written: a circle beside its words,\n which is what a list of choices should be almost always.\n- `card` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n- `chip` is the answer as its own small surface, for a row of short\n choices read at a glance. It hides the circle, the surface being the\n whole mark, which is why `hide-control` says it is unnecessary here.\n\nThe circle stays in both. A card whose only marker was its own border would\nask a reader to compare surfaces across a row to find the answer, and would\nleave nothing for a high-contrast display.",
90510
+ "description": "The answer as its own small surface, for a row of short choices read at a\nglance.\n\n**Not a separation, which is why it is still `variant`.** The other values\npick where a surface ends around a row that keeps its circle and its words;\na chip has neither. It hides the circle, the surface being the whole mark,\nwhich is why `hide-control` says it is unnecessary here, and it takes the\nwords out of the flow to be the accessible name. That removes the\ndistinction `separation` exists to make rather than answering it.",
90495
90511
  "attribute": "variant",
90496
90512
  "reflects": true
90497
90513
  },
@@ -90943,15 +90959,23 @@
90943
90959
  "text": "boolean"
90944
90960
  },
90945
90961
  "default": "false",
90946
- "description": "Takes the circle away, leaving the card as the whole control.\n\nUnnecessary under `chip`, which has no room for a circle beside its mark\nand hides it already.\n\n`card` only, and it is a graphic that goes rather than a radio: the control\nin the shadow root is untouched, so the row is still focusable, still\nreported to a screen reader, and still the thing a form submits.\n\nSafe because the card already carries the answer in its surface, a raised\nfill inside a primary edge and a three-pixel ring of it. Without that ring\nnothing would be left saying which card was chosen.\n\nNot on `Checkbox`, deliberately. A radio card with no circle is still\nunmistakably one-of-many because its siblings behave that way; a checkbox\ncard with no box loses the only thing that says you may pick several.",
90962
+ "description": "Takes the circle away, leaving the card as the whole control.\n\nUnnecessary under `chip`, which has no room for a circle beside its mark\nand hides it already.\n\nA separated choice only, and it is a graphic that goes rather than a radio:\nthe control in the shadow root is untouched, so the row is still focusable,\nstill reported to a screen reader, and still the thing a form submits.\n\nSafe because the card already carries the answer in its surface, a raised\nfill inside a primary edge and a three-pixel ring of it. Without that ring\nnothing would be left saying which card was chosen.\n\nNot on `Checkbox`, deliberately. A radio card with no circle is still\nunmistakably one-of-many because its siblings behave that way; a checkbox\ncard with no box loses the only thing that says you may pick several.",
90947
90963
  "fieldName": "hideControl"
90948
90964
  },
90965
+ {
90966
+ "name": "separation",
90967
+ "type": {
90968
+ "text": "'filled' | 'outlined' | 'plain' | undefined"
90969
+ },
90970
+ "description": "Where the choice's own surface ends.\n\nThe question `separation` asks everywhere else, asked of one option, so it\nis that word: what these values pick is a surface, and `plain` is already\nthe registry's own word for the answer this family used it for.\n\n- `plain` is the resting one and is never written: a circle beside its\n words, which is what a list of choices should be almost always.\n- `outlined` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n- `filled` is that same card on a ground of its own with no edge, which is\n what a column of choices wants where a hairline around every one of them\n is a grid of lines rather than a set of answers.\n\n**`elevated` is the one value of the axis this family does not take.** A\nraised choice competes with a dialog: the top layer is where a thing that\ninterrupts you lives, and an option in a form is not one of those, so a\ncolumn of lifted cards reads as a stack of floating things none of which is\nsettled.\n\nThe circle stays in all of them. A card whose only marker was its own\nborder would ask a reader to compare surfaces across a row to find the\nanswer, and would leave nothing for a high-contrast display.",
90971
+ "fieldName": "separation"
90972
+ },
90949
90973
  {
90950
90974
  "name": "variant",
90951
90975
  "type": {
90952
- "text": "'chip' | 'plain' | 'card' | undefined"
90976
+ "text": "'chip' | undefined"
90953
90977
  },
90954
- "description": "How the choice presents itself.\n\n- `plain` is the default and is never written: a circle beside its words,\n which is what a list of choices should be almost always.\n- `card` puts it in a bounded surface, for options that need room to\n explain themselves: a description, an icon, a price. It is the half a\n `data-card` link cannot do, because a link reports no value and belongs\n to no group, so a card that is genuinely an answer has to be this.\n- `chip` is the answer as its own small surface, for a row of short\n choices read at a glance. It hides the circle, the surface being the\n whole mark, which is why `hide-control` says it is unnecessary here.\n\nThe circle stays in both. A card whose only marker was its own border would\nask a reader to compare surfaces across a row to find the answer, and would\nleave nothing for a high-contrast display.",
90978
+ "description": "The answer as its own small surface, for a row of short choices read at a\nglance.\n\n**Not a separation, which is why it is still `variant`.** The other values\npick where a surface ends around a row that keeps its circle and its words;\na chip has neither. It hides the circle, the surface being the whole mark,\nwhich is why `hide-control` says it is unnecessary here, and it takes the\nwords out of the flow to be the accessible name. That removes the\ndistinction `separation` exists to make rather than answering it.",
90955
90979
  "fieldName": "variant"
90956
90980
  },
90957
90981
  {
@@ -91260,12 +91284,12 @@
91260
91284
  "members": [
91261
91285
  {
91262
91286
  "kind": "field",
91263
- "name": "variant",
91287
+ "name": "shape",
91264
91288
  "type": {
91265
- "text": "'dots' | 'marks' | undefined"
91289
+ "text": "'dots' | undefined"
91266
91290
  },
91267
- "description": "Which mark the row is drawn with.\n\n`marks` is the star, and is what a rating means to most readers. `dots`\ndrops the glyph for a plain circle, which says how much rather than how\ngood: a star carries a judgment that a level of spice, a difficulty or a\nconfidence has not earned.\n\nBoth are one shape repeated and clipped to the score, so halves work in\neither, and both are only a choice of drawing. A scale whose marks are\n*different* drawings is a set of choices rather than a quantity: that is\n`Radio.Group`, whose options already carry a value and a name each.\n\n**Undefaulted, because it reflects.** A default of `marks` writes\n`variant=\"marks\"` onto every server-rendered rating, which React holds no\nprop for and reports as a hydration mismatch. The stylesheet names only\n`dots`, so an unset one draws marks anyway.",
91268
- "attribute": "variant",
91291
+ "description": "The geometry one mark is drawn to.\n\nThe registry's word, because the question is the registry's: `Avatar`,\n`Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry\ntheir own thing is cut to under this name, and `dots` is already a value\nthe axis holds. What is picked here is the outline of one mark and nothing\nelse, which is a shape and not a component-specific choice.\n\n`dots` drops the glyph for a plain circle, which says how much rather than\nhow good: a star carries a judgment that a level of spice, a difficulty or\na confidence has not earned. Either way it is one shape repeated and\nclipped to the score, so halves work in both. A scale whose marks are\n*different* drawings is a set of choices rather than a quantity: that is\n`Radio.Group`, whose options already carry a value and a name each.\n\n**The star is the resting one and has no word**, which is the rule every\naxis follows and is also what this family needed anyway: it reflects, so a\ndefault would write the resting value onto every server-rendered rating,\nan attribute React holds no prop for and so a hydration mismatch for each\none. The stylesheet names only `dots`, so an unset one draws the star by\nlanding on the base rule.",
91292
+ "attribute": "shape",
91269
91293
  "reflects": true
91270
91294
  },
91271
91295
  {
@@ -92535,12 +92559,12 @@
92535
92559
  ],
92536
92560
  "attributes": [
92537
92561
  {
92538
- "name": "variant",
92562
+ "name": "shape",
92539
92563
  "type": {
92540
- "text": "'dots' | 'marks' | undefined"
92564
+ "text": "'dots' | undefined"
92541
92565
  },
92542
- "description": "Which mark the row is drawn with.\n\n`marks` is the star, and is what a rating means to most readers. `dots`\ndrops the glyph for a plain circle, which says how much rather than how\ngood: a star carries a judgment that a level of spice, a difficulty or a\nconfidence has not earned.\n\nBoth are one shape repeated and clipped to the score, so halves work in\neither, and both are only a choice of drawing. A scale whose marks are\n*different* drawings is a set of choices rather than a quantity: that is\n`Radio.Group`, whose options already carry a value and a name each.\n\n**Undefaulted, because it reflects.** A default of `marks` writes\n`variant=\"marks\"` onto every server-rendered rating, which React holds no\nprop for and reports as a hydration mismatch. The stylesheet names only\n`dots`, so an unset one draws marks anyway.",
92543
- "fieldName": "variant"
92566
+ "description": "The geometry one mark is drawn to.\n\nThe registry's word, because the question is the registry's: `Avatar`,\n`Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry\ntheir own thing is cut to under this name, and `dots` is already a value\nthe axis holds. What is picked here is the outline of one mark and nothing\nelse, which is a shape and not a component-specific choice.\n\n`dots` drops the glyph for a plain circle, which says how much rather than\nhow good: a star carries a judgment that a level of spice, a difficulty or\na confidence has not earned. Either way it is one shape repeated and\nclipped to the score, so halves work in both. A scale whose marks are\n*different* drawings is a set of choices rather than a quantity: that is\n`Radio.Group`, whose options already carry a value and a name each.\n\n**The star is the resting one and has no word**, which is the rule every\naxis follows and is also what this family needed anyway: it reflects, so a\ndefault would write the resting value onto every server-rendered rating,\nan attribute React holds no prop for and so a hydration mismatch for each\none. The stylesheet names only `dots`, so an unset one draws the star by\nlanding on the base rule.",
92567
+ "fieldName": "shape"
92544
92568
  },
92545
92569
  {
92546
92570
  "name": "default-value",
@@ -98559,7 +98583,7 @@
98559
98583
  "type": {
98560
98584
  "text": "'ghost' | undefined"
98561
98585
  },
98562
- "description": "How much ink the trigger claims.\n\n**The first field in this library to take an axis, and the case that asked\nfor it is a control in a row rather than a control on a form.** A chat's\ncomposer wants a model picker beside an attachment button and a send button:\nat the field's own frame it is 40 pixels of bordered well in a line of 28\npixel glyphs, and it reads as the composer's subject rather than as one of\nits tools. The same is true of a select in a toolbar, in a table header, or\ninside a sentence.\n\n- Unset is the frame an `Input` wears, which is what a form wants: a control\n that looks like a button among fields reads as an action rather than an\n answer.\n- `ghost` drops the fill and the edge, takes the width of what is in it, and\n puts the mark against the value instead of at the far end of the control.\n\n**`emphasis` and not `separation`, which the registry decides rather than\ntaste.** Emphasis is asked of controls, how loud this one is; separation is\nasked of containers, where the surface ends. A trigger is a control, and a\nfamily may not declare both. Three of the five values are refused: `solid`\nand `subtle` are a button's way of being the one thing to press, which is\nnot a thing an answer should ever be, and `muted` is the quiet ink `Text`\ntakes, where a trigger's loudness is its frame rather than its ink.\n`outlined` is what the unset frame already draws, so writing it would be\nwriting the resting state out.\n\n**The other three fields want this too and do not have it yet.** `Input`,\n`Textarea` and `Combobox` wear the same frame from the same shared\nstylesheet, and an inline one of each is as reasonable as an inline select.\nThey are left alone rather than swept, because each has a different thing\ninside the frame and guessing at three is how an axis ends up meaning four\nthings, which is the fault `appearance` was retired for.",
98586
+ "description": "How much ink the trigger claims.\n\n**The first field in this library to take an axis, and the case that asked\nfor it is a control in a row rather than a control on a form.** A chat's\ncomposer wants a model picker beside an attachment button and a send button:\nat the field's own frame it is 40 pixels of bordered well in a line of 28\npixel glyphs, and it reads as the composer's subject rather than as one of\nits tools. The same is true of a select in a toolbar, in a table header, or\ninside a sentence.\n\n- Unset is the frame an `Input` wears, which is what a form wants: a control\n that looks like a button among fields reads as an action rather than an\n answer.\n- `ghost` drops the fill and the edge, takes the width of what is in it, and\n puts the mark against the value instead of at the far end of the control.\n\n**`emphasis` and not `separation`, which the registry decides rather than\ntaste.** Emphasis is asked of controls, how loud this one is; separation is\nasked of containers, where the surface ends. A trigger is a control, and a\nfamily may not declare both. Three of the five values are refused: `solid`\nand `subtle` are a button's way of being the one thing to press, which is\nnot a thing an answer should ever be, and `muted` is the quiet ink `Text`\ntakes, where a trigger's loudness is its frame rather than its ink.\n`outlined` is what the unset frame already draws, so writing it would be\nwriting the resting state out.\n\n**Every field wearing `field-frame.css` wants this too and does not have it\nyet**, which this trigger is not one of: it draws its own frame below. An\ninline number input in a toolbar is as reasonable as an inline select. They\nare left alone rather than swept, because each has a different thing inside\nthe frame and guessing at a set of them is how an axis ends up meaning four\nthings, which is the fault `appearance` was retired for.",
98563
98587
  "attribute": "emphasis",
98564
98588
  "reflects": true
98565
98589
  },
@@ -99760,7 +99784,7 @@
99760
99784
  "type": {
99761
99785
  "text": "'ghost' | undefined"
99762
99786
  },
99763
- "description": "How much ink the trigger claims.\n\n**The first field in this library to take an axis, and the case that asked\nfor it is a control in a row rather than a control on a form.** A chat's\ncomposer wants a model picker beside an attachment button and a send button:\nat the field's own frame it is 40 pixels of bordered well in a line of 28\npixel glyphs, and it reads as the composer's subject rather than as one of\nits tools. The same is true of a select in a toolbar, in a table header, or\ninside a sentence.\n\n- Unset is the frame an `Input` wears, which is what a form wants: a control\n that looks like a button among fields reads as an action rather than an\n answer.\n- `ghost` drops the fill and the edge, takes the width of what is in it, and\n puts the mark against the value instead of at the far end of the control.\n\n**`emphasis` and not `separation`, which the registry decides rather than\ntaste.** Emphasis is asked of controls, how loud this one is; separation is\nasked of containers, where the surface ends. A trigger is a control, and a\nfamily may not declare both. Three of the five values are refused: `solid`\nand `subtle` are a button's way of being the one thing to press, which is\nnot a thing an answer should ever be, and `muted` is the quiet ink `Text`\ntakes, where a trigger's loudness is its frame rather than its ink.\n`outlined` is what the unset frame already draws, so writing it would be\nwriting the resting state out.\n\n**The other three fields want this too and do not have it yet.** `Input`,\n`Textarea` and `Combobox` wear the same frame from the same shared\nstylesheet, and an inline one of each is as reasonable as an inline select.\nThey are left alone rather than swept, because each has a different thing\ninside the frame and guessing at three is how an axis ends up meaning four\nthings, which is the fault `appearance` was retired for.",
99787
+ "description": "How much ink the trigger claims.\n\n**The first field in this library to take an axis, and the case that asked\nfor it is a control in a row rather than a control on a form.** A chat's\ncomposer wants a model picker beside an attachment button and a send button:\nat the field's own frame it is 40 pixels of bordered well in a line of 28\npixel glyphs, and it reads as the composer's subject rather than as one of\nits tools. The same is true of a select in a toolbar, in a table header, or\ninside a sentence.\n\n- Unset is the frame an `Input` wears, which is what a form wants: a control\n that looks like a button among fields reads as an action rather than an\n answer.\n- `ghost` drops the fill and the edge, takes the width of what is in it, and\n puts the mark against the value instead of at the far end of the control.\n\n**`emphasis` and not `separation`, which the registry decides rather than\ntaste.** Emphasis is asked of controls, how loud this one is; separation is\nasked of containers, where the surface ends. A trigger is a control, and a\nfamily may not declare both. Three of the five values are refused: `solid`\nand `subtle` are a button's way of being the one thing to press, which is\nnot a thing an answer should ever be, and `muted` is the quiet ink `Text`\ntakes, where a trigger's loudness is its frame rather than its ink.\n`outlined` is what the unset frame already draws, so writing it would be\nwriting the resting state out.\n\n**Every field wearing `field-frame.css` wants this too and does not have it\nyet**, which this trigger is not one of: it draws its own frame below. An\ninline number input in a toolbar is as reasonable as an inline select. They\nare left alone rather than swept, because each has a different thing inside\nthe frame and guessing at a set of them is how an axis ends up meaning four\nthings, which is the fault `appearance` was retired for.",
99764
99788
  "fieldName": "emphasis"
99765
99789
  },
99766
99790
  {
@@ -111507,20 +111531,6 @@
111507
111531
  "description": "Styled as the header cell it is, and it carries the same rule and inset as\nthe cells beneath it so the heading and its column read as one line down the\ntable.",
111508
111532
  "name": "HelixTableColumn",
111509
111533
  "members": [
111510
- {
111511
- "kind": "field",
111512
- "name": "align",
111513
- "type": {
111514
- "text": "'center' | 'end' | 'start' | undefined"
111515
- },
111516
- "description": "Which edge the values line up against.\n\n`end` is what a column of numbers wants, so digits of the same magnitude\nsit above each other. Left unset the cell inherits the table's own\nalignment, which is `start` for text in either writing direction.\n`DataTable` aligns the cells it draws. A `Table`'s cells are markup the\nconsumer wrote, so the table writes nothing onto them: it publishes the\nedge to each cell under this column as `--table-cell-align`, which\n`@fusion.dev/helix` reads. The heading is this element's own, and\n`@fusion.dev/helix` sets it to the same edge in either table. `end` is the\ninline end, so in a right-to-left table it is the left.\n\n**Reflected, because the heading is drawn by a stylesheet and has no other\nway to learn it.** Set as a property, which is how React sets it, an\nunreflected `align` left no attribute to select on, so the heading stayed at\nthe start over a column of digits set to the end. It is the author's\ndeclaration and nothing moves it afterwards, so an attribute cannot come to\ndisagree with the element, which is the reason `open` records a custom\nstate instead. No default, so an unset column writes nothing onto its host.",
111517
- "attribute": "align",
111518
- "reflects": true,
111519
- "inheritedFrom": {
111520
- "name": "HelixHeadlessTableColumn",
111521
- "module": "src/table/column/table-column.ts"
111522
- }
111523
- },
111524
111534
  {
111525
111535
  "kind": "field",
111526
111536
  "name": "cell",
@@ -111590,6 +111600,20 @@
111590
111600
  "module": "src/table/column/table-column.ts"
111591
111601
  }
111592
111602
  },
111603
+ {
111604
+ "kind": "field",
111605
+ "name": "textAlign",
111606
+ "type": {
111607
+ "text": "'center' | 'end' | 'start' | undefined"
111608
+ },
111609
+ "description": "Which edge the values line up against.\n\n**Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS\nbox-alignment question, where a thing sits in a container, and they are\nnamed for the properties they mirror; this is `text-align` down a column of\nvalues, and `Dialog` answers the same question under the same name. One\nword for both questions is how a consumer who learned it on a layout writes\nit here and gets no error, a value a component does not have leaving the\ndefault in place and looking deliberate.\n\n`end` is what a column of numbers wants, so digits of the same magnitude\nsit above each other. Left unset the cell inherits the table's own\nalignment, which is `start` for text in either writing direction.\n`DataTable` aligns the cells it draws. A `Table`'s cells are markup the\nconsumer wrote, so the table writes nothing onto them: it publishes the\nedge to each cell under this column as `--table-cell-align`, which\n`@fusion.dev/helix` reads. The heading is this element's own, and\n`@fusion.dev/helix` sets it to the same edge in either table. `end` is the\ninline end, so in a right-to-left table it is the left.\n\n**Reflected, because the heading is drawn by a stylesheet and has no other\nway to learn it.** Set as a property, which is how React sets it, an\nunreflected edge left no attribute to select on, so the heading stayed at\nthe start over a column of digits set to the end. It is the author's\ndeclaration and nothing moves it afterwards, so an attribute cannot come to\ndisagree with the element, which is the reason `open` records a custom\nstate instead. No default, so an unset column writes nothing onto its host.",
111610
+ "attribute": "text-align",
111611
+ "reflects": true,
111612
+ "inheritedFrom": {
111613
+ "name": "HelixHeadlessTableColumn",
111614
+ "module": "src/table/column/table-column.ts"
111615
+ }
111616
+ },
111593
111617
  {
111594
111618
  "kind": "field",
111595
111619
  "name": "width",
@@ -112281,18 +112305,6 @@
112281
112305
  }
112282
112306
  ],
112283
112307
  "attributes": [
112284
- {
112285
- "name": "align",
112286
- "type": {
112287
- "text": "'center' | 'end' | 'start' | undefined"
112288
- },
112289
- "description": "Which edge the values line up against.\n\n`end` is what a column of numbers wants, so digits of the same magnitude\nsit above each other. Left unset the cell inherits the table's own\nalignment, which is `start` for text in either writing direction.\n`DataTable` aligns the cells it draws. A `Table`'s cells are markup the\nconsumer wrote, so the table writes nothing onto them: it publishes the\nedge to each cell under this column as `--table-cell-align`, which\n`@fusion.dev/helix` reads. The heading is this element's own, and\n`@fusion.dev/helix` sets it to the same edge in either table. `end` is the\ninline end, so in a right-to-left table it is the left.\n\n**Reflected, because the heading is drawn by a stylesheet and has no other\nway to learn it.** Set as a property, which is how React sets it, an\nunreflected `align` left no attribute to select on, so the heading stayed at\nthe start over a column of digits set to the end. It is the author's\ndeclaration and nothing moves it afterwards, so an attribute cannot come to\ndisagree with the element, which is the reason `open` records a custom\nstate instead. No default, so an unset column writes nothing onto its host.",
112290
- "fieldName": "align",
112291
- "inheritedFrom": {
112292
- "name": "HelixHeadlessTableColumn",
112293
- "module": "src/table/column/table-column.ts"
112294
- }
112295
- },
112296
112308
  {
112297
112309
  "name": "field",
112298
112310
  "type": {
@@ -112332,6 +112344,18 @@
112332
112344
  "module": "src/table/column/table-column.ts"
112333
112345
  }
112334
112346
  },
112347
+ {
112348
+ "name": "text-align",
112349
+ "type": {
112350
+ "text": "'center' | 'end' | 'start' | undefined"
112351
+ },
112352
+ "description": "Which edge the values line up against.\n\n**Text alignment, and the name says so.** `Flex` and `Grid` ask the CSS\nbox-alignment question, where a thing sits in a container, and they are\nnamed for the properties they mirror; this is `text-align` down a column of\nvalues, and `Dialog` answers the same question under the same name. One\nword for both questions is how a consumer who learned it on a layout writes\nit here and gets no error, a value a component does not have leaving the\ndefault in place and looking deliberate.\n\n`end` is what a column of numbers wants, so digits of the same magnitude\nsit above each other. Left unset the cell inherits the table's own\nalignment, which is `start` for text in either writing direction.\n`DataTable` aligns the cells it draws. A `Table`'s cells are markup the\nconsumer wrote, so the table writes nothing onto them: it publishes the\nedge to each cell under this column as `--table-cell-align`, which\n`@fusion.dev/helix` reads. The heading is this element's own, and\n`@fusion.dev/helix` sets it to the same edge in either table. `end` is the\ninline end, so in a right-to-left table it is the left.\n\n**Reflected, because the heading is drawn by a stylesheet and has no other\nway to learn it.** Set as a property, which is how React sets it, an\nunreflected edge left no attribute to select on, so the heading stayed at\nthe start over a column of digits set to the end. It is the author's\ndeclaration and nothing moves it afterwards, so an attribute cannot come to\ndisagree with the element, which is the reason `open` records a custom\nstate instead. No default, so an unset column writes nothing onto its host.",
112353
+ "fieldName": "textAlign",
112354
+ "inheritedFrom": {
112355
+ "name": "HelixHeadlessTableColumn",
112356
+ "module": "src/table/column/table-column.ts"
112357
+ }
112358
+ },
112335
112359
  {
112336
112360
  "name": "width",
112337
112361
  "type": {
@@ -112794,7 +112818,7 @@
112794
112818
  },
112795
112819
  "privacy": "private",
112796
112820
  "default": "undefined",
112797
- "description": "The rules handing each column's `align` to the cells under it. One sheet for\nevery row this table holds, rewritten in place, so a column changing its\nedge reaches every row in one write.",
112821
+ "description": "The rules handing each column's `text-align` to the cells under it. One sheet for\nevery row this table holds, rewritten in place, so a column changing its\nedge reaches every row in one write.",
112798
112822
  "inheritedFrom": {
112799
112823
  "name": "HelixHeadlessTable",
112800
112824
  "module": "src/table/root/table-root.ts"