@fusion.dev/helix 0.133.0 → 0.134.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.
@@ -1371,10 +1371,18 @@
1371
1371
  "description": "Full width and flat. The tone is a tinted fill and a hairline along the\nbottom edge, with no border on the other sides, so the announcement is a band\nacross the top of the page.",
1372
1372
  "name": "HelixAnnouncement",
1373
1373
  "cssProperties": [
1374
+ {
1375
+ "description": "The band's fill, in place of the one its separation gives it. A tone's tint still paints over it, so a band that sets this usually carries no tone.",
1376
+ "name": "--announcement-background-color"
1377
+ },
1374
1378
  {
1375
1379
  "description": "The band's minimum height, so adding a control to it does not move the page down. A message long enough to wrap makes the band taller.",
1376
1380
  "name": "--announcement-block-size"
1377
1381
  },
1382
+ {
1383
+ "description": "The message's color, to pair with a fill set through the background hook.",
1384
+ "name": "--announcement-foreground-color"
1385
+ },
1378
1386
  {
1379
1387
  "description": "The inline padding, matched to the page.",
1380
1388
  "name": "--announcement-inset"
@@ -1385,9 +1393,9 @@
1385
1393
  "kind": "field",
1386
1394
  "name": "separation",
1387
1395
  "type": {
1388
- "text": "'elevated' | 'filled' | undefined"
1396
+ "text": "'elevated' | 'filled' | 'outlined' | undefined"
1389
1397
  },
1390
- "description": "The surface level the band sits on.\n\n`filled` is the resting one, a well sunk below the page. `elevated` brings\nit up to the surface step, for a band that reads as part of the furniture\nrather than as a slot cut into it.\n\n**`separation` and not `tone`, because a rung is not a meaning.** A band\ncan be `info` and elevated at the same time, and two values that can both\nbe true are two axes, which is the test the registry answers to.\n\nStyled and not headless, because a rung of a ladder is paint: the headless\ntier has no stylesheet to sit a band on. `tone` crosses because meaning\nsurvives having nothing to paint with, and it is the only axis that does.",
1398
+ "description": "The surface level the band sits on.\n\n`filled` is the resting one, a well sunk below the page. `elevated` brings\nit up to the surface step, for a band that reads as part of the furniture\nrather than as a slot cut into it. `outlined` draws a hairline under the\nband, in its tone where it has one; no other value draws a line.\n\n**`separation` and not `tone`, because a rung is not a meaning.** A band\ncan be `info` and elevated at the same time, and two values that can both\nbe true are two axes, which is the test the registry answers to.\n\nStyled and not headless, because a rung of a ladder is paint: the headless\ntier has no stylesheet to sit a band on. `tone` crosses because meaning\nsurvives having nothing to paint with, and it is the only axis that does.",
1391
1399
  "attribute": "separation",
1392
1400
  "reflects": true
1393
1401
  },
@@ -1836,9 +1844,9 @@
1836
1844
  {
1837
1845
  "name": "separation",
1838
1846
  "type": {
1839
- "text": "'elevated' | 'filled' | undefined"
1847
+ "text": "'elevated' | 'filled' | 'outlined' | undefined"
1840
1848
  },
1841
- "description": "The surface level the band sits on.\n\n`filled` is the resting one, a well sunk below the page. `elevated` brings\nit up to the surface step, for a band that reads as part of the furniture\nrather than as a slot cut into it.\n\n**`separation` and not `tone`, because a rung is not a meaning.** A band\ncan be `info` and elevated at the same time, and two values that can both\nbe true are two axes, which is the test the registry answers to.\n\nStyled and not headless, because a rung of a ladder is paint: the headless\ntier has no stylesheet to sit a band on. `tone` crosses because meaning\nsurvives having nothing to paint with, and it is the only axis that does.",
1849
+ "description": "The surface level the band sits on.\n\n`filled` is the resting one, a well sunk below the page. `elevated` brings\nit up to the surface step, for a band that reads as part of the furniture\nrather than as a slot cut into it. `outlined` draws a hairline under the\nband, in its tone where it has one; no other value draws a line.\n\n**`separation` and not `tone`, because a rung is not a meaning.** A band\ncan be `info` and elevated at the same time, and two values that can both\nbe true are two axes, which is the test the registry answers to.\n\nStyled and not headless, because a rung of a ladder is paint: the headless\ntier has no stylesheet to sit a band on. `tone` crosses because meaning\nsurvives having nothing to paint with, and it is the only axis that does.",
1842
1850
  "fieldName": "separation"
1843
1851
  },
1844
1852
  {
@@ -1908,7 +1916,7 @@
1908
1916
  "slug": "events"
1909
1917
  },
1910
1918
  {
1911
- "description": "A filled band, an elevated band, and an elevated band with a tone.",
1919
+ "description": "A filled band, an elevated band, an elevated band with a tone, and a band with a line under it.",
1912
1920
  "slug": "separation"
1913
1921
  },
1914
1922
  {
@@ -95886,6 +95894,20 @@
95886
95894
  "module": "src/navigation/root/navigation-root.ts"
95887
95895
  }
95888
95896
  },
95897
+ {
95898
+ "kind": "field",
95899
+ "name": "orientation",
95900
+ "type": {
95901
+ "text": "'vertical' | undefined"
95902
+ },
95903
+ "description": "Stacks the destinations in a column, for a sidebar, where unset is a row\nfor a header or a footer. The marker follows the current destination down\nthe column as it does along the row.",
95904
+ "attribute": "orientation",
95905
+ "reflects": true,
95906
+ "inheritedFrom": {
95907
+ "name": "HelixHeadlessNavigation",
95908
+ "module": "src/navigation/root/navigation-root.ts"
95909
+ }
95910
+ },
95889
95911
  {
95890
95912
  "kind": "field",
95891
95913
  "name": "current",
@@ -96321,6 +96343,18 @@
96321
96343
  "name": "HelixHeadlessNavigation",
96322
96344
  "module": "src/navigation/root/navigation-root.ts"
96323
96345
  }
96346
+ },
96347
+ {
96348
+ "name": "orientation",
96349
+ "type": {
96350
+ "text": "'vertical' | undefined"
96351
+ },
96352
+ "description": "Stacks the destinations in a column, for a sidebar, where unset is a row\nfor a header or a footer. The marker follows the current destination down\nthe column as it does along the row.",
96353
+ "fieldName": "orientation",
96354
+ "inheritedFrom": {
96355
+ "name": "HelixHeadlessNavigation",
96356
+ "module": "src/navigation/root/navigation-root.ts"
96357
+ }
96324
96358
  }
96325
96359
  ],
96326
96360
  "cssStates": [
@@ -13,10 +13,9 @@ export const styles = createSheet(`:host {
13
13
  --_announcement-ground: var(--helix-color-background);
14
14
 
15
15
  align-items: center;
16
- background-color: var(--helix-color-surface-sunken);
16
+ background-color: var(--announcement-background-color, var(--helix-color-surface-sunken));
17
17
 
18
- border-block-end: var(--helix-border-thin) solid var(--helix-color-border);
19
- color: var(--helix-color-foreground);
18
+ color: var(--announcement-foreground-color, var(--helix-color-foreground));
20
19
  display: flex;
21
20
  font-size: var(--helix-text-sm);
22
21
 
@@ -51,7 +50,6 @@ position: relative;
51
50
 
52
51
  :host([tone="neutral"]) {
53
52
  background-image: none;
54
- border-block-end-color: var(--helix-color-border);
55
53
  }
56
54
 
57
55
  :host([tone="primary"]) {
@@ -74,21 +72,28 @@ color-mix(in oklab, var(--_announcement-color) 10%, var(--_announcement-ground))
74
72
  color-mix(in oklab, var(--_announcement-color) 20%, var(--_announcement-ground))
75
73
  )
76
74
  );
77
- border-block-end-color: color-mix(
78
- in oklab,
79
- var(--_announcement-color) 40%,
80
- var(--_announcement-ground)
81
- );
82
75
  }
83
76
 
84
77
  :host([separation="filled"]) {
85
- background-color: var(--helix-color-surface-sunken);
78
+ background-color: var(--announcement-background-color, var(--helix-color-surface-sunken));
86
79
  }
87
80
 
88
81
  :host([separation="elevated"]) {
89
82
  --_announcement-ground: var(--helix-color-surface);
90
83
 
91
- background-color: var(--helix-color-surface);
84
+ background-color: var(--announcement-background-color, var(--helix-color-surface));
85
+ }
86
+
87
+ :host([separation="outlined"]) {
88
+ border-block-end: var(--helix-border-thin) solid var(--helix-color-border);
89
+ }
90
+
91
+ :host([separation="outlined"][tone]:not([tone="neutral"])) {
92
+ border-block-end-color: color-mix(
93
+ in oklab,
94
+ var(--_announcement-color) 40%,
95
+ var(--_announcement-ground)
96
+ );
92
97
  }
93
98
 
94
99
  [part="content"] {
@@ -14,7 +14,9 @@ import type { CSSResultGroup } from 'lit';
14
14
  * @aliases Banner, Notification bar, Alert bar
15
15
  * @documentation https://fusion.dev/helix/components/announcement
16
16
  *
17
+ * @cssproperty --announcement-background-color - The band's fill, in place of the one its separation gives it. A tone's tint still paints over it, so a band that sets this usually carries no tone.
17
18
  * @cssproperty --announcement-block-size - The band's minimum height, so adding a control to it does not move the page down. A message long enough to wrap makes the band taller.
19
+ * @cssproperty --announcement-foreground-color - The message's color, to pair with a fill set through the background hook.
18
20
  * @cssproperty --announcement-inset - The inline padding, matched to the page.
19
21
  */
20
22
  export declare class HelixAnnouncement extends HelixHeadlessAnnouncement {
@@ -23,7 +25,8 @@ export declare class HelixAnnouncement extends HelixHeadlessAnnouncement {
23
25
  *
24
26
  * `filled` is the resting one, a well sunk below the page. `elevated` brings
25
27
  * it up to the surface step, for a band that reads as part of the furniture
26
- * rather than as a slot cut into it.
28
+ * rather than as a slot cut into it. `outlined` draws a hairline under the
29
+ * band, in its tone where it has one; no other value draws a line.
27
30
  *
28
31
  * **`separation` and not `tone`, because a rung is not a meaning.** A band
29
32
  * can be `info` and elevated at the same time, and two values that can both
@@ -33,7 +36,7 @@ export declare class HelixAnnouncement extends HelixHeadlessAnnouncement {
33
36
  * tier has no stylesheet to sit a band on. `tone` crosses because meaning
34
37
  * survives having nothing to paint with, and it is the only axis that does.
35
38
  */
36
- separation?: 'elevated' | 'filled';
39
+ separation?: 'elevated' | 'filled' | 'outlined';
37
40
  static styles: CSSResultGroup;
38
41
  }
39
42
  declare global {
@@ -19,8 +19,8 @@ color: var(--helix-color-foreground-subtle);
19
19
  }
20
20
 
21
21
  [part="trigger"] {
22
- align-items: stretch;
23
22
  all: unset;
23
+ align-items: stretch;
24
24
  align-self: stretch;
25
25
  box-sizing: border-box;
26
26
  cursor: pointer;
@@ -12,6 +12,8 @@ border-block-start: var(--helix-border-thin) solid var(--helix-color-border);
12
12
  :host([kind="ordered"]),
13
13
  :host([kind="unordered"]) {
14
14
 
15
+ contain: style;
16
+
15
17
  padding-inline-start: var(--list-marker-gutter, var(--helix-space-md));
16
18
  }
17
19
 
@@ -37,6 +37,18 @@ z-index: var(--helix-layer-base);
37
37
  opacity: 1;
38
38
  }
39
39
 
40
+ :host([orientation="vertical"]) [part="nav"] {
41
+ align-items: stretch;
42
+ block-size: auto;
43
+ flex-direction: column;
44
+ overflow-x: visible;
45
+ }
46
+
47
+ :host([orientation="vertical"]) [part="indicator"] {
48
+ inset-block-start: 0;
49
+ translate: var(--indicator-x, 0) var(--indicator-y, 0);
50
+ }
51
+
40
52
  @media print {
41
53
  :host {
42
54
  display: none;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix",
3
3
  "description": "Styled component tier. Extends the headless tier with token-driven presentation.",
4
- "version": "0.133.0",
4
+ "version": "0.134.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -51,13 +51,13 @@
51
51
  },
52
52
  "bugs": "https://github.com/project-fusion/fusion/issues",
53
53
  "dependencies": {
54
- "@fusion.dev/helix-core": "0.133.0",
55
- "@fusion.dev/helix-headless": "0.133.0",
56
- "@fusion.dev/helix-styles": "0.133.0"
54
+ "@fusion.dev/helix-core": "0.134.0",
55
+ "@fusion.dev/helix-headless": "0.134.0",
56
+ "@fusion.dev/helix-styles": "0.134.0"
57
57
  },
58
58
  "devDependencies": {
59
- "@fusion.dev/helix-cem": "0.133.0",
60
- "@fusion.dev/helix-testing": "0.133.0",
59
+ "@fusion.dev/helix-cem": "0.134.0",
60
+ "@fusion.dev/helix-testing": "0.134.0",
61
61
  "@fusion.dev/scripts": "0.0.0-dev",
62
62
  "@happy-dom/global-registrator": "^20.0.0",
63
63
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -666,7 +666,8 @@ export type HelixAnnouncementProps = {
666
666
 
667
667
  `filled` is the resting one, a well sunk below the page. `elevated` brings
668
668
  it up to the surface step, for a band that reads as part of the furniture
669
- rather than as a slot cut into it.
669
+ rather than as a slot cut into it. `outlined` draws a hairline under the
670
+ band, in its tone where it has one; no other value draws a line.
670
671
 
671
672
  **`separation` and not `tone`, because a rung is not a meaning.** A band
672
673
  can be `info` and elevated at the same time, and two values that can both
@@ -724,7 +725,8 @@ export type HelixAnnouncementSolidJsProps = {
724
725
 
725
726
  `filled` is the resting one, a well sunk below the page. `elevated` brings
726
727
  it up to the surface step, for a band that reads as part of the furniture
727
- rather than as a slot cut into it.
728
+ rather than as a slot cut into it. `outlined` draws a hairline under the
729
+ band, in its tone where it has one; no other value draws a line.
728
730
 
729
731
  **`separation` and not `tone`, because a rung is not a meaning.** A band
730
732
  can be `info` and elevated at the same time, and two values that can both
@@ -16511,11 +16513,19 @@ fair summary of a task and a poor one of a quantity. */
16511
16513
  export type HelixNavigationProps = {
16512
16514
  /** The landmark's name, read by screen readers. */
16513
16515
  label?: (HelixNavigation["label"]) | undefined;
16516
+ /** Stacks the destinations in a column, for a sidebar, where unset is a row
16517
+ for a header or a footer. The marker follows the current destination down
16518
+ the column as it does along the row. */
16519
+ orientation?: (HelixNavigation["orientation"]) | undefined;
16514
16520
  };
16515
16521
 
16516
16522
  export type HelixNavigationSolidJsProps = {
16517
16523
  /** The landmark's name, read by screen readers. */
16518
16524
  "prop:label"?: (HelixNavigation["label"]) | undefined;
16525
+ /** Stacks the destinations in a column, for a sidebar, where unset is a row
16526
+ for a header or a footer. The marker follows the current destination down
16527
+ the column as it does along the row. */
16528
+ "prop:orientation"?: (HelixNavigation["orientation"]) | undefined;
16519
16529
 
16520
16530
  /** Set the innerHTML of the element */
16521
16531
  innerHTML?: (string) | undefined;
@@ -27296,7 +27306,8 @@ export type CustomElements = {
27296
27306
  *
27297
27307
  * `filled` is the resting one, a well sunk below the page. `elevated` brings
27298
27308
  * it up to the surface step, for a band that reads as part of the furniture
27299
- * rather than as a slot cut into it.
27309
+ * rather than as a slot cut into it. `outlined` draws a hairline under the
27310
+ * band, in its tone where it has one; no other value draws a line.
27300
27311
  *
27301
27312
  * **`separation` and not `tone`, because a rung is not a meaning.** A band
27302
27313
  * can be `info` and elevated at the same time, and two values that can both
@@ -27378,7 +27389,9 @@ export type CustomElements = {
27378
27389
  *
27379
27390
  * CSS variables available for styling the component.
27380
27391
  *
27392
+ * - `--announcement-background-color`: The band's fill, in place of the one its separation gives it. A tone's tint still paints over it, so a band that sets this usually carries no tone. (default: `undefined`)
27381
27393
  * - `--announcement-block-size`: The band's minimum height, so adding a control to it does not move the page down. A message long enough to wrap makes the band taller. (default: `undefined`)
27394
+ * - `--announcement-foreground-color`: The message's color, to pair with a fill set through the background hook. (default: `undefined`)
27382
27395
  * - `--announcement-inset`: The inline padding, matched to the page. (default: `undefined`)
27383
27396
  *
27384
27397
  * ## CSS Parts
@@ -39753,6 +39766,9 @@ export type CustomElements = {
39753
39766
  * Component attributes and properties that can be applied to the element or by using JavaScript.
39754
39767
  *
39755
39768
  * - `label`: The landmark's name, read by screen readers.
39769
+ * - `orientation`: Stacks the destinations in a column, for a sidebar, where unset is a row
39770
+ * for a header or a footer. The marker follows the current destination down
39771
+ * the column as it does along the row.
39756
39772
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
39757
39773
  *
39758
39774
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -49469,7 +49485,8 @@ export type CustomElementsSolidJs = {
49469
49485
  *
49470
49486
  * `filled` is the resting one, a well sunk below the page. `elevated` brings
49471
49487
  * it up to the surface step, for a band that reads as part of the furniture
49472
- * rather than as a slot cut into it.
49488
+ * rather than as a slot cut into it. `outlined` draws a hairline under the
49489
+ * band, in its tone where it has one; no other value draws a line.
49473
49490
  *
49474
49491
  * **`separation` and not `tone`, because a rung is not a meaning.** A band
49475
49492
  * can be `info` and elevated at the same time, and two values that can both
@@ -49551,7 +49568,9 @@ export type CustomElementsSolidJs = {
49551
49568
  *
49552
49569
  * CSS variables available for styling the component.
49553
49570
  *
49571
+ * - `--announcement-background-color`: The band's fill, in place of the one its separation gives it. A tone's tint still paints over it, so a band that sets this usually carries no tone. (default: `undefined`)
49554
49572
  * - `--announcement-block-size`: The band's minimum height, so adding a control to it does not move the page down. A message long enough to wrap makes the band taller. (default: `undefined`)
49573
+ * - `--announcement-foreground-color`: The message's color, to pair with a fill set through the background hook. (default: `undefined`)
49555
49574
  * - `--announcement-inset`: The inline padding, matched to the page. (default: `undefined`)
49556
49575
  *
49557
49576
  * ## CSS Parts
@@ -62171,6 +62190,9 @@ export type CustomElementsSolidJs = {
62171
62190
  * Component attributes and properties that can be applied to the element or by using JavaScript.
62172
62191
  *
62173
62192
  * - `label`: The landmark's name, read by screen readers.
62193
+ * - `orientation`: Stacks the destinations in a column, for a sidebar, where unset is a row
62194
+ * for a header or a footer. The marker follows the current destination down
62195
+ * the column as it does along the row.
62174
62196
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
62175
62197
  *
62176
62198
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -71883,8 +71905,12 @@ export type CustomCssProperties = {
71883
71905
  "--accordion-gap"?: (string) | undefined;
71884
71906
  /** The corner radius of each item when outlined. */
71885
71907
  "--accordion-radius"?: (string) | undefined;
71908
+ /** The band's fill, in place of the one its separation gives it. A tone's tint still paints over it, so a band that sets this usually carries no tone. */
71909
+ "--announcement-background-color"?: (string) | undefined;
71886
71910
  /** The band's minimum height, so adding a control to it does not move the page down. A message long enough to wrap makes the band taller. */
71887
71911
  "--announcement-block-size"?: (string) | undefined;
71912
+ /** The message's color, to pair with a fill set through the background hook. */
71913
+ "--announcement-foreground-color"?: (string) | undefined;
71888
71914
  /** The inline padding, matched to the page. */
71889
71915
  "--announcement-inset"?: (string) | undefined;
71890
71916
  /** The filter behind the banner. Set it to `none` when you pair the header with a panel. */
package/types/vue.d.ts CHANGED
@@ -383,7 +383,8 @@ export type HelixAnnouncementVueProps = {
383
383
 
384
384
  `filled` is the resting one, a well sunk below the page. `elevated` brings
385
385
  it up to the surface step, for a band that reads as part of the furniture
386
- rather than as a slot cut into it.
386
+ rather than as a slot cut into it. `outlined` draws a hairline under the
387
+ band, in its tone where it has one; no other value draws a line.
387
388
 
388
389
  **`separation` and not `tone`, because a rung is not a meaning.** A band
389
390
  can be `info` and elevated at the same time, and two values that can both
@@ -8467,6 +8468,10 @@ export type HelixMeterVueEvents = {};
8467
8468
  export type HelixNavigationVueProps = {
8468
8469
  /** The landmark's name, read by screen readers. */
8469
8470
  label?: (HelixNavigation["label"]) | undefined;
8471
+ /** Stacks the destinations in a column, for a sidebar, where unset is a row
8472
+ for a header or a footer. The marker follows the current destination down
8473
+ the column as it does along the row. */
8474
+ orientation?: (HelixNavigation["orientation"]) | undefined;
8470
8475
  };
8471
8476
 
8472
8477
  export type HelixNavigationVueEvents = {};
@@ -13888,8 +13893,12 @@ export type CustomCssProperties = {
13888
13893
  "--accordion-gap"?: (string) | undefined;
13889
13894
  /** The corner radius of each item when outlined. */
13890
13895
  "--accordion-radius"?: (string) | undefined;
13896
+ /** The band's fill, in place of the one its separation gives it. A tone's tint still paints over it, so a band that sets this usually carries no tone. */
13897
+ "--announcement-background-color"?: (string) | undefined;
13891
13898
  /** The band's minimum height, so adding a control to it does not move the page down. A message long enough to wrap makes the band taller. */
13892
13899
  "--announcement-block-size"?: (string) | undefined;
13900
+ /** The message's color, to pair with a fill set through the background hook. */
13901
+ "--announcement-foreground-color"?: (string) | undefined;
13893
13902
  /** The inline padding, matched to the page. */
13894
13903
  "--announcement-inset"?: (string) | undefined;
13895
13904
  /** The filter behind the banner. Set it to `none` when you pair the header with a panel. */