@fusion.dev/helix 0.31.0 → 0.32.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.
@@ -42602,6 +42602,31 @@
42602
42602
  "module": "src/drilldown/item/drilldown-item.ts"
42603
42603
  }
42604
42604
  },
42605
+ {
42606
+ "kind": "field",
42607
+ "name": "page",
42608
+ "type": {
42609
+ "text": "boolean"
42610
+ },
42611
+ "privacy": "private",
42612
+ "default": "false",
42613
+ "description": "Whether anything is slotted into `page`.\n\nState rather than a getter over `children`, for the reason `Menu.Item`\nbacks `hasSubmenu` the same way: a getter is read during `render()` with\nnothing to re-read it, so a page a framework fills after the row's first\nrender would open with no caret on the row that leads to it.",
42614
+ "inheritedFrom": {
42615
+ "name": "HelixHeadlessDrilldownItem",
42616
+ "module": "src/drilldown/item/drilldown-item.ts"
42617
+ }
42618
+ },
42619
+ {
42620
+ "kind": "field",
42621
+ "name": "readPage",
42622
+ "privacy": "private",
42623
+ "readonly": true,
42624
+ "description": "Re-reads whether a page is slotted, from whichever `page` slot is current.\n\nBound in the template, on both of them. The row and the page it opens each\nrender a `slot[name=\"page\"]`, and moving between them makes Lit build a new\nslot and throw the old one away, which fires on its way out with nothing\nassigned: a listener on the discarded one would clear the caret on every row\nthat has been drilled into and back out of. `Menu.Item.readSubmenu` carries\nthe same note.",
42625
+ "inheritedFrom": {
42626
+ "name": "HelixHeadlessDrilldownItem",
42627
+ "module": "src/drilldown/item/drilldown-item.ts"
42628
+ }
42629
+ },
42605
42630
  {
42606
42631
  "kind": "method",
42607
42632
  "name": "focusItem",
@@ -43030,6 +43055,14 @@
43030
43055
  "name": "HelixHeadlessDrilldownItem",
43031
43056
  "module": "src/drilldown/item/drilldown-item.ts"
43032
43057
  }
43058
+ },
43059
+ {
43060
+ "description": "The caret at the end of a row that opens a page, after the `end` slot. A caret points, so a sheet mirrors it in a right-to-left document.",
43061
+ "name": "mark",
43062
+ "inheritedFrom": {
43063
+ "name": "HelixHeadlessDrilldownItem",
43064
+ "module": "src/drilldown/item/drilldown-item.ts"
43065
+ }
43033
43066
  }
43034
43067
  ],
43035
43068
  "attributes": [
@@ -109478,11 +109511,11 @@
109478
109511
  "kind": "field",
109479
109512
  "name": "align",
109480
109513
  "type": {
109481
- "text": "'center' | 'end' | 'start' | ''"
109514
+ "text": "'center' | 'end' | 'start' | undefined"
109482
109515
  },
109483
- "default": "''",
109484
- "description": "Which edge the values line up against.\n\n`end` is what a column of numbers wants, so digits of the same magnitude sit\nabove each other. Left unset the cell inherits the table's own alignment,\nwhich is `start` for text in either writing direction.",
109516
+ "description": "Which edge the values line up against.\n\n`end` is what a column of numbers wants, so digits of the same magnitude sit\nabove each other. Left unset the cell inherits the table's own alignment,\nwhich is `start` for text in either writing direction. `helix-data-table`\naligns the cells it draws; a `helix-table`'s cells are markup the consumer\nwrote, and align as the consumer styles them. The heading is this element's\nown, and `@fusion.dev/helix` sets it to the same edge in either table.\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.",
109485
109517
  "attribute": "align",
109518
+ "reflects": true,
109486
109519
  "inheritedFrom": {
109487
109520
  "name": "HelixHeadlessTableColumn",
109488
109521
  "module": "src/table/column/table-column.ts"
@@ -110222,10 +110255,9 @@
110222
110255
  {
110223
110256
  "name": "align",
110224
110257
  "type": {
110225
- "text": "'center' | 'end' | 'start' | ''"
110258
+ "text": "'center' | 'end' | 'start' | undefined"
110226
110259
  },
110227
- "default": "''",
110228
- "description": "Which edge the values line up against.\n\n`end` is what a column of numbers wants, so digits of the same magnitude sit\nabove each other. Left unset the cell inherits the table's own alignment,\nwhich is `start` for text in either writing direction.",
110260
+ "description": "Which edge the values line up against.\n\n`end` is what a column of numbers wants, so digits of the same magnitude sit\nabove each other. Left unset the cell inherits the table's own alignment,\nwhich is `start` for text in either writing direction. `helix-data-table`\naligns the cells it draws; a `helix-table`'s cells are markup the consumer\nwrote, and align as the consumer styles them. The heading is this element's\nown, and `@fusion.dev/helix` sets it to the same edge in either table.\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.",
110229
110261
  "fieldName": "align",
110230
110262
  "inheritedFrom": {
110231
110263
  "name": "HelixHeadlessTableColumn",
@@ -128514,7 +128546,7 @@
128514
128546
  "name": "floating",
128515
128547
  "privacy": "private",
128516
128548
  "readonly": true,
128517
- "default": "new PopoverController(this, { anchor: () => this.target, arrow: () => this.partNamed('arrow'), /* Clear of the light, measured to the point of the arrow. The tour lights `spotlight-padding` around the target and the arrow reaches `n / sqrt(2)` past the panel's edge, and with no offset the panel sat on the target itself, over the lit margin, with its point 5.7px into what it pointed at. `offsetWidth` rather than a rect, which reports the rotated box. */ offset: () => { const tour = this.parentElement as (HTMLElement & { spotlightPadding?: number }) | null return ( (tour?.spotlightPadding ?? 0) + (this.partNamed('arrow')?.offsetWidth ?? 0) / Math.SQRT2 ) }, /* A press outside does not end a tour, and this is the decision rather than a stub. Everywhere else a surface closes on an outside press because pressing elsewhere means the reader is finished with it. Here elsewhere is the thing being pointed at: the scrim lets the pointer through on purpose, so the first press a reader makes on the button the tour is describing would be the press that ends the tour. Leaving is the skip control and `Escape`, both of which say so. */ onDismiss: () => {}, placement: () => this.placement, surface: () => this.partNamed('bubble'), })",
128549
+ "default": "new PopoverController(this, { anchor: () => this.target, arrow: () => this.partNamed('arrow'), /* Clear of the light, measured to the point of the arrow. The tour lights `spotlight-padding` around the target and the arrow reaches `n / sqrt(2)` past the panel's edge, and with no offset the panel sat on the target itself, over the lit margin, with its point 5.7px into what it pointed at. `offsetWidth` rather than a rect, which reports the rotated box. */ offset: () => { const tour = this.parentElement as (HTMLElement & { spotlightPadding?: number }) | null return ( (tour?.spotlightPadding ?? 0) + (this.partNamed('arrow')?.offsetWidth ?? 0) / Math.SQRT2 ) }, /* A press outside does not end a tour, and this is the decision rather than a stub. Everywhere else a surface closes on an outside press because pressing elsewhere means the reader is finished with it. Here elsewhere is the thing being pointed at: the scrim lets the pointer through on purpose, so the first press a reader makes on the button the tour is describing would be the press that ends the tour. Leaving is the skip control and `Escape`, both of which say so. */ onDismiss: () => {}, /* The side the panel landed on, which is not always `placement`: a stop with no room on the side it asked for is moved. The styled tier points its arrow from `data-placement` on the panel, inside this shadow root; a stylesheet outside cannot follow `::part(arrow)` with an attribute, and reading the stop's own `placement` instead pointed the arrow from the side that was asked for, or from below wherever React had set it as a property and there was no attribute to read. */ onPlace: (placement) => { const side = placement.split('-')[0] this.toggleState('placed-bottom', side === 'bottom') this.toggleState('placed-left', side === 'left') this.toggleState('placed-right', side === 'right') this.toggleState('placed-top', side === 'top') }, placement: () => this.placement, surface: () => this.partNamed('bubble'), })",
128518
128550
  "inheritedFrom": {
128519
128551
  "name": "HelixHeadlessTourStop",
128520
128552
  "module": "src/tour/stop/tour-stop.ts"
@@ -129119,6 +129151,38 @@
129119
129151
  }
129120
129152
  ],
129121
129153
  "cssStates": [
129154
+ {
129155
+ "description": "While the panel sits below its target.",
129156
+ "name": "placed-bottom",
129157
+ "inheritedFrom": {
129158
+ "name": "HelixHeadlessTourStop",
129159
+ "module": "src/tour/stop/tour-stop.ts"
129160
+ }
129161
+ },
129162
+ {
129163
+ "description": "While the panel sits to the left of its target.",
129164
+ "name": "placed-left",
129165
+ "inheritedFrom": {
129166
+ "name": "HelixHeadlessTourStop",
129167
+ "module": "src/tour/stop/tour-stop.ts"
129168
+ }
129169
+ },
129170
+ {
129171
+ "description": "While the panel sits to the right of its target.",
129172
+ "name": "placed-right",
129173
+ "inheritedFrom": {
129174
+ "name": "HelixHeadlessTourStop",
129175
+ "module": "src/tour/stop/tour-stop.ts"
129176
+ }
129177
+ },
129178
+ {
129179
+ "description": "While the panel sits above its target.",
129180
+ "name": "placed-top",
129181
+ "inheritedFrom": {
129182
+ "name": "HelixHeadlessTourStop",
129183
+ "module": "src/tour/stop/tour-stop.ts"
129184
+ }
129185
+ },
129122
129186
  {
129123
129187
  "description": "Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.",
129124
129188
  "name": "settled",
@@ -1,5 +1,5 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
- import type { CSSResultGroup, TemplateResult } from 'lit';
2
+ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
3
3
  /**
4
4
  * @summary A lit, drifting background, drawn from the token layer.
5
5
  *
@@ -265,7 +265,7 @@ export declare class HelixAura extends HelixElement {
265
265
  */
266
266
  private openBy;
267
267
  protected render(): TemplateResult;
268
- protected firstUpdated(): void;
268
+ protected firstUpdated(changed: PropertyValues): void;
269
269
  private start;
270
270
  /**
271
271
  * The context and the program, from whatever canvas can still give one.
@@ -129,7 +129,8 @@ let HelixAura = class HelixAura extends HelixElement {
129
129
  render() {
130
130
  return html `<canvas part="canvas" aria-hidden="true"></canvas>`;
131
131
  }
132
- firstUpdated() {
132
+ firstUpdated(changed) {
133
+ super.firstUpdated(changed);
133
134
  this.start();
134
135
  }
135
136
  start() {
@@ -73,15 +73,11 @@ border-block-end-color: transparent;
73
73
  }
74
74
 
75
75
  ::slotted(helix-table-column) {
76
- border-block-end: var(--helix-border-thin) solid
77
- var(--data-table-rule-color, var(--helix-color-border));
78
- color: var(--data-table-heading-color, var(--helix-color-foreground-subtle));
79
- font-family: var(--helix-font-sans);
80
- font-size: var(--data-table-text, var(--helix-text-sm));
81
- font-weight: var(--helix-weight-medium);
82
- padding-block: var(--data-table-padding-block, var(--helix-space-sm));
83
- padding-inline: var(--data-table-padding-inline, var(--helix-space-sm));
84
- text-align: start;
76
+ --_table-heading-color: var(--data-table-heading-color);
77
+ --_table-heading-padding-block: var(--data-table-padding-block);
78
+ --_table-heading-padding-inline: var(--data-table-padding-inline);
79
+ --_table-heading-rule-color: var(--data-table-rule-color);
80
+ --_table-heading-text: var(--data-table-text);
85
81
  }
86
82
 
87
83
  ::slotted(helix-table-column[sortable]) {
@@ -144,10 +140,19 @@ overscroll-behavior: contain;
144
140
  }
145
141
 
146
142
  :host([windowed]) ::slotted(helix-table-column) {
143
+ --_table-heading-background-color: var(
144
+ --data-table-heading-background-color,
145
+ var(--helix-color-background)
146
+ );
147
+ --_table-heading-layer: var(--helix-layer-sticky);
148
+ --_table-heading-position: sticky;
149
+ }
150
+
151
+ :host([windowed]) [part="select-all"] {
147
152
  background-color: var(--data-table-heading-background-color, var(--helix-color-background));
148
153
  inset-block-start: 0;
149
154
  position: sticky;
150
- z-index: 1;
155
+ z-index: var(--helix-layer-sticky);
151
156
  }
152
157
 
153
158
  [part="before"],
@@ -27,6 +27,17 @@ text-overflow: ellipsis;
27
27
  white-space: nowrap;
28
28
  }
29
29
 
30
+ [part="mark"] {
31
+ block-size: var(--helix-size-icon-tight);
32
+ color: var(--helix-color-foreground-subtle);
33
+ flex: none;
34
+ inline-size: var(--helix-size-icon-tight);
35
+ }
36
+
37
+ :host(:dir(rtl)) [part="mark"] {
38
+ scale: -1 1;
39
+ }
40
+
30
41
  :host(:not([disabled])) [part="item"]:hover {
31
42
  background-color: var(
32
43
  --drilldown-item-hover-color,
@@ -121,7 +121,7 @@ export declare class HelixOrb extends HelixElement {
121
121
  private last;
122
122
  protected willUpdate(changed: PropertyValues): void;
123
123
  protected render(): TemplateResult;
124
- protected firstUpdated(): void;
124
+ protected firstUpdated(changed: PropertyValues): void;
125
125
  connectedCallback(): void;
126
126
  disconnectedCallback(): void;
127
127
  private start;
@@ -86,7 +86,8 @@ let HelixOrb = class HelixOrb extends HelixElement {
86
86
  render() {
87
87
  return html `<canvas part="canvas" aria-hidden="true"></canvas>`;
88
88
  }
89
- firstUpdated() {
89
+ firstUpdated(changed) {
90
+ super.firstUpdated(changed);
90
91
  this.start();
91
92
  }
92
93
  connectedCallback() {
@@ -5,22 +5,30 @@ display: contents;
5
5
 
6
6
  [part="column"] {
7
7
  align-items: center;
8
- border-block-end: var(--helix-border-thin) solid var(--helix-color-border);
8
+ border-block-end: var(--helix-border-thin) solid
9
+ var(--_table-heading-rule-color, var(--helix-color-border));
9
10
  box-sizing: border-box;
10
11
 
11
- color: var(--helix-color-foreground-muted);
12
+ color: var(--_table-heading-color, var(--helix-color-foreground-muted));
12
13
  display: flex;
13
14
  font-family: var(--helix-font-sans);
14
- font-size: var(--helix-text-sm);
15
+ font-size: var(--_table-heading-text, var(--helix-text-sm));
15
16
  font-weight: var(--helix-weight-semibold);
16
17
 
17
18
  min-block-size: var(--helix-size-control-loose);
18
19
  min-inline-size: 0;
19
- padding-inline-end: var(--helix-space-md);
20
+ padding-block: var(--_table-heading-padding-block, var(--helix-space-none));
21
+ padding-inline: var(
22
+ --_table-heading-padding-inline,
23
+ var(--helix-space-none) var(--helix-space-md)
24
+ );
20
25
  }
21
26
 
22
27
  [part="column"] {
23
- position: relative;
28
+ background-color: var(--_table-heading-background-color, transparent);
29
+ inset-block-start: 0;
30
+ position: var(--_table-heading-position, relative);
31
+ z-index: var(--_table-heading-layer, auto);
24
32
  }
25
33
 
26
34
  [part="sort"] {
@@ -34,6 +42,16 @@ gap: var(--helix-space-2xs);
34
42
  min-inline-size: 0;
35
43
  }
36
44
 
45
+ :host([align="center"]) [part="column"],
46
+ :host([align="center"]) [part="sort"] {
47
+ justify-content: center;
48
+ }
49
+
50
+ :host([align="end"]) [part="column"],
51
+ :host([align="end"]) [part="sort"] {
52
+ justify-content: flex-end;
53
+ }
54
+
37
55
  [part="sort"]:focus-visible,
38
56
  [part="grip"]:focus-visible,
39
57
  [part="resizer"]:focus-visible {
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.31.0",
4
+ "version": "0.32.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.31.0",
51
- "@fusion.dev/helix-headless": "0.31.0",
52
- "@fusion.dev/helix-styles": "0.31.0"
50
+ "@fusion.dev/helix-core": "0.32.0",
51
+ "@fusion.dev/helix-headless": "0.32.0",
52
+ "@fusion.dev/helix-styles": "0.32.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.31.0",
57
- "@fusion.dev/helix-testing": "0.31.0",
56
+ "@fusion.dev/helix-cem": "0.32.0",
57
+ "@fusion.dev/helix-testing": "0.32.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
@@ -15884,7 +15884,18 @@ export type HelixTableColumnProps = {
15884
15884
 
15885
15885
  `end` is what a column of numbers wants, so digits of the same magnitude sit
15886
15886
  above each other. Left unset the cell inherits the table's own alignment,
15887
- which is `start` for text in either writing direction. */
15887
+ which is `start` for text in either writing direction. `helix-data-table`
15888
+ aligns the cells it draws; a `helix-table`'s cells are markup the consumer
15889
+ wrote, and align as the consumer styles them. The heading is this element's
15890
+ own, and `@fusion.dev/helix` sets it to the same edge in either table.
15891
+
15892
+ **Reflected, because the heading is drawn by a stylesheet and has no other
15893
+ way to learn it.** Set as a property, which is how React sets it, an
15894
+ unreflected `align` left no attribute to select on, so the heading stayed at
15895
+ the start over a column of digits set to the end. It is the author's
15896
+ declaration and nothing moves it afterwards, so an attribute cannot come to
15897
+ disagree with the element, which is the reason `open` records a custom
15898
+ state instead. No default, so an unset column writes nothing onto its host. */
15888
15899
  align?: (HelixTableColumn["align"]) | undefined;
15889
15900
  /** The key this column reads out of a row.
15890
15901
 
@@ -15962,7 +15973,18 @@ export type HelixTableColumnSolidJsProps = {
15962
15973
 
15963
15974
  `end` is what a column of numbers wants, so digits of the same magnitude sit
15964
15975
  above each other. Left unset the cell inherits the table's own alignment,
15965
- which is `start` for text in either writing direction. */
15976
+ which is `start` for text in either writing direction. `helix-data-table`
15977
+ aligns the cells it draws; a `helix-table`'s cells are markup the consumer
15978
+ wrote, and align as the consumer styles them. The heading is this element's
15979
+ own, and `@fusion.dev/helix` sets it to the same edge in either table.
15980
+
15981
+ **Reflected, because the heading is drawn by a stylesheet and has no other
15982
+ way to learn it.** Set as a property, which is how React sets it, an
15983
+ unreflected `align` left no attribute to select on, so the heading stayed at
15984
+ the start over a column of digits set to the end. It is the author's
15985
+ declaration and nothing moves it afterwards, so an attribute cannot come to
15986
+ disagree with the element, which is the reason `open` records a custom
15987
+ state instead. No default, so an unset column writes nothing onto its host. */
15966
15988
  "prop:align"?: (HelixTableColumn["align"]) | undefined;
15967
15989
  /** The key this column reads out of a row.
15968
15990
 
@@ -25629,6 +25651,7 @@ export type CustomElements = {
25629
25651
  *
25630
25652
  * - `item`: The row itself.
25631
25653
  * - `label`: The words.
25654
+ * - `mark`: The caret at the end of a row that opens a page, after the `end` slot. A caret points, so a sheet mirrors it in a right-to-left document.
25632
25655
  *
25633
25656
  * ## CSS States
25634
25657
  *
@@ -34475,7 +34498,18 @@ export type CustomElements = {
34475
34498
  *
34476
34499
  * `end` is what a column of numbers wants, so digits of the same magnitude sit
34477
34500
  * above each other. Left unset the cell inherits the table's own alignment,
34478
- * which is `start` for text in either writing direction.
34501
+ * which is `start` for text in either writing direction. `helix-data-table`
34502
+ * aligns the cells it draws; a `helix-table`'s cells are markup the consumer
34503
+ * wrote, and align as the consumer styles them. The heading is this element's
34504
+ * own, and `@fusion.dev/helix` sets it to the same edge in either table.
34505
+ *
34506
+ * **Reflected, because the heading is drawn by a stylesheet and has no other
34507
+ * way to learn it.** Set as a property, which is how React sets it, an
34508
+ * unreflected `align` left no attribute to select on, so the heading stayed at
34509
+ * the start over a column of digits set to the end. It is the author's
34510
+ * declaration and nothing moves it afterwards, so an attribute cannot come to
34511
+ * disagree with the element, which is the reason `open` records a custom
34512
+ * state instead. No default, so an unset column writes nothing onto its host.
34479
34513
  * - `field`: The key this column reads out of a row.
34480
34514
  *
34481
34515
  * Dot paths resolve, so `field="owner.name"` reads a nested value: a result
@@ -37004,6 +37038,10 @@ export type CustomElements = {
37004
37038
  *
37005
37039
  * These can be used to apply styling when a component is in a given state.
37006
37040
  *
37041
+ * - `placed-bottom`: While the panel sits below its target.
37042
+ * - `placed-left`: While the panel sits to the left of its target.
37043
+ * - `placed-right`: While the panel sits to the right of its target.
37044
+ * - `placed-top`: While the panel sits above its target.
37007
37045
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
37008
37046
  */
37009
37047
  "helix-tour-stop": Partial<
@@ -44075,6 +44113,7 @@ export type CustomElementsSolidJs = {
44075
44113
  *
44076
44114
  * - `item`: The row itself.
44077
44115
  * - `label`: The words.
44116
+ * - `mark`: The caret at the end of a row that opens a page, after the `end` slot. A caret points, so a sheet mirrors it in a right-to-left document.
44078
44117
  *
44079
44118
  * ## CSS States
44080
44119
  *
@@ -53139,7 +53178,18 @@ export type CustomElementsSolidJs = {
53139
53178
  *
53140
53179
  * `end` is what a column of numbers wants, so digits of the same magnitude sit
53141
53180
  * above each other. Left unset the cell inherits the table's own alignment,
53142
- * which is `start` for text in either writing direction.
53181
+ * which is `start` for text in either writing direction. `helix-data-table`
53182
+ * aligns the cells it draws; a `helix-table`'s cells are markup the consumer
53183
+ * wrote, and align as the consumer styles them. The heading is this element's
53184
+ * own, and `@fusion.dev/helix` sets it to the same edge in either table.
53185
+ *
53186
+ * **Reflected, because the heading is drawn by a stylesheet and has no other
53187
+ * way to learn it.** Set as a property, which is how React sets it, an
53188
+ * unreflected `align` left no attribute to select on, so the heading stayed at
53189
+ * the start over a column of digits set to the end. It is the author's
53190
+ * declaration and nothing moves it afterwards, so an attribute cannot come to
53191
+ * disagree with the element, which is the reason `open` records a custom
53192
+ * state instead. No default, so an unset column writes nothing onto its host.
53143
53193
  * - `field`: The key this column reads out of a row.
53144
53194
  *
53145
53195
  * Dot paths resolve, so `field="owner.name"` reads a nested value: a result
@@ -55727,6 +55777,10 @@ export type CustomElementsSolidJs = {
55727
55777
  *
55728
55778
  * These can be used to apply styling when a component is in a given state.
55729
55779
  *
55780
+ * - `placed-bottom`: While the panel sits below its target.
55781
+ * - `placed-left`: While the panel sits to the left of its target.
55782
+ * - `placed-right`: While the panel sits to the right of its target.
55783
+ * - `placed-top`: While the panel sits above its target.
55730
55784
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
55731
55785
  */
55732
55786
  "helix-tour-stop": Partial<
package/types/vue.d.ts CHANGED
@@ -8148,7 +8148,18 @@ export type HelixTableColumnVueProps = {
8148
8148
 
8149
8149
  `end` is what a column of numbers wants, so digits of the same magnitude sit
8150
8150
  above each other. Left unset the cell inherits the table's own alignment,
8151
- which is `start` for text in either writing direction. */
8151
+ which is `start` for text in either writing direction. `helix-data-table`
8152
+ aligns the cells it draws; a `helix-table`'s cells are markup the consumer
8153
+ wrote, and align as the consumer styles them. The heading is this element's
8154
+ own, and `@fusion.dev/helix` sets it to the same edge in either table.
8155
+
8156
+ **Reflected, because the heading is drawn by a stylesheet and has no other
8157
+ way to learn it.** Set as a property, which is how React sets it, an
8158
+ unreflected `align` left no attribute to select on, so the heading stayed at
8159
+ the start over a column of digits set to the end. It is the author's
8160
+ declaration and nothing moves it afterwards, so an attribute cannot come to
8161
+ disagree with the element, which is the reason `open` records a custom
8162
+ state instead. No default, so an unset column writes nothing onto its host. */
8152
8163
  align?: (HelixTableColumn["align"]) | undefined;
8153
8164
  /** The key this column reads out of a row.
8154
8165