@fusion.dev/helix-docs 0.139.0 → 0.141.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.
@@ -837,14 +837,18 @@ separation](./surfaces-and-separation).
837
837
  Inks are the colors that go on grounds. The base ink is \`foreground\`.
838
838
 
839
839
  - \`foreground-muted\` and \`foreground-subtle\` are for text that recedes.
840
- - \`foreground-on-accent\` is for text on a filled accent color.
840
+ - Text on a filled color takes the ink named for that fill:
841
+ - \`foreground-on-primary\` on \`primary-surface\`
842
+ - \`foreground-on-accent\` on \`accent-surface\`
843
+ - \`foreground-on-status\` on the four status fills
841
844
 
842
845
  ### Intent
843
846
 
844
847
  Intent colors show what something means.
845
848
 
846
849
  - \`primary\` and \`accent\` are for emphasis. Each has \`-hover\`, \`-active\`, and
847
- \`-subtle\` variants.
850
+ \`-subtle\` variants. With no brand color set, both are ink: near-black in
851
+ light mode and near-white in dark mode.
848
852
  - \`info\`, \`success\`, \`warning\`, and \`danger\` are for status. Each has a
849
853
  \`-surface\` and a \`-surface-hover\` variant for the tinted box that holds the
850
854
  message.
@@ -873,9 +877,10 @@ OKLCH lets the theme engine *solve* for a palette from your brand color. See
873
877
 
874
878
  ## How the engine meets contrast targets
875
879
 
876
- The engine measures each ink against the ground it will be painted on. It then
877
- searches for the lightness that meets the target. Every pair it produces meets
878
- the target.
880
+ The engine measures each ink against the ground it will be painted on. A brand
881
+ color that already meets the target there is used as it is. For any other color,
882
+ the engine searches for the lightness that meets the target. Every pair it
883
+ produces meets the target.
879
884
 
880
885
  The engine can solve only the pairs it knows about, so we check two things:
881
886
 
@@ -2356,16 +2361,17 @@ const theme = engine.derive({ brand: '#2563eb' })
2356
2361
 
2357
2362
  [Deriving a theme](./theming) shows how Node loads the engine.
2358
2363
 
2359
- **\`brand\` is the only required input.** Every other field has a default,
2360
- computed from \`brand\` or from the Helix design language. A theme that sets only
2361
- \`brand\` is a valid theme.
2364
+ **Every input is optional.** With no \`brand\`, the theme is ink: the primary
2365
+ color is near-black in light mode and near-white in dark mode. Every other field
2366
+ has a default, computed from \`brand\` or from the Helix design language, so an
2367
+ empty intent, \`{}\`, is a valid theme.
2362
2368
 
2363
2369
  ## Color
2364
2370
 
2365
2371
  | Field | What it controls |
2366
2372
  |---|---|
2367
- | \`brand\` | Your main brand color. Required |
2368
- | \`accent\` | The second emphasis color. Defaults to the brand color. \`{ from: 'brand', rotate: 180 }\` gives the complementary color |
2373
+ | \`brand\` | Your main brand color, or \`{ light, dark }\` for a different one in each mode. Without one, the theme is ink, and so is a mode the pair leaves out |
2374
+ | \`accent\` | The second emphasis color. Defaults to the brand color, or to ink with no brand. \`{ from: 'brand', rotate: 180 }\` gives the complementary color, and needs a brand |
2369
2375
  | \`background\` | The page's color, \`{ light, dark }\`, for a page that is not pure white or pure black. The surfaces keep their contrast with it, and the grays take its tint. A page no text color can reach the contrast target on is refused |
2370
2376
  | \`neutral\` | The gray ramp, which can be tinted toward the brand. With \`background\`, it takes the page's tint |
2371
2377
  | \`status\` | \`info\`, \`success\`, \`warning\`, and \`danger\`. A color pins one. An object adjusts its hue while it keeps its meaning |
@@ -2373,6 +2379,12 @@ computed from \`brand\` or from the Helix design language. A theme that sets onl
2373
2379
  | \`scheme\` | \`'light'\` or \`'dark'\`, for a theme that has only one mode |
2374
2380
  | \`tokens\` | Literal overrides by token name, for values no other field sets |
2375
2381
 
2382
+ **A brand color that already meets the contrast target is used as it is.**
2383
+ Where it clears every surface it lands on, it is the primary color, and where
2384
+ its label clears on it, it is the fill. A navy brand stays navy on a light page.
2385
+ A color that does not meet the target keeps its hue and chroma, and its
2386
+ lightness moves only as far as the target needs.
2387
+
2376
2388
  \`accent\` can be defined relative to the brand. \`status\` colors cannot. If
2377
2389
  \`danger\` rotated with the brand, your users would have to learn a new warning
2378
2390
  color for each product.
@@ -2385,7 +2397,9 @@ settings:
2385
2397
  - \`scale\` multiplies the chroma the brand color supplies.
2386
2398
 
2387
2399
  Both apply to every derived color, including the brand color, because in a
2388
- monotone theme the brand is gray too. Neither applies to a color you pinned. A
2400
+ monotone theme the brand is gray too. A gray brand is solved like any other, to
2401
+ the gray nearest the page that meets the contrast target, which is a mid gray.
2402
+ For black and white, leave out \`brand\`. Neither applies to a color you pinned. A
2389
2403
  pinned color is used exactly as you set it.
2390
2404
 
2391
2405
  ## Contrast
@@ -2815,15 +2829,15 @@ fixes a sanitizing flaw in earlier versions, so use 6.4.1 or later.
2815
2829
  - Land uses \`surface\`.
2816
2830
  - Water uses \`info\`.
2817
2831
  - Parks use \`success\`.
2818
- - Main roads use \`primary\`, your brand color.
2832
+ - Main roads use \`primary\`, your brand color, or ink with no brand.
2819
2833
  - Smaller roads, buildings, borders, and labels use \`foreground\`.
2820
2834
 
2821
2835
  It also draws landmarks, highway signs, and neighborhood names:
2822
2836
 
2823
2837
  - A landmark is an icon on a disc and its name, in a color for its kind:
2824
2838
  parks, museums, schools, hotels, hospitals, stations, and stadiums from zoom
2825
- 14, and food and shops from zoom 16. Each color is a fixed hue at your brand
2826
- color's lightness, so the kinds stay apart in any theme.
2839
+ 14, and food and shops from zoom 16. Each color is a fixed hue at the
2840
+ lightness of \`primary\`, so the kinds stay apart in any theme.
2827
2841
  - A highway's number is on its sign, drawn to the Federal Highway
2828
2842
  Administration's outlines: the red and blue Interstate shield, the white US
2829
2843
  route shield, the white circle of a state route, and a plain plate for other
@@ -3391,7 +3405,7 @@ on its own.
3391
3405
 
3392
3406
  | | Raw | Gzip | Brotli |
3393
3407
  |---|---|---|---|
3394
- | Lit and \`@fusion.dev/helix-core\` | 184,700 | 58,886 | 49,891 |
3408
+ | Lit and \`@fusion.dev/helix-core\` | 186,211 | 59,378 | 50,238 |
3395
3409
 
3396
3410
  ## Whole packages
3397
3411
 
@@ -3402,11 +3416,11 @@ either barrel. The per-component tables show what your page pays.
3402
3416
 
3403
3417
  | Package | Raw | Gzip | Brotli | |
3404
3418
  |---|---|---|---|---|
3405
- | \`@fusion.dev/helix-core\` | 184,254 | 58,481 | 49,601 | The element base class, mixins, decorators, and floating positioning. |
3406
- | \`@fusion.dev/helix-headless\` | 747,036 | 193,631 | 150,198 | Every headless family. The barrel entry includes all of them. |
3419
+ | \`@fusion.dev/helix-core\` | 185,764 | 59,007 | 49,979 | The element base class, mixins, decorators, and floating positioning. |
3420
+ | \`@fusion.dev/helix-headless\` | 749,093 | 194,398 | 150,742 | Every headless family. The barrel entry includes all of them. |
3407
3421
  | \`@fusion.dev/helix-icons\` | 55,565 | 17,727 | 14,864 | The whole glyph set. |
3408
3422
  | \`@fusion.dev/helix-theme\` | 3,626 | 1,597 | 1,384 | The derivation engine. Most sites run it at build time, and a theme switcher runs it in the browser. |
3409
- | \`@fusion.dev/helix\` | 1,292,880 | 302,349 | 221,004 | Every styled family. |
3423
+ | \`@fusion.dev/helix\` | 1,296,493 | 303,277 | 221,588 | Every styled family. |
3410
3424
  | \`lit\` | 15,394 | 6,118 | 5,460 | Lit itself, listed so you can subtract it from every row above. |
3411
3425
 
3412
3426
  ## Stylesheets
@@ -3419,21 +3433,21 @@ shows the whole cost of using the base layer on its own.
3419
3433
 
3420
3434
  | File | Raw | Gzip | Brotli | |
3421
3435
  |---|---|---|---|---|
3422
- | \`base.css\` | 30,785 | 4,456 | 3,871 | The base layer. It styles markup Helix does not render, and it works with no JavaScript. |
3436
+ | \`base.css\` | 30,786 | 4,465 | 3,884 | The base layer. It styles markup Helix does not render, and it works with no JavaScript. |
3423
3437
  | \`elements.css\` | 8,807 | 1,488 | 1,318 | Hides each element until its definition loads. It is generated from the tags in \`@fusion.dev/helix\`. |
3424
3438
  | \`helix.css\` | 207 | 148 | 118 | The other four stylesheets in one import, in the order they must load. |
3425
- | \`primitives.css\` | 6,390 | 1,260 | 1,084 | The primitive layer. It is private, and it ships because \`tokens.css\` refers to it. |
3426
- | \`tokens.css\` | 20,987 | 2,567 | 2,138 | The 191 semantic tokens. Every styled component needs them. |
3439
+ | \`primitives.css\` | 7,510 | 1,402 | 1,201 | The primitive layer. It is private, and it ships because \`tokens.css\` refers to it. |
3440
+ | \`tokens.css\` | 22,349 | 2,664 | 2,247 | The 193 semantic tokens. Every styled component needs them. |
3427
3441
 
3428
3442
  ## What the numbers say
3429
3443
 
3430
- **Most of your first component is the shared runtime.** The median styled family is 21,564 bytes gzipped alone, and it adds 2,275 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.
3444
+ **Most of your first component is the shared runtime.** The median styled family is 21,977 bytes gzipped alone, and it adds 2,262 to a page that already has Helix. The shared runtime is 90 percent of the first component, and the component itself is 10 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.
3431
3445
 
3432
- Across the 104 styled components, the smallest is \`code\` at 10,117 bytes gzipped alone, and the largest is \`data-table\` at 64,035. Every family together is 302,349.
3446
+ Across the 104 styled components, the smallest is \`code\` at 10,492 bytes gzipped alone, and the largest is \`data-table\` at 64,440. Every family together is 303,277.
3433
3447
 
3434
- 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 193,631 bytes gzipped, whatever else the page imports. That is 9 times the median family above. All 104 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.
3448
+ 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 194,398 bytes gzipped, whatever else the page imports. That is 9 times the median family above. All 104 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.
3435
3449
 
3436
- 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 22,142 bytes gzipped alone.
3450
+ 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 22,536 bytes gzipped alone.
3437
3451
 
3438
3452
  ## Compared with other systems
3439
3453
 
@@ -3445,43 +3459,43 @@ The table has no whole-library row. That row would compare how many components e
3445
3459
 
3446
3460
  | Component | System | Raw | Gzip | Brotli |
3447
3461
  |---|---|---|---|---|
3448
- | \`button\` | **Helix** | 44,414 | 12,806 | 11,246 |
3462
+ | \`button\` | **Helix** | 45,627 | 13,160 | 11,553 |
3449
3463
  | | Carbon | 133,058 | 20,959 | 17,685 |
3450
3464
  | | Material Web | 47,060 | 14,173 | 12,591 |
3451
3465
  | | Shoelace | 62,628 | 18,287 | 15,805 |
3452
3466
  | | Spectrum | 98,792 | 22,045 | 18,674 |
3453
- | \`checkbox\` | **Helix** | 49,582 | 14,135 | 12,414 |
3467
+ | \`checkbox\` | **Helix** | 50,794 | 14,479 | 12,765 |
3454
3468
  | | Carbon | 60,255 | 15,609 | 13,550 |
3455
3469
  | | Material Web | 43,785 | 13,556 | 12,015 |
3456
3470
  | | Shoelace | 47,614 | 15,177 | 13,301 |
3457
3471
  | | Spectrum | 62,492 | 15,437 | 13,481 |
3458
- | \`dialog\` | **Helix** | 41,370 | 12,321 | 10,846 |
3472
+ | \`dialog\` | **Helix** | 42,582 | 12,668 | 11,140 |
3459
3473
  | | Carbon | 510,866 | 67,390 | 39,189 |
3460
3474
  | | Material Web | 34,238 | 11,510 | 10,229 |
3461
3475
  | | Shoelace | 52,754 | 17,698 | 15,554 |
3462
3476
  | | Spectrum | 155,708 | 31,899 | 26,262 |
3463
- | \`radio\` | **Helix** | 52,999 | 14,579 | 12,789 |
3477
+ | \`radio\` | **Helix** | 54,213 | 14,925 | 13,148 |
3464
3478
  | | Carbon | 63,055 | 16,887 | 14,605 |
3465
3479
  | | Material Web | 41,044 | 13,234 | 11,757 |
3466
3480
  | | Shoelace | 34,865 | 12,027 | 10,559 |
3467
3481
  | | Spectrum | 38,685 | 10,660 | 9,370 |
3468
- | \`switch\` | **Helix** | 46,571 | 13,635 | 11,956 |
3482
+ | \`switch\` | **Helix** | 47,784 | 13,981 | 12,276 |
3469
3483
  | | Carbon | 69,423 | 17,127 | 14,764 |
3470
3484
  | | Material Web | 50,155 | 14,577 | 12,935 |
3471
3485
  | | Shoelace | 37,833 | 11,814 | 10,568 |
3472
3486
  | | Spectrum | 62,322 | 15,059 | 13,321 |
3473
- | \`tabs\` | **Helix** | 47,681 | 13,680 | 12,037 |
3487
+ | \`tabs\` | **Helix** | 48,895 | 14,048 | 12,331 |
3474
3488
  | | Carbon | 578,766 | 73,537 | 43,235 |
3475
3489
  | | Material Web | 38,883 | 12,820 | 11,368 |
3476
3490
  | | Shoelace | 54,573 | 17,140 | 15,068 |
3477
3491
  | | Spectrum | 64,875 | 18,298 | 16,283 |
3478
- | \`tooltip\` | **Helix** | 68,261 | 22,173 | 19,588 |
3492
+ | \`tooltip\` | **Helix** | 69,601 | 22,599 | 19,919 |
3479
3493
  | | Carbon | 189,382 | 30,354 | 22,273 |
3480
3494
  | | Material Web | | not shipped | |
3481
3495
  | | Shoelace | 57,412 | 20,220 | 17,933 |
3482
3496
  | | Spectrum | 136,599 | 40,552 | 35,286 |
3483
3497
 
3484
- At least one system is smaller than Helix on \`checkbox\`, \`dialog\`, \`radio\`, \`switch\`, \`tabs\`, \`tooltip\`. The largest gap is radio against Spectrum, at 3,919 bytes gzipped. 8 of 28 peer measurements are smaller than the Helix row.
3498
+ At least one system is smaller than Helix on \`checkbox\`, \`dialog\`, \`radio\`, \`switch\`, \`tabs\`, \`tooltip\`. The largest gap is radio against Spectrum, at 4,265 bytes gzipped. 8 of 28 peer measurements are smaller than the Helix row.
3485
3499
 
3486
3500
  - **Carbon** \`@carbon/web-components@2.61.0\`. Its dialog is Modal, its radio is Radio Button, and its switch is Toggle.
3487
3501
  - **Material Web** \`@material/web@2.5.0\`. Ships no tooltip. Its button is measured as the filled one, there being no single button element.
@@ -3525,104 +3539,104 @@ Structure, accessibility, state, and form participation. It has no presentation
3525
3539
 
3526
3540
  | Family | Alone raw | Alone gzip | Alone brotli | Added raw | Added gzip | Added brotli |
3527
3541
  |---|---|---|---|---|---|---|
3528
- | \`accordion\` | 92,933 | 30,311 | 24,728 | 2,875 | 746 | 646 |
3529
- | \`announcement\` | 90,349 | 29,487 | 24,032 | 1,386 | 354 | 229 |
3530
- | \`app-header\` | 33,935 | 10,411 | 9,155 | 1,248 | 264 | 204 |
3531
- | \`area-chart\` | 79,857 | 26,384 | 23,207 | 11,004 | 3,364 | 2,736 |
3532
- | \`avatar\` | 35,984 | 11,004 | 9,714 | 3,257 | 872 | 667 |
3533
- | \`badge\` | 33,471 | 10,339 | 9,082 | 1,163 | 303 | 216 |
3534
- | \`bar-chart\` | 81,508 | 26,741 | 23,570 | 12,644 | 3,712 | 2,996 |
3535
- | \`blockquote\` | 33,485 | 10,362 | 9,128 | 774 | 173 | 166 |
3536
- | \`breadcrumbs\` | 89,389 | 28,841 | 23,663 | 1,965 | 449 | 278 |
3537
- | \`button\` | 38,157 | 11,625 | 10,193 | 3,194 | 815 | 623 |
3538
- | \`button-group\` | 33,341 | 10,250 | 8,992 | 661 | 140 | 8 |
3539
- | \`callout\` | 88,509 | 28,702 | 23,584 | 914 | 241 | 98 |
3540
- | \`canvas\` | 94,558 | 27,928 | 24,439 | 50,034 | 14,941 | 12,585 |
3541
- | \`card\` | 33,375 | 10,260 | 9,037 | 694 | 138 | 79 |
3542
- | \`carousel\` | 98,792 | 31,821 | 26,130 | 10,942 | 2,757 | 2,297 |
3543
- | \`chat\` | 112,181 | 36,670 | 30,111 | 17,447 | 5,098 | 4,285 |
3544
- | \`checkbox\` | 42,974 | 12,680 | 11,110 | 2,821 | 775 | 513 |
3545
- | \`checkbox-group\` | 46,098 | 13,363 | 11,751 | 5,425 | 1,341 | 979 |
3546
- | \`code\` | 31,960 | 9,827 | 8,650 | 451 | 80 | 87 |
3547
- | \`code-block\` | 134,264 | 43,848 | 36,971 | 17,317 | 4,515 | 3,727 |
3548
- | \`color-input\` | 152,339 | 47,901 | 40,401 | 25,819 | 6,026 | 4,974 |
3549
- | \`color-picker\` | 118,710 | 37,314 | 30,642 | 19,642 | 4,725 | 3,981 |
3550
- | \`combobox\` | 147,154 | 46,585 | 39,135 | 21,177 | 5,231 | 4,239 |
3551
- | \`command\` | 117,073 | 36,594 | 29,920 | 18,065 | 4,584 | 3,727 |
3552
- | \`copy-button\` | 128,845 | 42,215 | 35,435 | 11,895 | 2,946 | 2,440 |
3553
- | \`data-table\` | 187,483 | 57,115 | 48,250 | 57,452 | 14,544 | 11,974 |
3554
- | \`date-input\` | 145,413 | 46,072 | 38,726 | 19,209 | 4,837 | 3,946 |
3555
- | \`date-picker\` | 100,568 | 32,548 | 26,554 | 9,900 | 2,706 | 2,232 |
3556
- | \`description-list\` | 33,444 | 10,202 | 8,962 | 1,132 | 183 | 36 |
3557
- | \`dialog\` | 36,993 | 11,293 | 9,956 | 2,717 | 759 | 639 |
3558
- | \`divider\` | 33,691 | 10,441 | 9,159 | 981 | 237 | 167 |
3559
- | \`donut-chart\` | 77,640 | 25,353 | 22,388 | 10,214 | 2,965 | 2,429 |
3560
- | \`drawer\` | 35,746 | 10,938 | 9,607 | 1,761 | 470 | 299 |
3561
- | \`drilldown\` | 97,434 | 31,680 | 25,802 | 5,704 | 1,470 | 1,119 |
3562
- | \`empty\` | 33,938 | 10,493 | 9,222 | 956 | 240 | 183 |
3563
- | \`file-input\` | 100,932 | 32,528 | 26,585 | 6,266 | 1,805 | 1,512 |
3564
- | \`filter-input\` | 157,675 | 49,275 | 41,561 | 28,023 | 6,777 | 5,531 |
3565
- | \`format-date\` | 36,954 | 11,421 | 10,072 | 2,867 | 691 | 535 |
3566
- | \`graph\` | 115,140 | 36,644 | 30,099 | 11,479 | 3,247 | 2,753 |
3567
- | \`heatmap\` | 78,862 | 25,570 | 22,571 | 10,872 | 2,986 | 2,328 |
3568
- | \`icon\` | 88,076 | 28,513 | 23,333 | 1,018 | 242 | 144 |
3569
- | \`icon-button\` | 38,556 | 11,655 | 10,221 | 3,593 | 851 | 642 |
3570
- | \`image\` | 35,514 | 10,798 | 9,497 | 3,156 | 805 | 604 |
3571
- | \`input\` | 99,969 | 32,001 | 26,155 | 4,745 | 1,292 | 836 |
3572
- | \`kbd\` | 35,295 | 11,036 | 9,700 | 2,976 | 922 | 629 |
3573
- | \`legend\` | 37,347 | 11,531 | 10,135 | 1,080 | 271 | 152 |
3574
- | \`lightbox\` | 41,729 | 12,579 | 11,052 | 4,807 | 1,230 | 958 |
3575
- | \`line-chart\` | 79,438 | 26,082 | 23,021 | 10,667 | 3,085 | 2,516 |
3576
- | \`list\` | 34,397 | 10,442 | 9,163 | 1,726 | 340 | 168 |
3577
- | \`listbox\` | 108,785 | 34,708 | 28,259 | 11,262 | 3,059 | 2,416 |
3578
- | \`loader\` | 33,581 | 10,366 | 9,120 | 900 | 231 | 96 |
3579
- | \`map\` | 133,750 | 39,850 | 33,039 | 33,027 | 7,692 | 6,229 |
3580
- | \`megamenu\` | 63,839 | 21,086 | 18,598 | 4,941 | 1,275 | 1,001 |
3581
- | \`menu\` | 127,561 | 42,125 | 35,240 | 8,855 | 2,197 | 1,722 |
3582
- | \`meter\` | 36,771 | 11,219 | 9,884 | 4,099 | 1,052 | 896 |
3583
- | \`navigation\` | 35,330 | 10,910 | 9,594 | 1,417 | 326 | 260 |
3584
- | \`notifications\` | 104,613 | 33,280 | 27,158 | 11,383 | 2,634 | 2,149 |
3585
- | \`number-input\` | 102,897 | 32,813 | 26,797 | 7,670 | 2,016 | 1,490 |
3586
- | \`object-inspector\` | 141,963 | 46,417 | 39,154 | 19,579 | 5,231 | 4,382 |
3587
- | \`option\` | 35,636 | 10,808 | 9,507 | 2,958 | 638 | 432 |
3588
- | \`outline\` | 38,699 | 12,090 | 10,646 | 4,628 | 1,317 | 972 |
3589
- | \`pagination\` | 151,250 | 47,290 | 39,683 | 27,821 | 6,516 | 5,251 |
3590
- | \`pin-input\` | 45,154 | 13,431 | 11,836 | 5,241 | 1,553 | 1,135 |
3591
- | \`popover\` | 61,045 | 20,327 | 17,963 | 1,899 | 483 | 380 |
3592
- | \`progress\` | 34,622 | 10,643 | 9,355 | 1,951 | 483 | 296 |
3593
- | \`qr-code\` | 45,271 | 14,682 | 12,928 | 12,983 | 4,866 | 3,989 |
3594
- | \`quote\` | 32,864 | 10,122 | 8,888 | 552 | 129 | 90 |
3595
- | \`radio\` | 44,703 | 13,064 | 11,465 | 2,874 | 723 | 521 |
3596
- | \`rating\` | 46,868 | 14,029 | 12,397 | 6,646 | 1,866 | 1,421 |
3597
- | \`scatter-chart\` | 79,342 | 26,006 | 22,949 | 11,346 | 3,375 | 2,711 |
3598
- | \`scroll-area\` | 35,107 | 10,805 | 9,483 | 2,743 | 741 | 551 |
3599
- | \`select\` | 139,360 | 44,710 | 37,443 | 16,144 | 4,079 | 3,094 |
3600
- | \`skeleton\` | 32,053 | 9,859 | 8,656 | 544 | 105 | 75 |
3601
- | \`skip-link\` | 33,643 | 10,433 | 9,138 | 1,178 | 336 | 264 |
3602
- | \`slider\` | 45,693 | 13,462 | 11,872 | 5,627 | 1,513 | 1,244 |
3603
- | \`sparkline\` | 39,766 | 12,573 | 11,094 | 2,387 | 794 | 588 |
3604
- | \`speed-dial\` | 119,070 | 39,727 | 33,363 | 3,743 | 917 | 774 |
3605
- | \`splitter\` | 43,146 | 12,879 | 11,399 | 10,282 | 2,596 | 2,080 |
3606
- | \`stat\` | 33,829 | 10,300 | 9,079 | 1,148 | 179 | 62 |
3607
- | \`steps\` | 97,649 | 31,312 | 25,628 | 6,294 | 1,503 | 1,204 |
3608
- | \`switch\` | 42,205 | 12,564 | 11,021 | 1,650 | 481 | 234 |
3609
- | \`table\` | 99,759 | 32,493 | 26,484 | 10,158 | 2,813 | 2,265 |
3610
- | \`tabs\` | 41,445 | 12,408 | 10,863 | 3,925 | 841 | 575 |
3611
- | \`tag\` | 88,802 | 28,769 | 23,478 | 908 | 196 | 197 |
3612
- | \`textarea\` | 44,392 | 13,083 | 11,511 | 3,996 | 1,067 | 812 |
3613
- | \`time-input\` | 158,543 | 49,295 | 41,480 | 29,048 | 7,066 | 5,807 |
3614
- | \`time-picker\` | 117,628 | 37,289 | 30,519 | 19,136 | 5,102 | 4,113 |
3615
- | \`timeline\` | 89,238 | 28,765 | 23,637 | 1,809 | 377 | 288 |
3616
- | \`toast\` | 92,595 | 29,896 | 24,423 | 4,078 | 954 | 726 |
3617
- | \`toggle\` | 46,389 | 13,594 | 12,016 | 3,342 | 814 | 584 |
3618
- | \`toolbar\` | 35,435 | 10,996 | 9,649 | 2,624 | 715 | 503 |
3619
- | \`tooltip\` | 65,183 | 21,417 | 18,945 | 6,369 | 1,717 | 1,311 |
3620
- | \`tour\` | 71,065 | 22,866 | 20,133 | 11,095 | 2,757 | 2,255 |
3621
- | \`tree\` | 99,453 | 32,115 | 26,157 | 7,223 | 1,894 | 1,486 |
3622
- | \`trend\` | 88,116 | 28,558 | 23,444 | 1,056 | 274 | 260 |
3623
- | \`video\` | 155,778 | 48,921 | 41,326 | 32,520 | 7,630 | 6,458 |
3624
- | \`video-playlist\` | 135,051 | 43,728 | 36,637 | 14,940 | 3,428 | 2,784 |
3625
- | \`virtual-list\` | 39,293 | 12,270 | 10,804 | 2,413 | 720 | 472 |
3542
+ | \`accordion\` | 94,146 | 30,683 | 25,053 | 2,875 | 725 | 613 |
3543
+ | \`announcement\` | 91,561 | 29,855 | 24,275 | 1,386 | 365 | 337 |
3544
+ | \`app-header\` | 35,147 | 10,773 | 9,481 | 1,248 | 260 | 265 |
3545
+ | \`area-chart\` | 81,239 | 26,783 | 23,668 | 11,166 | 3,382 | 2,828 |
3546
+ | \`avatar\` | 37,234 | 11,387 | 10,034 | 3,296 | 894 | 763 |
3547
+ | \`badge\` | 34,683 | 10,703 | 9,377 | 1,163 | 300 | 261 |
3548
+ | \`bar-chart\` | 82,848 | 27,157 | 23,956 | 12,769 | 3,695 | 3,127 |
3549
+ | \`blockquote\` | 34,697 | 10,730 | 9,416 | 774 | 176 | 174 |
3550
+ | \`breadcrumbs\` | 90,601 | 29,203 | 23,959 | 1,965 | 443 | 402 |
3551
+ | \`button\` | 39,369 | 11,986 | 10,544 | 3,195 | 817 | 676 |
3552
+ | \`button-group\` | 34,553 | 10,610 | 9,332 | 661 | 140 | 173 |
3553
+ | \`callout\` | 89,781 | 29,092 | 23,929 | 975 | 274 | 220 |
3554
+ | \`canvas\` | 95,827 | 28,300 | 24,785 | 50,036 | 14,959 | 12,629 |
3555
+ | \`card\` | 34,587 | 10,627 | 9,363 | 694 | 139 | 135 |
3556
+ | \`carousel\` | 100,004 | 32,186 | 26,390 | 10,943 | 2,734 | 2,366 |
3557
+ | \`chat\` | 113,488 | 37,076 | 30,386 | 17,449 | 5,101 | 4,283 |
3558
+ | \`checkbox\` | 44,186 | 13,038 | 11,429 | 2,821 | 785 | 601 |
3559
+ | \`checkbox-group\` | 47,310 | 13,723 | 12,077 | 5,425 | 1,365 | 1,087 |
3560
+ | \`code\` | 33,172 | 10,193 | 8,956 | 451 | 78 | 134 |
3561
+ | \`code-block\` | 135,605 | 44,216 | 37,258 | 17,443 | 4,510 | 3,894 |
3562
+ | \`color-input\` | 153,586 | 48,219 | 40,668 | 25,853 | 6,031 | 5,022 |
3563
+ | \`color-picker\` | 119,956 | 37,674 | 31,011 | 19,676 | 4,707 | 3,995 |
3564
+ | \`combobox\` | 148,369 | 46,881 | 39,443 | 21,175 | 5,213 | 4,341 |
3565
+ | \`command\` | 118,287 | 36,947 | 30,227 | 18,064 | 4,593 | 3,835 |
3566
+ | \`copy-button\` | 130,185 | 42,566 | 35,804 | 12,019 | 2,959 | 2,452 |
3567
+ | \`data-table\` | 188,875 | 57,528 | 48,600 | 57,535 | 14,589 | 12,116 |
3568
+ | \`date-input\` | 146,628 | 46,371 | 39,045 | 19,212 | 4,831 | 4,058 |
3569
+ | \`date-picker\` | 101,780 | 32,896 | 26,900 | 9,900 | 2,706 | 2,146 |
3570
+ | \`description-list\` | 34,656 | 10,565 | 9,287 | 1,132 | 172 | 149 |
3571
+ | \`dialog\` | 38,205 | 11,659 | 10,269 | 2,717 | 777 | 632 |
3572
+ | \`divider\` | 34,903 | 10,809 | 9,498 | 981 | 255 | 247 |
3573
+ | \`donut-chart\` | 78,982 | 25,781 | 22,769 | 10,339 | 2,969 | 2,523 |
3574
+ | \`drawer\` | 36,958 | 11,299 | 9,898 | 1,761 | 470 | 416 |
3575
+ | \`drilldown\` | 98,646 | 32,042 | 26,067 | 5,704 | 1,493 | 1,142 |
3576
+ | \`empty\` | 35,150 | 10,853 | 9,533 | 956 | 243 | 214 |
3577
+ | \`file-input\` | 102,144 | 32,877 | 26,883 | 6,266 | 1,808 | 1,480 |
3578
+ | \`filter-input\` | 158,975 | 49,594 | 41,794 | 28,070 | 6,798 | 5,676 |
3579
+ | \`format-date\` | 38,166 | 11,770 | 10,398 | 2,868 | 694 | 511 |
3580
+ | \`graph\` | 116,500 | 37,045 | 30,485 | 11,480 | 3,231 | 2,760 |
3581
+ | \`heatmap\` | 80,204 | 25,983 | 22,869 | 10,997 | 2,991 | 2,466 |
3582
+ | \`icon\` | 89,288 | 28,882 | 23,713 | 1,018 | 246 | 276 |
3583
+ | \`icon-button\` | 39,768 | 12,019 | 10,553 | 3,594 | 857 | 774 |
3584
+ | \`image\` | 36,726 | 11,156 | 9,824 | 3,157 | 811 | 677 |
3585
+ | \`input\` | 101,182 | 32,362 | 26,466 | 4,746 | 1,276 | 1,000 |
3586
+ | \`kbd\` | 36,507 | 11,395 | 10,041 | 2,976 | 915 | 766 |
3587
+ | \`legend\` | 38,559 | 11,901 | 10,462 | 1,080 | 276 | 311 |
3588
+ | \`lightbox\` | 42,999 | 12,949 | 11,376 | 4,807 | 1,236 | 1,040 |
3589
+ | \`line-chart\` | 80,779 | 26,486 | 23,373 | 10,792 | 3,085 | 2,616 |
3590
+ | \`list\` | 35,609 | 10,806 | 9,492 | 1,726 | 332 | 335 |
3591
+ | \`listbox\` | 109,996 | 35,061 | 28,622 | 11,263 | 3,065 | 2,481 |
3592
+ | \`loader\` | 34,793 | 10,731 | 9,409 | 900 | 230 | 195 |
3593
+ | \`map\` | 135,023 | 40,242 | 33,378 | 33,030 | 7,707 | 6,281 |
3594
+ | \`megamenu\` | 65,092 | 21,481 | 18,888 | 4,941 | 1,278 | 1,087 |
3595
+ | \`menu\` | 128,815 | 42,454 | 35,637 | 8,856 | 2,186 | 1,770 |
3596
+ | \`meter\` | 37,983 | 11,582 | 10,196 | 4,100 | 1,064 | 986 |
3597
+ | \`navigation\` | 36,542 | 11,280 | 9,892 | 1,417 | 341 | 281 |
3598
+ | \`notifications\` | 105,825 | 33,645 | 27,451 | 11,384 | 2,616 | 2,194 |
3599
+ | \`number-input\` | 104,106 | 33,173 | 27,123 | 7,671 | 1,990 | 1,621 |
3600
+ | \`object-inspector\` | 143,395 | 46,771 | 39,416 | 19,705 | 5,248 | 4,431 |
3601
+ | \`option\` | 36,848 | 11,171 | 9,854 | 2,959 | 665 | 504 |
3602
+ | \`outline\` | 39,911 | 12,458 | 10,942 | 4,628 | 1,325 | 1,038 |
3603
+ | \`pagination\` | 152,465 | 47,581 | 40,041 | 27,823 | 6,528 | 5,332 |
3604
+ | \`pin-input\` | 46,366 | 13,784 | 12,116 | 5,242 | 1,562 | 1,215 |
3605
+ | \`popover\` | 62,296 | 20,724 | 18,269 | 1,899 | 512 | 405 |
3606
+ | \`progress\` | 35,834 | 11,003 | 9,690 | 1,951 | 489 | 469 |
3607
+ | \`qr-code\` | 46,483 | 15,044 | 13,253 | 12,984 | 4,827 | 3,974 |
3608
+ | \`quote\` | 34,076 | 10,491 | 9,221 | 552 | 118 | 89 |
3609
+ | \`radio\` | 45,916 | 13,427 | 11,815 | 2,874 | 726 | 598 |
3610
+ | \`rating\` | 48,121 | 14,397 | 12,663 | 6,689 | 1,880 | 1,492 |
3611
+ | \`scatter-chart\` | 80,683 | 26,413 | 23,260 | 11,471 | 3,371 | 2,786 |
3612
+ | \`scroll-area\` | 36,319 | 11,164 | 9,807 | 2,743 | 736 | 599 |
3613
+ | \`select\` | 140,575 | 45,036 | 37,784 | 16,146 | 4,083 | 3,271 |
3614
+ | \`skeleton\` | 33,265 | 10,227 | 9,002 | 544 | 105 | 126 |
3615
+ | \`skip-link\` | 34,855 | 10,796 | 9,462 | 1,178 | 333 | 318 |
3616
+ | \`slider\` | 46,905 | 13,805 | 12,204 | 5,628 | 1,517 | 1,296 |
3617
+ | \`sparkline\` | 40,978 | 12,925 | 11,384 | 2,387 | 793 | 694 |
3618
+ | \`speed-dial\` | 120,323 | 40,071 | 33,679 | 3,743 | 918 | 592 |
3619
+ | \`splitter\` | 44,358 | 13,240 | 11,693 | 10,283 | 2,586 | 2,208 |
3620
+ | \`stat\` | 35,041 | 10,666 | 9,401 | 1,148 | 184 | 175 |
3621
+ | \`steps\` | 98,861 | 31,678 | 25,897 | 6,295 | 1,469 | 1,236 |
3622
+ | \`switch\` | 43,417 | 12,921 | 11,361 | 1,650 | 514 | 514 |
3623
+ | \`table\` | 100,971 | 32,855 | 26,781 | 10,159 | 2,795 | 2,339 |
3624
+ | \`tabs\` | 42,654 | 12,774 | 11,197 | 3,925 | 822 | 779 |
3625
+ | \`tag\` | 90,014 | 29,133 | 23,816 | 908 | 198 | 223 |
3626
+ | \`textarea\` | 45,604 | 13,423 | 11,826 | 3,997 | 1,064 | 803 |
3627
+ | \`time-input\` | 159,758 | 49,619 | 41,895 | 29,051 | 7,092 | 5,877 |
3628
+ | \`time-picker\` | 118,842 | 37,643 | 30,850 | 19,136 | 5,108 | 4,164 |
3629
+ | \`timeline\` | 90,450 | 29,131 | 23,972 | 1,809 | 361 | 328 |
3630
+ | \`toast\` | 93,807 | 30,268 | 24,767 | 4,078 | 949 | 763 |
3631
+ | \`toggle\` | 47,603 | 13,958 | 12,296 | 3,342 | 815 | 735 |
3632
+ | \`toolbar\` | 36,647 | 11,354 | 9,981 | 2,624 | 704 | 550 |
3633
+ | \`tooltip\` | 66,523 | 21,820 | 19,314 | 6,494 | 1,748 | 1,473 |
3634
+ | \`tour\` | 72,280 | 23,251 | 20,426 | 11,097 | 2,771 | 2,205 |
3635
+ | \`tree\` | 100,665 | 32,488 | 26,496 | 7,224 | 1,878 | 1,561 |
3636
+ | \`trend\` | 89,328 | 28,928 | 23,747 | 1,056 | 268 | 330 |
3637
+ | \`video\` | 157,146 | 49,283 | 41,783 | 32,577 | 7,665 | 6,523 |
3638
+ | \`video-playlist\` | 136,305 | 44,053 | 37,048 | 14,942 | 3,424 | 2,826 |
3639
+ | \`virtual-list\` | 40,597 | 12,665 | 11,139 | 2,413 | 718 | 635 |
3626
3640
 
3627
3641
  ### Styled tier
3628
3642
 
@@ -3630,110 +3644,110 @@ The headless tier plus presentation. \`bun add @fusion.dev/helix\` installs this
3630
3644
 
3631
3645
  | Family | Alone raw | Alone gzip | Alone brotli | Added raw | Added gzip | Added brotli |
3632
3646
  |---|---|---|---|---|---|---|
3633
- | \`accordion\` | 96,275 | 31,165 | 25,410 | 6,204 | 1,550 | 1,174 |
3634
- | \`announcement\` | 95,112 | 30,597 | 24,970 | 6,133 | 1,431 | 1,173 |
3635
- | \`app-header\` | 37,825 | 11,306 | 9,932 | 5,121 | 1,167 | 960 |
3636
- | \`area-chart\` | 87,243 | 27,984 | 24,715 | 18,366 | 4,989 | 4,083 |
3637
- | \`aura\` | 100,962 | 33,805 | 29,300 | 65,483 | 23,045 | 19,643 |
3638
- | \`avatar\` | 39,570 | 11,769 | 10,377 | 6,833 | 1,653 | 1,230 |
3639
- | \`badge\` | 36,575 | 11,051 | 9,679 | 4,250 | 995 | 794 |
3640
- | \`bar-chart\` | 94,312 | 29,301 | 25,867 | 25,425 | 6,295 | 5,239 |
3641
- | \`blockquote\` | 34,641 | 10,650 | 9,358 | 1,914 | 467 | 297 |
3642
- | \`breadcrumbs\` | 92,955 | 29,662 | 24,363 | 5,518 | 1,250 | 1,070 |
3643
- | \`button\` | 44,414 | 12,806 | 11,246 | 9,433 | 2,000 | 1,571 |
3644
- | \`button-group\` | 35,017 | 10,625 | 9,330 | 2,320 | 521 | 336 |
3645
- | \`callout\` | 90,510 | 29,247 | 24,030 | 2,899 | 756 | 683 |
3646
- | \`canvas\` | 114,863 | 31,672 | 27,634 | 70,328 | 18,740 | 15,728 |
3647
- | \`card\` | 36,656 | 11,100 | 9,746 | 3,963 | 974 | 748 |
3648
- | \`carousel\` | 109,580 | 33,547 | 27,674 | 21,719 | 4,508 | 3,866 |
3649
- | \`chat\` | 126,338 | 39,191 | 32,293 | 31,590 | 7,645 | 6,374 |
3650
- | \`checkbox\` | 49,582 | 14,135 | 12,414 | 9,413 | 2,256 | 1,787 |
3651
- | \`checkbox-group\` | 48,379 | 13,954 | 12,271 | 7,692 | 1,938 | 1,423 |
3652
- | \`code\` | 33,037 | 10,117 | 8,905 | 1,511 | 375 | 223 |
3653
- | \`code-block\` | 150,714 | 46,717 | 39,380 | 33,746 | 7,253 | 6,235 |
3654
- | \`color-input\` | 186,184 | 53,100 | 45,100 | 59,644 | 11,406 | 9,602 |
3655
- | \`color-picker\` | 146,852 | 41,926 | 34,799 | 47,778 | 9,363 | 7,865 |
3656
- | \`combobox\` | 162,410 | 49,241 | 41,421 | 36,410 | 7,967 | 6,638 |
3657
- | \`command\` | 127,825 | 38,679 | 31,792 | 28,803 | 6,695 | 5,486 |
3658
- | \`copy-button\` | 138,849 | 44,016 | 37,014 | 21,883 | 4,671 | 3,764 |
3659
- | \`data-table\` | 225,751 | 64,035 | 53,846 | 95,453 | 21,417 | 17,396 |
3660
- | \`date-input\` | 161,572 | 49,087 | 41,405 | 35,357 | 7,895 | 6,572 |
3661
- | \`date-picker\` | 106,185 | 33,715 | 27,560 | 15,499 | 3,878 | 3,256 |
3662
- | \`description-list\` | 35,822 | 10,776 | 9,458 | 3,502 | 789 | 680 |
3663
- | \`dialog\` | 41,370 | 12,321 | 10,846 | 7,079 | 1,787 | 1,427 |
3664
- | \`divider\` | 35,847 | 10,960 | 9,636 | 3,120 | 759 | 542 |
3665
- | \`donut-chart\` | 86,747 | 27,257 | 24,071 | 19,297 | 4,905 | 4,047 |
3666
- | \`drawer\` | 40,009 | 11,949 | 10,530 | 6,007 | 1,491 | 1,206 |
3667
- | \`drilldown\` | 102,131 | 32,783 | 26,685 | 10,393 | 2,529 | 2,068 |
3668
- | \`empty\` | 35,378 | 10,935 | 9,578 | 2,380 | 687 | 471 |
3669
- | \`file-input\` | 112,458 | 34,859 | 28,558 | 17,793 | 4,067 | 3,415 |
3670
- | \`filter-input\` | 186,011 | 53,813 | 45,359 | 56,353 | 11,425 | 9,485 |
3671
- | \`flex\` | 34,398 | 10,478 | 9,192 | 2,078 | 444 | 296 |
3672
- | \`format-date\` | 37,602 | 11,568 | 10,230 | 3,497 | 862 | 608 |
3673
- | \`graph\` | 129,980 | 39,188 | 32,297 | 26,302 | 5,806 | 4,849 |
3674
- | \`grid\` | 34,991 | 10,663 | 9,377 | 2,667 | 623 | 535 |
3675
- | \`heatmap\` | 85,660 | 26,972 | 23,850 | 17,648 | 4,424 | 3,669 |
3676
- | \`icon\` | 88,782 | 28,698 | 23,533 | 1,707 | 418 | 292 |
3677
- | \`icon-button\` | 44,571 | 12,668 | 11,135 | 9,594 | 1,878 | 1,456 |
3678
- | \`image\` | 37,216 | 11,269 | 9,876 | 4,840 | 1,298 | 976 |
3679
- | \`input\` | 106,334 | 33,448 | 27,321 | 11,104 | 2,685 | 2,136 |
3680
- | \`kbd\` | 36,707 | 11,488 | 10,088 | 4,373 | 1,366 | 1,069 |
3681
- | \`legend\` | 42,163 | 12,662 | 11,106 | 5,790 | 1,399 | 1,042 |
3682
- | \`lightbox\` | 44,742 | 13,332 | 11,672 | 7,805 | 1,995 | 1,630 |
3683
- | \`line-chart\` | 89,209 | 28,086 | 24,777 | 20,419 | 5,130 | 4,207 |
3684
- | \`list\` | 38,480 | 11,400 | 10,031 | 5,799 | 1,329 | 1,050 |
3685
- | \`listbox\` | 113,302 | 35,753 | 29,193 | 15,768 | 4,072 | 3,303 |
3686
- | \`loader\` | 36,747 | 11,133 | 9,789 | 4,051 | 986 | 789 |
3687
- | \`map\` | 169,993 | 45,357 | 37,798 | 69,255 | 13,186 | 10,964 |
3688
- | \`megamenu\` | 68,720 | 22,153 | 19,607 | 9,805 | 2,361 | 1,946 |
3689
- | \`menu\` | 135,088 | 43,769 | 36,667 | 16,362 | 3,794 | 3,121 |
3690
- | \`meter\` | 42,169 | 12,362 | 10,916 | 9,479 | 2,231 | 1,906 |
3691
- | \`navigation\` | 36,981 | 11,381 | 9,979 | 3,051 | 790 | 617 |
3692
- | \`notifications\` | 117,724 | 35,702 | 29,324 | 24,486 | 5,051 | 4,180 |
3693
- | \`number-input\` | 107,777 | 34,002 | 27,832 | 12,539 | 3,168 | 2,516 |
3694
- | \`object-inspector\` | 155,600 | 48,687 | 41,174 | 33,196 | 7,558 | 6,308 |
3695
- | \`option\` | 38,890 | 11,716 | 10,343 | 6,201 | 1,585 | 1,229 |
3696
- | \`orb\` | 43,594 | 14,116 | 12,473 | 8,623 | 3,219 | 2,779 |
3697
- | \`outline\` | 42,439 | 12,875 | 11,369 | 8,351 | 2,119 | 1,773 |
3698
- | \`pagination\` | 169,233 | 50,313 | 42,363 | 45,786 | 9,639 | 7,935 |
3699
- | \`pin-input\` | 48,319 | 14,252 | 12,506 | 8,389 | 2,390 | 1,837 |
3700
- | \`popover\` | 63,681 | 20,974 | 18,497 | 4,517 | 1,169 | 938 |
3701
- | \`progress\` | 39,651 | 11,813 | 10,412 | 6,962 | 1,661 | 1,369 |
3702
- | \`qr-code\` | 46,934 | 15,115 | 13,323 | 14,629 | 5,281 | 4,359 |
3703
- | \`quote\` | 33,519 | 10,283 | 9,025 | 1,191 | 284 | 96 |
3704
- | \`radio\` | 52,999 | 14,579 | 12,789 | 11,160 | 2,293 | 1,937 |
3705
- | \`rating\` | 51,180 | 15,264 | 13,462 | 10,941 | 3,101 | 2,538 |
3706
- | \`sandbox\` | 68,881 | 18,165 | 16,042 | 35,718 | 7,860 | 6,698 |
3707
- | \`scatter-chart\` | 87,734 | 27,814 | 24,453 | 19,718 | 5,199 | 4,262 |
3708
- | \`scroll-area\` | 38,255 | 11,463 | 10,054 | 5,874 | 1,392 | 1,124 |
3709
- | \`select\` | 152,213 | 47,121 | 39,559 | 28,986 | 6,495 | 5,301 |
3710
- | \`skeleton\` | 34,571 | 10,620 | 9,335 | 2,242 | 589 | 453 |
3711
- | \`skip-link\` | 35,106 | 10,846 | 9,517 | 2,624 | 727 | 545 |
3712
- | \`slider\` | 56,773 | 15,455 | 13,660 | 16,690 | 3,548 | 2,998 |
3713
- | \`sparkline\` | 43,684 | 13,521 | 11,922 | 6,293 | 1,765 | 1,456 |
3714
- | \`speed-dial\` | 126,702 | 41,251 | 34,641 | 11,356 | 2,384 | 1,920 |
3715
- | \`splitter\` | 49,218 | 13,878 | 12,293 | 16,336 | 3,650 | 3,008 |
3716
- | \`stat\` | 37,254 | 11,018 | 9,691 | 4,565 | 923 | 740 |
3717
- | \`steps\` | 111,454 | 33,852 | 27,782 | 20,088 | 3,983 | 3,296 |
3718
- | \`switch\` | 46,571 | 13,635 | 11,956 | 6,001 | 1,582 | 1,269 |
3719
- | \`table\` | 105,353 | 33,674 | 27,498 | 15,746 | 3,979 | 3,257 |
3720
- | \`tabs\` | 47,681 | 13,680 | 12,037 | 10,154 | 2,157 | 1,708 |
3721
- | \`tag\` | 92,153 | 29,711 | 24,246 | 4,244 | 1,064 | 881 |
3722
- | \`text\` | 36,518 | 10,832 | 9,491 | 4,200 | 884 | 646 |
3723
- | \`textarea\` | 47,827 | 13,918 | 12,220 | 7,418 | 1,934 | 1,489 |
3724
- | \`time-input\` | 180,181 | 52,893 | 44,706 | 50,668 | 10,777 | 8,959 |
3725
- | \`time-picker\` | 129,356 | 39,469 | 32,484 | 30,852 | 7,323 | 6,181 |
3726
- | \`timeline\` | 92,551 | 29,539 | 24,249 | 5,110 | 1,138 | 939 |
3727
- | \`toast\` | 100,128 | 31,615 | 25,872 | 11,599 | 2,610 | 2,171 |
3728
- | \`toggle\` | 51,584 | 14,801 | 13,037 | 8,525 | 2,072 | 1,650 |
3729
- | \`toolbar\` | 36,727 | 11,296 | 9,924 | 3,899 | 1,024 | 816 |
3730
- | \`tooltip\` | 68,261 | 22,173 | 19,588 | 9,429 | 2,457 | 1,972 |
3731
- | \`tour\` | 80,780 | 24,491 | 21,626 | 20,792 | 4,473 | 3,695 |
3732
- | \`tree\` | 105,303 | 33,536 | 27,353 | 13,069 | 3,312 | 2,784 |
3733
- | \`trend\` | 91,335 | 29,329 | 24,031 | 4,271 | 994 | 799 |
3734
- | \`video\` | 175,196 | 52,406 | 44,471 | 51,918 | 11,203 | 9,565 |
3735
- | \`video-playlist\` | 149,168 | 46,326 | 38,913 | 29,038 | 5,994 | 5,005 |
3736
- | \`virtual-list\` | 40,085 | 12,489 | 10,964 | 3,187 | 929 | 713 |
3647
+ | \`accordion\` | 97,484 | 31,527 | 25,751 | 6,204 | 1,539 | 1,288 |
3648
+ | \`announcement\` | 96,325 | 30,966 | 25,320 | 6,133 | 1,433 | 1,257 |
3649
+ | \`app-header\` | 39,037 | 11,664 | 10,284 | 5,121 | 1,173 | 1,011 |
3650
+ | \`area-chart\` | 88,624 | 28,374 | 25,003 | 18,528 | 4,995 | 4,143 |
3651
+ | \`aura\` | 102,182 | 34,150 | 29,615 | 65,492 | 23,022 | 19,715 |
3652
+ | \`avatar\` | 40,820 | 12,142 | 10,680 | 6,872 | 1,666 | 1,432 |
3653
+ | \`badge\` | 38,056 | 11,452 | 10,043 | 4,519 | 1,047 | 858 |
3654
+ | \`bar-chart\` | 95,653 | 29,690 | 26,157 | 25,550 | 6,313 | 5,232 |
3655
+ | \`blockquote\` | 35,853 | 11,017 | 9,669 | 1,914 | 481 | 441 |
3656
+ | \`breadcrumbs\` | 94,168 | 30,039 | 24,652 | 5,518 | 1,237 | 1,051 |
3657
+ | \`button\` | 45,627 | 13,160 | 11,553 | 9,435 | 2,011 | 1,682 |
3658
+ | \`button-group\` | 36,229 | 10,989 | 9,650 | 2,320 | 527 | 420 |
3659
+ | \`callout\` | 91,867 | 29,665 | 24,389 | 3,044 | 803 | 773 |
3660
+ | \`canvas\` | 116,132 | 32,041 | 27,935 | 70,330 | 18,726 | 15,770 |
3661
+ | \`card\` | 37,868 | 11,465 | 10,062 | 3,963 | 987 | 908 |
3662
+ | \`carousel\` | 110,792 | 33,934 | 27,967 | 21,720 | 4,518 | 3,904 |
3663
+ | \`chat\` | 127,645 | 39,596 | 32,637 | 31,592 | 7,644 | 6,399 |
3664
+ | \`checkbox\` | 50,794 | 14,479 | 12,765 | 9,413 | 2,242 | 1,918 |
3665
+ | \`checkbox-group\` | 49,591 | 14,306 | 12,574 | 7,692 | 1,940 | 1,503 |
3666
+ | \`code\` | 34,249 | 10,492 | 9,219 | 1,511 | 371 | 243 |
3667
+ | \`code-block\` | 152,056 | 47,070 | 39,652 | 33,873 | 7,293 | 6,181 |
3668
+ | \`color-input\` | 187,784 | 53,476 | 45,393 | 60,032 | 11,434 | 9,724 |
3669
+ | \`color-picker\` | 148,452 | 42,352 | 35,083 | 48,165 | 9,437 | 8,065 |
3670
+ | \`combobox\` | 163,625 | 49,536 | 41,816 | 36,412 | 7,971 | 6,581 |
3671
+ | \`command\` | 129,039 | 39,047 | 32,118 | 28,805 | 6,714 | 5,654 |
3672
+ | \`copy-button\` | 140,190 | 44,376 | 37,356 | 22,010 | 4,707 | 3,947 |
3673
+ | \`data-table\` | 227,144 | 64,440 | 54,210 | 95,535 | 21,432 | 17,554 |
3674
+ | \`date-input\` | 162,787 | 49,387 | 41,725 | 35,359 | 7,915 | 6,733 |
3675
+ | \`date-picker\` | 107,397 | 34,083 | 27,918 | 15,499 | 3,867 | 3,254 |
3676
+ | \`description-list\` | 37,034 | 11,136 | 9,781 | 3,502 | 769 | 647 |
3677
+ | \`dialog\` | 42,582 | 12,668 | 11,140 | 7,079 | 1,783 | 1,557 |
3678
+ | \`divider\` | 37,059 | 11,328 | 9,929 | 3,120 | 770 | 699 |
3679
+ | \`donut-chart\` | 88,088 | 27,651 | 24,367 | 19,422 | 4,910 | 4,151 |
3680
+ | \`drawer\` | 41,221 | 12,296 | 10,804 | 6,007 | 1,482 | 1,278 |
3681
+ | \`drilldown\` | 103,343 | 33,143 | 27,019 | 10,391 | 2,512 | 2,101 |
3682
+ | \`empty\` | 36,590 | 11,297 | 9,897 | 2,380 | 703 | 627 |
3683
+ | \`file-input\` | 113,670 | 35,207 | 28,861 | 17,794 | 4,073 | 3,425 |
3684
+ | \`filter-input\` | 187,314 | 54,146 | 45,761 | 56,402 | 11,409 | 9,569 |
3685
+ | \`flex\` | 35,610 | 10,843 | 9,515 | 2,078 | 453 | 434 |
3686
+ | \`format-date\` | 38,814 | 11,917 | 10,547 | 3,498 | 869 | 701 |
3687
+ | \`graph\` | 131,342 | 39,600 | 32,614 | 26,303 | 5,764 | 4,989 |
3688
+ | \`grid\` | 36,203 | 11,032 | 9,694 | 2,667 | 625 | 562 |
3689
+ | \`heatmap\` | 87,000 | 27,374 | 24,124 | 17,773 | 4,424 | 3,674 |
3690
+ | \`icon\` | 89,994 | 29,073 | 23,815 | 1,707 | 413 | 342 |
3691
+ | \`icon-button\` | 45,786 | 13,032 | 11,471 | 9,596 | 1,871 | 1,684 |
3692
+ | \`image\` | 38,428 | 11,635 | 10,226 | 4,841 | 1,286 | 1,034 |
3693
+ | \`input\` | 107,548 | 33,803 | 27,690 | 11,102 | 2,659 | 2,197 |
3694
+ | \`kbd\` | 37,919 | 11,848 | 10,420 | 4,373 | 1,374 | 1,181 |
3695
+ | \`legend\` | 43,375 | 13,019 | 11,400 | 5,790 | 1,390 | 1,258 |
3696
+ | \`lightbox\` | 46,011 | 13,699 | 11,982 | 7,803 | 1,988 | 1,586 |
3697
+ | \`line-chart\` | 90,551 | 28,485 | 25,133 | 20,543 | 5,161 | 4,292 |
3698
+ | \`list\` | 39,692 | 11,749 | 10,323 | 5,799 | 1,305 | 1,140 |
3699
+ | \`listbox\` | 114,516 | 36,116 | 29,506 | 15,768 | 4,062 | 3,290 |
3700
+ | \`loader\` | 37,959 | 11,498 | 10,087 | 4,051 | 995 | 942 |
3701
+ | \`map\` | 172,078 | 45,778 | 38,170 | 70,072 | 13,195 | 11,047 |
3702
+ | \`megamenu\` | 69,973 | 22,584 | 19,916 | 9,806 | 2,356 | 2,033 |
3703
+ | \`menu\` | 136,343 | 44,103 | 37,021 | 16,360 | 3,787 | 3,198 |
3704
+ | \`meter\` | 43,381 | 12,723 | 11,239 | 9,480 | 2,236 | 1,969 |
3705
+ | \`navigation\` | 38,193 | 11,742 | 10,282 | 3,051 | 806 | 700 |
3706
+ | \`notifications\` | 118,939 | 36,071 | 29,635 | 24,488 | 5,037 | 4,324 |
3707
+ | \`number-input\` | 108,991 | 34,360 | 28,113 | 12,537 | 3,136 | 2,649 |
3708
+ | \`object-inspector\` | 157,035 | 49,043 | 41,493 | 33,323 | 7,593 | 6,376 |
3709
+ | \`option\` | 40,102 | 12,078 | 10,647 | 6,203 | 1,565 | 1,271 |
3710
+ | \`orb\` | 44,808 | 14,467 | 12,781 | 8,624 | 3,203 | 2,704 |
3711
+ | \`outline\` | 43,651 | 13,234 | 11,683 | 8,351 | 2,118 | 1,795 |
3712
+ | \`pagination\` | 170,448 | 50,616 | 42,675 | 45,787 | 9,636 | 7,898 |
3713
+ | \`pin-input\` | 49,531 | 14,596 | 12,848 | 8,390 | 2,385 | 1,866 |
3714
+ | \`popover\` | 64,967 | 21,370 | 18,852 | 4,552 | 1,174 | 1,066 |
3715
+ | \`progress\` | 40,863 | 12,174 | 10,744 | 6,962 | 1,676 | 1,470 |
3716
+ | \`qr-code\` | 48,148 | 15,475 | 13,640 | 14,629 | 5,259 | 4,471 |
3717
+ | \`quote\` | 34,731 | 10,653 | 9,341 | 1,191 | 291 | 230 |
3718
+ | \`radio\` | 54,213 | 14,925 | 13,148 | 11,161 | 2,282 | 1,895 |
3719
+ | \`rating\` | 52,430 | 15,623 | 13,778 | 10,984 | 3,118 | 2,678 |
3720
+ | \`sandbox\` | 70,095 | 18,502 | 16,357 | 35,720 | 7,874 | 6,671 |
3721
+ | \`scatter-chart\` | 89,076 | 28,200 | 24,805 | 19,840 | 5,218 | 4,335 |
3722
+ | \`scroll-area\` | 39,467 | 11,819 | 10,381 | 5,874 | 1,383 | 1,120 |
3723
+ | \`select\` | 153,428 | 47,407 | 39,844 | 28,985 | 6,519 | 5,330 |
3724
+ | \`skeleton\` | 35,783 | 10,980 | 9,660 | 2,242 | 595 | 490 |
3725
+ | \`skip-link\` | 36,318 | 11,202 | 9,783 | 2,624 | 721 | 609 |
3726
+ | \`slider\` | 57,985 | 15,794 | 13,969 | 16,691 | 3,550 | 3,035 |
3727
+ | \`sparkline\` | 44,898 | 13,878 | 12,241 | 6,293 | 1,748 | 1,430 |
3728
+ | \`speed-dial\` | 127,953 | 41,580 | 34,922 | 11,355 | 2,362 | 1,902 |
3729
+ | \`splitter\` | 50,430 | 14,234 | 12,617 | 16,337 | 3,634 | 3,149 |
3730
+ | \`stat\` | 38,466 | 11,377 | 10,006 | 4,565 | 916 | 777 |
3731
+ | \`steps\` | 112,667 | 34,217 | 28,078 | 20,087 | 3,975 | 3,511 |
3732
+ | \`switch\` | 47,784 | 13,981 | 12,276 | 6,002 | 1,571 | 1,320 |
3733
+ | \`table\` | 106,565 | 34,049 | 27,900 | 15,748 | 3,973 | 3,448 |
3734
+ | \`tabs\` | 48,895 | 14,048 | 12,331 | 10,154 | 2,153 | 1,840 |
3735
+ | \`tag\` | 93,365 | 30,080 | 24,615 | 4,244 | 1,062 | 1,034 |
3736
+ | \`text\` | 37,730 | 11,196 | 9,819 | 4,200 | 929 | 733 |
3737
+ | \`textarea\` | 49,038 | 14,259 | 12,513 | 7,416 | 1,937 | 1,562 |
3738
+ | \`time-input\` | 181,396 | 53,205 | 45,008 | 50,671 | 10,793 | 9,101 |
3739
+ | \`time-picker\` | 130,570 | 39,823 | 32,805 | 30,854 | 7,357 | 6,137 |
3740
+ | \`timeline\` | 93,763 | 29,912 | 24,584 | 5,110 | 1,130 | 1,124 |
3741
+ | \`toast\` | 101,341 | 31,985 | 26,191 | 11,599 | 2,621 | 2,252 |
3742
+ | \`toggle\` | 52,798 | 15,150 | 13,322 | 8,526 | 2,061 | 1,681 |
3743
+ | \`toolbar\` | 37,939 | 11,649 | 10,232 | 3,899 | 1,021 | 853 |
3744
+ | \`tooltip\` | 69,601 | 22,599 | 19,919 | 9,554 | 2,494 | 2,086 |
3745
+ | \`tour\` | 81,996 | 24,885 | 21,972 | 20,795 | 4,495 | 3,765 |
3746
+ | \`tree\` | 106,515 | 33,905 | 27,737 | 13,067 | 3,290 | 2,858 |
3747
+ | \`trend\` | 92,548 | 29,699 | 24,399 | 4,271 | 981 | 898 |
3748
+ | \`video\` | 176,566 | 52,761 | 44,820 | 51,979 | 11,227 | 9,592 |
3749
+ | \`video-playlist\` | 150,421 | 46,636 | 39,254 | 29,040 | 5,998 | 5,123 |
3750
+ | \`virtual-list\` | 41,389 | 12,878 | 11,348 | 3,187 | 935 | 706 |
3737
3751
 
3738
3752
  ## What an install adds to \`node_modules\`
3739
3753
 
@@ -3745,12 +3759,12 @@ stripped column shows the bytes we removed.
3745
3759
 
3746
3760
  | Package | Unpacked | Files | Source maps stripped | Runtime dependencies |
3747
3761
  |---|---|---|---|---|
3748
- | \`@fusion.dev/helix-core\` | 1,201,725 | 175 | 269,250 | \`@floating-ui/dom\`, \`@fusion.dev/helix-icons\` |
3749
- | \`@fusion.dev/helix-headless\` | 13,623,035 | 511 | 1,078,077 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-icons\`, \`uqr\` |
3762
+ | \`@fusion.dev/helix-core\` | 1,219,204 | 179 | 274,659 | \`@floating-ui/dom\`, \`@fusion.dev/helix-icons\` |
3763
+ | \`@fusion.dev/helix-headless\` | 13,709,247 | 511 | 1,079,071 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-icons\`, \`uqr\` |
3750
3764
  | \`@fusion.dev/helix-icons\` | 150,162 | 21 | 50,346 | \`svgo\` |
3751
- | \`@fusion.dev/helix-styles\` | 102,268 | 6 | 0 | none |
3752
- | \`@fusion.dev/helix-theme\` | 514,288 | 8 | 5,300 | none |
3753
- | \`@fusion.dev/helix\` | 14,759,423 | 877 | 373,843 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-headless\`, \`@fusion.dev/helix-styles\` |
3765
+ | \`@fusion.dev/helix-styles\` | 106,097 | 6 | 0 | none |
3766
+ | \`@fusion.dev/helix-theme\` | 528,598 | 8 | 5,393 | none |
3767
+ | \`@fusion.dev/helix\` | 14,852,492 | 877 | 373,887 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-headless\`, \`@fusion.dev/helix-styles\` |
3754
3768
 
3755
3769
  ## Not measured yet
3756
3770
 
@@ -5575,7 +5589,7 @@ its own components, and the same applies to anything you build with it.
5575
5589
 
5576
5590
  The theme engine measures each ink against the ground it is actually painted
5577
5591
  on. The ladder records which pairs occur. For example, \`foreground\` on
5578
- \`surface-overlay\` is a real pair, and \`foreground-on-accent\` on \`surface\` is
5592
+ \`surface-overlay\` is a real pair, and \`foreground-on-primary\` on \`surface\` is
5579
5593
  not. See [Color](./color).
5580
5594
  `,
5581
5595
  svelte: `---
@@ -5675,6 +5689,11 @@ drawn with the theme, and the stylesheet the theme generates beside it.
5675
5689
  The Color scheme field picks which half you see: light, dark, or the site's own
5676
5690
  mode. See [Color modes](./color-modes).
5677
5691
 
5692
+ The builder starts from ink, the palette Helix draws with no brand color:
5693
+ near-black in light mode and near-white in dark. Turn on **Brand color** to
5694
+ derive the palette from a color of your own. The accent angle is measured from
5695
+ the brand, so it applies only with one.
5696
+
5678
5697
  ## A page of your own color
5679
5698
 
5680
5699
  The Light page and Dark page fields give the page a color, such as a warm cream
@@ -5758,6 +5777,22 @@ title: Deriving a theme
5758
5777
 
5759
5778
  Helix computes your color tokens from a few inputs, such as your brand color.
5760
5779
 
5780
+ ## Without a brand color
5781
+
5782
+ With no brand color set, Helix draws in ink. The primary color is near-black in
5783
+ light mode and near-white in dark mode, and a filled button is the opposite of
5784
+ the page, with the page's own color for its label. The neutral ramp supplies
5785
+ both, so a gray with a tint gives a tinted ink. Set a brand color to replace the
5786
+ ink, as a seed in CSS or as \`brand\` in the theme engine.
5787
+
5788
+ Before ink, the default was a blue. To keep it, set it as your seed:
5789
+
5790
+ \`\`\`css
5791
+ :root {
5792
+ --helix-seed-brand: oklch(0.539 0.19 258);
5793
+ }
5794
+ \`\`\`
5795
+
5761
5796
  When a design system ships two hundred fixed color values, you theme it by
5762
5797
  changing them one at a time. A change to one value can break the contrast of a
5763
5798
  component elsewhere, and nothing tells you.
@@ -5788,8 +5823,9 @@ resolved at the root. The stylesheet declares the ramp again on each
5788
5823
 
5789
5824
  Tuned does not guarantee contrast. CSS has no contrast function.
5790
5825
  \`oklch(from …)\` can step and rotate a color, but it cannot search for the
5791
- lightness that meets a target. The contrast figures built into the ramp are
5792
- exact for the default seed and approximate for any other.
5826
+ lightness that meets a target. The contrast figures built into the ramp were
5827
+ measured on one blue seed, so they are exact for that seed and approximate for
5828
+ any other.
5793
5829
 
5794
5830
  **Verified** uses the theme engine. It searches for each color that meets its
5795
5831
  target, measures every pair, and returns the theme with any violations:
@@ -5860,6 +5896,16 @@ console.log(css[':root'])
5860
5896
  A value that is not a color and still changes with the mode, such as the edge
5861
5897
  of a floating surface, is set by rules after the block, one for each mode.
5862
5898
 
5899
+ The CLI writes the same block. \`helix theme init\` writes a \`helix.theme.json\`,
5900
+ with your brand color if you pass \`--brand\`. \`helix theme build\` derives it in
5901
+ both modes, unless the file names a \`scheme\`, and refuses to write a theme with
5902
+ a pair that misses its target:
5903
+
5904
+ \`\`\`sh
5905
+ helix theme init --brand '#0b3d91'
5906
+ helix theme build --out theme.css
5907
+ \`\`\`
5908
+
5863
5909
  ## Color one section
5864
5910
 
5865
5911
  A section in a color of its own, such as a deep teal band on a cream page, is a
@@ -5899,8 +5945,10 @@ Equal numeric steps in sRGB do not look like equal steps. That makes scales and
5899
5945
  contrast math in sRGB unreliable. Helix computes themes in OKLCH for this
5900
5946
  reason. Colors are written in OKLCH and converted to other formats on output.
5901
5947
 
5902
- The engine keeps your brand color's hue and chroma and changes only its
5903
- lightness to meet the target. Your brand color stays recognizable, and its
5948
+ The engine keeps your brand color's hue and chroma. Where the color already
5949
+ meets the contrast target, the engine uses it as it is: a navy brand stays navy
5950
+ on a light page. Where it does not, the engine changes only its lightness, by as
5951
+ little as the target needs. Your brand color stays recognizable, and its
5904
5952
  contrast is guaranteed.
5905
5953
 
5906
5954
  ## Errors the engine prevents