@fusion.dev/helix 0.144.0 → 0.145.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 (113) hide show
  1. package/custom-elements.json +9978 -916
  2. package/dist/accordion/item/accordion-item.css.js +14 -3
  3. package/dist/accordion/item/accordion-item.d.ts +2 -0
  4. package/dist/aura/palette.d.ts +38 -0
  5. package/dist/aura/palette.js +22 -0
  6. package/dist/aura/root/aura-root.css.js +24 -3
  7. package/dist/aura/root/aura-root.d.ts +42 -7
  8. package/dist/aura/root/aura-root.js +31 -25
  9. package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +7 -7
  10. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +5 -0
  11. package/dist/breadcrumbs/root/breadcrumbs-root.css.js +1 -1
  12. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +3 -0
  13. package/dist/breadcrumbs/root/breadcrumbs-root.js +2 -0
  14. package/dist/button-group/root/button-group-root.d.ts +3 -0
  15. package/dist/canvas/root/canvas-root.css.js +1 -0
  16. package/dist/carousel/root/carousel-root.css.js +17 -1
  17. package/dist/data-table/root/data-table-root.css.js +63 -0
  18. package/dist/data-table/root/data-table-root.d.ts +1 -0
  19. package/dist/description-list/item/description-list-item.css.js +11 -0
  20. package/dist/drilldown/item/drilldown-item.css.js +2 -1
  21. package/dist/drilldown/root/drilldown-root.css.js +2 -1
  22. package/dist/element-events.generated.js +58 -9
  23. package/dist/flex/root/flex-root.css.js +134 -9
  24. package/dist/flex/root/flex-root.d.ts +51 -5
  25. package/dist/flex/root/flex-root.js +17 -1
  26. package/dist/grid/root/grid-root.css.js +114 -11
  27. package/dist/grid/root/grid-root.d.ts +37 -0
  28. package/dist/grid/root/grid-root.js +13 -1
  29. package/dist/list/item/list-item.css.js +21 -1
  30. package/dist/list/item/list-item.d.ts +3 -0
  31. package/dist/list/root/list-root.css.js +13 -1
  32. package/dist/menu/index.d.ts +1 -0
  33. package/dist/menu/index.js +1 -0
  34. package/dist/menu/item/menu-item.css.js +15 -1
  35. package/dist/menu/item/menu-item.d.ts +3 -0
  36. package/dist/menu/item/menu-item.js +2 -0
  37. package/dist/menu/section/menu-section.css.d.ts +1 -0
  38. package/dist/menu/section/menu-section.css.js +14 -0
  39. package/dist/menu/section/menu-section.d.ts +24 -0
  40. package/dist/menu/section/menu-section.js +16 -0
  41. package/dist/navigation/root/navigation-root.css.js +3 -2
  42. package/dist/navigation/root/navigation-root.d.ts +6 -0
  43. package/dist/notifications/root/notifications-root.css.js +24 -1
  44. package/dist/notifications/root/notifications-root.d.ts +1 -0
  45. package/dist/object-inspector/root/object-inspector-root.css.js +36 -1
  46. package/dist/object-inspector/root/object-inspector-root.d.ts +4 -1
  47. package/dist/object-inspector/root/object-inspector-root.js +2 -1
  48. package/dist/orb/index.d.ts +1 -1
  49. package/dist/orb/index.js +1 -1
  50. package/dist/orb/root/orb-root.d.ts +31 -5
  51. package/dist/orb/root/orb-root.js +33 -4
  52. package/dist/outline/root/outline-root.css.js +10 -0
  53. package/dist/outline/root/outline-root.d.ts +7 -0
  54. package/dist/sandbox/frame.d.ts +63 -0
  55. package/dist/sandbox/frame.js +132 -0
  56. package/dist/sandbox/index.d.ts +1 -0
  57. package/dist/sandbox/index.js +1 -0
  58. package/dist/sandbox/levels.d.ts +10 -0
  59. package/dist/sandbox/levels.js +5 -0
  60. package/dist/sandbox/root/sandbox-root.d.ts +3 -0
  61. package/dist/sandbox/root/sandbox-root.js +13 -3
  62. package/dist/sandbox/source/sandbox-source.d.ts +1 -0
  63. package/dist/sandbox/source/sandbox-source.js +7 -3
  64. package/dist/sandbox/terminal/sandbox-terminal.css.js +39 -0
  65. package/dist/sandbox/terminal/sandbox-terminal.d.ts +42 -1
  66. package/dist/sandbox/terminal/sandbox-terminal.js +47 -3
  67. package/dist/scroll-area/root/scroll-area-root.css.js +83 -1
  68. package/dist/scroll-area/root/scroll-area-root.d.ts +6 -0
  69. package/dist/skip-link/root/skip-link-root.css.js +8 -8
  70. package/dist/skip-link/root/skip-link-root.d.ts +9 -0
  71. package/dist/speed-dial/item/speed-dial-item.css.js +11 -4
  72. package/dist/speed-dial/item/speed-dial-item.d.ts +4 -0
  73. package/dist/speed-dial/root/speed-dial-root.css.js +7 -3
  74. package/dist/speed-dial/root/speed-dial-root.d.ts +9 -0
  75. package/dist/speed-dial/root/speed-dial-root.js +4 -0
  76. package/dist/steps/step/step.js +2 -1
  77. package/dist/table/root/table-root.css.js +18 -0
  78. package/dist/table/root/table-root.d.ts +6 -0
  79. package/dist/table/root/table-root.js +2 -0
  80. package/dist/table/row/table-row.css.js +18 -0
  81. package/dist/table/row/table-row.d.ts +2 -0
  82. package/dist/table/row/table-row.js +2 -0
  83. package/dist/tabs/panel/tab-panel.css.js +5 -1
  84. package/dist/tabs/root/tabs-root.css.js +56 -1
  85. package/dist/tabs/tab/tab.css.js +5 -1
  86. package/dist/text/clamp.d.ts +8 -0
  87. package/dist/text/clamp.js +1 -0
  88. package/dist/text/root/text-root.css.js +85 -45
  89. package/dist/text/root/text-root.d.ts +48 -7
  90. package/dist/text/root/text-root.js +17 -11
  91. package/dist/timeline/group/timeline-group.css.d.ts +1 -0
  92. package/dist/timeline/group/timeline-group.css.js +32 -0
  93. package/dist/timeline/group/timeline-group.d.ts +25 -0
  94. package/dist/timeline/group/timeline-group.js +16 -0
  95. package/dist/timeline/index.d.ts +1 -0
  96. package/dist/timeline/index.js +1 -0
  97. package/dist/timeline/item/timeline-item.css.js +43 -16
  98. package/dist/timeline/root/timeline-root.css.js +56 -0
  99. package/dist/timeline/root/timeline-root.d.ts +26 -0
  100. package/dist/timeline/root/timeline-root.js +7 -0
  101. package/dist/toolbar/root/toolbar-root.css.js +3 -0
  102. package/dist/toolbar/root/toolbar-root.d.ts +3 -0
  103. package/dist/tree/item/tree-item.css.js +72 -0
  104. package/dist/tree/item/tree-item.d.ts +10 -0
  105. package/dist/video/root/video-root.css.js +6 -0
  106. package/dist/video/root/video-root.d.ts +3 -0
  107. package/dist/virtual-list/root/virtual-list-root.css.js +5 -0
  108. package/dist/virtual-list/root/virtual-list-root.d.ts +4 -3
  109. package/lint.json +1 -1
  110. package/package.json +6 -6
  111. package/types/jsx.d.ts +4033 -671
  112. package/types/svelte.d.ts +2 -0
  113. package/types/vue.d.ts +1078 -202
@@ -1,26 +1,26 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
3
  display: block;
4
- inset-block-start: var(--helix-space-sm);
5
- inset-inline-start: var(--helix-space-sm);
4
+ inset-block-start: var(--skip-link-inset-block, var(--helix-space-sm));
5
+ inset-inline-start: var(--skip-link-inset-inline, var(--helix-space-sm));
6
6
  position: fixed;
7
7
  z-index: var(--helix-layer-overlay);
8
8
  }
9
9
 
10
10
  [part="link"] {
11
- background-color: var(--helix-color-surface-inverse);
11
+ background-color: var(--skip-link-background-color, var(--helix-color-surface-inverse));
12
12
  border: var(--skip-link-border-width, var(--helix-border-floating)) solid
13
13
  var(--skip-link-border-color, var(--helix-color-border));
14
- border-radius: var(--helix-radii-sm);
14
+ border-radius: var(--skip-link-radius, var(--helix-radii-sm));
15
15
  box-shadow: var(--skip-link-shadow, var(--helix-shadow-floating));
16
- color: var(--helix-color-foreground-inverse);
16
+ color: var(--skip-link-color, var(--helix-color-foreground-inverse));
17
17
  display: inline-block;
18
18
  font-family: var(--helix-font-sans);
19
- font-size: var(--helix-text-sm);
19
+ font-size: var(--skip-link-font-size, var(--helix-text-sm));
20
20
  font-weight: var(--helix-weight-medium);
21
21
  line-height: var(--helix-leading-normal);
22
- padding-block: var(--helix-space-sm);
23
- padding-inline: var(--helix-space-md);
22
+ padding-block: var(--skip-link-padding-block, var(--helix-space-sm));
23
+ padding-inline: var(--skip-link-padding-inline, var(--helix-space-md));
24
24
  text-decoration: none;
25
25
  }
26
26
 
@@ -22,10 +22,19 @@ import type { CSSResultGroup } from 'lit';
22
22
  * @aliases Skip navigation, Skip to content
23
23
  * @documentation https://fusion.dev/helix/components/skip-link
24
24
  *
25
+ * @cssproperty --skip-link-background-color - The background of the link while it is shown.
25
26
  * @cssproperty --skip-link-border-color - The border color of the link while it is shown.
26
27
  * @cssproperty --skip-link-border-width - The border width of the link while it is shown. Follows
27
28
  * `--helix-border-floating`, which is `0`, so the link is set apart by its shadow unless a
28
29
  * theme sets a border.
30
+ * @cssproperty --skip-link-color - The text color of the link while it is shown.
31
+ * @cssproperty --skip-link-font-size - The size of the link's text.
32
+ * @cssproperty --skip-link-inset-block - How far the shown link sits from the top of the viewport.
33
+ * @cssproperty --skip-link-inset-inline - How far the shown link sits from the start edge of the
34
+ * viewport.
35
+ * @cssproperty --skip-link-padding-block - The space above and below the link's text.
36
+ * @cssproperty --skip-link-padding-inline - The space either side of the link's text.
37
+ * @cssproperty --skip-link-radius - The corner radius of the link.
29
38
  * @cssproperty --skip-link-shadow - The shadow under the link while it is shown. Follows
30
39
  * `--helix-shadow-floating`, because the link sits over the corner of the page.
31
40
  */
@@ -26,10 +26,10 @@ opacity: 0.5;
26
26
 
27
27
  align-items: center;
28
28
  aspect-ratio: 1;
29
- background-color: var(--helix-color-surface-overlay);
29
+ background-color: var(--speed-dial-item-background-color, var(--helix-color-surface-overlay));
30
30
  border-radius: var(--helix-radii-full);
31
31
  box-shadow: var(--helix-shadow-md);
32
- color: var(--helix-color-foreground);
32
+ color: var(--speed-dial-item-color, var(--helix-color-foreground));
33
33
  display: inline-flex;
34
34
  inline-size: var(--speed-dial-item-size, var(--helix-size-control-tight));
35
35
  justify-content: center;
@@ -57,13 +57,20 @@ outline-offset: var(--helix-size-focus-offset);
57
57
  }
58
58
 
59
59
  [part="label"] {
60
- background-color: var(--helix-color-surface-overlay);
60
+ background-color: var(--speed-dial-label-background-color, var(--helix-color-surface-overlay));
61
61
  border-radius: var(--helix-radii-sm);
62
62
  box-shadow: var(--helix-shadow-sm);
63
- color: var(--helix-color-foreground);
63
+ color: var(--speed-dial-label-color, var(--helix-color-foreground));
64
64
  font-family: var(--helix-font-sans);
65
65
  font-size: var(--helix-text-sm);
66
66
  font-weight: var(--helix-weight-medium);
67
+ opacity: var(--_speed-dial-label-opacity, 1);
67
68
  padding: var(--helix-space-2xs) var(--helix-space-xs);
69
+ transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);
68
70
  white-space: nowrap;
71
+ }
72
+
73
+ [part="item"]:hover [part="label"],
74
+ [part="item"]:focus-visible [part="label"] {
75
+ opacity: 1;
69
76
  }`);
@@ -14,7 +14,11 @@ import type { CSSResultGroup } from 'lit';
14
14
  * @aliases Speed dial action, FAB action, Quick action
15
15
  * @documentation https://fusion.dev/helix/components/speed-dial
16
16
  *
17
+ * @cssproperty --speed-dial-item-background-color - Fill of the round icon.
18
+ * @cssproperty --speed-dial-item-color - Color of the icon.
17
19
  * @cssproperty --speed-dial-item-size - Edge length of the icon.
20
+ * @cssproperty --speed-dial-label-background-color - Fill of the chip holding the action's name.
21
+ * @cssproperty --speed-dial-label-color - Color of the action's name.
18
22
  */
19
23
  export declare class HelixSpeedDialItem extends HelixHeadlessSpeedDialItem {
20
24
  static styles: CSSResultGroup;
@@ -31,11 +31,11 @@ display: none;
31
31
  }
32
32
 
33
33
  [part="actions"] {
34
- --_dial-from: var(--helix-space-md);
34
+ --_dial-from: var(--speed-dial-travel, var(--helix-space-md));
35
35
  }
36
36
 
37
37
  [part="actions"][data-placement^="bottom"] {
38
- --_dial-from: calc(var(--helix-space-md) * -1);
38
+ --_dial-from: calc(var(--speed-dial-travel, var(--helix-space-md)) * -1);
39
39
  }
40
40
 
41
41
  [part="actions"] ::slotted(*) {
@@ -55,7 +55,7 @@ translate: 0 0;
55
55
  }
56
56
 
57
57
  [part="actions"] {
58
- --_speed-dial-stagger: calc(var(--helix-duration-fast) / 3);
58
+ --_speed-dial-stagger: var(--speed-dial-stagger, calc(var(--helix-duration-fast) / 3));
59
59
  }
60
60
 
61
61
  [part="actions"][data-placed] ::slotted(:nth-last-child(2)) {
@@ -140,4 +140,8 @@ outline-offset: var(--helix-size-focus-offset);
140
140
  :host {
141
141
  display: none;
142
142
  }
143
+ }
144
+
145
+ :host([labels="hover"]) {
146
+ --_speed-dial-label-opacity: 0;
143
147
  }`);
@@ -15,9 +15,18 @@ import '../../icon/index.js';
15
15
  * @documentation https://fusion.dev/helix/components/speed-dial
16
16
  *
17
17
  * @cssproperty --speed-dial-gap - Space between the actions.
18
+ * @cssproperty --speed-dial-stagger - The wait between one action arriving and the next.
19
+ * @cssproperty --speed-dial-travel - How far each action moves as it arrives.
18
20
  */
19
21
  export declare class HelixSpeedDial extends HelixHeadlessSpeedDial {
20
22
  static styles: CSSResultGroup;
23
+ /**
24
+ * When the actions' names show. Unset, always, beside each action. `hover`
25
+ * shows a name only while its action is under the pointer or has focus, as
26
+ * a tooltip does, for a dial whose icons speak for themselves. The names stay
27
+ * the actions' accessible names either way.
28
+ */
29
+ labels?: 'hover';
21
30
  }
22
31
  declare global {
23
32
  interface HTMLElementTagNameMap {
@@ -6,12 +6,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessSpeedDial } from '@fusion.dev/helix-headless/speed-dial';
9
+ import { property } from 'lit/decorators.js';
9
10
  import { styles as glyphStyles } from '../../shared/glyph/glyph.css.js';
10
11
  import { styles } from './speed-dial-root.css.js';
11
12
  import '../../icon/index.js';
12
13
  let HelixSpeedDial = class HelixSpeedDial extends HelixHeadlessSpeedDial {
13
14
  static { this.styles = [glyphStyles, styles]; }
14
15
  };
16
+ __decorate([
17
+ property({ reflect: true })
18
+ ], HelixSpeedDial.prototype, "labels", void 0);
15
19
  HelixSpeedDial = __decorate([
16
20
  customElement('helix-speed-dial')
17
21
  ], HelixSpeedDial);
@@ -7,10 +7,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessStep } from '@fusion.dev/helix-headless/steps';
9
9
  import '../../button/index.js';
10
+ import { styles as liveStyles } from '../../shared/live/live.css.js';
10
11
  import { styles } from './step.css.js';
11
12
  let HelixStep = class HelixStep extends HelixHeadlessStep {
12
13
  static { this.tier = 'helix-'; }
13
- static { this.styles = styles; }
14
+ static { this.styles = [liveStyles, styles]; }
14
15
  };
15
16
  HelixStep = __decorate([
16
17
  customElement('helix-step')
@@ -15,6 +15,24 @@ inline-size: 100%;
15
15
  display: contents;
16
16
  }
17
17
 
18
+ ::slotted([slot="heading"]) {
19
+ color: var(--table-title-color, var(--helix-color-foreground));
20
+ display: block;
21
+ font-family: var(--helix-font-sans);
22
+ font-size: var(--table-title-text, var(--helix-text-md));
23
+ font-weight: var(--helix-weight-semibold);
24
+ margin-block: var(--helix-space-none) var(--table-title-gap, var(--helix-space-sm));
25
+ }
26
+
27
+ [part="select-all"] {
28
+ align-items: center;
29
+ border-block-end: var(--helix-border-thin) solid var(--helix-color-border);
30
+ box-sizing: border-box;
31
+ display: flex;
32
+ min-block-size: var(--helix-size-control-loose);
33
+ padding-inline: var(--helix-space-none) var(--helix-space-md);
34
+ }
35
+
18
36
  :host([loading]) [part="table"] {
19
37
  opacity: 0.5;
20
38
  }
@@ -1,5 +1,6 @@
1
1
  import { HelixHeadlessTable } from '@fusion.dev/helix-headless/table';
2
2
  import type { CSSResultGroup } from 'lit';
3
+ import '../../checkbox/index.js';
3
4
  /**
4
5
  * @summary A table of data, laid out on a grid.
5
6
  *
@@ -13,13 +14,18 @@ import type { CSSResultGroup } from 'lit';
13
14
  * @documentation https://fusion.dev/helix/components/table
14
15
  *
15
16
  * @slot - The table's rows.
17
+ * @slot heading - Words that name the table, shown above it in the weight of a heading.
16
18
  *
17
19
  * @csspart live - A live region that repeats the empty and loading text, so screen readers announce it when it changes. Visually hidden in the styled tier.
18
20
  * @csspart table - The grid.
19
21
  *
20
22
  * @cssproperty --table-columns - Track list for the columns. It overrides the track list worked out from the columns.
23
+ * @cssproperty --table-title-color - The color of the words in the `heading` slot.
24
+ * @cssproperty --table-title-gap - The space between the `heading` slot and the grid.
25
+ * @cssproperty --table-title-text - The font size of the words in the `heading` slot.
21
26
  */
22
27
  export declare class HelixTable extends HelixHeadlessTable {
28
+ static tier: string;
23
29
  static styles: CSSResultGroup;
24
30
  }
25
31
  declare global {
@@ -9,7 +9,9 @@ import { HelixHeadlessTable } from '@fusion.dev/helix-headless/table';
9
9
  import { styles as collectionStateStyles } from '../../shared/collection/state.css.js';
10
10
  import { styles as liveStyles } from '../../shared/live/live.css.js';
11
11
  import { styles } from './table-root.css.js';
12
+ import '../../checkbox/index.js';
12
13
  let HelixTable = class HelixTable extends HelixHeadlessTable {
14
+ static { this.tier = 'helix-'; }
13
15
  static { this.styles = [liveStyles, collectionStateStyles, styles]; }
14
16
  };
15
17
  HelixTable = __decorate([
@@ -1,4 +1,22 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
3
  display: contents;
4
+ }
5
+
6
+ [part~="select"] {
7
+ align-items: center;
8
+ border-block-end: var(--helix-border-thin) solid var(--helix-color-border);
9
+ box-sizing: border-box;
10
+ display: flex;
11
+ min-block-size: var(--helix-size-control);
12
+ padding-inline: var(--helix-space-none) var(--helix-space-md);
13
+ }
14
+
15
+ :host(:state(selected)) [part~="select"],
16
+ :host(:state(selected)) ::slotted(*) {
17
+ background-color: color-mix(
18
+ in srgb,
19
+ var(--helix-color-primary) 10%,
20
+ var(--helix-color-background)
21
+ );
4
22
  }`);
@@ -1,5 +1,6 @@
1
1
  import { HelixHeadlessTableRow } from '@fusion.dev/helix-headless/table';
2
2
  import type { CSSResultGroup } from 'lit';
3
+ import '../../checkbox/index.js';
3
4
  /**
4
5
  * @summary One row of a table.
5
6
  *
@@ -16,6 +17,7 @@ import type { CSSResultGroup } from 'lit';
16
17
  * @slot - The row's cells.
17
18
  */
18
19
  export declare class HelixTableRow extends HelixHeadlessTableRow {
20
+ static tier: string;
19
21
  static styles: CSSResultGroup;
20
22
  }
21
23
  declare global {
@@ -7,7 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessTableRow } from '@fusion.dev/helix-headless/table';
9
9
  import { styles } from './table-row.css.js';
10
+ import '../../checkbox/index.js';
10
11
  let HelixTableRow = class HelixTableRow extends HelixHeadlessTableRow {
12
+ static { this.tier = 'helix-'; }
11
13
  static { this.styles = styles; }
12
14
  };
13
15
  HelixTableRow = __decorate([
@@ -8,7 +8,11 @@ display: contents;
8
8
  min-block-size: 0;
9
9
  min-inline-size: 0;
10
10
  outline: none;
11
- padding-block-start: var(--tabs-panel-padding-block-start, var(--helix-space-md));
11
+ padding-block-start: var(
12
+ --tabs-panel-padding-block-start,
13
+ var(--_tabs-panel-padding-block-start, var(--helix-space-md))
14
+ );
15
+ padding-inline-start: var(--_tabs-panel-padding-inline-start, var(--helix-space-none));
12
16
  }
13
17
 
14
18
  [part="panel"][hidden] {
@@ -67,7 +67,8 @@ inset-inline-start: 0;
67
67
  opacity: 0;
68
68
  position: absolute;
69
69
 
70
- translate: var(--indicator-x, 0) calc(var(--indicator-y, 0px) + var(--_indicator-offset, 0px));
70
+ translate: calc(var(--indicator-x, 0px) + var(--_indicator-offset-x, 0px))
71
+ calc(var(--indicator-y, 0px) + var(--_indicator-offset, 0px));
71
72
 
72
73
  transition:
73
74
  translate var(--helix-duration-normal) var(--helix-easing-emphasized),
@@ -126,6 +127,60 @@ var(--tabs-indicator-thickness, var(--helix-border-thick))
126
127
  --_tab-selected-shadow: none;
127
128
  }
128
129
 
130
+ :host([orientation="vertical"]) {
131
+
132
+ --_tabs-inline-sign: 1;
133
+ --_tabs-panel-padding-block-start: var(--helix-space-none);
134
+ --_tabs-panel-padding-inline-start: var(--helix-space-md);
135
+
136
+ grid-template-columns: auto minmax(0, 1fr);
137
+ grid-template-rows: minmax(0, 1fr);
138
+ }
139
+
140
+ :host([orientation="vertical"]:dir(rtl)) {
141
+ --_tabs-inline-sign: -1;
142
+ }
143
+
144
+ :host([orientation="vertical"]) [part="tabs"] {
145
+ align-content: start;
146
+ background-position: right;
147
+ background-repeat: repeat-y;
148
+ background-size: var(--helix-border-thin) 100%;
149
+ flex-direction: column;
150
+ overflow-x: visible;
151
+ overflow-y: auto;
152
+ }
153
+
154
+ :host([orientation="vertical"]:dir(rtl)) [part="tabs"] {
155
+ background-position: left;
156
+ }
157
+
158
+ :host([orientation="vertical"]) ::slotted(helix-tab) {
159
+ --_tab-inline-size: 100%;
160
+ --_tab-justify: flex-start;
161
+ }
162
+
163
+ :host([orientation="vertical"][variant="segmented"]) [part="tabs"] {
164
+ --_tab-height: initial;
165
+
166
+ block-size: auto;
167
+ justify-self: start;
168
+ }
169
+
170
+ :host([orientation="vertical"][variant="underlined"]) [part="indicator"] {
171
+ --_indicator-block: var(--indicator-block-size, 0);
172
+ --_indicator-offset: 0px;
173
+ --_indicator-offset-x: calc(
174
+ (
175
+ var(--indicator-inline-size, 0px) -
176
+ var(--tabs-indicator-thickness, var(--helix-border-thick))
177
+ ) *
178
+ var(--_tabs-inline-sign, 1)
179
+ );
180
+
181
+ inline-size: var(--tabs-indicator-thickness, var(--helix-border-thick));
182
+ }
183
+
129
184
  @media print {
130
185
  :host {
131
186
  box-shadow: none;
@@ -18,8 +18,12 @@ font: inherit;
18
18
  font-size: var(--helix-text-sm);
19
19
  font-weight: var(--helix-weight-medium);
20
20
  display: inline-flex;
21
- justify-content: center;
21
+
22
+ inline-size: var(--_tab-inline-size, auto);
23
+ justify-content: var(--_tab-justify, center);
22
24
  padding-inline: var(--tabs-tab-padding-inline, var(--helix-space-sm));
25
+
26
+ text-decoration: none;
23
27
  transition:
24
28
  background-color var(--helix-duration-fast) var(--helix-easing-standard),
25
29
  border-color var(--helix-duration-normal) var(--helix-easing-emphasized),
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The line count `lines` asks for, as the declaration that clamps it, or
3
+ * `undefined` where it is no whole number above zero.
4
+ *
5
+ * Written on the part inside the shadow root, so any count works with no rule
6
+ * per number, and the server renders it with the rest of the template.
7
+ */
8
+ export declare const clampOf: (lines: number | undefined) => string | undefined;
@@ -0,0 +1 @@
1
+ export const clampOf = (lines) => Number.isInteger(lines) && lines > 0 ? `-webkit-line-clamp: ${lines}` : undefined;
@@ -1,6 +1,12 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
3
  display: inline;
4
+
5
+ font-family: var(--text-font-family);
6
+ font-size: var(--text-font-size);
7
+ font-weight: var(--text-font-weight);
8
+ letter-spacing: var(--text-letter-spacing);
9
+ line-height: var(--text-line-height);
4
10
  }
5
11
 
6
12
  :host([as="p"]),
@@ -15,84 +21,84 @@ display: block;
15
21
 
16
22
  :host([variant="display"]),
17
23
  :host(:not([variant])[as="h1"]) {
18
- font-family: var(--helix-font-display);
19
- font-size: var(--helix-text-3xl);
20
- font-weight: var(--helix-weight-semibold);
21
- letter-spacing: var(--helix-tracking-tight);
22
- line-height: var(--helix-leading-heading);
24
+ font-family: var(--text-font-family, var(--helix-font-display));
25
+ font-size: var(--text-font-size, var(--helix-text-3xl));
26
+ font-weight: var(--text-font-weight, var(--helix-weight-semibold));
27
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-tight));
28
+ line-height: var(--text-line-height, var(--helix-leading-heading));
23
29
  }
24
30
 
25
31
  :host([variant="heading"]),
26
32
  :host(:not([variant])[as="h2"]) {
27
- font-family: var(--helix-font-sans);
28
- font-size: var(--helix-text-2xl);
29
- font-weight: var(--helix-weight-semibold);
30
- letter-spacing: var(--helix-tracking-tight);
31
- line-height: var(--helix-leading-heading);
33
+ font-family: var(--text-font-family, var(--helix-font-sans));
34
+ font-size: var(--text-font-size, var(--helix-text-2xl));
35
+ font-weight: var(--text-font-weight, var(--helix-weight-semibold));
36
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-tight));
37
+ line-height: var(--text-line-height, var(--helix-leading-heading));
32
38
  }
33
39
 
34
40
  :host([variant="subheading"]),
35
41
  :host(:not([variant])[as="h3"]) {
36
- font-family: var(--helix-font-sans);
37
- font-size: var(--helix-text-xl);
38
- font-weight: var(--helix-weight-semibold);
39
- letter-spacing: var(--helix-tracking-tight);
40
- line-height: var(--helix-leading-heading);
42
+ font-family: var(--text-font-family, var(--helix-font-sans));
43
+ font-size: var(--text-font-size, var(--helix-text-xl));
44
+ font-weight: var(--text-font-weight, var(--helix-weight-semibold));
45
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-tight));
46
+ line-height: var(--text-line-height, var(--helix-leading-heading));
41
47
  }
42
48
 
43
49
  :host([variant="title"]),
44
50
  :host(:not([variant])[as="h4"]) {
45
- font-family: var(--helix-font-sans);
46
- font-size: var(--helix-text-lg);
47
- font-weight: var(--helix-weight-semibold);
48
- letter-spacing: var(--helix-tracking-normal);
49
- line-height: var(--helix-leading-heading);
51
+ font-family: var(--text-font-family, var(--helix-font-sans));
52
+ font-size: var(--text-font-size, var(--helix-text-lg));
53
+ font-weight: var(--text-font-weight, var(--helix-weight-semibold));
54
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-normal));
55
+ line-height: var(--text-line-height, var(--helix-leading-heading));
50
56
  }
51
57
 
52
58
  :host([variant="body"]),
53
59
  :host(:not([variant])[as="p"]) {
54
- font-family: var(--helix-font-sans);
55
- font-size: var(--helix-text-md);
56
- font-weight: var(--helix-weight-regular);
57
- letter-spacing: var(--helix-tracking-normal);
58
- line-height: var(--helix-leading-normal);
60
+ font-family: var(--text-font-family, var(--helix-font-sans));
61
+ font-size: var(--text-font-size, var(--helix-text-md));
62
+ font-weight: var(--text-font-weight, var(--helix-weight-regular));
63
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-normal));
64
+ line-height: var(--text-line-height, var(--helix-leading-normal));
59
65
  }
60
66
 
61
67
  :host([variant="body-strong"]),
62
68
  :host(:not([variant])[as="h5"]),
63
69
  :host(:not([variant])[as="h6"]),
64
70
  :host(:not([variant])[as="strong"]) {
65
- font-family: var(--helix-font-sans);
66
- font-size: var(--helix-text-md);
67
- font-weight: var(--helix-weight-medium);
68
- letter-spacing: var(--helix-tracking-normal);
69
- line-height: var(--helix-leading-normal);
71
+ font-family: var(--text-font-family, var(--helix-font-sans));
72
+ font-size: var(--text-font-size, var(--helix-text-md));
73
+ font-weight: var(--text-font-weight, var(--helix-weight-medium));
74
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-normal));
75
+ line-height: var(--text-line-height, var(--helix-leading-normal));
70
76
  }
71
77
 
72
78
  :host([variant="caption"]) {
73
- font-family: var(--helix-font-sans);
74
- font-size: var(--helix-text-sm);
75
- font-weight: var(--helix-weight-regular);
76
- letter-spacing: var(--helix-tracking-normal);
77
- line-height: var(--helix-leading-normal);
79
+ font-family: var(--text-font-family, var(--helix-font-sans));
80
+ font-size: var(--text-font-size, var(--helix-text-sm));
81
+ font-weight: var(--text-font-weight, var(--helix-weight-regular));
82
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-normal));
83
+ line-height: var(--text-line-height, var(--helix-leading-normal));
78
84
  }
79
85
 
80
86
  :host([variant="label"]),
81
87
  :host(:not([variant])[as="label"]) {
82
- font-family: var(--helix-font-sans);
83
- font-size: var(--helix-text-xs);
84
- font-weight: var(--helix-weight-medium);
85
- letter-spacing: var(--helix-tracking-wide);
86
- line-height: var(--helix-leading-normal);
88
+ font-family: var(--text-font-family, var(--helix-font-sans));
89
+ font-size: var(--text-font-size, var(--helix-text-xs));
90
+ font-weight: var(--text-font-weight, var(--helix-weight-medium));
91
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-wide));
92
+ line-height: var(--text-line-height, var(--helix-leading-normal));
87
93
  }
88
94
 
89
95
  :host([variant="code"]),
90
96
  :host(:not([variant])[as="code"]) {
91
- font-family: var(--helix-font-mono);
92
- font-size: var(--helix-text-xs);
93
- font-weight: var(--helix-weight-regular);
94
- letter-spacing: var(--helix-tracking-normal);
95
- line-height: var(--helix-leading-normal);
97
+ font-family: var(--text-font-family, var(--helix-font-mono));
98
+ font-size: var(--text-font-size, var(--helix-text-xs));
99
+ font-weight: var(--text-font-weight, var(--helix-weight-regular));
100
+ letter-spacing: var(--text-letter-spacing, var(--helix-tracking-normal));
101
+ line-height: var(--text-line-height, var(--helix-leading-normal));
96
102
  }
97
103
 
98
104
  :host(
@@ -175,6 +181,40 @@ letter-spacing: inherit;
175
181
  margin: var(--helix-space-none);
176
182
  }
177
183
 
184
+ :host([lines]) {
185
+ display: block;
186
+ min-inline-size: 0;
187
+ }
188
+
189
+ :host([lines]) [part="text"] {
190
+ -webkit-box-orient: vertical;
191
+ display: -webkit-box;
192
+ overflow: hidden;
193
+ }
194
+
195
+ :host([text-align="start"]) {
196
+ text-align: start;
197
+ }
198
+ :host([text-align="center"]) {
199
+ text-align: center;
200
+ }
201
+ :host([text-align="end"]) {
202
+ text-align: end;
203
+ }
204
+ :host([text-align="justify"]) {
205
+ text-align: justify;
206
+ }
207
+
208
+ :host([text-wrap="balance"]) {
209
+ text-wrap: balance;
210
+ }
211
+ :host([text-wrap="pretty"]) {
212
+ text-wrap: pretty;
213
+ }
214
+ :host([text-wrap="nowrap"]) {
215
+ text-wrap: nowrap;
216
+ }
217
+
178
218
  :host([as="em"]) [part="text"] {
179
219
  font-style: italic;
180
220
  }