@fusion.dev/helix-docs 0.33.5 → 0.34.1

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.
@@ -59,10 +59,10 @@ repository does that. The per-component tables are what a page pays.
59
59
  | Package | Raw | Gzip | Brotli | |
60
60
  |---|---|---|---|---|
61
61
  | `@fusion.dev/helix-core` | 145,460 | 47,853 | 40,503 | Element base class, mixins, decorators, floating positioning. |
62
- | `@fusion.dev/helix-headless` | 601,347 | 155,590 | 121,108 | Every headless family, which is what the barrel means. |
62
+ | `@fusion.dev/helix-headless` | 601,399 | 155,615 | 121,088 | Every headless family, which is what the barrel means. |
63
63
  | `@fusion.dev/helix-icons` | 47,484 | 14,907 | 12,553 | The whole glyph set. |
64
64
  | `@fusion.dev/helix-theme` | 3,288 | 1,571 | 1,355 | The derivation engine. Build time for most consumers, runtime for a theme switcher. |
65
- | `@fusion.dev/helix` | 1,073,085 | 251,160 | 183,860 | Every styled family. |
65
+ | `@fusion.dev/helix` | 1,073,751 | 251,340 | 184,020 | Every styled family. |
66
66
  | `lit` | 15,394 | 6,118 | 5,460 | Not ours. Here so it can be subtracted from every row above it. |
67
67
 
68
68
  ## The stylesheets
@@ -85,9 +85,9 @@ is the whole cost of adopting the base layer on its own.
85
85
 
86
86
  **Most of a first component is the runtime under it.** The median styled family is 18,709 bytes gzipped alone and adds 2,213 to a page that already has Helix on it, so 88 percent of the first one is shared and 12 percent is the component. Ten typical components are one plus nine additions rather than ten of the first number, and the pair of columns below is what lets that be worked out rather than guessed.
87
87
 
88
- Across the tier: the cheapest is `code` at 9,408 gzipped alone, the dearest `data-table` at 58,933, over 100 components. Every family at once is 251,160.
88
+ Across the tier: the cheapest is `code` at 9,408 gzipped alone, the dearest `data-table` at 58,933, over 100 components. Every family at once is 251,340.
89
89
 
90
- **No family imports a barrel, and the `barrels` rule in `fusion workspace` is what keeps it that way.** `@fusion.dev/helix-headless` is `sideEffects` over every module in `dist`, which is true of a file that calls `customElements.define` and which means a bundler may drop none of it: one `import { HelixHeadlessButton } from '@fusion.dev/helix-headless'` costs 155,590 bytes gzipped whatever else the page does, which is 8 times the median family measured above. The styled tier imports the family it extends instead, all 100 of them, and the check refuses the shape rather than the package name, so the rule follows `sideEffects` wherever it goes.
90
+ **No family imports a barrel, and the `barrels` rule in `fusion workspace` is what keeps it that way.** `@fusion.dev/helix-headless` is `sideEffects` over every module in `dist`, which is true of a file that calls `customElements.define` and which means a bundler may drop none of it: one `import { HelixHeadlessButton } from '@fusion.dev/helix-headless'` costs 155,615 bytes gzipped whatever else the page does, which is 8 times the median family measured above. The styled tier imports the family it extends instead, all 100 of them, and the check refuses the shape rather than the package name, so the rule follows `sideEffects` wherever it goes.
91
91
 
92
92
  The headless tier never had the problem, and it is the control: `@fusion.dev/helix-core` is `sideEffects: false`, and a headless family is a median of 20,496 bytes gzipped alone.
93
93
 
@@ -271,7 +271,7 @@ Structure, accessibility, state and form participation. No presentation, and no
271
271
  | `toolbar` | 30,291 | 10,244 | 9,039 | 2,933 | 942 | 658 |
272
272
  | `tooltip` | 60,000 | 20,657 | 18,277 | 6,432 | 1,807 | 1,330 |
273
273
  | `tour` | 65,738 | 21,993 | 19,463 | 11,006 | 2,771 | 2,164 |
274
- | `tree` | 86,155 | 28,426 | 23,245 | 7,125 | 1,950 | 1,518 |
274
+ | `tree` | 86,207 | 28,440 | 23,234 | 7,177 | 1,973 | 1,517 |
275
275
  | `trend` | 75,181 | 25,041 | 20,668 | 1,056 | 278 | 191 |
276
276
  | `video` | 139,358 | 44,823 | 37,815 | 33,883 | 8,222 | 7,111 |
277
277
  | `video-playlist` | 121,595 | 40,146 | 33,651 | 14,968 | 3,503 | 2,890 |
@@ -378,7 +378,7 @@ The headless tier plus presentation. This is what `bun add @fusion.dev/helix` gi
378
378
  | `toolbar` | 31,583 | 10,541 | 9,268 | 4,208 | 1,250 | 960 |
379
379
  | `tooltip` | 63,078 | 21,403 | 18,968 | 9,492 | 2,546 | 2,061 |
380
380
  | `tour` | 75,289 | 23,611 | 20,886 | 20,537 | 4,381 | 3,576 |
381
- | `tree` | 91,242 | 29,636 | 24,321 | 12,201 | 3,165 | 2,607 |
381
+ | `tree` | 91,907 | 29,785 | 24,444 | 12,867 | 3,305 | 2,769 |
382
382
  | `trend` | 78,338 | 25,747 | 21,284 | 4,205 | 948 | 823 |
383
383
  | `video` | 158,345 | 48,236 | 40,754 | 52,850 | 11,669 | 10,126 |
384
384
  | `video-playlist` | 135,495 | 42,650 | 35,778 | 28,847 | 5,972 | 4,969 |
@@ -395,11 +395,11 @@ column is what was removed rather than part of what remains.
395
395
  | Package | Unpacked | Files | Source maps stripped | Runtime dependencies |
396
396
  |---|---|---|---|---|
397
397
  | `@fusion.dev/helix-core` | 837,166 | 123 | 184,846 | `@floating-ui/dom`, `@fusion.dev/helix-icons` |
398
- | `@fusion.dev/helix-headless` | 11,022,623 | 472 | 853,430 | `@fusion.dev/helix-core`, `@fusion.dev/helix-icons`, `uqr` |
398
+ | `@fusion.dev/helix-headless` | 11,039,809 | 472 | 853,585 | `@fusion.dev/helix-core`, `@fusion.dev/helix-icons`, `uqr` |
399
399
  | `@fusion.dev/helix-icons` | 65,943 | 11 | 20,928 | none |
400
400
  | `@fusion.dev/helix-styles` | 101,139 | 6 | 0 | none |
401
401
  | `@fusion.dev/helix-theme` | 465,413 | 8 | 4,703 | none |
402
- | `@fusion.dev/helix` | 12,005,465 | 798 | 337,086 | `@fusion.dev/helix-core`, `@fusion.dev/helix-headless`, `@fusion.dev/helix-styles` |
402
+ | `@fusion.dev/helix` | 12,021,191 | 798 | 337,103 | `@fusion.dev/helix-core`, `@fusion.dev/helix-headless`, `@fusion.dev/helix-styles` |
403
403
 
404
404
  ## Not measured yet
405
405
 
@@ -1,19 +1,21 @@
1
1
  ---
2
- description: Four words with fixed vocabularies, one escape hatch, and the word that is refused.
2
+ description: Registered words with fixed vocabularies, one escape hatch, and the word that is refused.
3
3
  section: Theming
4
4
  title: Visual axes
5
5
  ---
6
6
 
7
7
  # Visual axes
8
8
 
9
- A component's visual choices come from four registered axes with fixed
9
+ A component's visual choices come from a registry of axes with fixed
10
10
  vocabularies. You cannot invent a value, and a component may take a subset.
11
11
 
12
12
  | Axis | Values |
13
13
  |---|---|
14
14
  | `emphasis` | `ghost`, `muted`, `outlined`, `solid`, `subtle` |
15
15
  | `material` | `frosted`, `glass`, `transparent` |
16
+ | `nesting` | `heading`, `peer`, `subordinate` |
16
17
  | `separation` | `elevated`, `filled`, `outlined`, `plain` |
18
+ | `shape` | `arc`, `circle`, `dots`, `ring`, `rounded`, `square`, `text` |
17
19
  | `tone` | The status and intent words: `primary`, `accent`, `neutral`, `danger`, and so on |
18
20
  | `width` | `auto`, `full`, `standard` |
19
21
 
@@ -66,8 +68,30 @@ on either tier.
66
68
  **What it may not be is a place to put something that is on an axis.** That is
67
69
  the failure mode `appearance` demonstrated.
68
70
 
69
- ## `tone` is the one axis both tiers carry
71
+ ## Some axes are carried by both tiers
70
72
 
71
73
  A styled axis never appears on the headless tier, which has nothing to paint and
72
- no box to size. `tone` is the exception and a principled one: it says what a
73
- thing *means*, and meaning survives having no stylesheet.
74
+ no box to size. The exceptions are the axes that are not about paint. `tone` says
75
+ what a thing *means*, and meaning survives having no stylesheet. `shape` says
76
+ what gets *rendered*: a meter at `ring` emits an arc rather than a bar, so the
77
+ markup differs before any rule is written. `nesting` says what depth *is*: a
78
+ tree at `subordinate` ranks its rows, a tree at `heading` makes each branch the
79
+ name of the list under it, a file explorer does neither, and that is true of a
80
+ tree nobody has styled.
81
+
82
+ ## What a step inward means
83
+
84
+ `nesting` is the one axis whose values are three readings of the same fact, so
85
+ it is worth saying which tree each is for.
86
+
87
+ | Value | The tree it suits | What moves |
88
+ |---|---|---|
89
+ | `heading` | A documentation sidebar, where a branch names the list it holds and is not a page | The branch, which takes the rail heading. Its children keep the row they had |
90
+ | `peer` | A file explorer, where every row is the same kind of thing | Nothing. The indent is the whole of what depth says |
91
+ | `subordinate` | Side navigation, a categorization, a facet list | The nested row, one step down the type scale and no further |
92
+
93
+ `heading` and `subordinate` are not one answer said twice. `subordinate` keys on
94
+ depth and quiets the child; `heading` keys on holding children and relabels the
95
+ parent, which is why a branch at any depth is a heading while the step below
96
+ stops after one, and why a top-level leaf sitting beside a branch is left alone
97
+ by both for opposite reasons.
@@ -261,7 +261,7 @@ export const docPages = [
261
261
  title: 'Versioning',
262
262
  },
263
263
  {
264
- description: 'Four words with fixed vocabularies, one escape hatch, and the word that is refused.',
264
+ description: 'Registered words with fixed vocabularies, one escape hatch, and the word that is refused.',
265
265
  section: 'Theming',
266
266
  slug: 'visual-axes',
267
267
  title: 'Visual axes',
@@ -2023,10 +2023,10 @@ repository does that. The per-component tables are what a page pays.
2023
2023
  | Package | Raw | Gzip | Brotli | |
2024
2024
  |---|---|---|---|---|
2025
2025
  | \`@fusion.dev/helix-core\` | 145,460 | 47,853 | 40,503 | Element base class, mixins, decorators, floating positioning. |
2026
- | \`@fusion.dev/helix-headless\` | 601,347 | 155,590 | 121,108 | Every headless family, which is what the barrel means. |
2026
+ | \`@fusion.dev/helix-headless\` | 601,399 | 155,615 | 121,088 | Every headless family, which is what the barrel means. |
2027
2027
  | \`@fusion.dev/helix-icons\` | 47,484 | 14,907 | 12,553 | The whole glyph set. |
2028
2028
  | \`@fusion.dev/helix-theme\` | 3,288 | 1,571 | 1,355 | The derivation engine. Build time for most consumers, runtime for a theme switcher. |
2029
- | \`@fusion.dev/helix\` | 1,073,085 | 251,160 | 183,860 | Every styled family. |
2029
+ | \`@fusion.dev/helix\` | 1,073,751 | 251,340 | 184,020 | Every styled family. |
2030
2030
  | \`lit\` | 15,394 | 6,118 | 5,460 | Not ours. Here so it can be subtracted from every row above it. |
2031
2031
 
2032
2032
  ## The stylesheets
@@ -2049,9 +2049,9 @@ is the whole cost of adopting the base layer on its own.
2049
2049
 
2050
2050
  **Most of a first component is the runtime under it.** The median styled family is 18,709 bytes gzipped alone and adds 2,213 to a page that already has Helix on it, so 88 percent of the first one is shared and 12 percent is the component. Ten typical components are one plus nine additions rather than ten of the first number, and the pair of columns below is what lets that be worked out rather than guessed.
2051
2051
 
2052
- Across the tier: the cheapest is \`code\` at 9,408 gzipped alone, the dearest \`data-table\` at 58,933, over 100 components. Every family at once is 251,160.
2052
+ Across the tier: the cheapest is \`code\` at 9,408 gzipped alone, the dearest \`data-table\` at 58,933, over 100 components. Every family at once is 251,340.
2053
2053
 
2054
- **No family imports a barrel, and the \`barrels\` rule in \`fusion workspace\` is what keeps it that way.** \`@fusion.dev/helix-headless\` is \`sideEffects\` over every module in \`dist\`, which is true of a file that calls \`customElements.define\` and which means a bundler may drop none of it: one \`import { HelixHeadlessButton } from '@fusion.dev/helix-headless'\` costs 155,590 bytes gzipped whatever else the page does, which is 8 times the median family measured above. The styled tier imports the family it extends instead, all 100 of them, and the check refuses the shape rather than the package name, so the rule follows \`sideEffects\` wherever it goes.
2054
+ **No family imports a barrel, and the \`barrels\` rule in \`fusion workspace\` is what keeps it that way.** \`@fusion.dev/helix-headless\` is \`sideEffects\` over every module in \`dist\`, which is true of a file that calls \`customElements.define\` and which means a bundler may drop none of it: one \`import { HelixHeadlessButton } from '@fusion.dev/helix-headless'\` costs 155,615 bytes gzipped whatever else the page does, which is 8 times the median family measured above. The styled tier imports the family it extends instead, all 100 of them, and the check refuses the shape rather than the package name, so the rule follows \`sideEffects\` wherever it goes.
2055
2055
 
2056
2056
  The headless tier never had the problem, and it is the control: \`@fusion.dev/helix-core\` is \`sideEffects: false\`, and a headless family is a median of 20,496 bytes gzipped alone.
2057
2057
 
@@ -2235,7 +2235,7 @@ Structure, accessibility, state and form participation. No presentation, and no
2235
2235
  | \`toolbar\` | 30,291 | 10,244 | 9,039 | 2,933 | 942 | 658 |
2236
2236
  | \`tooltip\` | 60,000 | 20,657 | 18,277 | 6,432 | 1,807 | 1,330 |
2237
2237
  | \`tour\` | 65,738 | 21,993 | 19,463 | 11,006 | 2,771 | 2,164 |
2238
- | \`tree\` | 86,155 | 28,426 | 23,245 | 7,125 | 1,950 | 1,518 |
2238
+ | \`tree\` | 86,207 | 28,440 | 23,234 | 7,177 | 1,973 | 1,517 |
2239
2239
  | \`trend\` | 75,181 | 25,041 | 20,668 | 1,056 | 278 | 191 |
2240
2240
  | \`video\` | 139,358 | 44,823 | 37,815 | 33,883 | 8,222 | 7,111 |
2241
2241
  | \`video-playlist\` | 121,595 | 40,146 | 33,651 | 14,968 | 3,503 | 2,890 |
@@ -2342,7 +2342,7 @@ The headless tier plus presentation. This is what \`bun add @fusion.dev/helix\`
2342
2342
  | \`toolbar\` | 31,583 | 10,541 | 9,268 | 4,208 | 1,250 | 960 |
2343
2343
  | \`tooltip\` | 63,078 | 21,403 | 18,968 | 9,492 | 2,546 | 2,061 |
2344
2344
  | \`tour\` | 75,289 | 23,611 | 20,886 | 20,537 | 4,381 | 3,576 |
2345
- | \`tree\` | 91,242 | 29,636 | 24,321 | 12,201 | 3,165 | 2,607 |
2345
+ | \`tree\` | 91,907 | 29,785 | 24,444 | 12,867 | 3,305 | 2,769 |
2346
2346
  | \`trend\` | 78,338 | 25,747 | 21,284 | 4,205 | 948 | 823 |
2347
2347
  | \`video\` | 158,345 | 48,236 | 40,754 | 52,850 | 11,669 | 10,126 |
2348
2348
  | \`video-playlist\` | 135,495 | 42,650 | 35,778 | 28,847 | 5,972 | 4,969 |
@@ -2359,11 +2359,11 @@ column is what was removed rather than part of what remains.
2359
2359
  | Package | Unpacked | Files | Source maps stripped | Runtime dependencies |
2360
2360
  |---|---|---|---|---|
2361
2361
  | \`@fusion.dev/helix-core\` | 837,166 | 123 | 184,846 | \`@floating-ui/dom\`, \`@fusion.dev/helix-icons\` |
2362
- | \`@fusion.dev/helix-headless\` | 11,022,623 | 472 | 853,430 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-icons\`, \`uqr\` |
2362
+ | \`@fusion.dev/helix-headless\` | 11,039,809 | 472 | 853,585 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-icons\`, \`uqr\` |
2363
2363
  | \`@fusion.dev/helix-icons\` | 65,943 | 11 | 20,928 | none |
2364
2364
  | \`@fusion.dev/helix-styles\` | 101,139 | 6 | 0 | none |
2365
2365
  | \`@fusion.dev/helix-theme\` | 465,413 | 8 | 4,703 | none |
2366
- | \`@fusion.dev/helix\` | 12,005,465 | 798 | 337,086 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-headless\`, \`@fusion.dev/helix-styles\` |
2366
+ | \`@fusion.dev/helix\` | 12,021,191 | 798 | 337,103 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-headless\`, \`@fusion.dev/helix-styles\` |
2367
2367
 
2368
2368
  ## Not measured yet
2369
2369
 
@@ -5064,21 +5064,23 @@ because a second copy of the release notes is a second thing to keep in step and
5064
5064
  the one that goes stale is the one nobody is reading that week.
5065
5065
  `,
5066
5066
  'visual-axes': `---
5067
- description: Four words with fixed vocabularies, one escape hatch, and the word that is refused.
5067
+ description: Registered words with fixed vocabularies, one escape hatch, and the word that is refused.
5068
5068
  section: Theming
5069
5069
  title: Visual axes
5070
5070
  ---
5071
5071
 
5072
5072
  # Visual axes
5073
5073
 
5074
- A component's visual choices come from four registered axes with fixed
5074
+ A component's visual choices come from a registry of axes with fixed
5075
5075
  vocabularies. You cannot invent a value, and a component may take a subset.
5076
5076
 
5077
5077
  | Axis | Values |
5078
5078
  |---|---|
5079
5079
  | \`emphasis\` | \`ghost\`, \`muted\`, \`outlined\`, \`solid\`, \`subtle\` |
5080
5080
  | \`material\` | \`frosted\`, \`glass\`, \`transparent\` |
5081
+ | \`nesting\` | \`heading\`, \`peer\`, \`subordinate\` |
5081
5082
  | \`separation\` | \`elevated\`, \`filled\`, \`outlined\`, \`plain\` |
5083
+ | \`shape\` | \`arc\`, \`circle\`, \`dots\`, \`ring\`, \`rounded\`, \`square\`, \`text\` |
5082
5084
  | \`tone\` | The status and intent words: \`primary\`, \`accent\`, \`neutral\`, \`danger\`, and so on |
5083
5085
  | \`width\` | \`auto\`, \`full\`, \`standard\` |
5084
5086
 
@@ -5131,11 +5133,33 @@ on either tier.
5131
5133
  **What it may not be is a place to put something that is on an axis.** That is
5132
5134
  the failure mode \`appearance\` demonstrated.
5133
5135
 
5134
- ## \`tone\` is the one axis both tiers carry
5136
+ ## Some axes are carried by both tiers
5135
5137
 
5136
5138
  A styled axis never appears on the headless tier, which has nothing to paint and
5137
- no box to size. \`tone\` is the exception and a principled one: it says what a
5138
- thing *means*, and meaning survives having no stylesheet.
5139
+ no box to size. The exceptions are the axes that are not about paint. \`tone\` says
5140
+ what a thing *means*, and meaning survives having no stylesheet. \`shape\` says
5141
+ what gets *rendered*: a meter at \`ring\` emits an arc rather than a bar, so the
5142
+ markup differs before any rule is written. \`nesting\` says what depth *is*: a
5143
+ tree at \`subordinate\` ranks its rows, a tree at \`heading\` makes each branch the
5144
+ name of the list under it, a file explorer does neither, and that is true of a
5145
+ tree nobody has styled.
5146
+
5147
+ ## What a step inward means
5148
+
5149
+ \`nesting\` is the one axis whose values are three readings of the same fact, so
5150
+ it is worth saying which tree each is for.
5151
+
5152
+ | Value | The tree it suits | What moves |
5153
+ |---|---|---|
5154
+ | \`heading\` | A documentation sidebar, where a branch names the list it holds and is not a page | The branch, which takes the rail heading. Its children keep the row they had |
5155
+ | \`peer\` | A file explorer, where every row is the same kind of thing | Nothing. The indent is the whole of what depth says |
5156
+ | \`subordinate\` | Side navigation, a categorization, a facet list | The nested row, one step down the type scale and no further |
5157
+
5158
+ \`heading\` and \`subordinate\` are not one answer said twice. \`subordinate\` keys on
5159
+ depth and quiets the child; \`heading\` keys on holding children and relabels the
5160
+ parent, which is why a branch at any depth is a heading while the step below
5161
+ stops after one, and why a top-level leaf sitting beside a branch is left alone
5162
+ by both for opposite reasons.
5139
5163
  `,
5140
5164
  vue: `---
5141
5165
  description: The one compiler setting Vue needs, and why props and events already work.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix-docs",
3
3
  "description": "Versioned documentation content and registry for Helix.",
4
- "version": "0.33.5",
4
+ "version": "0.34.1",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -36,8 +36,8 @@
36
36
  },
37
37
  "bugs": "https://github.com/project-fusion/fusion/issues",
38
38
  "devDependencies": {
39
- "@fusion.dev/helix-cem": "0.33.5",
40
- "@fusion.dev/helix-testing": "0.33.5",
39
+ "@fusion.dev/helix-cem": "0.34.1",
40
+ "@fusion.dev/helix-testing": "0.34.1",
41
41
  "@fusion.dev/scripts": "0.0.0-dev",
42
42
  "lit": "^3.2.1",
43
43
  "playwright": "^1.62.1"