@fusion.dev/helix 0.147.0 → 0.149.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 (114) hide show
  1. package/custom-elements.json +11575 -1278
  2. package/dist/announcement/root/announcement-root.css.js +1 -1
  3. package/dist/blockquote/root/blockquote-root.css.js +1 -1
  4. package/dist/blockquote/root/blockquote-root.d.ts +8 -2
  5. package/dist/button-group/root/button-group-root.css.js +10 -1
  6. package/dist/button-group/root/button-group-root.d.ts +29 -7
  7. package/dist/button-group/root/button-group-root.js +19 -0
  8. package/dist/canvas/node/canvas-node.css.js +6 -6
  9. package/dist/canvas/node/canvas-node.d.ts +5 -0
  10. package/dist/canvas/root/canvas-root.css.js +6 -2
  11. package/dist/canvas/root/canvas-root.d.ts +6 -0
  12. package/dist/card/root/card-root.css.js +3 -3
  13. package/dist/card/root/card-root.d.ts +4 -0
  14. package/dist/chat/root/chat-root.css.js +3 -1
  15. package/dist/chat/root/chat-root.d.ts +3 -0
  16. package/dist/code-block/root/code-block-root.css.js +17 -9
  17. package/dist/code-block/root/code-block-root.d.ts +7 -0
  18. package/dist/combobox/root/combobox-root.js +2 -0
  19. package/dist/data-table/root/data-table-root.css.js +20 -8
  20. package/dist/data-table/root/data-table-root.d.ts +12 -0
  21. package/dist/description-list/item/description-list-item.css.js +1 -1
  22. package/dist/description-list/item/description-list-item.d.ts +1 -0
  23. package/dist/description-list/root/description-list-root.css.js +2 -1
  24. package/dist/description-list/root/description-list-root.d.ts +12 -0
  25. package/dist/description-list/root/description-list-root.js +7 -0
  26. package/dist/divider/root/divider-root.css.js +3 -4
  27. package/dist/divider/root/divider-root.d.ts +3 -0
  28. package/dist/element-events.generated.js +33 -4
  29. package/dist/format-date/root/format-date-root.css.js +1 -1
  30. package/dist/format-date/root/format-date-root.d.ts +0 -1
  31. package/dist/format-date/root/format-date-root.js +0 -1
  32. package/dist/list/item/list-item.css.js +4 -2
  33. package/dist/list/item/list-item.d.ts +4 -0
  34. package/dist/list/root/list-root.css.js +2 -1
  35. package/dist/list/root/list-root.d.ts +6 -0
  36. package/dist/list/root/list-root.js +2 -1
  37. package/dist/listbox/reorder/index.d.ts +1 -0
  38. package/dist/listbox/reorder/index.js +6 -0
  39. package/dist/listbox/reorder/listbox-drag-preview.css.d.ts +1 -0
  40. package/dist/listbox/reorder/listbox-drag-preview.css.js +3 -0
  41. package/dist/listbox/reorder/listbox-reorder.css.d.ts +1 -0
  42. package/dist/listbox/reorder/listbox-reorder.css.js +4 -0
  43. package/dist/listbox/root/listbox-root.css.js +4 -1
  44. package/dist/listbox/root/listbox-root.d.ts +11 -0
  45. package/dist/listbox/root/listbox-root.js +1 -0
  46. package/dist/map/root/map-root.css.js +10 -6
  47. package/dist/map/root/map-root.d.ts +10 -0
  48. package/dist/notifications/notification/notification.css.js +8 -2
  49. package/dist/notifications/notification/notification.d.ts +13 -5
  50. package/dist/notifications/notification/notification.js +13 -0
  51. package/dist/notifications/root/notifications-root.css.js +4 -2
  52. package/dist/notifications/root/notifications-root.d.ts +21 -3
  53. package/dist/notifications/root/notifications-root.js +13 -1
  54. package/dist/orb/root/orb-root.d.ts +5 -0
  55. package/dist/orb/root/orb-root.js +13 -12
  56. package/dist/pagination/root/pagination-root.css.js +7 -7
  57. package/dist/pagination/root/pagination-root.d.ts +14 -0
  58. package/dist/pagination/size/pagination-size.css.js +1 -1
  59. package/dist/pagination/size/pagination-size.d.ts +3 -0
  60. package/dist/pagination/summary/pagination-summary.css.js +1 -1
  61. package/dist/pagination/summary/pagination-summary.d.ts +3 -0
  62. package/dist/qr-code/root/qr-code-root.css.js +1 -1
  63. package/dist/qr-code/root/qr-code-root.d.ts +3 -0
  64. package/dist/sandbox/preview/sandbox-preview.d.ts +14 -1
  65. package/dist/sandbox/preview/sandbox-preview.js +12 -9
  66. package/dist/sandbox/root/sandbox-root.d.ts +8 -3
  67. package/dist/sandbox/root/sandbox-root.js +7 -3
  68. package/dist/sandbox/source/sandbox-source.d.ts +5 -0
  69. package/dist/sandbox/source/sandbox-source.js +4 -1
  70. package/dist/sandbox/status-bar/sandbox-status-bar.d.ts +10 -0
  71. package/dist/sandbox/status-bar/sandbox-status-bar.js +14 -2
  72. package/dist/sandbox/terminal/sandbox-terminal.d.ts +11 -0
  73. package/dist/sandbox/terminal/sandbox-terminal.js +22 -11
  74. package/dist/scroll-area/root/scroll-area-root.css.js +5 -4
  75. package/dist/scroll-area/root/scroll-area-root.d.ts +3 -3
  76. package/dist/select/root/select-root.css.js +4 -1
  77. package/dist/select/root/select-root.js +2 -0
  78. package/dist/shared/viewport/viewport.css.js +1 -1
  79. package/dist/speed-dial/group/speed-dial-group.css.d.ts +1 -0
  80. package/dist/speed-dial/group/speed-dial-group.css.js +2 -0
  81. package/dist/speed-dial/group/speed-dial-group.d.ts +27 -0
  82. package/dist/speed-dial/group/speed-dial-group.js +16 -0
  83. package/dist/speed-dial/index.d.ts +1 -0
  84. package/dist/speed-dial/index.js +1 -0
  85. package/dist/speed-dial/item/speed-dial-item.css.js +1 -1
  86. package/dist/speed-dial/item/speed-dial-item.d.ts +1 -0
  87. package/dist/speed-dial/root/speed-dial-root.css.js +1 -1
  88. package/dist/splitter/root/splitter-root.css.js +15 -7
  89. package/dist/splitter/root/splitter-root.d.ts +4 -0
  90. package/dist/table/cell/table-cell.css.js +1 -1
  91. package/dist/table/root/table-root.css.js +3 -1
  92. package/dist/table/root/table-root.d.ts +8 -1
  93. package/dist/table/row/table-row.css.js +9 -1
  94. package/dist/table/row/table-row.d.ts +5 -0
  95. package/dist/time-picker/root/time-picker-root.css.js +9 -4
  96. package/dist/time-picker/root/time-picker-root.d.ts +6 -0
  97. package/dist/toast/item/toast-item.css.js +9 -6
  98. package/dist/toast/item/toast-item.d.ts +10 -0
  99. package/dist/toolbar/root/toolbar-root.css.js +1 -1
  100. package/dist/toolbar/root/toolbar-root.d.ts +9 -0
  101. package/dist/toolbar/root/toolbar-root.js +4 -0
  102. package/dist/tooltip/root/tooltip-root.d.ts +9 -0
  103. package/dist/tree/item/tree-item.css.js +3 -1
  104. package/dist/tree/item/tree-item.d.ts +6 -0
  105. package/dist/tree/root/tree-root.css.js +2 -1
  106. package/dist/tree/root/tree-root.d.ts +8 -1
  107. package/dist/virtual-list/root/virtual-list-root.css.js +6 -1
  108. package/dist/virtual-list/root/virtual-list-root.d.ts +3 -0
  109. package/lint.json +1 -1
  110. package/package.json +8 -7
  111. package/types/jsx.d.ts +5934 -1679
  112. package/types/svelte.d.ts +1 -0
  113. package/types/vue.d.ts +1910 -541
  114. package/types/words.d.ts +2555 -0
@@ -18,6 +18,9 @@ import type { CSSResultGroup } from 'lit';
18
18
  * wide as its widest pair, labels sit on the start edge, and values sit on the
19
19
  * end edge in tabular figures, as in a set of totals.
20
20
  *
21
+ * **For a rule between pairs, set `divided`.** The rule sits in the middle of
22
+ * the gap, so the pairs keep the same room on either side of it.
23
+ *
21
24
  * @since 0.1.0
22
25
  * @status stable
23
26
  * @category data
@@ -25,10 +28,19 @@ import type { CSSResultGroup } from 'lit';
25
28
  * @documentation https://fusion.dev/helix/components/description-list
26
29
  *
27
30
  * @cssproperty --description-list-column-gap - The space between the column of labels and the column of values, with `direction="row"`.
31
+ * @cssproperty --description-list-divider-color - The color of the rule between pairs, with `divided`.
32
+ * @cssproperty --description-list-divider-width - The thickness of the rule between pairs, with `divided`.
28
33
  * @cssproperty --description-list-gap - Space between one pair and the next. The default is smaller with `direction="row"` than when stacked. Setting this property replaces both defaults.
34
+ * @cssproperty --description-list-label-width - The width of the column of labels, with `direction="row"`. Defaults to the width of the longest label; set a length such as `10rem` to line up several lists.
29
35
  */
30
36
  export declare class HelixDescriptionList extends HelixHeadlessDescriptionList {
31
37
  static styles: CSSResultGroup;
38
+ /**
39
+ * Draws a rule between one pair and the next, in the middle of the gap, as
40
+ * a details panel with many rows often does. Off by default, where space
41
+ * alone separates the pairs.
42
+ */
43
+ divided: boolean;
32
44
  /**
33
45
  * Where the values sit, beside their labels.
34
46
  *
@@ -9,8 +9,15 @@ import { HelixHeadlessDescriptionList } from '@fusion.dev/helix-headless/descrip
9
9
  import { property } from 'lit/decorators.js';
10
10
  import { styles } from './description-list-root.css.js';
11
11
  let HelixDescriptionList = class HelixDescriptionList extends HelixHeadlessDescriptionList {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.divided = false;
15
+ }
12
16
  static { this.styles = styles; }
13
17
  };
18
+ __decorate([
19
+ property({ reflect: true, type: Boolean })
20
+ ], HelixDescriptionList.prototype, "divided", void 0);
14
21
  __decorate([
15
22
  property({ reflect: true })
16
23
  ], HelixDescriptionList.prototype, "justify", void 0);
@@ -1,11 +1,10 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`:host {--_divider-thickness: var(--divider-thickness, var(--helix-border-thin));align-items: center;display: flex;}[part="content"] {color: var(--divider-content-color, var(--helix-color-foreground-muted));margin-inline: var(--divider-content-gap, var(--helix-space-sm));display: inline-flex;flex: 0 0 auto;font-family: var(--helix-font-sans);font-size: var(--helix-text-xs);line-height: var(--helix-leading-tight);}[part="content"] slot::slotted(*),
2
+ export const styles = createSheet(`:host {--_divider-thickness: var(--divider-thickness, var(--helix-border-thin));align-items: center;display: flex;}[part="content"] {color: var(--divider-content-color, var(--helix-color-foreground-muted));margin-inline: var(--divider-content-gap, var(--helix-space-sm));display: inline-flex;flex: 0 0 auto;font-family: var(--divider-content-font-family, var(--helix-font-sans));font-size: var(--divider-content-font-size, var(--helix-text-xs));font-weight: var(--divider-content-font-weight, inherit);line-height: var(--helix-leading-tight);}[part="content"] slot::slotted(*),
3
3
  [part="content"] {white-space: nowrap;}[part="content"][data-empty] {display: none;}:host {padding-inline-end: var(--divider-padding-end, var(--divider-padding, var(--helix-space-none)));padding-inline-start: var(
4
4
  --divider-padding-start,
5
5
  var(--divider-padding, var(--helix-space-none))
6
- );}:host([orientation="vertical"]) {padding-block-end: var(--divider-padding-end, var(--divider-padding, var(--helix-space-none)));padding-block-start: var(
6
+ );}:host(:state(vertical)) {padding-block-end: var(--divider-padding-end, var(--divider-padding, var(--helix-space-none)));padding-block-start: var(
7
7
  --divider-padding-start,
8
8
  var(--divider-padding, var(--helix-space-none))
9
- );padding-inline: var(--helix-space-none);}:host([orientation="vertical"]) {align-self: stretch;display: inline-flex;flex-direction: column;}:host([orientation="vertical"]) [part="content"] {margin-block: var(--divider-content-gap, var(--helix-space-sm));margin-inline: var(--helix-space-none);}[part="line"] {background-color: var(--divider-color, var(--helix-color-border));}:host(:not([orientation])) [part="line"],
10
- :host([orientation="horizontal"]) [part="line"] {block-size: var(--_divider-thickness);flex: 1 1 0;}:host([orientation="vertical"]) {block-size: var(--divider-length, auto);}:host([orientation="vertical"]) [part="line"] {flex: 1 1 0;inline-size: var(--_divider-thickness);min-block-size: 1em;}:host([content-placement="start"]) [part="line"]:has(+ [part="content"]:not([data-empty])),
9
+ );padding-inline: var(--helix-space-none);}:host(:state(vertical)) {align-self: stretch;display: inline-flex;flex-direction: column;}:host(:state(vertical)) [part="content"] {margin-block: var(--divider-content-gap, var(--helix-space-sm));margin-inline: var(--helix-space-none);}[part="line"] {background-color: var(--divider-color, var(--helix-color-border));}:host(:not(:state(vertical))) [part="line"] {block-size: var(--_divider-thickness);flex: 1 1 0;}:host(:state(vertical)) {block-size: var(--divider-length, auto);}:host(:state(vertical)) [part="line"] {flex: 1 1 0;inline-size: var(--_divider-thickness);min-block-size: 1em;}:host([content-placement="start"]) [part="line"]:has(+ [part="content"]:not([data-empty])),
11
10
  :host([content-placement="end"]) [part="content"]:not([data-empty]) + [part="line"] {flex: 0 0 var(--divider-content-offset, var(--helix-space-lg));}@media print {:host {print-color-adjust: economy;}}`);
@@ -23,6 +23,9 @@ import type { CSSResultGroup } from 'lit';
23
23
  *
24
24
  * @cssproperty --divider-color - The color of the line.
25
25
  * @cssproperty --divider-content-color - The color of the content set into the line.
26
+ * @cssproperty --divider-content-font-family - The typeface of the content set into the line. The sans face by default.
27
+ * @cssproperty --divider-content-font-size - The size of the content set into the line. The `xs` step by default.
28
+ * @cssproperty --divider-content-font-weight - The weight of the content set into the line. The weight around the divider by default.
26
29
  * @cssproperty --divider-content-gap - The space either side of the content set into the line.
27
30
  * @cssproperty --divider-content-offset - The length of line before the content under `content-placement="start"`, or after it under `end`.
28
31
  * @cssproperty --divider-length - The length of a vertical line. A horizontal line takes the divider's width.
@@ -6,6 +6,7 @@ registerElementEvents({
6
6
  'helix-aura': ['helix-aura-fallback'],
7
7
  'helix-avatar': ['error', 'load'],
8
8
  'helix-button': ['helix-press'],
9
+ 'helix-button-group': ['change', 'helix-before-change'],
9
10
  'helix-callout': ['helix-dismiss'],
10
11
  'helix-canvas': [
11
12
  'helix-before-move',
@@ -66,6 +67,7 @@ registerElementEvents({
66
67
  'helix-copy-button': ['helix-copy', 'helix-copy-error', 'helix-press'],
67
68
  'helix-data-table': [
68
69
  'helix-activate',
70
+ 'helix-before-reorder',
69
71
  'helix-expand',
70
72
  'helix-filter',
71
73
  'helix-filtered',
@@ -131,9 +133,23 @@ registerElementEvents({
131
133
  'helix-before-open',
132
134
  'toggle',
133
135
  ],
134
- 'helix-list': ['change', 'helix-action', 'helix-before-change'],
136
+ 'helix-list': [
137
+ 'change',
138
+ 'helix-action',
139
+ 'helix-before-change',
140
+ 'helix-before-reorder',
141
+ 'helix-reorder',
142
+ ],
135
143
  'helix-list-item': ['helix-action'],
136
- 'helix-listbox': ['change', 'helix-before-change', 'helix-filter', 'helix-load-more', 'input'],
144
+ 'helix-listbox': [
145
+ 'change',
146
+ 'helix-before-change',
147
+ 'helix-before-reorder',
148
+ 'helix-filter',
149
+ 'helix-load-more',
150
+ 'helix-reorder',
151
+ 'input',
152
+ ],
137
153
  'helix-map': [
138
154
  'change',
139
155
  'helix-activate',
@@ -226,7 +242,14 @@ registerElementEvents({
226
242
  'helix-steps': ['helix-activate', 'helix-before-activate', 'helix-select'],
227
243
  'helix-switch': ['change', 'helix-before-toggle', 'input'],
228
244
  'helix-tab': ['helix-select'],
229
- 'helix-table': ['helix-select', 'helix-selected', 'helix-sort', 'helix-sorted'],
245
+ 'helix-table': [
246
+ 'helix-before-reorder',
247
+ 'helix-reorder',
248
+ 'helix-select',
249
+ 'helix-selected',
250
+ 'helix-sort',
251
+ 'helix-sorted',
252
+ ],
230
253
  'helix-table-column': ['helix-before-resize', 'helix-resized'],
231
254
  'helix-tabs': ['helix-activate', 'helix-before-activate', 'helix-select'],
232
255
  'helix-tag': ['helix-dismiss'],
@@ -257,7 +280,13 @@ registerElementEvents({
257
280
  'toggle',
258
281
  ],
259
282
  'helix-tour-stop': ['helix-tour-ask'],
260
- 'helix-tree': ['helix-activate', 'helix-before-activate', 'helix-select'],
283
+ 'helix-tree': [
284
+ 'helix-activate',
285
+ 'helix-before-activate',
286
+ 'helix-before-reorder',
287
+ 'helix-reorder',
288
+ 'helix-select',
289
+ ],
261
290
  'helix-tree-item': [
262
291
  'helix-before-close',
263
292
  'helix-before-open',
@@ -1,2 +1,2 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`:host {display: inline;}:host([elapsed]) {font-variant-numeric: tabular-nums;}@media print {:host([elapsed]) [part="time"]::after {content: " (" attr(datetime) ")";}}`);
2
+ export const styles = createSheet(`:host([elapsed]) {font-variant-numeric: tabular-nums;}@media print {:host([elapsed]) [part="time"]::after {content: " (" attr(datetime) ")";}}`);
@@ -15,7 +15,6 @@ import type { CSSResultGroup } from 'lit';
15
15
  * @documentation https://fusion.dev/helix/components/format-date
16
16
  */
17
17
  export declare class HelixFormatDate extends HelixHeadlessFormatDate {
18
- static tier: string;
19
18
  static styles: CSSResultGroup;
20
19
  }
21
20
  declare global {
@@ -8,7 +8,6 @@ import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessFormatDate } from '@fusion.dev/helix-headless/format-date';
9
9
  import { styles } from './format-date-root.css.js';
10
10
  let HelixFormatDate = class HelixFormatDate extends HelixHeadlessFormatDate {
11
- static { this.tier = 'helix-'; }
12
11
  static { this.styles = styles; }
13
12
  };
14
13
  HelixFormatDate = __decorate([
@@ -1,3 +1,5 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`:host {display: block;}[part~="row"] {align-items: center;display: grid;grid-template-columns: auto auto 1fr auto;padding: var(--list-item-padding, var(--helix-space-sm) var(--helix-space-md));}[part="rail"] {align-self: start;color: var(--helix-color-foreground-muted);display: var(--list-item-rail-display, none);font-family: var(--helix-font-mono);font-size: var(--helix-text-xs);grid-column: 1;grid-row: 1;letter-spacing: var(--helix-tracking-wide);line-height: calc(var(--helix-text-sm) * var(--helix-leading-normal));inline-size: var(--list-rail-inline-size, var(--helix-space-3xl));}[part="rail"]::before {content: var(--list-item-rail-content, "");}slot[name="start"]::slotted(*) {color: var(--helix-color-foreground-muted);grid-column: 2;margin-inline-end: var(--helix-space-sm);grid-row: 1 / span 2;}slot:not([name]) {color: var(--helix-color-foreground);display: block;font-size: var(--helix-text-sm);font-weight: var(--list-item-term-weight, var(--helix-weight-regular));grid-column: 3;grid-row: 1;}slot[name="description"] {color: var(--helix-color-foreground-muted);display: block;font-size: var(--helix-text-xs);grid-column: 3;grid-row: 2;}slot:not([name])::slotted(*),
3
- slot[name="description"]::slotted(*) {margin: var(--helix-space-none);}slot[name="end"]::slotted(*) {grid-column: 4;grid-row: 1 / span 2;}[part="link"] {align-items: center;color: inherit;display: grid;grid-column: 1 / 4;grid-row: 1 / span 2;grid-template-columns: subgrid;grid-template-rows: subgrid;text-decoration: none;}[part~="row-current"] {background-color: var(--list-item-current-background-color, var(--helix-color-well));border-radius: var(--helix-radii-sm);}[part~="row"]:focus-visible {border-radius: var(--helix-radii-sm);outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: calc(var(--helix-size-focus-offset) * -1);}:host(:state(selected)) [part~="row"] {background-color: var(--list-item-selected-background-color, var(--helix-color-primary-subtle));border-radius: var(--helix-radii-sm);}:host([disabled]) {opacity: var(--list-item-disabled-opacity, 0.5);}`);
2
+ export const styles = createSheet(`:host {display: block;}[part~="row"] {align-items: center;display: grid;grid-template-columns: auto auto 1fr auto auto;padding: var(--list-item-padding, var(--helix-space-sm) var(--helix-space-md));}[part="rail"] {align-self: start;color: var(--helix-color-foreground-muted);display: var(--list-item-rail-display, none);font-family: var(--helix-font-mono);font-size: var(--helix-text-xs);grid-column: 1;grid-row: 1;letter-spacing: var(--helix-tracking-wide);line-height: calc(var(--helix-text-sm) * var(--helix-leading-normal));inline-size: var(--list-rail-inline-size, var(--helix-space-3xl));}[part="rail"]::before {content: var(--list-item-rail-content, "");}slot[name="start"]::slotted(*) {color: var(--helix-color-foreground-muted);grid-column: 2;margin-inline-end: var(--helix-space-sm);grid-row: 1 / span 2;}slot:not([name]) {color: var(--helix-color-foreground);display: block;font-size: var(--helix-text-sm);font-weight: var(--list-item-term-weight, var(--helix-weight-regular));grid-column: 3;grid-row: 1;}slot[name="description"] {color: var(--helix-color-foreground-muted);display: block;font-size: var(--helix-text-xs);grid-column: 3;grid-row: 2;}slot:not([name])::slotted(*),
3
+ slot[name="description"]::slotted(*) {margin: var(--helix-space-none);}slot[name="end"]::slotted(*) {grid-column: 4;grid-row: 1 / span 2;}[part="link"] {align-items: center;color: inherit;display: grid;grid-column: 1 / 4;grid-row: 1 / span 2;grid-template-columns: subgrid;grid-template-rows: subgrid;text-decoration: none;}[part~="row-current"] {background-color: var(--list-item-current-background-color, var(--helix-color-well));border-radius: var(--helix-radii-sm);}[part~="row"]:focus-visible {border-radius: var(--helix-radii-sm);outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: calc(var(--helix-size-focus-offset) * -1);}:host(:state(selected)) [part~="row"] {background-color: var(--list-item-selected-background-color, var(--helix-color-primary-subtle));border-radius: var(--helix-radii-sm);}[part="grip"] {all: unset;align-items: center;border-radius: var(--helix-radii-sm);box-sizing: border-box;color: var(--list-item-grip-color, var(--helix-color-foreground-muted));cursor: grab;display: inline-flex;grid-column: 5;grid-row: 1 / span 2;margin-inline-start: var(--helix-space-sm);touch-action: none;}[part="grip"]:active {cursor: grabbing;}[part="grip"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset);}[part="grip-mark"] {block-size: 1em;inline-size: 1em;}:host(:state(dragging)) [part~="row"] {opacity: var(--list-item-dragging-opacity, 0.5);}:host(:state(drop-before)) [part~="row"] {box-shadow: inset 0 var(--list-item-drop-indicator-size, var(--helix-border-thick)) 0 0
4
+ var(--list-item-drop-indicator-color, var(--helix-color-primary));}:host(:state(drop-after)) [part~="row"] {box-shadow: inset 0 calc(var(--list-item-drop-indicator-size, var(--helix-border-thick)) * -1) 0 0
5
+ var(--list-item-drop-indicator-color, var(--helix-color-primary));}:host([disabled]) {opacity: var(--list-item-disabled-opacity, 0.5);}`);
@@ -16,6 +16,10 @@ import { type CSSResultGroup, type TemplateResult } from 'lit';
16
16
  *
17
17
  * @cssproperty --list-item-current-background-color - The fill behind a row that is `current`.
18
18
  * @cssproperty --list-item-disabled-opacity - The opacity of a `disabled` row.
19
+ * @cssproperty --list-item-dragging-opacity - The opacity of a row being moved, in a `reorderable` list.
20
+ * @cssproperty --list-item-drop-indicator-color - The color of the line where a moved row would land.
21
+ * @cssproperty --list-item-drop-indicator-size - The thickness of the line where a moved row would land.
22
+ * @cssproperty --list-item-grip-color - The color of the grip, in a `reorderable` list.
19
23
  * @cssproperty --list-item-padding - The padding inside the row.
20
24
  * @cssproperty --list-item-rail-content - What the rail cell shows. The list sets it.
21
25
  * @cssproperty --list-item-rail-display - Whether the row has a rail. The list sets it.
@@ -2,4 +2,5 @@ import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {display: flex;flex-direction: column;gap: var(--list-gap, var(--helix-space-none));}:host([divided]) ::slotted(*:not(:first-child)) {border-block-start: var(--helix-border-thin) solid var(--helix-color-border);}:host([kind="ordered"]),
3
3
  :host([kind="unordered"]) {contain: style;padding-inline-start: var(--list-marker-gutter, var(--helix-space-md));}:host([kind="ordered"]) ::slotted(*),
4
4
  :host([kind="unordered"]) ::slotted(*) {display: list-item;list-style-position: outside;}:host([kind="ordered"]) ::slotted(*) {list-style-type: decimal;}:host([kind="ordered"][type="a"]) ::slotted(*) {list-style-type: lower-alpha;}:host([kind="ordered"][type="A"]) ::slotted(*) {list-style-type: upper-alpha;}:host([kind="ordered"][type="i"]) ::slotted(*) {list-style-type: lower-roman;}:host([kind="ordered"][type="I"]) ::slotted(*) {list-style-type: upper-roman;}:host([kind="unordered"]) ::slotted(*) {list-style-type: disc;}:host([kind="ordered"]) ::slotted(*) {counter-increment: list-item var(--list-step, 1);}:host([kind="ordered"]) ::slotted(:first-child) {counter-set: list-item var(--list-first);}:host([marker="rail"]) {counter-reset: list-rail;padding-inline-start: var(--helix-space-none);}:host([marker="rail"]) ::slotted(*) {--list-item-rail-content: counter(list-rail, var(--list-rail-style, decimal-leading-zero));--list-item-rail-display: block;counter-increment: list-rail var(--list-step, 1);}:host([marker="rail"]) ::slotted(:first-child) {counter-set: list-rail var(--list-first);}:host([kind="ordered"][marker="rail"]) ::slotted(*),
5
- :host([kind="unordered"][marker="rail"]) ::slotted(*) {display: block;list-style: none;}:host([kind="description"]) ::slotted(*) {--list-item-term-weight: var(--helix-weight-semibold);}@media print {:host {print-color-adjust: economy;}}`);
5
+ :host([kind="unordered"][marker="rail"]) ::slotted(*) {display: block;list-style: none;}:host([kind="description"]) ::slotted(*) {--list-item-term-weight: var(--helix-weight-semibold);}[part="drag-preview"] {background-color: var(--list-drag-preview-background-color, var(--helix-color-surface-raised));border: var(--list-drag-preview-border-width, var(--helix-border-floating)) solid
6
+ var(--list-drag-preview-border-color, var(--helix-color-border));border-radius: var(--list-drag-preview-radius, var(--helix-radii-sm));box-shadow: var(--list-drag-preview-shadow, var(--helix-shadow-floating));opacity: var(--list-drag-preview-opacity, 0.9);}@media print {:host {print-color-adjust: economy;}}`);
@@ -13,6 +13,12 @@ import type { CSSResultGroup } from 'lit';
13
13
  * @aliases Rows, Stack, Menu
14
14
  * @documentation https://fusion.dev/helix/components/list
15
15
  *
16
+ * @cssproperty --list-drag-preview-background-color - The fill behind the copy of a row a pointer drags.
17
+ * @cssproperty --list-drag-preview-border-color - The color of the edge around the copy of a row a pointer drags.
18
+ * @cssproperty --list-drag-preview-border-width - The width of the edge around the copy of a row a pointer drags. None by default, where the shadow lifts it.
19
+ * @cssproperty --list-drag-preview-opacity - The opacity of the copy of a row a pointer drags.
20
+ * @cssproperty --list-drag-preview-radius - The corner radius of the copy of a row a pointer drags.
21
+ * @cssproperty --list-drag-preview-shadow - The shadow that raises the copy of a row a pointer drags over the page.
16
22
  * @cssproperty --list-gap - The space between rows.
17
23
  * @cssproperty --list-marker-gutter - The space that the markers of ordered and unordered lists sit in.
18
24
  * @cssproperty --list-rail-inline-size - The width of the rail's track.
@@ -7,13 +7,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessList } from '@fusion.dev/helix-headless/list';
9
9
  import { property } from 'lit/decorators.js';
10
+ import { styles as liveStyles } from '../../shared/live/live.css.js';
10
11
  import { styles } from './list-root.css.js';
11
12
  let HelixList = class HelixList extends HelixHeadlessList {
12
13
  constructor() {
13
14
  super(...arguments);
14
15
  this.divided = false;
15
16
  }
16
- static { this.styles = styles; }
17
+ static { this.styles = [liveStyles, styles]; }
17
18
  };
18
19
  __decorate([
19
20
  property({ reflect: true, type: Boolean })
@@ -0,0 +1 @@
1
+ export { ListboxReorderController, reorderListbox, } from '@fusion.dev/helix-headless/listbox/reorder';
@@ -0,0 +1,6 @@
1
+ import { reorderListbox } from '@fusion.dev/helix-headless/listbox/reorder';
2
+ import { HelixListbox } from '../root/listbox-root.js';
3
+ import { styles as previewStyles } from './listbox-drag-preview.css.js';
4
+ import { styles } from './listbox-reorder.css.js';
5
+ reorderListbox(HelixListbox, styles, previewStyles);
6
+ export { ListboxReorderController, reorderListbox, } from '@fusion.dev/helix-headless/listbox/reorder';
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,3 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`[popover] {background-color: var(--listbox-drag-preview-background-color, var(--helix-color-surface-raised));border: var(--listbox-drag-preview-border-width, var(--helix-border-floating)) solid
3
+ var(--listbox-drag-preview-border-color, var(--helix-color-border));border-radius: var(--listbox-drag-preview-radius, var(--helix-radii-sm));box-shadow: var(--listbox-drag-preview-shadow, var(--helix-shadow-floating));opacity: var(--listbox-drag-preview-opacity, 0.9);}`);
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,4 @@
1
+ import { createSheet } from '@fusion.dev/helix-core';
2
+ export const styles = createSheet(`* {cursor: grab;}:host(:state(dragging)) {opacity: var(--listbox-dragging-opacity, 0.5);}:host(:state(drop-before)),
3
+ :host(:state(drop-after)) {position: relative;}:host(:state(drop-before))::before,
4
+ :host(:state(drop-after))::before {background-color: var(--listbox-drop-indicator-color, var(--helix-color-primary));block-size: var(--listbox-drop-indicator-size, var(--helix-border-thick));content: "";inset-inline: 0;pointer-events: none;position: absolute;z-index: 1;}:host(:state(drop-before))::before {inset-block-start: 0;}:host(:state(drop-after))::before {inset-block-end: 0;}`);
@@ -1,5 +1,8 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`:host {display: flex;flex-direction: column;gap: var(--helix-space-2xs);}[part="items"] {--option-radius: var(--helix-radii-none);background-color: var(--listbox-background-color, var(--helix-color-surface));border: var(--listbox-border, var(--helix-border-thin) solid var(--helix-color-border));border-radius: var(--helix-radii-sm);display: flex;flex-direction: column;gap: var(--helix-space-none);max-block-size: var(--listbox-max-block-size, 14rem);overflow-y: auto;padding-block: var(--helix-space-2xs);padding-inline: var(--helix-space-none);}[part="items"]:focus-visible {border-color: var(--helix-color-primary);outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: 0;}:host(:state(invalid)) [part="items"],
2
+ export const styles = createSheet(`:host {display: flex;flex-direction: column;gap: var(--helix-space-2xs);}[part="items"] {--option-radius: var(--helix-radii-none);background-color: var(--listbox-background-color, var(--helix-color-surface));border: var(--listbox-border, var(--helix-border-thin) solid var(--helix-color-border));border-radius: var(--helix-radii-sm);display: flex;flex-direction: column;gap: var(--helix-space-none);max-block-size: var(--listbox-max-block-size, 14rem);overflow-y: auto;padding-block: var(--helix-space-2xs);padding-inline: var(--helix-space-none);}:host([layout="grid"]) [part="items"] {display: grid;grid-template-columns: repeat(
3
+ auto-fill,
4
+ minmax(min(var(--listbox-column-min-inline-size, 8rem), 100%), 1fr)
5
+ );}[part="items"]:focus-visible {border-color: var(--helix-color-primary);outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: 0;}:host(:state(invalid)) [part="items"],
3
6
  :host(:state(invalid)) [part="items"]:focus-visible {border-color: var(--helix-color-danger);outline-color: var(--helix-color-danger);}:host(:disabled) {opacity: 0.5;}:host(:disabled) [part="items"] {cursor: not-allowed;}[part="empty"],
4
7
  [part="loading"] {--_collection-inset-block: var(--helix-space-xs);--_collection-inset-inline: var(--helix-space-xs);}[part="error"] {color: var(--listbox-error-color, var(--helix-color-danger));font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);margin: var(--helix-space-none);padding: var(--helix-space-xs);text-align: center;}[part="filter-icon"] {align-items: center;color: var(--helix-color-foreground-subtle);display: inline-flex;flex: 0 0 auto;}[part="filter-icon"] svg,
5
8
  slot[name="filter-icon"]::slotted(*) {--icon-size: var(--helix-size-icon-tight);block-size: var(--helix-size-icon-tight);inline-size: var(--helix-size-icon-tight);}[part="search"] {align-items: center;border-block-end: var(--helix-border-thin) solid var(--helix-color-border);display: flex;gap: var(--helix-space-2xs);padding: var(--helix-space-2xs);padding-inline-start: var(--helix-space-xs);}[part="search-field"] {appearance: none;flex: 1 1 auto;min-inline-size: 0;background-color: transparent;block-size: var(--helix-size-control-tight);border: none;box-sizing: border-box;color: var(--helix-color-foreground);font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);font-weight: var(--helix-weight-medium);inline-size: 100%;padding-inline: var(--helix-space-xs);}[part="search-field"]:focus-visible {outline: none;}:host([loading]) [part="items"] {opacity: 0.5;}@media print {:host {print-color-adjust: exact;}}`);
@@ -19,10 +19,21 @@ import type { CSSResultGroup } from 'lit';
19
19
  *
20
20
  * @cssproperty --listbox-background-color - The panel's fill. Set it to `transparent` when the list is already inside a panel.
21
21
  * @cssproperty --listbox-border - The panel's border, as a shorthand. Set it to `none` when the list is already inside a panel.
22
+ * @cssproperty --listbox-column-min-inline-size - How narrow a column may be with `layout="grid"`. As many columns as fit are drawn. Defaults to `8rem`.
23
+ * @cssproperty --listbox-drag-preview-background-color - The fill behind the copy of an option a pointer drags.
24
+ * @cssproperty --listbox-drag-preview-border-color - The color of the edge around the copy of an option a pointer drags.
25
+ * @cssproperty --listbox-drag-preview-border-width - The width of the edge around the copy of an option a pointer drags. None by default, where the shadow lifts it.
26
+ * @cssproperty --listbox-drag-preview-opacity - The opacity of the copy of an option a pointer drags.
27
+ * @cssproperty --listbox-drag-preview-radius - The corner radius of the copy of an option a pointer drags.
28
+ * @cssproperty --listbox-drag-preview-shadow - The shadow that raises the copy of an option a pointer drags over the page.
29
+ * @cssproperty --listbox-dragging-opacity - The opacity of an option being dragged, in a `reorderable` list with `@fusion.dev/helix/listbox/reorder` imported.
30
+ * @cssproperty --listbox-drop-indicator-color - The color of the line where a dragged option would land.
31
+ * @cssproperty --listbox-drop-indicator-size - The thickness of the line where a dragged option would land.
22
32
  * @cssproperty --listbox-error-color - The color of the line shown while `load-error` is set.
23
33
  * @cssproperty --listbox-max-block-size - Maximum height of the list before it scrolls.
24
34
  */
25
35
  export declare class HelixListbox extends HelixHeadlessListbox {
36
+ static tier: string;
26
37
  static styles: CSSResultGroup;
27
38
  }
28
39
  declare global {
@@ -12,6 +12,7 @@ import { styles as fieldStackedStyles } from '../../shared/field/field-stacked.c
12
12
  import { styles as liveStyles } from '../../shared/live/live.css.js';
13
13
  import { styles } from './listbox-root.css.js';
14
14
  let HelixListbox = class HelixListbox extends HelixHeadlessListbox {
15
+ static { this.tier = 'helix-'; }
15
16
  static { this.styles = [
16
17
  liveStyles,
17
18
  collectionStateStyles,
@@ -1,6 +1,7 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
- export const styles = createSheet(`:host {display: contents;}[part="region"] {background-color: var(--map-background-color, var(--helix-color-surface-sunken));block-size: var(--map-block-size, 24rem);border: var(--helix-border-thin) solid var(--map-border-color, var(--helix-color-border));border-radius: var(--helix-radii-sm);box-sizing: border-box;display: grid;grid-template-rows: auto 1fr auto auto;overflow: hidden;position: relative;}:host([fill]) [part="region"] {block-size: auto;border: none;border-radius: 0;container-type: size;inset: 0;position: absolute;}[part="viewport"] {isolation: isolate;min-block-size: 0;overflow: hidden;position: relative;}[part="layers"] {block-size: 1px;clip-path: inset(50%);inline-size: 1px;margin: var(--helix-space-none);overflow: hidden;padding: var(--helix-space-none);position: absolute;white-space: nowrap;}[part="viewport"] ::slotted(:not(helix-map-marker, helix-map-points, helix-map-position)) {block-size: 100%;inline-size: 100%;}:host(:state(idle)) ::slotted([slot="header"]),
3
- :host(:state(idle)) ::slotted([slot="footer"]) {opacity: 0;transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);}::slotted([slot="attribution"]) {border-block-start: var(--helix-border-thin) solid var(--helix-color-border);color: var(--helix-color-foreground-subtle);display: block;font-size: var(--helix-text-xs);padding: var(--helix-space-2xs) var(--helix-space-xs);}:host([credit-placement]) [part="attribution"] {inset-block-end: var(--helix-space-2xs);max-inline-size: calc(100% - var(--helix-space-2xs) * 2);position: absolute;}:host([credit-placement="bottom-end"]) [part="attribution"] {inset-inline-end: var(--helix-space-2xs);}:host([credit-placement="bottom-start"]) [part="attribution"] {inset-inline-start: var(--helix-space-2xs);}:host([credit-placement]) ::slotted([slot="attribution"]) {backdrop-filter: var(--helix-material-backdrop);background-color: var(--helix-material-translucent);border-block-start: none;border-radius: var(--helix-radii-sm);color: var(--helix-color-foreground-muted);overflow: hidden;padding: var(--helix-space-none) var(--helix-space-xs);text-overflow: ellipsis;white-space: nowrap;}:host([credit-placement])
2
+ export const styles = createSheet(`:host {display: contents;}[part="region"] {background-color: var(--map-background-color, var(--helix-color-surface-sunken));block-size: var(--map-block-size, 24rem);border: var(--helix-border-thin) solid var(--map-border-color, var(--helix-color-border));border-radius: var(--map-radius, var(--helix-radii-sm));box-sizing: border-box;display: grid;grid-template-rows: auto 1fr auto auto;overflow: hidden;position: relative;}:host([fill]) [part="region"] {block-size: auto;border: none;border-radius: 0;container-type: size;inset: 0;position: absolute;}[part="viewport"] {isolation: isolate;min-block-size: 0;overflow: hidden;position: relative;}[part="layers"] {block-size: 1px;clip-path: inset(50%);inline-size: 1px;margin: var(--helix-space-none);overflow: hidden;padding: var(--helix-space-none);position: absolute;white-space: nowrap;}[part="viewport"] ::slotted(:not(helix-map-marker, helix-map-points, helix-map-position)) {block-size: 100%;inline-size: 100%;}:host(:state(idle)) ::slotted([slot="header"]),
3
+ :host(:state(idle)) ::slotted([slot="footer"]) {opacity: 0;transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);}::slotted([slot="attribution"]) {border-block-start: var(--helix-border-thin) solid
4
+ var(--map-attribution-border-color, var(--helix-color-border));color: var(--map-attribution-color, var(--helix-color-foreground-subtle));display: block;font-size: var(--map-attribution-font-size, var(--helix-text-xs));padding: var(--helix-space-2xs) var(--helix-space-xs);}:host([credit-placement]) [part="attribution"] {inset-block-end: var(--helix-space-2xs);max-inline-size: calc(100% - var(--helix-space-2xs) * 2);position: absolute;}:host([credit-placement="bottom-end"]) [part="attribution"] {inset-inline-end: var(--helix-space-2xs);}:host([credit-placement="bottom-start"]) [part="attribution"] {inset-inline-start: var(--helix-space-2xs);}:host([credit-placement]) ::slotted([slot="attribution"]) {backdrop-filter: var(--helix-material-backdrop);background-color: var(--helix-material-translucent);border-block-start: none;border-radius: var(--helix-radii-sm);color: var(--map-attribution-color, var(--helix-color-foreground-muted));overflow: hidden;padding: var(--helix-space-none) var(--helix-space-xs);text-overflow: ellipsis;white-space: nowrap;}:host([credit-placement])
4
5
  [part="attribution"]:is(:hover, :focus-within)
5
6
  ::slotted([slot="attribution"]) {white-space: normal;}:host([material="glass"]) [part="controls"] button {backdrop-filter: var(--helix-material-backdrop);background-color: var(--viewport-control-background-color, var(--helix-material-translucent));}:host([material="frosted"]) [part="controls"] button {backdrop-filter: blur(var(--helix-material-blur-lg));background-color: var(
6
7
  --viewport-control-background-color,
@@ -9,12 +10,15 @@ var(--helix-material-translucent-strong)
9
10
  in oklab,
10
11
  var(--helix-color-foreground) 10%,
11
12
  var(--helix-color-surface-overlay)
12
- );}@media print {[part="controls"] {display: none;}}[part="controls"] {align-items: center;display: flex;flex-direction: column;grid-column: 1 / -1;grid-row: 2 / 3;}[part="controls"] [part="zoom-in"] {border-end-end-radius: 0;border-end-start-radius: 0;}[part="controls"] [part="zoom-out"] {border-block-start: 0;border-start-end-radius: 0;border-start-start-radius: 0;margin-block-start: calc(-1 * var(--helix-space-2xs));}[part="tilt"] {font-size: var(--helix-text-xs);font-weight: var(--helix-weight-semibold);}[part="tilt"][aria-pressed="true"] {background-color: var(--helix-color-primary-surface);border-color: var(--helix-color-primary-surface);color: var(--helix-color-foreground-on-primary);}[part="tilt"][aria-pressed="true"]:hover {background-color: var(--helix-color-primary-surface-hover);}[part="compass"] {border-radius: var(--helix-radii-sm);display: grid;grid-template-areas:
13
+ );}@media print {[part="controls"] {display: none;}}[part="controls"] {align-items: center;display: flex;flex-direction: column;grid-column: 1 / -1;grid-row: 2 / 3;}[part="controls"] [part="zoom-in"] {border-end-end-radius: 0;border-end-start-radius: 0;}[part="controls"] [part="zoom-out"] {border-block-start: 0;border-start-end-radius: 0;border-start-start-radius: 0;margin-block-start: calc(-1 * var(--helix-space-2xs));}[part="controls"] [part="face-north"] ::slotted(*) {--icon-size: var(--helix-size-icon-md);block-size: var(--helix-size-icon-md);inline-size: var(--helix-size-icon-md);}[part="tilt"] {font-size: var(--helix-text-xs);font-weight: var(--helix-weight-semibold);}[part="tilt"][aria-pressed="true"] {background-color: var(--map-chosen-color, var(--helix-color-primary-surface));border-color: var(--map-chosen-color, var(--helix-color-primary-surface));color: var(--helix-color-foreground-on-primary);}[part="tilt"][aria-pressed="true"]:hover {background-color: var(--helix-color-primary-surface-hover);}[part="compass"] {border-radius: var(--helix-radii-sm);display: grid;grid-template-areas:
13
14
  "rotl up rotr"
14
15
  "start north end"
15
16
  ". down .";place-items: center;}[part="rotate-left"] {grid-area: rotl;}[part="rotate-right"] {grid-area: rotr;}[part="face-north"] {grid-area: north;}[part="compass"] > :not([part="face-north"]) {background-color: transparent;block-size: calc(var(--helix-size-control-sm) * 0.75);border-color: transparent;box-shadow: none;font-size: var(--helix-text-xs);inline-size: calc(var(--helix-size-control-sm) * 0.75);}[part="compass"]:has(> :not([part="face-north"])) {background-color: var(--viewport-control-background-color, var(--helix-color-surface-overlay));box-shadow:
16
17
  var(--helix-shadow-floating),
17
- 0 0 0 var(--helix-border-floating) var(--helix-color-border);}[part="needle"] {block-size: var(--helix-size-icon-md);inline-size: var(--helix-size-icon-md);transform: rotate(var(--map-needle-turn, 0deg));}[part="needle"] [data-end="north"] {fill: var(--helix-color-danger);}[part="needle"] [data-end="south"] {fill: var(--helix-color-foreground-muted);}[part="layers-menu"] {background-color: var(--viewport-control-background-color, var(--helix-color-surface-overlay));border: var(--helix-border-floating) solid var(--helix-color-border);border-radius: var(--helix-radii-sm);box-shadow: var(--helix-shadow-floating);color: var(--helix-color-foreground);display: grid;gap: var(--helix-space-sm);inline-size: min(calc(var(--helix-size-control-lg) * 6), 70vw);inset-block-start: 0;inset-inline-end: calc(100% + var(--helix-space-2xs));max-block-size: calc(var(--map-block-size, 24rem) - var(--helix-space-sm) * 2);overflow-y: auto;padding: var(--helix-space-sm);position: absolute;}:host([fill]) [part="layers-menu"] {max-block-size: calc(100cqb - var(--helix-space-sm) * 2);}[part="layers-menu"][hidden] {display: none;}:host([controls-placement^="bottom"]) [part="layers-menu"] {inset-block: auto 0;}:host([controls-placement$="start"]) [part="layers-menu"] {inset-inline: calc(100% + var(--helix-space-2xs)) auto;}[part="map-types"] {display: grid;gap: var(--helix-space-xs);grid-template-columns: repeat(3, 1fr);}[part="map-type"] {color: var(--helix-color-foreground-muted);cursor: pointer;display: grid;font-family: var(--helix-font-sans);font-size: var(--helix-text-xs);gap: var(--helix-space-2xs);justify-items: center;position: relative;}[part="map-type"] input {block-size: 1px;inline-size: 1px;margin: 0;opacity: 0;pointer-events: none;position: absolute;}[part="map-type-preview"] {aspect-ratio: 4 / 3;background-color: var(--helix-color-surface-sunken);border: var(--helix-border-thick) solid transparent;border-radius: var(--helix-radii-sm);box-sizing: border-box;display: block;inline-size: 100%;object-fit: cover;}[part="map-type"]:hover,
18
- [part="map-type"]:has(input:checked) {color: var(--helix-color-foreground);}[part="map-type"]:has(input:checked) [part="map-type-preview"] {border-color: var(--helix-color-primary-surface);}[part="map-type"]:has(input:focus-visible) [part="map-type-preview"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset);}[part="layer-choices"] {display: grid;gap: var(--helix-space-xs);grid-template-columns: repeat(3, 1fr);}[part="layers-menu"] [part="layer-choice"] {align-content: start;background-color: transparent;block-size: auto;border: 0;box-shadow: none;color: var(--helix-color-foreground-muted);display: grid;font-size: var(--helix-text-xs);gap: var(--helix-space-2xs);inline-size: auto;justify-items: center;padding: 0;text-align: center;}[part="layers-menu"] [part="layer-choice"]:hover,
19
- [part="layers-menu"] [part="layer-choice"][aria-pressed="true"] {background-color: transparent;color: var(--helix-color-foreground);}[part="layers-menu"] [part="layer-choice"]:focus-visible {outline: none;}[part="layer-icon"] {aspect-ratio: 4 / 3;background-color: var(--helix-color-surface-sunken);border: var(--helix-border-thick) solid transparent;border-radius: var(--helix-radii-sm);box-sizing: border-box;display: block;inline-size: 100%;padding: var(--helix-space-sm);}[part="layer-choice"][aria-pressed="true"] [part="layer-icon"] {border-color: var(--helix-color-primary-surface);}[part="layer-choice"]:focus-visible [part="layer-icon"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset);}@media (forced-colors: active) {[part="tilt"][aria-pressed="true"] {background-color: Highlight;color: HighlightText;forced-color-adjust: none;}[part="map-type"]:has(input:checked),
18
+ 0 0 0 var(--helix-border-floating) var(--helix-color-border);}[part="needle"] {block-size: var(--helix-size-icon-md);inline-size: var(--helix-size-icon-md);transform: rotate(var(--map-needle-turn, 0deg));}[part="needle"] [data-end="north"] {fill: var(--map-needle-north-color, var(--helix-color-danger));}[part="needle"] [data-end="south"] {fill: var(--map-needle-south-color, var(--helix-color-foreground-muted));}[part="layers-menu"] {background-color: var(--viewport-control-background-color, var(--helix-color-surface-overlay));border: var(--helix-border-floating) solid var(--helix-color-border);border-radius: var(--helix-radii-sm);box-shadow: var(--helix-shadow-floating);color: var(--helix-color-foreground);display: grid;gap: var(--map-layers-menu-gap, var(--helix-space-sm));inline-size: var(
19
+ --map-layers-menu-inline-size,
20
+ min(calc(var(--helix-size-control-lg) * 6), 70vw)
21
+ );inset-block-start: 0;inset-inline-end: calc(100% + var(--helix-space-2xs));max-block-size: calc(var(--map-block-size, 24rem) - var(--helix-space-sm) * 2);overflow-y: auto;padding: var(--map-layers-menu-padding, var(--helix-space-sm));position: absolute;}:host([fill]) [part="layers-menu"] {max-block-size: calc(100cqb - var(--helix-space-sm) * 2);}[part="layers-menu"][hidden] {display: none;}:host([controls-placement^="bottom"]) [part="layers-menu"] {inset-block: auto 0;}:host([controls-placement$="start"]) [part="layers-menu"] {inset-inline: calc(100% + var(--helix-space-2xs)) auto;}[part="map-types"] {display: grid;gap: var(--helix-space-xs);grid-template-columns: repeat(3, 1fr);}[part="map-type"] {color: var(--helix-color-foreground-muted);cursor: pointer;display: grid;font-family: var(--helix-font-sans);font-size: var(--helix-text-xs);gap: var(--helix-space-2xs);justify-items: center;position: relative;}[part="map-type"] input {block-size: 1px;inline-size: 1px;margin: 0;opacity: 0;pointer-events: none;position: absolute;}[part="map-type-preview"] {aspect-ratio: 4 / 3;background-color: var(--helix-color-surface-sunken);border: var(--helix-border-thick) solid transparent;border-radius: var(--helix-radii-sm);box-sizing: border-box;display: block;inline-size: 100%;object-fit: cover;}[part="map-type"]:hover,
22
+ [part="map-type"]:has(input:checked) {color: var(--helix-color-foreground);}[part="map-type"]:has(input:checked) [part="map-type-preview"] {border-color: var(--map-chosen-color, var(--helix-color-primary-surface));}[part="map-type"]:has(input:focus-visible) [part="map-type-preview"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset);}[part="layer-choices"] {display: grid;gap: var(--helix-space-xs);grid-template-columns: repeat(3, 1fr);}[part="layers-menu"] [part="layer-choice"] {align-content: start;background-color: transparent;block-size: auto;border: 0;box-shadow: none;color: var(--helix-color-foreground-muted);display: grid;font-size: var(--helix-text-xs);gap: var(--helix-space-2xs);inline-size: auto;justify-items: center;padding: 0;text-align: center;}[part="layers-menu"] [part="layer-choice"]:hover,
23
+ [part="layers-menu"] [part="layer-choice"][aria-pressed="true"] {background-color: transparent;color: var(--helix-color-foreground);}[part="layers-menu"] [part="layer-choice"]:focus-visible {outline: none;}[part="layer-icon"] {aspect-ratio: 4 / 3;background-color: var(--helix-color-surface-sunken);border: var(--helix-border-thick) solid transparent;border-radius: var(--helix-radii-sm);box-sizing: border-box;display: block;inline-size: 100%;padding: var(--helix-space-sm);}[part="layer-choice"][aria-pressed="true"] [part="layer-icon"] {border-color: var(--map-chosen-color, var(--helix-color-primary-surface));}[part="layer-choice"]:focus-visible [part="layer-icon"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset);}@media (forced-colors: active) {[part="tilt"][aria-pressed="true"] {background-color: Highlight;color: HighlightText;forced-color-adjust: none;}[part="map-type"]:has(input:checked),
20
24
  [part="layers-menu"] [part="layer-choice"][aria-pressed="true"] {outline: var(--helix-border-thick) solid Highlight;outline-offset: var(--helix-space-2xs);}}`);
@@ -19,9 +19,19 @@ import type { CSSResultGroup } from 'lit';
19
19
  * @aliases Map frame, Map container, Geo
20
20
  * @documentation https://fusion.dev/helix/components/map
21
21
  *
22
+ * @cssproperty --map-attribution-border-color - The rule above the map credit, under the map.
23
+ * @cssproperty --map-attribution-color - The color of the map credit.
24
+ * @cssproperty --map-attribution-font-size - The size of the map credit's text.
22
25
  * @cssproperty --map-background-color - The color behind the map while tiles load.
23
26
  * @cssproperty --map-block-size - The frame's height, as a length. Ignored with `fill`, where the container decides it.
24
27
  * @cssproperty --map-border-color - The frame's border color.
28
+ * @cssproperty --map-chosen-color - The fill of the pressed 3D button and the ring around the chosen map type and each shown layer in the layers menu.
29
+ * @cssproperty --map-layers-menu-gap - The space between the map types and the layers in the layers menu.
30
+ * @cssproperty --map-layers-menu-inline-size - The width of the layers menu.
31
+ * @cssproperty --map-layers-menu-padding - The space inside the edge of the layers menu.
32
+ * @cssproperty --map-needle-north-color - The north half of the compass needle.
33
+ * @cssproperty --map-needle-south-color - The south half of the compass needle.
34
+ * @cssproperty --map-radius - The frame's corners.
25
35
  * @cssproperty --viewport-control-background-color - The background of the pan and zoom buttons. Canvas uses the same property.
26
36
  */
27
37
  export declare class HelixMap extends HelixHeadlessMap {
@@ -17,8 +17,14 @@ var(--notifications-unread-inline-size, var(--_notifications-unread))
17
17
  2
18
18
  )
19
19
  );position: absolute;}:host([separation="filled"]),
20
- :host([separation="outlined"]) {--notifications-rule: transparent;margin-block-end: var(--notifications-item-gap, var(--helix-space-xs));}:host([separation="filled"]) [part="item"],
21
- :host([separation="outlined"]) [part="item"] {border: var(--helix-border-thin) solid var(--notifications-item-edge, var(--helix-color-border));border-radius: var(--notifications-item-radius, var(--helix-radii-md));}:host([separation="filled"]) [part="item"] {background-color: var(--notifications-item-fill, var(--helix-color-surface-raised));}:host([separation="filled"]) {--avatar-background-color: color-mix(in oklab, var(--helix-color-foreground) 8%, transparent);}[part="media"] {display: grid;grid-template-rows: var(--_notifications-line);place-items: center start;}[part="body"] {display: grid;gap: var(--helix-space-2xs);}[part="label"] {color: var(--notifications-color, var(--helix-color-foreground-muted));font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);line-height: var(--_notifications-line);}slot[name="description"]::slotted(*) {color: var(--helix-color-foreground-subtle);font-family: var(--helix-font-sans);font-size: var(--helix-text-xs);line-height: var(--helix-leading-normal);margin: var(--helix-space-none);}slot[name="detail"]::slotted(*) {margin-block: var(--helix-space-2xs) var(--helix-space-none);margin-inline: var(--helix-space-none);}[part="body"] slot:not([name])::slotted(a) {color: inherit;text-decoration: none;}[part="body"] slot:not([name])::slotted(a:hover) {text-decoration: underline;text-decoration-color: color-mix(in oklab, currentcolor 35%, transparent);text-decoration-thickness: 1px;text-underline-offset: 0.25em;}:host(:not(:state(read))) [part="label"] {color: var(--helix-color-foreground);font-weight: var(--helix-weight-medium);}[part="controls"] {margin-inline-end: calc((var(--helix-size-control) - var(--helix-size-icon)) / -2);}[part="trailing"] {align-items: center;align-self: start;display: grid;grid-template-areas: "swap";justify-items: end;grid-template-rows: var(--_notifications-line);margin-inline-start: var(--helix-space-sm);}[part="trailing"] > * {grid-area: swap;transition:
20
+ :host([separation="outlined"]),
21
+ :host(:state(feed-filled)),
22
+ :host(:state(feed-outlined)) {--notifications-rule: transparent;margin-block-end: var(--notifications-item-gap, var(--helix-space-xs));}:host([separation="filled"]) [part="item"],
23
+ :host([separation="outlined"]) [part="item"],
24
+ :host(:state(feed-filled)) [part="item"],
25
+ :host(:state(feed-outlined)) [part="item"] {border: var(--helix-border-thin) solid var(--notifications-item-edge, var(--helix-color-border));border-radius: var(--notifications-item-radius, var(--helix-radii-md));}:host([separation="filled"]) [part="item"],
26
+ :host(:state(feed-filled)) [part="item"] {background-color: var(--notifications-item-fill, var(--helix-color-surface-raised));}:host([separation="filled"]),
27
+ :host(:state(feed-filled)) {--avatar-background-color: color-mix(in oklab, var(--helix-color-foreground) 8%, transparent);}[part="media"] {display: grid;grid-template-rows: var(--_notifications-line);place-items: center start;}[part="body"] {display: grid;gap: var(--helix-space-2xs);}[part="label"] {color: var(--notifications-color, var(--helix-color-foreground-muted));font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);line-height: var(--_notifications-line);}slot[name="description"]::slotted(*) {color: var(--helix-color-foreground-subtle);font-family: var(--helix-font-sans);font-size: var(--helix-text-xs);line-height: var(--helix-leading-normal);margin: var(--helix-space-none);}slot[name="detail"]::slotted(*) {margin-block: var(--helix-space-2xs) var(--helix-space-none);margin-inline: var(--helix-space-none);}[part="body"] slot:not([name])::slotted(a) {color: inherit;text-decoration: none;}[part="body"] slot:not([name])::slotted(a:hover) {text-decoration: underline;text-decoration-color: color-mix(in oklab, currentcolor 35%, transparent);text-decoration-thickness: 1px;text-underline-offset: 0.25em;}:host(:not(:state(read))) [part="label"] {color: var(--helix-color-foreground);font-weight: var(--helix-weight-medium);}[part="controls"] {margin-inline-end: calc((var(--helix-size-control) - var(--helix-size-icon)) / -2);}[part="trailing"] {align-items: center;align-self: start;display: grid;grid-template-areas: "swap";justify-items: end;grid-template-rows: var(--_notifications-line);margin-inline-start: var(--helix-space-sm);}[part="trailing"] > * {grid-area: swap;transition:
22
28
  opacity var(--helix-duration-normal) var(--helix-easing-standard),
23
29
  translate var(--helix-duration-normal) var(--helix-easing-decelerate);}:host {--_notifications-swap: 0;}[part="trailing"] > :not([part="controls"]) {color: var(--helix-color-foreground-subtle);display: block;font-family: var(--helix-font-sans);font-size: var(--helix-text-xs);line-height: var(--_notifications-line);opacity: calc(1 - var(--_notifications-swap));translate: calc(var(--helix-space-2xs) * var(--_notifications-swap)) 0;}[part="controls"] {align-items: center;display: flex;opacity: var(--_notifications-swap);}:host(:hover:state(controls)),
24
30
  :host(:focus-within:state(controls)) {--_notifications-swap: 1;}[part="controls"] {pointer-events: none;}:host(:hover:state(controls)) [part="controls"],
@@ -1,5 +1,5 @@
1
1
  import { HelixHeadlessNotification } from '@fusion.dev/helix-headless/notifications';
2
- import type { CSSResultGroup } from 'lit';
2
+ import type { CSSResultGroup, PropertyValues } from 'lit';
3
3
  import '../../format-date/index.js';
4
4
  /**
5
5
  * @summary A single notification about something that happened, marked read or unread.
@@ -52,9 +52,17 @@ import '../../format-date/index.js';
52
52
  * @cssproperty --notifications-unread-mark - Color of the edge mark on an unread item.
53
53
  * @cssproperty --notifications-unread-offset - Distance from the unread mark to the row's top edge.
54
54
  * @cssproperty --notifications-unread-radius - Corner radius of the unread mark, which can turn it into a dot.
55
+ *
56
+ * @cssstate feed-filled - The feed's `separation` is `filled` and the row sets none of its own, so the row is drawn as `filled`.
57
+ * @cssstate feed-outlined - The feed's `separation` is `outlined` and the row sets none of its own, so the row is drawn as `outlined`.
55
58
  */
56
59
  export declare class HelixNotification extends HelixHeadlessNotification {
57
60
  static tier: string;
61
+ /**
62
+ * @internal Set by the feed: its own `separation`, which this row takes
63
+ * where it sets none, as `:state(feed-filled)` or `:state(feed-outlined)`.
64
+ */
65
+ feedSeparation: 'filled' | 'outlined' | 'plain' | undefined;
58
66
  /**
59
67
  * How a row is separated from the one above it.
60
68
  *
@@ -69,12 +77,12 @@ export declare class HelixNotification extends HelixHeadlessNotification {
69
77
  * scan or a set of things to act on. The reference this came from draws cards
70
78
  * because every row in it has a control.
71
79
  *
72
- * **On the row and not on the feed, because the row is the box being
73
- * separated.** A consumer wanting the whole feed carded says so once, in a
74
- * document rule on the element, rather than on every item: this is a styled
75
- * axis and a stylesheet is where it is set.
80
+ * **On the row, because the row is the box being separated, and on the
81
+ * feed for every row at once.** A feed's own `separation` is taken by each
82
+ * row that sets none, and a row that sets one keeps it, `plain` included.
76
83
  */
77
84
  separation?: 'filled' | 'outlined' | 'plain';
85
+ protected willUpdate(changed: PropertyValues): void;
78
86
  static styles: CSSResultGroup;
79
87
  }
80
88
  declare global {
@@ -11,9 +11,22 @@ import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
11
11
  import { styles } from './notification.css.js';
12
12
  import '../../format-date/index.js';
13
13
  let HelixNotification = class HelixNotification extends HelixHeadlessNotification {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.feedSeparation = undefined;
17
+ }
14
18
  static { this.tier = 'helix-'; }
19
+ willUpdate(changed) {
20
+ super.willUpdate(changed);
21
+ const taken = this.separation ? undefined : this.feedSeparation;
22
+ this.toggleState('feed-filled', taken === 'filled');
23
+ this.toggleState('feed-outlined', taken === 'outlined');
24
+ }
15
25
  static { this.styles = [glyphStyles, styles]; }
16
26
  };
27
+ __decorate([
28
+ property({ attribute: false })
29
+ ], HelixNotification.prototype, "feedSeparation", void 0);
17
30
  __decorate([
18
31
  property({ reflect: true })
19
32
  ], HelixNotification.prototype, "separation", void 0);
@@ -1,8 +1,10 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {--helix-size-checkbox: var(--helix-size-checkbox-sm);--helix-size-checkbox-loose: calc(var(--helix-size-checkbox) * 1.2);--helix-size-checkbox-tight: calc(var(--helix-size-checkbox) * 0.8);--helix-size-control: var(--helix-size-control-sm);--helix-size-control-loose: calc(var(--helix-size-control) * 1.2);--helix-size-control-tight: calc(var(--helix-size-control) * 0.8);--helix-size-icon: var(--helix-size-icon-sm);--helix-size-icon-loose: calc(var(--helix-size-icon) * 1.2);--helix-size-icon-tight: calc(var(--helix-size-icon) * 0.8);--helix-size-tag: var(--helix-size-tag-sm);--helix-size-avatar: var(--helix-size-avatar-sm);display: grid;grid-template-rows: auto minmax(0, 1fr) auto;max-block-size: var(--notifications-max-block-size, none);}:host(:state(media)) {--notifications-media-column: calc(var(--helix-size-avatar) + var(--helix-space-sm));}[part="header"] {align-items: center;border-block-end: var(--helix-border-thin) solid
3
3
  var(--notifications-rule, var(--helix-color-border));display: flex;gap: var(--helix-space-sm);justify-content: space-between;padding-block: var(--helix-space-sm);padding-inline: var(--notifications-padding-inline, var(--helix-space-lg));}[part="header"][data-empty],
4
- [part="footer"][data-empty] {display: none;}[part="list"] {overflow-y: auto;}[part="footer"] {border-block-start: var(--helix-border-thin) solid
4
+ [part="footer"][data-empty] {display: none;}[part="list"] {overflow-y: auto;}:host([separation="filled"]) [part="header"],
5
+ :host([separation="outlined"]) [part="header"] {border-block-end: none;}:host([separation="filled"]) [part="list"],
6
+ :host([separation="outlined"]) [part="list"] {padding-block-start: var(--notifications-item-gap, var(--helix-space-xs));}[part="footer"] {border-block-start: var(--helix-border-thin) solid
5
7
  var(--notifications-rule, var(--helix-color-border));padding-block: var(--helix-space-sm);padding-inline: var(--notifications-padding-inline, var(--helix-space-lg));}::slotted(helix-notification:last-of-type) {--notifications-rule: transparent;}[part="mark-all"] {background: none;border: 0;border-radius: var(--helix-radii-sm);color: var(--helix-color-foreground-muted);cursor: pointer;font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);padding-block: var(--helix-space-2xs);padding-inline: var(--helix-space-2xs);transition: color var(--helix-duration-fast) var(--helix-easing-standard);}[part="mark-all"]:hover {color: var(--helix-color-foreground);}[part="more"] {background: none;border: 0;border-block-start: var(--helix-border-thin) solid var(--helix-color-border);color: var(--helix-color-foreground-muted);cursor: pointer;font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);inline-size: 100%;padding-block: var(--helix-space-sm);transition: color var(--helix-duration-fast) var(--helix-easing-standard);}[part="more"]:hover {color: var(--helix-color-foreground);}[part="more"][aria-disabled="true"],
6
8
  [part="more"][aria-disabled="true"]:hover {color: var(--helix-color-foreground-subtle);cursor: default;}[part="more"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: calc(var(--helix-size-focus-offset) * -1);}[part="mark-all"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset);}[part="empty"],
7
- [part="loading"] {--_collection-inset-block: var(--helix-space-lg);--_collection-inset-inline: var(--helix-space-md);}@media print {:host {max-block-size: none;}[part="list"] {overflow-y: visible;}[part="mark-all"],
9
+ [part="loading"] {--_collection-inset-block: var(--helix-space-lg);--_collection-inset-inline: var(--helix-space-md);}[part="error"] {color: var(--notifications-error-color, var(--helix-color-danger));font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);margin: var(--helix-space-none);padding-block: var(--helix-space-lg);padding-inline: var(--helix-space-md);text-align: center;}@media print {:host {max-block-size: none;}[part="list"] {overflow-y: visible;}[part="mark-all"],
8
10
  [part="more"] {display: none;}}`);
@@ -1,6 +1,5 @@
1
1
  import { HelixHeadlessNotifications } from '@fusion.dev/helix-headless/notifications';
2
- import type { CSSResultGroup } from 'lit';
3
- import '../notification/notification.js';
2
+ import type { CSSResultGroup, PropertyValues } from 'lit';
4
3
  /**
5
4
  * @summary A feed of notifications, each marked read or unread.
6
5
  *
@@ -20,15 +19,19 @@ import '../notification/notification.js';
20
19
  *
21
20
  * @slot - The notifications.
22
21
  * @slot empty - Replaces the words of `empty-text` in the `empty` part, such as a picture and a line of your own.
22
+ * @slot error - Replaces the words of `load-error` in the `error` part, such as a line with a retry button.
23
23
  * @slot footer - Below the list, for a link to everything.
24
24
  * @slot header - Above the list, for a title and the mark-all control.
25
25
  * @slot loading - Replaces the words of `loading-text` in the `loading` part, such as a loader.
26
26
  *
27
+ * @csspart error - The line `load-error` shows under the rows, in the danger color.
27
28
  * @csspart list - The list itself.
28
- * @csspart live - A copy of the empty and loading messages, in a live region that screen readers announce when they change. Visually hidden in the styled tier.
29
+ * @csspart live - A copy of the empty, loading and error messages, in a live region that screen readers announce when they change. Visually hidden in the styled tier.
29
30
  * @csspart mark-all - The control that marks everything read.
30
31
  * @csspart more - The button after the list that asks for more, while `load-more` is set. It stays while the feed is loading, in a lighter color and `aria-disabled`, so focus stays on it.
31
32
  *
33
+ * @cssproperty --notifications-error-color - The color of the `error` line.
34
+ * @cssproperty --notifications-item-gap - Space before the first row, and between rows, while `separation` makes every row a box.
32
35
  * @cssproperty --notifications-max-block-size - How tall the feed may get before the list scrolls.
33
36
  * @cssproperty --notifications-media-column - Width of the media column that every item keeps when any item in the feed has media.
34
37
  * @cssproperty --notifications-padding-inline - Space either side of the header and footer.
@@ -36,7 +39,22 @@ import '../notification/notification.js';
36
39
  */
37
40
  export declare class HelixNotifications extends HelixHeadlessNotifications {
38
41
  static tier: string;
42
+ /**
43
+ * How every row in the feed is set apart from the one above it, where the
44
+ * row does not say for itself.
45
+ *
46
+ * `plain`, the resting one, separates the rows by a hairline. `outlined` and
47
+ * `filled` make every row a box, as the row's own `separation` does, take
48
+ * away the rule under the header, which reads as a stray line above a box,
49
+ * and put the gap that falls between the boxes before the first one too.
50
+ *
51
+ * A row that sets its own `separation` keeps it, so a feed of boxes can hold
52
+ * one plain row and the other way round.
53
+ */
54
+ separation?: 'filled' | 'outlined' | 'plain';
39
55
  static styles: CSSResultGroup;
56
+ /** Tells each row the feed's `separation`, which a row that sets none takes. */
57
+ protected updated(changed: PropertyValues): void;
40
58
  }
41
59
  declare global {
42
60
  interface HTMLElementTagNameMap {