@fusion.dev/helix-docs 0.108.1 → 0.109.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.
- package/content/metrics.mdx +9 -9
- package/content/recipes.mdx +12 -4
- package/dist/sources.generated.js +21 -13
- package/package.json +3 -3
package/content/metrics.mdx
CHANGED
|
@@ -58,10 +58,10 @@ either barrel. The per-component tables show what your page pays.
|
|
|
58
58
|
| Package | Raw | Gzip | Brotli | |
|
|
59
59
|
|---|---|---|---|---|
|
|
60
60
|
| `@fusion.dev/helix-core` | 175,648 | 56,340 | 47,876 | The element base class, mixins, decorators, and floating positioning. |
|
|
61
|
-
| `@fusion.dev/helix-headless` |
|
|
61
|
+
| `@fusion.dev/helix-headless` | 716,216 | 185,618 | 144,397 | Every headless family. The barrel entry includes all of them. |
|
|
62
62
|
| `@fusion.dev/helix-icons` | 55,565 | 17,727 | 14,864 | The whole glyph set. |
|
|
63
63
|
| `@fusion.dev/helix-theme` | 3,288 | 1,571 | 1,355 | The derivation engine. Most sites run it at build time, and a theme switcher runs it in the browser. |
|
|
64
|
-
| `@fusion.dev/helix` | 1,
|
|
64
|
+
| `@fusion.dev/helix` | 1,246,037 | 291,522 | 213,793 | Every styled family. |
|
|
65
65
|
| `lit` | 15,394 | 6,118 | 5,460 | Lit itself, listed so you can subtract it from every row above. |
|
|
66
66
|
|
|
67
67
|
## Stylesheets
|
|
@@ -84,9 +84,9 @@ shows the whole cost of using the base layer on its own.
|
|
|
84
84
|
|
|
85
85
|
**Most of your first component is the shared runtime.** The median styled family is 20,604 bytes gzipped alone, and it adds 2,233 to a page that already has Helix. The shared runtime is 89 percent of the first component, and the component itself is 11 percent. Ten typical components cost the first number once, plus nine of the added number. The two columns in the tables below let you work that out for your own components.
|
|
86
86
|
|
|
87
|
-
Across the 103 styled components, the smallest is `code` at 9,782 bytes gzipped alone, and the largest is `data-table` at 62,
|
|
87
|
+
Across the 103 styled components, the smallest is `code` at 9,782 bytes gzipped alone, and the largest is `data-table` at 62,990. Every family together is 291,522.
|
|
88
88
|
|
|
89
|
-
No family imports a barrel. The `barrels` rule in `fusion workspace` enforces that. `@fusion.dev/helix-headless` marks every module in `dist` as having side effects, which is true of a file that calls `customElements.define`. A bundler can remove none of it. One `import { HelixHeadlessButton } from '@fusion.dev/helix-headless'` costs 185,
|
|
89
|
+
No family imports a barrel. The `barrels` rule in `fusion workspace` enforces that. `@fusion.dev/helix-headless` marks every module in `dist` as having side effects, which is true of a file that calls `customElements.define`. A bundler can remove none of it. One `import { HelixHeadlessButton } from '@fusion.dev/helix-headless'` costs 185,618 bytes gzipped, whatever else the page imports. That is 9 times the median family above. All 103 styled families import the headless family they extend directly. The rule checks the shape of the import, so it applies to any package that sets `sideEffects`, whatever its name.
|
|
90
90
|
|
|
91
91
|
The headless tier never had the problem, so it serves as the control. `@fusion.dev/helix-core` is `sideEffects: false`, and the median headless family is 21,055 bytes gzipped alone.
|
|
92
92
|
|
|
@@ -260,7 +260,7 @@ Structure, accessibility, state, and form participation. It has no presentation
|
|
|
260
260
|
| `stat` | 31,990 | 9,962 | 8,782 | 1,148 | 213 | 119 |
|
|
261
261
|
| `steps` | 95,678 | 30,919 | 25,246 | 6,177 | 1,502 | 1,164 |
|
|
262
262
|
| `switch` | 39,809 | 12,087 | 10,643 | 1,550 | 472 | 410 |
|
|
263
|
-
| `table` | 97,
|
|
263
|
+
| `table` | 97,890 | 32,123 | 26,195 | 10,158 | 2,842 | 2,351 |
|
|
264
264
|
| `tabs` | 39,606 | 12,059 | 10,597 | 3,925 | 893 | 641 |
|
|
265
265
|
| `tag` | 86,950 | 28,406 | 23,212 | 895 | 198 | 155 |
|
|
266
266
|
| `textarea` | 42,350 | 12,677 | 11,152 | 3,953 | 1,090 | 749 |
|
|
@@ -310,7 +310,7 @@ The headless tier plus presentation. `bun add @fusion.dev/helix` installs this t
|
|
|
310
310
|
| `combobox` | 159,990 | 48,783 | 41,021 | 36,020 | 7,936 | 6,553 |
|
|
311
311
|
| `command` | 125,630 | 38,230 | 31,442 | 28,637 | 6,743 | 5,562 |
|
|
312
312
|
| `copy-button` | 136,896 | 43,653 | 36,646 | 21,784 | 4,665 | 3,972 |
|
|
313
|
-
| `data-table` |
|
|
313
|
+
| `data-table` | 221,343 | 62,990 | 53,002 | 93,424 | 20,951 | 17,076 |
|
|
314
314
|
| `date-input` | 159,249 | 48,641 | 41,040 | 35,034 | 7,876 | 6,501 |
|
|
315
315
|
| `date-picker` | 104,346 | 33,365 | 27,288 | 15,499 | 3,909 | 3,160 |
|
|
316
316
|
| `description-list` | 33,983 | 10,434 | 9,183 | 3,502 | 796 | 605 |
|
|
@@ -369,7 +369,7 @@ The headless tier plus presentation. `bun add @fusion.dev/helix` installs this t
|
|
|
369
369
|
| `stat` | 34,806 | 10,587 | 9,343 | 3,954 | 849 | 744 |
|
|
370
370
|
| `steps` | 109,296 | 33,391 | 27,447 | 19,784 | 3,926 | 3,283 |
|
|
371
371
|
| `switch` | 44,077 | 13,135 | 11,529 | 5,803 | 1,545 | 1,370 |
|
|
372
|
-
| `table` |
|
|
372
|
+
| `table` | 103,484 | 33,304 | 27,192 | 15,746 | 4,038 | 3,406 |
|
|
373
373
|
| `tabs` | 45,842 | 13,332 | 11,742 | 10,154 | 2,208 | 1,761 |
|
|
374
374
|
| `tag` | 90,153 | 29,299 | 23,951 | 4,083 | 1,021 | 870 |
|
|
375
375
|
| `text` | 34,466 | 10,420 | 9,152 | 3,987 | 846 | 651 |
|
|
@@ -399,11 +399,11 @@ stripped column shows the bytes we removed.
|
|
|
399
399
|
| Package | Unpacked | Files | Source maps stripped | Runtime dependencies |
|
|
400
400
|
|---|---|---|---|---|
|
|
401
401
|
| `@fusion.dev/helix-core` | 1,127,867 | 165 | 249,701 | `@floating-ui/dom`, `@fusion.dev/helix-icons` |
|
|
402
|
-
| `@fusion.dev/helix-headless` | 13,
|
|
402
|
+
| `@fusion.dev/helix-headless` | 13,053,257 | 504 | 1,033,947 | `@fusion.dev/helix-core`, `@fusion.dev/helix-icons`, `uqr` |
|
|
403
403
|
| `@fusion.dev/helix-icons` | 150,162 | 21 | 50,346 | `svgo` |
|
|
404
404
|
| `@fusion.dev/helix-styles` | 102,108 | 6 | 0 | none |
|
|
405
405
|
| `@fusion.dev/helix-theme` | 465,413 | 8 | 4,703 | none |
|
|
406
|
-
| `@fusion.dev/helix` | 14,
|
|
406
|
+
| `@fusion.dev/helix` | 14,191,826 | 870 | 370,788 | `@fusion.dev/helix-core`, `@fusion.dev/helix-headless`, `@fusion.dev/helix-styles` |
|
|
407
407
|
|
|
408
408
|
## Not measured yet
|
|
409
409
|
|
package/content/recipes.mdx
CHANGED
|
@@ -112,7 +112,7 @@ In prose:
|
|
|
112
112
|
|
|
113
113
|
See [Typography](./typography).
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
Three Markdown constructs need components, because HTML alone cannot hold what
|
|
116
116
|
they need:
|
|
117
117
|
|
|
118
118
|
- **Fenced code** becomes `helix-code-block`, with the fence's language as its
|
|
@@ -121,8 +121,13 @@ they need:
|
|
|
121
121
|
tone. `NOTE` becomes `tone="info"`, `TIP` becomes `success`, `WARNING` becomes
|
|
122
122
|
`warning`, and `CAUTION` becomes `danger`. `IMPORTANT` has no tone. Each
|
|
123
123
|
callout is headed by its kind, as GitHub shows it.
|
|
124
|
+
- **Tables** become `helix-table`. A `<table>` squeezes its columns to fit, so
|
|
125
|
+
a narrow screen breaks a value such as `eu-central-1` across lines. The
|
|
126
|
+
header row becomes the table's columns, each aligned as the Markdown aligned
|
|
127
|
+
it. A column of short values stays whole, a column of sentences wraps, and a
|
|
128
|
+
table wider than the screen scrolls in its own box.
|
|
124
129
|
|
|
125
|
-
The `rehype` plugin from `@fusion.dev/helix/rehype` makes
|
|
130
|
+
The `rehype` plugin from `@fusion.dev/helix/rehype` makes all three changes in the
|
|
126
131
|
tree your Markdown library has already built. It parses nothing, so your
|
|
127
132
|
library, its dialect, and your sanitizing stay yours. Add it to any pipeline
|
|
128
133
|
that reaches rehype, such as `remark` with `remark-rehype`, `react-markdown`, or
|
|
@@ -141,10 +146,13 @@ const html = await unified()
|
|
|
141
146
|
|
|
142
147
|
Code that a highlighter colored before the plugin ran keeps its colors. Pass
|
|
143
148
|
`fences: false` if your page draws its own code blocks, `alerts: false` to keep
|
|
144
|
-
alerts as quotes,
|
|
149
|
+
alerts as quotes, `tables: false` to keep tables as HTML, and `headings` to
|
|
150
|
+
name each kind in your page's language. A table with a caption, a cell that
|
|
151
|
+
spans more than one column or row, or a heading cell outside its header row
|
|
152
|
+
stays HTML, because the grid cannot draw it as written.
|
|
145
153
|
|
|
146
154
|
> [!NOTE]
|
|
147
|
-
> The plugin changes only these
|
|
155
|
+
> The plugin changes only these three constructs. If the Markdown comes from your
|
|
148
156
|
> users, sanitize it in your pipeline before the plugin runs.
|
|
149
157
|
|
|
150
158
|
Prose spaces each component the same as the element it replaces.
|
|
@@ -2811,10 +2811,10 @@ either barrel. The per-component tables show what your page pays.
|
|
|
2811
2811
|
| Package | Raw | Gzip | Brotli | |
|
|
2812
2812
|
|---|---|---|---|---|
|
|
2813
2813
|
| \`@fusion.dev/helix-core\` | 175,648 | 56,340 | 47,876 | The element base class, mixins, decorators, and floating positioning. |
|
|
2814
|
-
| \`@fusion.dev/helix-headless\` |
|
|
2814
|
+
| \`@fusion.dev/helix-headless\` | 716,216 | 185,618 | 144,397 | Every headless family. The barrel entry includes all of them. |
|
|
2815
2815
|
| \`@fusion.dev/helix-icons\` | 55,565 | 17,727 | 14,864 | The whole glyph set. |
|
|
2816
2816
|
| \`@fusion.dev/helix-theme\` | 3,288 | 1,571 | 1,355 | The derivation engine. Most sites run it at build time, and a theme switcher runs it in the browser. |
|
|
2817
|
-
| \`@fusion.dev/helix\` | 1,
|
|
2817
|
+
| \`@fusion.dev/helix\` | 1,246,037 | 291,522 | 213,793 | Every styled family. |
|
|
2818
2818
|
| \`lit\` | 15,394 | 6,118 | 5,460 | Lit itself, listed so you can subtract it from every row above. |
|
|
2819
2819
|
|
|
2820
2820
|
## Stylesheets
|
|
@@ -2837,9 +2837,9 @@ shows the whole cost of using the base layer on its own.
|
|
|
2837
2837
|
|
|
2838
2838
|
**Most of your first component is the shared runtime.** The median styled family is 20,604 bytes gzipped alone, and it adds 2,233 to a page that already has Helix. The shared runtime is 89 percent of the first component, and the component itself is 11 percent. Ten typical components cost the first number once, plus nine of the added number. The two columns in the tables below let you work that out for your own components.
|
|
2839
2839
|
|
|
2840
|
-
Across the 103 styled components, the smallest is \`code\` at 9,782 bytes gzipped alone, and the largest is \`data-table\` at 62,
|
|
2840
|
+
Across the 103 styled components, the smallest is \`code\` at 9,782 bytes gzipped alone, and the largest is \`data-table\` at 62,990. Every family together is 291,522.
|
|
2841
2841
|
|
|
2842
|
-
No family imports a barrel. The \`barrels\` rule in \`fusion workspace\` enforces that. \`@fusion.dev/helix-headless\` marks every module in \`dist\` as having side effects, which is true of a file that calls \`customElements.define\`. A bundler can remove none of it. One \`import { HelixHeadlessButton } from '@fusion.dev/helix-headless'\` costs 185,
|
|
2842
|
+
No family imports a barrel. The \`barrels\` rule in \`fusion workspace\` enforces that. \`@fusion.dev/helix-headless\` marks every module in \`dist\` as having side effects, which is true of a file that calls \`customElements.define\`. A bundler can remove none of it. One \`import { HelixHeadlessButton } from '@fusion.dev/helix-headless'\` costs 185,618 bytes gzipped, whatever else the page imports. That is 9 times the median family above. All 103 styled families import the headless family they extend directly. The rule checks the shape of the import, so it applies to any package that sets \`sideEffects\`, whatever its name.
|
|
2843
2843
|
|
|
2844
2844
|
The headless tier never had the problem, so it serves as the control. \`@fusion.dev/helix-core\` is \`sideEffects: false\`, and the median headless family is 21,055 bytes gzipped alone.
|
|
2845
2845
|
|
|
@@ -3013,7 +3013,7 @@ Structure, accessibility, state, and form participation. It has no presentation
|
|
|
3013
3013
|
| \`stat\` | 31,990 | 9,962 | 8,782 | 1,148 | 213 | 119 |
|
|
3014
3014
|
| \`steps\` | 95,678 | 30,919 | 25,246 | 6,177 | 1,502 | 1,164 |
|
|
3015
3015
|
| \`switch\` | 39,809 | 12,087 | 10,643 | 1,550 | 472 | 410 |
|
|
3016
|
-
| \`table\` | 97,
|
|
3016
|
+
| \`table\` | 97,890 | 32,123 | 26,195 | 10,158 | 2,842 | 2,351 |
|
|
3017
3017
|
| \`tabs\` | 39,606 | 12,059 | 10,597 | 3,925 | 893 | 641 |
|
|
3018
3018
|
| \`tag\` | 86,950 | 28,406 | 23,212 | 895 | 198 | 155 |
|
|
3019
3019
|
| \`textarea\` | 42,350 | 12,677 | 11,152 | 3,953 | 1,090 | 749 |
|
|
@@ -3063,7 +3063,7 @@ The headless tier plus presentation. \`bun add @fusion.dev/helix\` installs this
|
|
|
3063
3063
|
| \`combobox\` | 159,990 | 48,783 | 41,021 | 36,020 | 7,936 | 6,553 |
|
|
3064
3064
|
| \`command\` | 125,630 | 38,230 | 31,442 | 28,637 | 6,743 | 5,562 |
|
|
3065
3065
|
| \`copy-button\` | 136,896 | 43,653 | 36,646 | 21,784 | 4,665 | 3,972 |
|
|
3066
|
-
| \`data-table\` |
|
|
3066
|
+
| \`data-table\` | 221,343 | 62,990 | 53,002 | 93,424 | 20,951 | 17,076 |
|
|
3067
3067
|
| \`date-input\` | 159,249 | 48,641 | 41,040 | 35,034 | 7,876 | 6,501 |
|
|
3068
3068
|
| \`date-picker\` | 104,346 | 33,365 | 27,288 | 15,499 | 3,909 | 3,160 |
|
|
3069
3069
|
| \`description-list\` | 33,983 | 10,434 | 9,183 | 3,502 | 796 | 605 |
|
|
@@ -3122,7 +3122,7 @@ The headless tier plus presentation. \`bun add @fusion.dev/helix\` installs this
|
|
|
3122
3122
|
| \`stat\` | 34,806 | 10,587 | 9,343 | 3,954 | 849 | 744 |
|
|
3123
3123
|
| \`steps\` | 109,296 | 33,391 | 27,447 | 19,784 | 3,926 | 3,283 |
|
|
3124
3124
|
| \`switch\` | 44,077 | 13,135 | 11,529 | 5,803 | 1,545 | 1,370 |
|
|
3125
|
-
| \`table\` |
|
|
3125
|
+
| \`table\` | 103,484 | 33,304 | 27,192 | 15,746 | 4,038 | 3,406 |
|
|
3126
3126
|
| \`tabs\` | 45,842 | 13,332 | 11,742 | 10,154 | 2,208 | 1,761 |
|
|
3127
3127
|
| \`tag\` | 90,153 | 29,299 | 23,951 | 4,083 | 1,021 | 870 |
|
|
3128
3128
|
| \`text\` | 34,466 | 10,420 | 9,152 | 3,987 | 846 | 651 |
|
|
@@ -3152,11 +3152,11 @@ stripped column shows the bytes we removed.
|
|
|
3152
3152
|
| Package | Unpacked | Files | Source maps stripped | Runtime dependencies |
|
|
3153
3153
|
|---|---|---|---|---|
|
|
3154
3154
|
| \`@fusion.dev/helix-core\` | 1,127,867 | 165 | 249,701 | \`@floating-ui/dom\`, \`@fusion.dev/helix-icons\` |
|
|
3155
|
-
| \`@fusion.dev/helix-headless\` | 13,
|
|
3155
|
+
| \`@fusion.dev/helix-headless\` | 13,053,257 | 504 | 1,033,947 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-icons\`, \`uqr\` |
|
|
3156
3156
|
| \`@fusion.dev/helix-icons\` | 150,162 | 21 | 50,346 | \`svgo\` |
|
|
3157
3157
|
| \`@fusion.dev/helix-styles\` | 102,108 | 6 | 0 | none |
|
|
3158
3158
|
| \`@fusion.dev/helix-theme\` | 465,413 | 8 | 4,703 | none |
|
|
3159
|
-
| \`@fusion.dev/helix\` | 14,
|
|
3159
|
+
| \`@fusion.dev/helix\` | 14,191,826 | 870 | 370,788 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-headless\`, \`@fusion.dev/helix-styles\` |
|
|
3160
3160
|
|
|
3161
3161
|
## Not measured yet
|
|
3162
3162
|
|
|
@@ -3904,7 +3904,7 @@ In prose:
|
|
|
3904
3904
|
|
|
3905
3905
|
See [Typography](./typography).
|
|
3906
3906
|
|
|
3907
|
-
|
|
3907
|
+
Three Markdown constructs need components, because HTML alone cannot hold what
|
|
3908
3908
|
they need:
|
|
3909
3909
|
|
|
3910
3910
|
- **Fenced code** becomes \`helix-code-block\`, with the fence's language as its
|
|
@@ -3913,8 +3913,13 @@ they need:
|
|
|
3913
3913
|
tone. \`NOTE\` becomes \`tone="info"\`, \`TIP\` becomes \`success\`, \`WARNING\` becomes
|
|
3914
3914
|
\`warning\`, and \`CAUTION\` becomes \`danger\`. \`IMPORTANT\` has no tone. Each
|
|
3915
3915
|
callout is headed by its kind, as GitHub shows it.
|
|
3916
|
+
- **Tables** become \`helix-table\`. A \`<table>\` squeezes its columns to fit, so
|
|
3917
|
+
a narrow screen breaks a value such as \`eu-central-1\` across lines. The
|
|
3918
|
+
header row becomes the table's columns, each aligned as the Markdown aligned
|
|
3919
|
+
it. A column of short values stays whole, a column of sentences wraps, and a
|
|
3920
|
+
table wider than the screen scrolls in its own box.
|
|
3916
3921
|
|
|
3917
|
-
The \`rehype\` plugin from \`@fusion.dev/helix/rehype\` makes
|
|
3922
|
+
The \`rehype\` plugin from \`@fusion.dev/helix/rehype\` makes all three changes in the
|
|
3918
3923
|
tree your Markdown library has already built. It parses nothing, so your
|
|
3919
3924
|
library, its dialect, and your sanitizing stay yours. Add it to any pipeline
|
|
3920
3925
|
that reaches rehype, such as \`remark\` with \`remark-rehype\`, \`react-markdown\`, or
|
|
@@ -3933,10 +3938,13 @@ const html = await unified()
|
|
|
3933
3938
|
|
|
3934
3939
|
Code that a highlighter colored before the plugin ran keeps its colors. Pass
|
|
3935
3940
|
\`fences: false\` if your page draws its own code blocks, \`alerts: false\` to keep
|
|
3936
|
-
alerts as quotes,
|
|
3941
|
+
alerts as quotes, \`tables: false\` to keep tables as HTML, and \`headings\` to
|
|
3942
|
+
name each kind in your page's language. A table with a caption, a cell that
|
|
3943
|
+
spans more than one column or row, or a heading cell outside its header row
|
|
3944
|
+
stays HTML, because the grid cannot draw it as written.
|
|
3937
3945
|
|
|
3938
3946
|
> [!NOTE]
|
|
3939
|
-
> The plugin changes only these
|
|
3947
|
+
> The plugin changes only these three constructs. If the Markdown comes from your
|
|
3940
3948
|
> users, sanitize it in your pipeline before the plugin runs.
|
|
3941
3949
|
|
|
3942
3950
|
Prose spaces each component the same as the element it replaces.
|
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.
|
|
4
|
+
"version": "0.109.0",
|
|
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.
|
|
40
|
-
"@fusion.dev/helix-testing": "0.
|
|
39
|
+
"@fusion.dev/helix-cem": "0.109.0",
|
|
40
|
+
"@fusion.dev/helix-testing": "0.109.0",
|
|
41
41
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
42
42
|
"lit": "^3.2.1",
|
|
43
43
|
"playwright": "^1.62.1"
|