@fusion.dev/helix 0.38.0 → 0.40.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.
@@ -9,7 +9,7 @@ import type { CSSResultGroup } from 'lit';
9
9
  * a way to move through it.
10
10
  *
11
11
  * @since 0.1.0
12
- * @status experimental
12
+ * @status stable
13
13
  * @aliases Result count, Range
14
14
  * @documentation https://fusion.dev/helix/components/pagination
15
15
  */
@@ -14,7 +14,7 @@ import type { CSSResultGroup } from 'lit';
14
14
  * second name for it here would be a second thing to keep in step.
15
15
  *
16
16
  * @since 0.1.0
17
- * @status experimental
17
+ * @status stable
18
18
  * @category navigation
19
19
  * @aliases Stepper, Wizard, Progress steps
20
20
  * @documentation https://fusion.dev/helix/components/steps
@@ -5,7 +5,7 @@ import '../../button/index.js';
5
5
  * @summary One stage in a sequence.
6
6
  *
7
7
  * @since 0.1.0
8
- * @status experimental
8
+ * @status stable
9
9
  * @aliases Stage
10
10
  * @documentation https://fusion.dev/helix/components/steps
11
11
  */
@@ -4,17 +4,24 @@ import type { CSSResultGroup } from 'lit';
4
4
  * @summary A row of tabs and the panel each one shows.
5
5
  *
6
6
  * @description
7
- * Selection is marked with a rule under the active tab rather than a filled
8
- * pill, which keeps the row flat and lets the underline animate between tabs as
9
- * a movement instead of two separate fills.
7
+ * One mark travels between the tabs rather than each of them filling and
8
+ * emptying in turn. A fill that swaps is two things changing at once and reads
9
+ * as a flicker; one that moves is a single object the eye follows, and it says
10
+ * where the current tab was as well as where it is. `Navigation` marks its
11
+ * destinations the same way and for the same reason.
12
+ *
13
+ * What the mark is depends on `variant`: unset it is a raised pill on the
14
+ * selected tab with nothing behind the row, `underlined` makes it a bar along
15
+ * the bottom of the strip on a rule, and `segmented` grows it to the tab's own
16
+ * box inside a sunken track.
10
17
  *
11
18
  * @since 0.1.0
12
19
  * @status experimental
13
20
  * @category navigation
14
21
  * @documentation https://fusion.dev/helix/components/tabs
15
22
  *
16
- * @slot - The tabs.
17
- * @slot panels - The panels.
23
+ * @slot - The tabs, which are this element's own children.
24
+ * @slot panels - The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.
18
25
  *
19
26
  * @csspart panels - The panel container.
20
27
  * @csspart tabs - The tab list.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix",
3
3
  "description": "Styled component tier. Extends the headless tier with token-driven presentation.",
4
- "version": "0.38.0",
4
+ "version": "0.40.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -47,14 +47,14 @@
47
47
  },
48
48
  "bugs": "https://github.com/project-fusion/fusion/issues",
49
49
  "dependencies": {
50
- "@fusion.dev/helix-core": "0.38.0",
51
- "@fusion.dev/helix-headless": "0.38.0",
52
- "@fusion.dev/helix-styles": "0.38.0"
50
+ "@fusion.dev/helix-core": "0.40.0",
51
+ "@fusion.dev/helix-headless": "0.40.0",
52
+ "@fusion.dev/helix-styles": "0.40.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.38.0",
57
- "@fusion.dev/helix-testing": "0.38.0",
56
+ "@fusion.dev/helix-cem": "0.40.0",
57
+ "@fusion.dev/helix-testing": "0.40.0",
58
58
  "@fusion.dev/scripts": "0.0.0-dev",
59
59
  "@happy-dom/global-registrator": "^20.0.0",
60
60
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -390,12 +390,12 @@ export type HelixAccordionItemElementEvent<E = Event> = TypedEvent<
390
390
  HelixAccordionItem,
391
391
  E
392
392
  >;
393
- /** `helix-before-open` event type */
394
- export type HelixAccordionItemHelixBeforeOpenElementEvent =
395
- HelixAccordionItemElementEvent<HelixBeforeOpenEvent>;
396
393
  /** `helix-before-close` event type */
397
394
  export type HelixAccordionItemHelixBeforeCloseElementEvent =
398
395
  HelixAccordionItemElementEvent<HelixBeforeCloseEvent>;
396
+ /** `helix-before-open` event type */
397
+ export type HelixAccordionItemHelixBeforeOpenElementEvent =
398
+ HelixAccordionItemElementEvent<HelixBeforeOpenEvent>;
399
399
 
400
400
  export type HelixAccordionItemProps = {
401
401
  /** Whether the element is open.
@@ -452,14 +452,14 @@ it, and the resting state of a reflected property is the attribute's
452
452
  absence. Caught by `hydration.dom.spec.ts`. */
453
453
  name?: (HelixAccordionItem["name"]) | undefined;
454
454
 
455
- /** Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
456
- "onhelix-before-open"?: ((
457
- e: HelixAccordionItemHelixBeforeOpenElementEvent,
458
- ) => void) | undefined;
459
455
  /** Fired before the section closes, and cancelable. */
460
456
  "onhelix-before-close"?: ((
461
457
  e: HelixAccordionItemHelixBeforeCloseElementEvent,
462
458
  ) => void) | undefined;
459
+ /** Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves. */
460
+ "onhelix-before-open"?: ((
461
+ e: HelixAccordionItemHelixBeforeOpenElementEvent,
462
+ ) => void) | undefined;
463
463
  /** Says the state moved, carrying `newState` and `oldState`. */
464
464
  ontoggle?: ((e: HelixAccordionItemElementEvent) => void) | undefined;
465
465
  };
@@ -518,14 +518,14 @@ empty string writes `name=""` onto every item ever rendered: Lit reflects
518
518
  it, and the resting state of a reflected property is the attribute's
519
519
  absence. Caught by `hydration.dom.spec.ts`. */
520
520
  "prop:name"?: (HelixAccordionItem["name"]) | undefined;
521
- /** Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
522
- "on:helix-before-open"?: ((
523
- e: HelixAccordionItemHelixBeforeOpenElementEvent,
524
- ) => void) | undefined;
525
521
  /** Fired before the section closes, and cancelable. */
526
522
  "on:helix-before-close"?: ((
527
523
  e: HelixAccordionItemHelixBeforeCloseElementEvent,
528
524
  ) => void) | undefined;
525
+ /** Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves. */
526
+ "on:helix-before-open"?: ((
527
+ e: HelixAccordionItemHelixBeforeOpenElementEvent,
528
+ ) => void) | undefined;
529
529
  /** Says the state moved, carrying `newState` and `oldState`. */
530
530
  "on:toggle"?: ((e: HelixAccordionItemElementEvent) => void) | undefined;
531
531
 
@@ -6441,18 +6441,20 @@ reader makes in one of these. */
6441
6441
  };
6442
6442
 
6443
6443
  export type HelixDescriptionListItemProps = {
6444
- /** What the value is, for the common case of plain text.
6444
+ /** What the value is called, for the common case of plain text.
6445
6445
 
6446
6446
  The fallback of the `label` slot, so slotted content replaces it rather than
6447
- appearing beside it. */
6447
+ appearing beside it. The value itself is the default slot: it is the half
6448
+ that varies and is often more than text. */
6448
6449
  label?: (HelixDescriptionListItem["label"]) | undefined;
6449
6450
  };
6450
6451
 
6451
6452
  export type HelixDescriptionListItemSolidJsProps = {
6452
- /** What the value is, for the common case of plain text.
6453
+ /** What the value is called, for the common case of plain text.
6453
6454
 
6454
6455
  The fallback of the `label` slot, so slotted content replaces it rather than
6455
- appearing beside it. */
6456
+ appearing beside it. The value itself is the default slot: it is the half
6457
+ that varies and is often more than text. */
6456
6458
  "prop:label"?: (HelixDescriptionListItem["label"]) | undefined;
6457
6459
 
6458
6460
  /** Set the innerHTML of the element */
@@ -8270,9 +8272,15 @@ shadow root names a table in that root rather than in the document. A
8270
8272
  Absent falls back to the table's own caption, which is usually the right
8271
8273
  words and is already written. */
8272
8274
  label?: (HelixHeatmap["label"]) | undefined;
8273
- /** Shown when the table has no readings in it. */
8275
+ /** Shown when the table has no readings in it.
8276
+
8277
+ Never shown while the table cannot be read at all, which is a server render
8278
+ and the hydrating one after it: see `sourceKnown`. */
8274
8279
  "empty-text"?: (HelixHeatmap["emptyText"]) | undefined;
8275
- /** Shown when the table has no readings in it. */
8280
+ /** Shown when the table has no readings in it.
8281
+
8282
+ Never shown while the table cannot be read at all, which is a server render
8283
+ and the hydrating one after it: see `sourceKnown`. */
8276
8284
  emptyText?: (HelixHeatmap["emptyText"]) | undefined;
8277
8285
  /** Space between cells, in CSS pixels, for the same reason `min-cell` is a
8278
8286
  number. */
@@ -8359,9 +8367,15 @@ shadow root names a table in that root rather than in the document. A
8359
8367
  Absent falls back to the table's own caption, which is usually the right
8360
8368
  words and is already written. */
8361
8369
  "prop:label"?: (HelixHeatmap["label"]) | undefined;
8362
- /** Shown when the table has no readings in it. */
8370
+ /** Shown when the table has no readings in it.
8371
+
8372
+ Never shown while the table cannot be read at all, which is a server render
8373
+ and the hydrating one after it: see `sourceKnown`. */
8363
8374
  "attr:empty-text"?: (HelixHeatmap["emptyText"]) | undefined;
8364
- /** Shown when the table has no readings in it. */
8375
+ /** Shown when the table has no readings in it.
8376
+
8377
+ Never shown while the table cannot be read at all, which is a server render
8378
+ and the hydrating one after it: see `sourceKnown`. */
8365
8379
  "prop:emptyText"?: (HelixHeatmap["emptyText"]) | undefined;
8366
8380
  /** Space between cells, in CSS pixels, for the same reason `min-cell` is a
8367
8381
  number. */
@@ -11679,12 +11693,26 @@ page's markup should not take the page down over a comma. */
11679
11693
  /** Whether to leave the copy button off.
11680
11694
 
11681
11695
  Negative for the reason Code Block's is: a boolean attribute defaulting to
11682
- true could never be turned off from markup. */
11696
+ true could never be turned off from markup.
11697
+
11698
+ **It does not reflect, where Code Block's does**, and the difference is what
11699
+ the two sheets need. Code Block reserves the button's width with
11700
+ `:host(:not([no-copy]))`, so the attribute has to be there for a consumer
11701
+ who set the property. This button is positioned out of the flow and takes no
11702
+ room, so nothing selects on it, and reflection exists so that a selector can
11703
+ reach a value. */
11683
11704
  "no-copy"?: (HelixObjectInspector["noCopy"]) | undefined;
11684
11705
  /** Whether to leave the copy button off.
11685
11706
 
11686
11707
  Negative for the reason Code Block's is: a boolean attribute defaulting to
11687
- true could never be turned off from markup. */
11708
+ true could never be turned off from markup.
11709
+
11710
+ **It does not reflect, where Code Block's does**, and the difference is what
11711
+ the two sheets need. Code Block reserves the button's width with
11712
+ `:host(:not([no-copy]))`, so the attribute has to be there for a consumer
11713
+ who set the property. This button is positioned out of the flow and takes no
11714
+ room, so nothing selects on it, and reflection exists so that a selector can
11715
+ reach a value. */
11688
11716
  noCopy?: (HelixObjectInspector["noCopy"]) | undefined;
11689
11717
  /** Whether to draw only the rows in view.
11690
11718
 
@@ -11727,12 +11755,26 @@ page's markup should not take the page down over a comma. */
11727
11755
  /** Whether to leave the copy button off.
11728
11756
 
11729
11757
  Negative for the reason Code Block's is: a boolean attribute defaulting to
11730
- true could never be turned off from markup. */
11758
+ true could never be turned off from markup.
11759
+
11760
+ **It does not reflect, where Code Block's does**, and the difference is what
11761
+ the two sheets need. Code Block reserves the button's width with
11762
+ `:host(:not([no-copy]))`, so the attribute has to be there for a consumer
11763
+ who set the property. This button is positioned out of the flow and takes no
11764
+ room, so nothing selects on it, and reflection exists so that a selector can
11765
+ reach a value. */
11731
11766
  "bool:no-copy"?: (HelixObjectInspector["noCopy"]) | undefined;
11732
11767
  /** Whether to leave the copy button off.
11733
11768
 
11734
11769
  Negative for the reason Code Block's is: a boolean attribute defaulting to
11735
- true could never be turned off from markup. */
11770
+ true could never be turned off from markup.
11771
+
11772
+ **It does not reflect, where Code Block's does**, and the difference is what
11773
+ the two sheets need. Code Block reserves the button's width with
11774
+ `:host(:not([no-copy]))`, so the attribute has to be there for a consumer
11775
+ who set the property. This button is positioned out of the flow and takes no
11776
+ room, so nothing selects on it, and reflection exists so that a selector can
11777
+ reach a value. */
11736
11778
  "prop:noCopy"?: (HelixObjectInspector["noCopy"]) | undefined;
11737
11779
  /** Whether to draw only the rows in view.
11738
11780
 
@@ -19928,8 +19970,8 @@ export type CustomElements = {
19928
19970
  *
19929
19971
  * Events that will be emitted by the component.
19930
19972
  *
19931
- * - `helix-before-open`: Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves.
19932
19973
  * - `helix-before-close`: Fired before the section closes, and cancelable.
19974
+ * - `helix-before-open`: Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves.
19933
19975
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
19934
19976
  *
19935
19977
  * ## Slots
@@ -19970,7 +20012,7 @@ export type CustomElements = {
19970
20012
  * - `chevron`: The open and close indicator.
19971
20013
  * - `container`: The outer wrapper.
19972
20014
  * - `content`: The revealed region.
19973
- * - `content-inner`: Padding wrapper inside the animated region.
20015
+ * - `content-inner`: The clipping box inside the animated region. The inset is on the slot within it, not here: padding on the grid item survives a zero track, which left a shut section with a band of space under it.
19974
20016
  * - `trigger`: The clickable summary row.
19975
20017
  *
19976
20018
  * ## CSS States
@@ -24510,6 +24552,7 @@ export type CustomElements = {
24510
24552
  * - `--data-table-padding-inline`: Space either side of a cell's content. (default: `undefined`)
24511
24553
  * - `--data-table-rule-color`: Color of the hairline between rows. A color and not a border: it lands in the color slot of a shorthand, so a whole border written into it produces invalid CSS and drops the rule. Drawn on the cells rather than the row, which is `display: contents` and measures `0px`. (default: `undefined`)
24512
24554
  * - `--data-table-text`: Type size, headings and cells alike. (default: `undefined`)
24555
+ * - `--data-table-cell-align`: The edge the column a cell sits under is set to, `start`, `center` or `end`, and unset under a column that sets none. Written by the component onto each cell it draws, read by the sheet that paints one; `helix-table` publishes `--table-cell-align` for the same attribute on the cells a consumer wrote, under its own family's name. (default: `undefined`)
24513
24556
  * - `--data-table-template`: The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `--data-table-columns` is the one to set. (default: `undefined`)
24514
24557
  *
24515
24558
  * ## CSS Parts
@@ -24531,7 +24574,7 @@ export type CustomElements = {
24531
24574
  * - `checkbox-mark`: The tick, or the dash while some rows are selected.
24532
24575
  * - `checkbox-mark-checked`: The mark while its box is checked, beside `checkbox-mark`.
24533
24576
  * - `checkbox-mark-indeterminate`: The dash while only some rows are selected, beside `checkbox-mark`.
24534
- * - `empty`: Shown when no rows match.
24577
+ * - `empty`: Shown when the result has nothing in it, whether it arrived empty or a filter emptied it. A result still on its way is `loading` instead, which wins over this.
24535
24578
  * - `footer`: The region below the grid.
24536
24579
  * - `head`: The row the column headings sit in. `display: contents`, so it takes no space.
24537
24580
  * - `loading`: Shown while the rows are still on their way.
@@ -25126,10 +25169,11 @@ export type CustomElements = {
25126
25169
  *
25127
25170
  * Component attributes and properties that can be applied to the element or by using JavaScript.
25128
25171
  *
25129
- * - `label`: What the value is, for the common case of plain text.
25172
+ * - `label`: What the value is called, for the common case of plain text.
25130
25173
  *
25131
25174
  * The fallback of the `label` slot, so slotted content replaces it rather than
25132
- * appearing beside it.
25175
+ * appearing beside it. The value itself is the default slot: it is the half
25176
+ * that varies and is often more than text.
25133
25177
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
25134
25178
  *
25135
25179
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -25259,7 +25303,7 @@ export type CustomElements = {
25259
25303
  *
25260
25304
  * CSS variables available for styling the component.
25261
25305
  *
25262
- * - `--description-list-gap`: Space between one pair and the next. (default: `undefined`)
25306
+ * - `--description-list-gap`: Space between one pair and the next. Its resting value is tighter with `direction="row"` than stacked, a row of pairs needing less air between them than a column of them does, and setting this takes both. (default: `undefined`)
25263
25307
  *
25264
25308
  * ## CSS Parts
25265
25309
  *
@@ -27231,6 +27275,9 @@ export type CustomElements = {
27231
27275
  * Absent falls back to the table's own caption, which is usually the right
27232
27276
  * words and is already written.
27233
27277
  * - `empty-text`/`emptyText`: Shown when the table has no readings in it.
27278
+ *
27279
+ * Never shown while the table cannot be read at all, which is a server render
27280
+ * and the hydrating one after it: see `sourceKnown`.
27234
27281
  * - `gap`: Space between cells, in CSS pixels, for the same reason `min-cell` is a
27235
27282
  * number.
27236
27283
  * - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
@@ -27347,7 +27394,6 @@ export type CustomElements = {
27347
27394
  *
27348
27395
  * Areas where markup can be added to the component.
27349
27396
  *
27350
- * - `(default)`: The `<table>` this draws, where it is not named by `for`.
27351
27397
  * - `end`: Below the strip, at the trailing edge.
27352
27398
  * - `start`: Below the strip, at the leading edge.
27353
27399
  * - `summary`: Below the strip, in the middle.
@@ -27399,7 +27445,7 @@ export type CustomElements = {
27399
27445
  * - `tooltip-right`: The bubble while it is right of the reading, beside `tooltip`.
27400
27446
  * - `tooltip-top`: The bubble while it is above the reading, beside `tooltip`.
27401
27447
  * - `tooltip-value`: A column's value inside the tooltip.
27402
- * - `empty`: Shown when the table has no readings in it.
27448
+ * - `empty`: Shown when the table has no readings in it, and not before the table can be read at all: on a server, and while hydrating what one sent, there is no document to resolve `for` in and nothing is known yet.
27403
27449
  * - `end`: The trailing slot's box.
27404
27450
  * - `start`: The leading slot's box.
27405
27451
  * - `summary`: The middle slot's box.
@@ -29227,9 +29273,12 @@ export type CustomElements = {
29227
29273
  >;
29228
29274
 
29229
29275
  /**
29230
- * The tick and the arrow hold their space whether or not they are showing, so
29231
- * the labels in a menu start at one place and the rows read as a column rather
29232
- * than as a ragged list.
29276
+ * A row draws a column beside its label only where it has something to put in
29277
+ * one, and the width is the menu's rather than the row's: the page reserves a
29278
+ * leading or a trailing track as soon as any row on it fills one, so every
29279
+ * label on that page starts at the same edge and a page that fills neither pays
29280
+ * for neither. A row knows about its own slots and nothing about its
29281
+ * neighbors, which is why the reservation is not made here.
29233
29282
  *
29234
29283
  * ## Attributes & Properties
29235
29284
  *
@@ -30444,6 +30493,13 @@ export type CustomElements = {
30444
30493
  *
30445
30494
  * Negative for the reason Code Block's is: a boolean attribute defaulting to
30446
30495
  * true could never be turned off from markup.
30496
+ *
30497
+ * **It does not reflect, where Code Block's does**, and the difference is what
30498
+ * the two sheets need. Code Block reserves the button's width with
30499
+ * `:host(:not([no-copy]))`, so the attribute has to be there for a consumer
30500
+ * who set the property. This button is positioned out of the flow and takes no
30501
+ * room, so nothing selects on it, and reflection exists so that a selector can
30502
+ * reach a value.
30447
30503
  * - `windowed`: Whether to draw only the rows in view.
30448
30504
  *
30449
30505
  * For a value of thousands of entries. Reflected, because the box it scrolls
@@ -34717,7 +34773,7 @@ export type CustomElements = {
34717
34773
  * Areas where markup can be added to the component.
34718
34774
  *
34719
34775
  * - `(default)`: The step's name.
34720
- * - `content`: What the stage holds, shown while it is the current one.
34776
+ * - `content`: What the stage holds. Always rendered here, a tier with no stylesheet having nothing to fold it with; the styled tier opens it on the current step down a column, and a row has no space under a step to open it into.
34721
34777
  * - `description`: A line under the name, for what the stage is for.
34722
34778
  * - `marker`: Replaces the number, or the check a complete step shows.
34723
34779
  *
@@ -35359,9 +35415,16 @@ export type CustomElements = {
35359
35415
  >;
35360
35416
 
35361
35417
  /**
35362
- * Selection is marked with a rule under the active tab rather than a filled
35363
- * pill, which keeps the row flat and lets the underline animate between tabs as
35364
- * a movement instead of two separate fills.
35418
+ * One mark travels between the tabs rather than each of them filling and
35419
+ * emptying in turn. A fill that swaps is two things changing at once and reads
35420
+ * as a flicker; one that moves is a single object the eye follows, and it says
35421
+ * where the current tab was as well as where it is. `Navigation` marks its
35422
+ * destinations the same way and for the same reason.
35423
+ *
35424
+ * What the mark is depends on `variant`: unset it is a raised pill on the
35425
+ * selected tab with nothing behind the row, `underlined` makes it a bar along
35426
+ * the bottom of the strip on a rule, and `segmented` grows it to the tab's own
35427
+ * box inside a sunken track.
35365
35428
  *
35366
35429
  * ## Attributes & Properties
35367
35430
  *
@@ -35431,8 +35494,8 @@ export type CustomElements = {
35431
35494
  *
35432
35495
  * Areas where markup can be added to the component.
35433
35496
  *
35434
- * - `(default)`: The tabs.
35435
- * - `panels`: The panels.
35497
+ * - `(default)`: The tabs, which are this element's own children.
35498
+ * - `panels`: The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.
35436
35499
  *
35437
35500
  * ## Methods
35438
35501
  *
@@ -38757,8 +38820,8 @@ export type CustomElementsSolidJs = {
38757
38820
  *
38758
38821
  * Events that will be emitted by the component.
38759
38822
  *
38760
- * - `helix-before-open`: Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves.
38761
38823
  * - `helix-before-close`: Fired before the section closes, and cancelable.
38824
+ * - `helix-before-open`: Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves.
38762
38825
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
38763
38826
  *
38764
38827
  * ## Slots
@@ -38799,7 +38862,7 @@ export type CustomElementsSolidJs = {
38799
38862
  * - `chevron`: The open and close indicator.
38800
38863
  * - `container`: The outer wrapper.
38801
38864
  * - `content`: The revealed region.
38802
- * - `content-inner`: Padding wrapper inside the animated region.
38865
+ * - `content-inner`: The clipping box inside the animated region. The inset is on the slot within it, not here: padding on the grid item survives a zero track, which left a shut section with a band of space under it.
38803
38866
  * - `trigger`: The clickable summary row.
38804
38867
  *
38805
38868
  * ## CSS States
@@ -43427,6 +43490,7 @@ export type CustomElementsSolidJs = {
43427
43490
  * - `--data-table-padding-inline`: Space either side of a cell's content. (default: `undefined`)
43428
43491
  * - `--data-table-rule-color`: Color of the hairline between rows. A color and not a border: it lands in the color slot of a shorthand, so a whole border written into it produces invalid CSS and drops the rule. Drawn on the cells rather than the row, which is `display: contents` and measures `0px`. (default: `undefined`)
43429
43492
  * - `--data-table-text`: Type size, headings and cells alike. (default: `undefined`)
43493
+ * - `--data-table-cell-align`: The edge the column a cell sits under is set to, `start`, `center` or `end`, and unset under a column that sets none. Written by the component onto each cell it draws, read by the sheet that paints one; `helix-table` publishes `--table-cell-align` for the same attribute on the cells a consumer wrote, under its own family's name. (default: `undefined`)
43430
43494
  * - `--data-table-template`: The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `--data-table-columns` is the one to set. (default: `undefined`)
43431
43495
  *
43432
43496
  * ## CSS Parts
@@ -43448,7 +43512,7 @@ export type CustomElementsSolidJs = {
43448
43512
  * - `checkbox-mark`: The tick, or the dash while some rows are selected.
43449
43513
  * - `checkbox-mark-checked`: The mark while its box is checked, beside `checkbox-mark`.
43450
43514
  * - `checkbox-mark-indeterminate`: The dash while only some rows are selected, beside `checkbox-mark`.
43451
- * - `empty`: Shown when no rows match.
43515
+ * - `empty`: Shown when the result has nothing in it, whether it arrived empty or a filter emptied it. A result still on its way is `loading` instead, which wins over this.
43452
43516
  * - `footer`: The region below the grid.
43453
43517
  * - `head`: The row the column headings sit in. `display: contents`, so it takes no space.
43454
43518
  * - `loading`: Shown while the rows are still on their way.
@@ -44052,10 +44116,11 @@ export type CustomElementsSolidJs = {
44052
44116
  *
44053
44117
  * Component attributes and properties that can be applied to the element or by using JavaScript.
44054
44118
  *
44055
- * - `label`: What the value is, for the common case of plain text.
44119
+ * - `label`: What the value is called, for the common case of plain text.
44056
44120
  *
44057
44121
  * The fallback of the `label` slot, so slotted content replaces it rather than
44058
- * appearing beside it.
44122
+ * appearing beside it. The value itself is the default slot: it is the half
44123
+ * that varies and is often more than text.
44059
44124
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
44060
44125
  *
44061
44126
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -44186,7 +44251,7 @@ export type CustomElementsSolidJs = {
44186
44251
  *
44187
44252
  * CSS variables available for styling the component.
44188
44253
  *
44189
- * - `--description-list-gap`: Space between one pair and the next. (default: `undefined`)
44254
+ * - `--description-list-gap`: Space between one pair and the next. Its resting value is tighter with `direction="row"` than stacked, a row of pairs needing less air between them than a column of them does, and setting this takes both. (default: `undefined`)
44190
44255
  *
44191
44256
  * ## CSS Parts
44192
44257
  *
@@ -46209,6 +46274,9 @@ export type CustomElementsSolidJs = {
46209
46274
  * Absent falls back to the table's own caption, which is usually the right
46210
46275
  * words and is already written.
46211
46276
  * - `empty-text`/`emptyText`: Shown when the table has no readings in it.
46277
+ *
46278
+ * Never shown while the table cannot be read at all, which is a server render
46279
+ * and the hydrating one after it: see `sourceKnown`.
46212
46280
  * - `gap`: Space between cells, in CSS pixels, for the same reason `min-cell` is a
46213
46281
  * number.
46214
46282
  * - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
@@ -46325,7 +46393,6 @@ export type CustomElementsSolidJs = {
46325
46393
  *
46326
46394
  * Areas where markup can be added to the component.
46327
46395
  *
46328
- * - `(default)`: The `<table>` this draws, where it is not named by `for`.
46329
46396
  * - `end`: Below the strip, at the trailing edge.
46330
46397
  * - `start`: Below the strip, at the leading edge.
46331
46398
  * - `summary`: Below the strip, in the middle.
@@ -46377,7 +46444,7 @@ export type CustomElementsSolidJs = {
46377
46444
  * - `tooltip-right`: The bubble while it is right of the reading, beside `tooltip`.
46378
46445
  * - `tooltip-top`: The bubble while it is above the reading, beside `tooltip`.
46379
46446
  * - `tooltip-value`: A column's value inside the tooltip.
46380
- * - `empty`: Shown when the table has no readings in it.
46447
+ * - `empty`: Shown when the table has no readings in it, and not before the table can be read at all: on a server, and while hydrating what one sent, there is no document to resolve `for` in and nothing is known yet.
46381
46448
  * - `end`: The trailing slot's box.
46382
46449
  * - `start`: The leading slot's box.
46383
46450
  * - `summary`: The middle slot's box.
@@ -48245,9 +48312,12 @@ export type CustomElementsSolidJs = {
48245
48312
  >;
48246
48313
 
48247
48314
  /**
48248
- * The tick and the arrow hold their space whether or not they are showing, so
48249
- * the labels in a menu start at one place and the rows read as a column rather
48250
- * than as a ragged list.
48315
+ * A row draws a column beside its label only where it has something to put in
48316
+ * one, and the width is the menu's rather than the row's: the page reserves a
48317
+ * leading or a trailing track as soon as any row on it fills one, so every
48318
+ * label on that page starts at the same edge and a page that fills neither pays
48319
+ * for neither. A row knows about its own slots and nothing about its
48320
+ * neighbors, which is why the reservation is not made here.
48251
48321
  *
48252
48322
  * ## Attributes & Properties
48253
48323
  *
@@ -49487,6 +49557,13 @@ export type CustomElementsSolidJs = {
49487
49557
  *
49488
49558
  * Negative for the reason Code Block's is: a boolean attribute defaulting to
49489
49559
  * true could never be turned off from markup.
49560
+ *
49561
+ * **It does not reflect, where Code Block's does**, and the difference is what
49562
+ * the two sheets need. Code Block reserves the button's width with
49563
+ * `:host(:not([no-copy]))`, so the attribute has to be there for a consumer
49564
+ * who set the property. This button is positioned out of the flow and takes no
49565
+ * room, so nothing selects on it, and reflection exists so that a selector can
49566
+ * reach a value.
49490
49567
  * - `windowed`: Whether to draw only the rows in view.
49491
49568
  *
49492
49569
  * For a value of thousands of entries. Reflected, because the box it scrolls
@@ -53869,7 +53946,7 @@ export type CustomElementsSolidJs = {
53869
53946
  * Areas where markup can be added to the component.
53870
53947
  *
53871
53948
  * - `(default)`: The step's name.
53872
- * - `content`: What the stage holds, shown while it is the current one.
53949
+ * - `content`: What the stage holds. Always rendered here, a tier with no stylesheet having nothing to fold it with; the styled tier opens it on the current step down a column, and a row has no space under a step to open it into.
53873
53950
  * - `description`: A line under the name, for what the stage is for.
53874
53951
  * - `marker`: Replaces the number, or the check a complete step shows.
53875
53952
  *
@@ -54533,9 +54610,16 @@ export type CustomElementsSolidJs = {
54533
54610
  >;
54534
54611
 
54535
54612
  /**
54536
- * Selection is marked with a rule under the active tab rather than a filled
54537
- * pill, which keeps the row flat and lets the underline animate between tabs as
54538
- * a movement instead of two separate fills.
54613
+ * One mark travels between the tabs rather than each of them filling and
54614
+ * emptying in turn. A fill that swaps is two things changing at once and reads
54615
+ * as a flicker; one that moves is a single object the eye follows, and it says
54616
+ * where the current tab was as well as where it is. `Navigation` marks its
54617
+ * destinations the same way and for the same reason.
54618
+ *
54619
+ * What the mark is depends on `variant`: unset it is a raised pill on the
54620
+ * selected tab with nothing behind the row, `underlined` makes it a bar along
54621
+ * the bottom of the strip on a rule, and `segmented` grows it to the tab's own
54622
+ * box inside a sunken track.
54539
54623
  *
54540
54624
  * ## Attributes & Properties
54541
54625
  *
@@ -54605,8 +54689,8 @@ export type CustomElementsSolidJs = {
54605
54689
  *
54606
54690
  * Areas where markup can be added to the component.
54607
54691
  *
54608
- * - `(default)`: The tabs.
54609
- * - `panels`: The panels.
54692
+ * - `(default)`: The tabs, which are this element's own children.
54693
+ * - `panels`: The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.
54610
54694
  *
54611
54695
  * ## Methods
54612
54696
  *
@@ -58217,6 +58301,8 @@ export type CustomCssProperties = {
58217
58301
  "--data-table-rule-color"?: (string) | undefined;
58218
58302
  /** Type size, headings and cells alike. */
58219
58303
  "--data-table-text"?: (string) | undefined;
58304
+ /** The edge the column a cell sits under is set to, `start`, `center` or `end`, and unset under a column that sets none. Written by the component onto each cell it draws, read by the sheet that paints one; `helix-table` publishes `--table-cell-align` for the same attribute on the cells a consumer wrote, under its own family's name. */
58305
+ "--data-table-cell-align"?: (string) | undefined;
58220
58306
  /** The column track list this element worked out from the columns declared in it. Written by the component, read by the sheet that paints: a stylesheet takes it to lay the grid out, and setting it does nothing, because the component writes it inline on the very element that reads it and an inline declaration beats any sheet. `--data-table-columns` is the one to set. */
58221
58307
  "--data-table-template"?: (string) | undefined;
58222
58308
  /** Fill behind the field. */
@@ -58241,7 +58327,7 @@ export type CustomCssProperties = {
58241
58327
  "--date-picker-track-size"?: (string) | undefined;
58242
58328
  /** How many month columns are drawn, capped at two. `--date-picker-columns` overrides it. */
58243
58329
  "--date-picker-column-count"?: (string) | undefined;
58244
- /** Space between one pair and the next. */
58330
+ /** Space between one pair and the next. Its resting value is tighter with `direction="row"` than stacked, a row of pairs needing less air between them than a column of them does, and setting this takes both. */
58245
58331
  "--description-list-gap"?: (string) | undefined;
58246
58332
  /** Color of the panel's edge. */
58247
58333
  "--dialog-border-color"?: (string) | undefined;