@fusion.dev/helix-docs 0.176.0 → 0.177.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/canvases.mdx +141 -0
- package/content/graphs.mdx +8 -0
- package/content/maps.mdx +160 -19
- package/content/metrics.mdx +221 -221
- package/content/motion.mdx +5 -1
- package/dist/pages.generated.js +6 -0
- package/dist/sources.generated.js +536 -241
- package/package.json +9 -9
|
@@ -522,6 +522,148 @@ Building on the headless tier needs none of these.
|
|
|
522
522
|
You own the presentation layer, the tags, and the build. If we stopped
|
|
523
523
|
tomorrow, you would keep a working design system. You would lose our fixes to
|
|
524
524
|
the behavior underneath it.
|
|
525
|
+
`,
|
|
526
|
+
canvases: `---
|
|
527
|
+
description: Add a board of cards and connections that people can move, connect, and read with any input, and save it as JSON Canvas.
|
|
528
|
+
section: Essentials
|
|
529
|
+
title: Canvases
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
# Canvases
|
|
533
|
+
|
|
534
|
+
Helix Canvas draws a board of cards and the connections between them. People
|
|
535
|
+
pan and zoom the board, move and resize cards, draw connections, and walk the
|
|
536
|
+
board in reading order from the keyboard. The board reads and writes
|
|
537
|
+
[JSON Canvas](https://jsoncanvas.org), an open format.
|
|
538
|
+
|
|
539
|
+
## Add a board
|
|
540
|
+
|
|
541
|
+
Write each card as a \`helix-canvas-node\` and each connection as a
|
|
542
|
+
\`helix-canvas-edge\`. A card's \`x\`, \`y\`, \`width\`, and \`height\` are in the
|
|
543
|
+
document's own units, and a connection names its two cards by \`name\`:
|
|
544
|
+
|
|
545
|
+
\`\`\`html
|
|
546
|
+
<helix-canvas label="Launch plan">
|
|
547
|
+
<helix-canvas-node name="draft" x="0" y="0" width="160" height="64">Draft the email</helix-canvas-node>
|
|
548
|
+
<helix-canvas-node name="ship" tone="success" x="256" y="0" width="160" height="64">Publish the release</helix-canvas-node>
|
|
549
|
+
<helix-canvas-edge from="draft" to="ship"></helix-canvas-edge>
|
|
550
|
+
</helix-canvas>
|
|
551
|
+
\`\`\`
|
|
552
|
+
|
|
553
|
+
\`\`\`js
|
|
554
|
+
import '@fusion.dev/helix/canvas'
|
|
555
|
+
\`\`\`
|
|
556
|
+
|
|
557
|
+
Give the board a \`label\` that says what it holds. A screen reader announces it
|
|
558
|
+
as "Launch plan, canvas".
|
|
559
|
+
|
|
560
|
+
## Load and save a document
|
|
561
|
+
|
|
562
|
+
\`fromJsonCanvas\` turns a JSON Canvas document into the props of the elements.
|
|
563
|
+
What a card shows is yours to render, so this example writes each text card's
|
|
564
|
+
text:
|
|
565
|
+
|
|
566
|
+
\`\`\`js
|
|
567
|
+
import { fromJsonCanvas } from '@fusion.dev/helix/canvas'
|
|
568
|
+
|
|
569
|
+
const board = document.querySelector('helix-canvas')
|
|
570
|
+
const { nodes, edges } = fromJsonCanvas(saved)
|
|
571
|
+
for (const node of nodes) {
|
|
572
|
+
const card = document.createElement('helix-canvas-node')
|
|
573
|
+
const { group, height, label, name, tone, width, x, y } = node
|
|
574
|
+
Object.assign(card, { group, height, label, name, tone, width, x, y })
|
|
575
|
+
card.textContent = node.text ?? ''
|
|
576
|
+
board.append(card)
|
|
577
|
+
}
|
|
578
|
+
for (const edge of edges) {
|
|
579
|
+
const line = document.createElement('helix-canvas-edge')
|
|
580
|
+
const { from, fromSide, label, name, to, toSide, tone } = edge
|
|
581
|
+
Object.assign(line, { from, fromSide, label, name, to, toSide, tone })
|
|
582
|
+
board.append(line)
|
|
583
|
+
}
|
|
584
|
+
\`\`\`
|
|
585
|
+
|
|
586
|
+
\`board.toJsonCanvas()\` writes the board back out as a JSON Canvas document.
|
|
587
|
+
|
|
588
|
+
## Keep the board in your state
|
|
589
|
+
|
|
590
|
+
The board moves a card itself and sends \`helix-move\` when the move is finished.
|
|
591
|
+
To keep positions in your own state, cancel \`helix-before-move\` and write the
|
|
592
|
+
positions from its detail:
|
|
593
|
+
|
|
594
|
+
\`\`\`js
|
|
595
|
+
board.addEventListener('helix-before-move', (event) => {
|
|
596
|
+
event.preventDefault()
|
|
597
|
+
for (const { name, x, y } of event.detail.nodes) {
|
|
598
|
+
const card = board.querySelector(\`[name="\${name}"]\`)
|
|
599
|
+
card.x = x
|
|
600
|
+
card.y = y
|
|
601
|
+
}
|
|
602
|
+
})
|
|
603
|
+
\`\`\`
|
|
604
|
+
|
|
605
|
+
Connecting and removing are requests that your page applies, because a new
|
|
606
|
+
connection is a new element:
|
|
607
|
+
|
|
608
|
+
- \`helix-connect\` names two cards and their sides. Add a \`helix-canvas-edge\`
|
|
609
|
+
that joins them.
|
|
610
|
+
- \`helix-remove\` names the cards and connections to remove, including every
|
|
611
|
+
connection that removing a card would leave without an end. Remove those
|
|
612
|
+
elements.
|
|
613
|
+
- \`helix-canvas-edit\` asks you to edit a card. Open your own editor in it.
|
|
614
|
+
|
|
615
|
+
Set \`readonly\` on the board to keep every card in place, or on one card or
|
|
616
|
+
connection to keep only that one.
|
|
617
|
+
|
|
618
|
+
## Keyboard and screen readers
|
|
619
|
+
|
|
620
|
+
The board is one tab stop. A card holds it, and Tab leaves the board.
|
|
621
|
+
|
|
622
|
+
| Keys | On | What they do |
|
|
623
|
+
|---|---|---|
|
|
624
|
+
| Arrow keys | A card or a connection | Move through the cards in reading order, each card's connections straight after it, and select what they land on |
|
|
625
|
+
| Home, End | A card or a connection | Move to the first or the last stop |
|
|
626
|
+
| Control or Command with an arrow key, Home, or End | A card or a connection | Move without changing the selection |
|
|
627
|
+
| Space | A card or a connection | Add it to the selection or take it out |
|
|
628
|
+
| Control or Command with A | A card or a connection | Select everything |
|
|
629
|
+
| Shift with an arrow key | A card | Move the card by 16 units, or to the next multiple of \`snap\` |
|
|
630
|
+
| Alt with an arrow key | A card | Resize the card from its bottom right corner |
|
|
631
|
+
| Enter or F2 | A card | Ask to edit it, with \`helix-canvas-edit\`, or edit a group's name |
|
|
632
|
+
| Enter | A connection | Move to the card it arrives at |
|
|
633
|
+
| F2 | A connection | Edit its label |
|
|
634
|
+
| C, then Enter on another card | A card | Ask to connect the two, with \`helix-connect\` |
|
|
635
|
+
| C | A connection | Pick up its end, to move it to another card with Enter |
|
|
636
|
+
| Delete or Backspace | A card or a connection | Ask to remove what is selected, with \`helix-remove\` |
|
|
637
|
+
| Control or Command with C, V | The board | Copy the selected cards as JSON Canvas, and paste a document |
|
|
638
|
+
| Control or Command with Z | The board | Undo the last move or resize. With Shift, or Control with Y, make it again |
|
|
639
|
+
| Plus, minus | The board, a card, or a connection | Zoom in or out |
|
|
640
|
+
| Escape | A card or a connection | Stop connecting, or go out to the board |
|
|
641
|
+
| Arrow keys | The board, after Escape | Pan the board |
|
|
642
|
+
|
|
643
|
+
Every drag also works with clicks. Click a selected card's move handle, a
|
|
644
|
+
corner, a card's connection point, or the end of a selected connection to pick
|
|
645
|
+
it up, then click where it goes. Escape puts it back.
|
|
646
|
+
|
|
647
|
+
Screen readers meet these roles and names:
|
|
648
|
+
|
|
649
|
+
| Part | Role | Named by |
|
|
650
|
+
|---|---|---|
|
|
651
|
+
| The board | \`group\`, described as "canvas" | \`label\` |
|
|
652
|
+
| A card | \`article\` | Its content, or its \`label\` |
|
|
653
|
+
| A group card | \`group\` | Its \`label\` |
|
|
654
|
+
| A connection | \`button\` | "From Draft to Ship", from \`connection-label\` |
|
|
655
|
+
| The controls | \`group\` | "Board controls", from \`controls-label\` |
|
|
656
|
+
| What changed | \`status\` | The board's own words |
|
|
657
|
+
|
|
658
|
+
A card is also described by its connections, such as "leads to Ship", and by
|
|
659
|
+
whether it is selected and what its tone means, from \`tone-labels\`. After a key
|
|
660
|
+
moves, resizes, selects, copies, pastes, undoes, or zooms, screen readers hear
|
|
661
|
+
what changed, such as "Ship moved to 16, 200". Each sentence is a \`-label\`
|
|
662
|
+
property, so you can write it in your page's language, or register the words
|
|
663
|
+
for a language with \`registerWords\` (see [Localization](./localization)).
|
|
664
|
+
|
|
665
|
+
When your page removes the card that has focus, focus moves to the next stop,
|
|
666
|
+
or to the one before when it was the last.
|
|
525
667
|
`,
|
|
526
668
|
charting: `---
|
|
527
669
|
description: Which chart to use, and how charts read their data from a table in the document.
|
|
@@ -2176,9 +2318,16 @@ leaves removing it to your framework.
|
|
|
2176
2318
|
whose name starts with it, and Enter or Space selects a note.
|
|
2177
2319
|
- In the search field, Down moves into the list, and Escape empties the search.
|
|
2178
2320
|
With \`no-panel\`, Escape on an empty search closes the list.
|
|
2321
|
+
- The legend is a toolbar and one tab stop. Arrow keys, Home, and End move
|
|
2322
|
+
between its groups, typing a letter moves to the next group whose name
|
|
2323
|
+
starts with it, and Space or Enter shows or hides a group.
|
|
2179
2324
|
- Screen readers read the selected note first, then how each other note links
|
|
2180
2325
|
to it, such as "Linked from Roadmap". They hear the count when a search or
|
|
2181
2326
|
the legend changes it.
|
|
2327
|
+
- When you select a note, in the list or in the drawing, screen readers hear
|
|
2328
|
+
its name and how many notes the list holds, such as "Roadmap, selected. 4
|
|
2329
|
+
notes", from \`selection-label\`. A selection your page writes to \`active\` is
|
|
2330
|
+
not said.
|
|
2182
2331
|
- After the arrow keys, plus, minus, or the buttons move the drawing, screen
|
|
2183
2332
|
readers hear which way it went, such as "Moved right" or "Zoomed in".
|
|
2184
2333
|
\`connectGraph\` tells the frame once the drawing has moved. If you answer
|
|
@@ -2187,6 +2336,7 @@ leaves removing it to your framework.
|
|
|
2187
2336
|
- When you change \`nodes\` or \`links\`, the list keeps the note the keys are on.
|
|
2188
2337
|
When that note is removed, the keys move to the note that took its row.
|
|
2189
2338
|
- Change the words with \`search-label\`, \`count-label\`, \`selected-label\`,
|
|
2339
|
+
\`selection-label\`,
|
|
2190
2340
|
\`links-to-label\`, \`linked-from-label\`, \`linked-both-label\`,
|
|
2191
2341
|
\`moved-up-label\`, \`moved-down-label\`, \`moved-left-label\`,
|
|
2192
2342
|
\`moved-right-label\`, \`zoomed-in-label\`, and \`zoomed-out-label\`, or register
|
|
@@ -3788,28 +3938,169 @@ compass sets \`--map-needle-turn\` to the angle that points north, so an icon in
|
|
|
3788
3938
|
|
|
3789
3939
|
## Write a driver
|
|
3790
3940
|
|
|
3791
|
-
To use another renderer, write a driver: an object
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3941
|
+
To use another renderer, write a driver: an object that moves the renderer's
|
|
3942
|
+
view when the frame asks, and tells the frame when the view moved. \`connectMap\`
|
|
3943
|
+
calls it. \`mapLibreDriver\` and \`leafletDriver\` are drivers, and the \`MapDriver\`
|
|
3944
|
+
type in \`@fusion.dev/helix-map\` describes every method.
|
|
3795
3945
|
|
|
3796
|
-
|
|
3797
|
-
animation. Each optional method turns on a feature:
|
|
3946
|
+
### Units
|
|
3798
3947
|
|
|
3799
|
-
|
|
|
3948
|
+
| Quantity | Unit |
|
|
3800
3949
|
|---|---|
|
|
3801
|
-
|
|
|
3802
|
-
|
|
|
3803
|
-
|
|
|
3804
|
-
|
|
|
3805
|
-
|
|
|
3806
|
-
| \`
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3950
|
+
| A place | \`{ lat, lng }\` in degrees |
|
|
3951
|
+
| A position on screen | CSS pixels from the top left of the renderer's box, right and down positive |
|
|
3952
|
+
| Bearing | Degrees clockwise from north |
|
|
3953
|
+
| Tilt | Degrees from looking straight down, \`0\` being flat |
|
|
3954
|
+
| Zoom | The renderer's own levels |
|
|
3955
|
+
| Motion | \`{ duration, easing }\`, where \`duration\` is in milliseconds and \`easing(t)\` maps 0 to 1 onto 0 to 1, or \`null\` |
|
|
3956
|
+
|
|
3957
|
+
\`motion\` comes from your theme's motion tokens. It is \`null\` when the user has
|
|
3958
|
+
asked for reduced motion, and the driver then moves at once.
|
|
3959
|
+
|
|
3960
|
+
### Required methods
|
|
3961
|
+
|
|
3962
|
+
- \`panBy(x, y, motion)\` moves the view by \`x\` and \`y\` CSS pixels. The frame
|
|
3963
|
+
asks for a fraction of its own box, so an arrow key moves the map by the same
|
|
3964
|
+
share of the screen at every zoom. On a right-to-left page, \`connectMap\`
|
|
3965
|
+
turns the frame's start and end into left and right before it calls the
|
|
3966
|
+
driver.
|
|
3967
|
+
- \`zoomBy(direction, motion)\` zooms one step in, for \`1\`, or out, for \`-1\`. A
|
|
3968
|
+
step is whatever the renderer calls one, usually one level.
|
|
3969
|
+
|
|
3970
|
+
### Optional methods
|
|
3971
|
+
|
|
3972
|
+
Each optional method turns on a feature. Without it, the feature is off and
|
|
3973
|
+
nothing fails.
|
|
3974
|
+
|
|
3975
|
+
| Method | When \`connectMap\` calls it | What it must do | Turns on |
|
|
3976
|
+
|---|---|---|---|
|
|
3977
|
+
| \`onView(moved)\` | Once, at connect | Call \`moved\` on every frame the view moves, and return a function that stops | Markers that follow the map, and the announcements after a move |
|
|
3978
|
+
| \`project(place)\` | On every view change, for each marker | Return where \`place\` falls, in CSS pixels | Placing markers and positions. Without it, markers stay hidden |
|
|
3979
|
+
| \`zoom()\` | After each view change | Return the zoom | Saying "Zoom level 14" after a zoom |
|
|
3980
|
+
| \`bearing()\`, \`pitch()\` | After each view change | Return the bearing and the tilt | The compass needle, the 3D button's pressed state, and arrows that stay correct on a turned map |
|
|
3981
|
+
| \`rotate({ by, to }, motion)\` | On the rotate buttons, Face north, and Shift with Left or Right | Turn by \`by\` degrees, or to the bearing \`to\` | Rotating |
|
|
3982
|
+
| \`tilt({ by, to }, motion)\` | On the 3D button, and Shift with Up or Down | Tilt by \`by\` degrees, or to \`to\` | Tilting |
|
|
3983
|
+
| \`show(place, motion)\` | When the keyboard reaches a marker that is off screen | Bring \`place\` to the middle of the view, at \`place.zoom\` where it has one | Walking markers off screen |
|
|
3984
|
+
| \`fit(bounds, padding, motion)\` | On \`connection.fit()\`, and on a press on a cluster | Frame the \`northEast\` and \`southWest\` corners, inset by \`padding\` pixels | \`connection.fit()\` and zooming in to clusters |
|
|
3985
|
+
| \`silenceKeyboard()\` | Once, at connect | Turn off the renderer's own keys, and return a function that turns them back on | One set of keys |
|
|
3986
|
+
| \`focusTarget()\` | Once, at connect | Return the element the renderer made focusable | One tab stop. \`connectMap\` sets its \`tabindex\` to \`-1\` and puts it back on disconnect |
|
|
3987
|
+
| \`replaceZoom()\` | Once the frame has drawn its zoom buttons | Remove the renderer's zoom buttons, and return a function that puts them back | One set of zoom buttons |
|
|
3988
|
+
| \`credits(changed)\` | Once, at connect | Return \`read()\`, the credits as markup, and \`stop()\`; call \`changed\` when they change | The map credit in the frame's footer |
|
|
3989
|
+
| \`ready(done)\` | Once, at connect | Call \`done\` when the view is drawn whole, and return a function that stops waiting | \`helix-map-ready\` and \`:state(ready)\` |
|
|
3990
|
+
| \`gestures(mode)\` | When the frame's \`gestures\` changes | Take the wheel and touches as \`free\`, \`cooperative\`, or \`off\` says | Sharing the scroll with the page |
|
|
3991
|
+
| \`layers(read, events)\` | Once, at connect | Draw \`read()\`, and draw it again on \`update()\` | Routes, areas, points, and tile layers |
|
|
3992
|
+
| \`labels(shown)\` | When the map type changes | Show or hide the renderer's own roads and names | The Satellite map type |
|
|
3993
|
+
| \`previews(ask)\` | When the layers menu opens after the view moved | Resolve to an image URL for each map type | Pictures in the layers menu |
|
|
3994
|
+
| \`behind(place)\` | With \`project\` | Return \`true\` for a place on the far side of a globe | Hiding markers behind a globe |
|
|
3995
|
+
|
|
3996
|
+
\`connection.disconnect()\` calls every function a method returned, gives the
|
|
3997
|
+
renderer its gestures back with \`gestures('free')\`, takes the markers off their
|
|
3998
|
+
places, puts the focus target's \`tabindex\` back as it was, and stops listening
|
|
3999
|
+
to the frame. Call it before you remove the renderer.
|
|
4000
|
+
|
|
4001
|
+
### How the frame says a move
|
|
4002
|
+
|
|
4003
|
+
The frame's keys and buttons only ask. The frame says "Moved left" or "Zoom
|
|
4004
|
+
level 14" after the driver calls the \`moved\` it gave to \`onView\`, and once the
|
|
4005
|
+
view has been still for a moment. A driver without \`onView\` never makes the
|
|
4006
|
+
frame speak, so the frame never describes a move that did not happen.
|
|
4007
|
+
|
|
4008
|
+
### Example
|
|
4009
|
+
|
|
4010
|
+
This driver shows a plan drawn as one image, such as a floor plan, whose edges
|
|
4011
|
+
are at known latitudes and longitudes. It moves the image with a CSS transform,
|
|
4012
|
+
places markers, and animates over the page's motion. The same driver runs in
|
|
4013
|
+
our specs, so this example stays correct.
|
|
4014
|
+
|
|
4015
|
+
\`\`\`js
|
|
4016
|
+
import { connectMap } from '@fusion.dev/helix-map'
|
|
4017
|
+
|
|
4018
|
+
const planDriver = (image, plan) => {
|
|
4019
|
+
const view = { scale: 1, x: 0, y: 0 }
|
|
4020
|
+
const listeners = new Set()
|
|
4021
|
+
let moving = 0
|
|
4022
|
+
|
|
4023
|
+
const draw = () => {
|
|
4024
|
+
image.style.transformOrigin = '0 0'
|
|
4025
|
+
image.style.transform = \`translate(\${view.x}px, \${view.y}px) scale(\${view.scale})\`
|
|
4026
|
+
for (const moved of listeners) {
|
|
4027
|
+
moved()
|
|
4028
|
+
}
|
|
4029
|
+
}
|
|
4030
|
+
|
|
4031
|
+
// Moves the view to \`next\` over the page's motion, or at once where it is null.
|
|
4032
|
+
const go = (next, motion) => {
|
|
4033
|
+
const run = ++moving
|
|
4034
|
+
if (!motion || motion.duration <= 0) {
|
|
4035
|
+
Object.assign(view, next)
|
|
4036
|
+
draw()
|
|
4037
|
+
return
|
|
4038
|
+
}
|
|
4039
|
+
const from = { ...view }
|
|
4040
|
+
const start = performance.now()
|
|
4041
|
+
const step = (now) => {
|
|
4042
|
+
if (run !== moving) {
|
|
4043
|
+
return
|
|
4044
|
+
}
|
|
4045
|
+
const t = Math.min(1, (now - start) / motion.duration)
|
|
4046
|
+
const k = motion.easing(t)
|
|
4047
|
+
view.x = from.x + (next.x - from.x) * k
|
|
4048
|
+
view.y = from.y + (next.y - from.y) * k
|
|
4049
|
+
view.scale = from.scale + (next.scale - from.scale) * k
|
|
4050
|
+
draw()
|
|
4051
|
+
if (t < 1) {
|
|
4052
|
+
requestAnimationFrame(step)
|
|
4053
|
+
}
|
|
4054
|
+
}
|
|
4055
|
+
requestAnimationFrame(step)
|
|
4056
|
+
}
|
|
4057
|
+
|
|
4058
|
+
return {
|
|
4059
|
+
onView: (moved) => {
|
|
4060
|
+
listeners.add(moved)
|
|
4061
|
+
return () => listeners.delete(moved)
|
|
4062
|
+
},
|
|
4063
|
+
panBy: (x, y, motion) => go({ ...view, x: view.x - x, y: view.y - y }, motion),
|
|
4064
|
+
project: ({ lat, lng }) => ({
|
|
4065
|
+
x: view.x + ((lng - plan.west) / (plan.east - plan.west)) * plan.width * view.scale,
|
|
4066
|
+
y: view.y + ((plan.north - lat) / (plan.north - plan.south)) * plan.height * view.scale,
|
|
4067
|
+
}),
|
|
4068
|
+
zoom: () => Math.log2(view.scale),
|
|
4069
|
+
zoomBy: (direction, motion) => {
|
|
4070
|
+
const box = image.parentElement.getBoundingClientRect()
|
|
4071
|
+
const k = direction > 0 ? 2 : 0.5
|
|
4072
|
+
const [cx, cy] = [box.width / 2, box.height / 2]
|
|
4073
|
+
go({ scale: view.scale * k, x: cx - (cx - view.x) * k, y: cy - (cy - view.y) * k }, motion)
|
|
4074
|
+
},
|
|
4075
|
+
}
|
|
4076
|
+
}
|
|
4077
|
+
|
|
4078
|
+
const frame = document.querySelector('helix-map')
|
|
4079
|
+
const connection = connectMap(
|
|
4080
|
+
frame,
|
|
4081
|
+
planDriver(frame.querySelector('img'), {
|
|
4082
|
+
east: 0.004,
|
|
4083
|
+
height: 600,
|
|
4084
|
+
north: 51.502,
|
|
4085
|
+
south: 51.5,
|
|
4086
|
+
west: 0,
|
|
4087
|
+
width: 800,
|
|
4088
|
+
}),
|
|
4089
|
+
)
|
|
4090
|
+
\`\`\`
|
|
4091
|
+
|
|
4092
|
+
\`width\` and \`height\` are the image's size in CSS pixels at zoom \`0\`. To animate
|
|
4093
|
+
a move your page makes itself, read the same motion with
|
|
4094
|
+
\`motionOf(element, pace)\`.
|
|
4095
|
+
|
|
4096
|
+
### Test a driver
|
|
4097
|
+
|
|
4098
|
+
Our specs test each driver twice. A stand-in renderer records what the driver
|
|
4099
|
+
asks it, which runs anywhere. Then the browser specs connect a frame to the real
|
|
4100
|
+
MapLibre and Leaflet with a style that loads nothing, press the frame's keys and
|
|
4101
|
+
buttons, and check that the view moved and that the frame said so. Test your
|
|
4102
|
+
driver the same way: connect it to a frame, press a key on the frame's \`region\`
|
|
4103
|
+
part, and wait for the \`live\` part to say the move.
|
|
3813
4104
|
`,
|
|
3814
4105
|
metrics: `---
|
|
3815
4106
|
description: How much Helix adds to a page, measured from the built packages.
|
|
@@ -3859,7 +4150,7 @@ on its own.
|
|
|
3859
4150
|
|
|
3860
4151
|
| | Raw | Gzip | Brotli |
|
|
3861
4152
|
|---|---|---|---|
|
|
3862
|
-
| Lit and \`@fusion.dev/helix-core\` |
|
|
4153
|
+
| Lit and \`@fusion.dev/helix-core\` | 249,985 | 78,265 | 67,056 |
|
|
3863
4154
|
|
|
3864
4155
|
## Whole packages
|
|
3865
4156
|
|
|
@@ -3870,12 +4161,12 @@ either barrel. The per-component tables show what your page pays.
|
|
|
3870
4161
|
|
|
3871
4162
|
| Package | Raw | Gzip | Brotli | |
|
|
3872
4163
|
|---|---|---|---|---|
|
|
3873
|
-
| \`@fusion.dev/helix-core\` |
|
|
3874
|
-
| \`@fusion.dev/helix-headless\` | 1,
|
|
4164
|
+
| \`@fusion.dev/helix-core\` | 249,194 | 78,054 | 66,758 | The element base class, mixins, decorators, and floating positioning. |
|
|
4165
|
+
| \`@fusion.dev/helix-headless\` | 1,368,237 | 371,024 | 277,785 | Every headless family. The barrel entry includes all of them. |
|
|
3875
4166
|
| \`@fusion.dev/helix-icons\` | 56,111 | 17,847 | 15,166 | The whole glyph set. |
|
|
3876
4167
|
| \`@fusion.dev/helix-theme\` | 3,626 | 1,597 | 1,384 | The JavaScript that runs the derivation engine. Most sites run it at build time, and a theme switcher runs it in the browser. |
|
|
3877
4168
|
| \`fusion_helix_theme_bg.wasm\` | 490,971 | 155,905 | 125,923 | The derivation engine itself, in WebAssembly. The entry above loads it when the engine runs. |
|
|
3878
|
-
| \`@fusion.dev/helix\` | 2,
|
|
4169
|
+
| \`@fusion.dev/helix\` | 2,083,183 | 517,203 | 366,564 | Every styled family. |
|
|
3879
4170
|
| \`lit\` | 15,394 | 6,118 | 5,460 | Lit itself, listed so you can subtract it from every row above. |
|
|
3880
4171
|
|
|
3881
4172
|
## Stylesheets
|
|
@@ -3896,13 +4187,13 @@ shows the whole cost of using the base layer on its own.
|
|
|
3896
4187
|
|
|
3897
4188
|
## What the numbers say
|
|
3898
4189
|
|
|
3899
|
-
**Most of your first component is the shared runtime.** The median styled family is 17,
|
|
4190
|
+
**Most of your first component is the shared runtime.** The median styled family is 17,254 bytes gzipped alone, and it adds 3,839 to a page that already has Helix. The shared runtime is 78 percent of the first component, and the component itself is 22 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.
|
|
3900
4191
|
|
|
3901
|
-
Across the 105 styled components, the smallest is \`code\` at 8,
|
|
4192
|
+
Across the 105 styled components, the smallest is \`code\` at 8,472 bytes gzipped alone, and the largest is \`data-table\` at 80,953. Every family together is 517,203.
|
|
3902
4193
|
|
|
3903
|
-
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
|
|
4194
|
+
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 371,024 bytes gzipped, whatever else the page imports. That is 22 times the median family above. All 105 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.
|
|
3904
4195
|
|
|
3905
|
-
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 16,
|
|
4196
|
+
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 16,540 bytes gzipped alone.
|
|
3906
4197
|
|
|
3907
4198
|
## Compared with other systems
|
|
3908
4199
|
|
|
@@ -3914,32 +4205,32 @@ The table has no whole-library row. That row would compare how many components e
|
|
|
3914
4205
|
|
|
3915
4206
|
| Component | System | Raw | Gzip | Brotli |
|
|
3916
4207
|
|---|---|---|---|---|
|
|
3917
|
-
| \`button\` | **Helix** |
|
|
4208
|
+
| \`button\` | **Helix** | 43,933 | 14,538 | 12,956 |
|
|
3918
4209
|
| | Carbon | 133,058 | 20,959 | 17,685 |
|
|
3919
4210
|
| | Material Web | 47,060 | 14,173 | 12,591 |
|
|
3920
4211
|
| | Shoelace | 62,628 | 18,287 | 15,805 |
|
|
3921
4212
|
| | Spectrum | 98,792 | 22,045 | 18,674 |
|
|
3922
|
-
| \`checkbox\` | **Helix** |
|
|
4213
|
+
| \`checkbox\` | **Helix** | 47,530 | 15,121 | 13,473 |
|
|
3923
4214
|
| | Carbon | 60,255 | 15,609 | 13,550 |
|
|
3924
4215
|
| | Material Web | 43,785 | 13,556 | 12,015 |
|
|
3925
4216
|
| | Shoelace | 47,614 | 15,177 | 13,301 |
|
|
3926
4217
|
| | Spectrum | 62,492 | 15,437 | 13,481 |
|
|
3927
|
-
| \`dialog\` | **Helix** |
|
|
4218
|
+
| \`dialog\` | **Helix** | 45,141 | 15,337 | 13,680 |
|
|
3928
4219
|
| | Carbon | 510,866 | 67,390 | 39,189 |
|
|
3929
4220
|
| | Material Web | 34,238 | 11,510 | 10,229 |
|
|
3930
4221
|
| | Shoelace | 52,754 | 17,698 | 15,554 |
|
|
3931
4222
|
| | Spectrum | 155,708 | 31,899 | 26,262 |
|
|
3932
|
-
| \`radio\` | **Helix** |
|
|
4223
|
+
| \`radio\` | **Helix** | 52,058 | 15,999 | 14,201 |
|
|
3933
4224
|
| | Carbon | 63,055 | 16,887 | 14,605 |
|
|
3934
4225
|
| | Material Web | 41,044 | 13,234 | 11,757 |
|
|
3935
4226
|
| | Shoelace | 34,865 | 12,027 | 10,559 |
|
|
3936
4227
|
| | Spectrum | 38,685 | 10,660 | 9,370 |
|
|
3937
|
-
| \`switch\` | **Helix** |
|
|
4228
|
+
| \`switch\` | **Helix** | 44,243 | 14,585 | 12,983 |
|
|
3938
4229
|
| | Carbon | 69,423 | 17,127 | 14,764 |
|
|
3939
4230
|
| | Material Web | 50,155 | 14,577 | 12,935 |
|
|
3940
4231
|
| | Shoelace | 37,833 | 11,814 | 10,568 |
|
|
3941
4232
|
| | Spectrum | 62,322 | 15,059 | 13,321 |
|
|
3942
|
-
| \`tabs\` | **Helix** |
|
|
4233
|
+
| \`tabs\` | **Helix** | 59,178 | 18,452 | 16,403 |
|
|
3943
4234
|
| | Carbon | 578,766 | 73,537 | 43,235 |
|
|
3944
4235
|
| | Material Web | 38,883 | 12,820 | 11,368 |
|
|
3945
4236
|
| | Shoelace | 54,573 | 17,140 | 15,068 |
|
|
@@ -3950,7 +4241,7 @@ The table has no whole-library row. That row would compare how many components e
|
|
|
3950
4241
|
| | Shoelace | 57,412 | 20,220 | 17,933 |
|
|
3951
4242
|
| | Spectrum | 136,599 | 40,552 | 35,286 |
|
|
3952
4243
|
|
|
3953
|
-
At least one system is smaller than Helix on \`button\`, \`checkbox\`, \`dialog\`, \`radio\`, \`switch\`, \`tabs\`, \`tooltip\`. The largest gap is tabs against Material Web, at
|
|
4244
|
+
At least one system is smaller than Helix on \`button\`, \`checkbox\`, \`dialog\`, \`radio\`, \`switch\`, \`tabs\`, \`tooltip\`. The largest gap is tabs against Material Web, at 5,632 bytes gzipped. 12 of 27 peer measurements are smaller than the Helix row.
|
|
3954
4245
|
|
|
3955
4246
|
Helix's \`radio\` family includes Radio Group, so its row carries an element that some peer rows measure without.
|
|
3956
4247
|
|
|
@@ -3996,104 +4287,104 @@ Structure, accessibility, state, and form participation. It has no presentation
|
|
|
3996
4287
|
|
|
3997
4288
|
| Family | Alone raw | Alone gzip | Alone brotli | Added raw | Added gzip | Added brotli |
|
|
3998
4289
|
|---|---|---|---|---|---|---|
|
|
3999
|
-
| \`accordion\` | 32,745 | 11,983 | 10,
|
|
4000
|
-
| \`announcement\` |
|
|
4001
|
-
| \`app-header\` |
|
|
4002
|
-
| \`area-chart\` | 91,
|
|
4003
|
-
| \`avatar\` |
|
|
4004
|
-
| \`badge\` |
|
|
4005
|
-
| \`bar-chart\` |
|
|
4006
|
-
| \`blockquote\` | 24,289 | 9,538 | 8,445 | 2,731 | 1,
|
|
4007
|
-
| \`breadcrumbs\` |
|
|
4008
|
-
| \`button\` |
|
|
4009
|
-
| \`button-group\` | 27,883 | 10,537 | 9,328 | 5,322 | 1,
|
|
4010
|
-
| \`callout\` |
|
|
4011
|
-
| \`canvas\` | 109,
|
|
4012
|
-
| \`card\` | 23,959 | 9,173 | 8,113 | 2,422 |
|
|
4013
|
-
| \`carousel\` |
|
|
4014
|
-
| \`chat\` |
|
|
4015
|
-
| \`checkbox\` |
|
|
4016
|
-
| \`checkbox-group\` |
|
|
4017
|
-
| \`code\` | 20,483 | 8,
|
|
4018
|
-
| \`code-block\` |
|
|
4019
|
-
| \`color-input\` |
|
|
4020
|
-
| \`color-picker\` | 105,
|
|
4021
|
-
| \`combobox\` |
|
|
4022
|
-
| \`command\` |
|
|
4023
|
-
| \`copy-button\` |
|
|
4024
|
-
| \`data-table\` | 208,
|
|
4025
|
-
| \`date-input\` |
|
|
4026
|
-
| \`date-picker\` | 61,
|
|
4027
|
-
| \`description-list\` | 23,412 | 8,907 | 7,880 | 2,225 |
|
|
4028
|
-
| \`dialog\` |
|
|
4029
|
-
| \`divider\` | 23,173 | 9,044 | 8,008 | 1,745 |
|
|
4030
|
-
| \`donut-chart\` |
|
|
4031
|
-
| \`drawer\` |
|
|
4032
|
-
| \`drilldown\` |
|
|
4033
|
-
| \`empty\` | 24,376 | 9,
|
|
4034
|
-
| \`file-input\` |
|
|
4035
|
-
| \`filter-input\` | 96,
|
|
4036
|
-
| \`format-date\` | 30,
|
|
4037
|
-
| \`graph\` |
|
|
4038
|
-
| \`heatmap\` | 95,
|
|
4039
|
-
| \`icon\` | 31,354 | 11,873 | 10,
|
|
4040
|
-
| \`icon-button\` |
|
|
4041
|
-
| \`image\` | 25,686 | 9,596 | 8,498 | 4,159 | 1,
|
|
4042
|
-
| \`input\` |
|
|
4043
|
-
| \`kbd\` | 27,537 | 10,
|
|
4044
|
-
| \`legend\` |
|
|
4045
|
-
| \`lightbox\` |
|
|
4046
|
-
| \`line-chart\` | 92,
|
|
4047
|
-
| \`list\` | 62,
|
|
4048
|
-
| \`listbox\` |
|
|
4049
|
-
| \`loader\` |
|
|
4050
|
-
| \`map\` | 82,
|
|
4051
|
-
| \`megamenu\` | 60,537 | 21,791 | 19,316 | 8,929 | 2,
|
|
4052
|
-
| \`menu\` |
|
|
4053
|
-
| \`meter\` |
|
|
4054
|
-
| \`navigation\` |
|
|
4055
|
-
| \`notifications\` |
|
|
4056
|
-
| \`number-input\` |
|
|
4057
|
-
| \`object-inspector\` |
|
|
4058
|
-
| \`option\` | 27,320 | 9,919 | 8,780 | 5,521 | 1,
|
|
4059
|
-
| \`outline\` |
|
|
4060
|
-
| \`pagination\` | 139,
|
|
4061
|
-
| \`pin-input\` |
|
|
4062
|
-
| \`popover\` |
|
|
4063
|
-
| \`progress\` | 28,
|
|
4064
|
-
| \`qr-code\` |
|
|
4065
|
-
| \`quote\` | 22,698 | 9,
|
|
4066
|
-
| \`radio\` |
|
|
4067
|
-
| \`rating\` | 51,
|
|
4068
|
-
| \`scatter-chart\` |
|
|
4069
|
-
| \`scroll-area\` | 30,549 | 11,169 | 9,
|
|
4070
|
-
| \`select\` |
|
|
4071
|
-
| \`skeleton\` | 22,510 | 8,
|
|
4072
|
-
| \`skip-link\` |
|
|
4073
|
-
| \`slider\` |
|
|
4074
|
-
| \`sparkline\` |
|
|
4075
|
-
| \`speed-dial\` |
|
|
4076
|
-
| \`splitter\` |
|
|
4077
|
-
| \`stat\` | 25,
|
|
4078
|
-
| \`steps\` | 56,
|
|
4079
|
-
| \`switch\` |
|
|
4080
|
-
| \`table\` |
|
|
4081
|
-
| \`tabs\` |
|
|
4082
|
-
| \`tag\` | 44,
|
|
4083
|
-
| \`textarea\` |
|
|
4084
|
-
| \`time-input\` |
|
|
4085
|
-
| \`time-picker\` | 101,
|
|
4086
|
-
| \`timeline\` | 32,
|
|
4087
|
-
| \`toast\` |
|
|
4088
|
-
| \`toggle\` | 46,641 | 15,
|
|
4089
|
-
| \`toolbar\` |
|
|
4090
|
-
| \`tooltip\` | 59,114 | 21,
|
|
4091
|
-
| \`tour\` | 86,
|
|
4092
|
-
| \`tree\` | 69,
|
|
4093
|
-
| \`trend\` |
|
|
4094
|
-
| \`video\` | 146,
|
|
4095
|
-
| \`video-playlist\` | 133,
|
|
4096
|
-
| \`virtual-list\` |
|
|
4290
|
+
| \`accordion\` | 32,745 | 11,983 | 10,621 | 6,019 | 1,752 | 1,193 |
|
|
4291
|
+
| \`announcement\` | 37,203 | 13,437 | 11,960 | 5,014 | 1,547 | 1,085 |
|
|
4292
|
+
| \`app-header\` | 32,800 | 12,032 | 10,689 | 6,204 | 1,887 | 1,406 |
|
|
4293
|
+
| \`area-chart\` | 91,684 | 31,814 | 28,138 | 14,689 | 4,476 | 3,404 |
|
|
4294
|
+
| \`avatar\` | 30,980 | 11,730 | 10,491 | 4,627 | 1,379 | 940 |
|
|
4295
|
+
| \`badge\` | 27,270 | 10,682 | 9,487 | 3,276 | 1,042 | 695 |
|
|
4296
|
+
| \`bar-chart\` | 94,648 | 32,661 | 28,887 | 17,507 | 5,292 | 4,108 |
|
|
4297
|
+
| \`blockquote\` | 24,289 | 9,538 | 8,445 | 2,731 | 1,024 | 590 |
|
|
4298
|
+
| \`breadcrumbs\` | 36,711 | 14,014 | 12,516 | 8,000 | 2,571 | 1,894 |
|
|
4299
|
+
| \`button\` | 36,808 | 13,084 | 11,650 | 5,229 | 1,599 | 1,008 |
|
|
4300
|
+
| \`button-group\` | 27,883 | 10,537 | 9,328 | 5,322 | 1,685 | 1,164 |
|
|
4301
|
+
| \`callout\` | 35,706 | 13,688 | 12,136 | 3,217 | 1,111 | 751 |
|
|
4302
|
+
| \`canvas\` | 109,730 | 34,968 | 30,562 | 70,004 | 21,236 | 17,566 |
|
|
4303
|
+
| \`card\` | 23,959 | 9,173 | 8,113 | 2,422 | 767 | 416 |
|
|
4304
|
+
| \`carousel\` | 42,808 | 15,297 | 13,659 | 15,311 | 4,275 | 3,248 |
|
|
4305
|
+
| \`chat\` | 79,823 | 26,288 | 23,259 | 28,478 | 8,264 | 6,410 |
|
|
4306
|
+
| \`checkbox\` | 40,700 | 13,631 | 12,154 | 3,391 | 1,096 | 547 |
|
|
4307
|
+
| \`checkbox-group\` | 48,257 | 15,584 | 13,912 | 8,941 | 2,519 | 1,746 |
|
|
4308
|
+
| \`code\` | 20,483 | 8,146 | 7,235 | 466 | 232 | -2 |
|
|
4309
|
+
| \`code-block\` | 105,805 | 35,359 | 31,190 | 38,281 | 10,919 | 8,573 |
|
|
4310
|
+
| \`color-input\` | 144,833 | 45,391 | 39,581 | 56,972 | 14,692 | 11,724 |
|
|
4311
|
+
| \`color-picker\` | 105,398 | 33,173 | 29,047 | 48,468 | 12,937 | 10,266 |
|
|
4312
|
+
| \`combobox\` | 138,652 | 42,926 | 37,710 | 40,551 | 10,021 | 7,760 |
|
|
4313
|
+
| \`command\` | 105,558 | 32,443 | 28,490 | 35,072 | 9,121 | 7,159 |
|
|
4314
|
+
| \`copy-button\` | 83,474 | 28,192 | 24,972 | 19,635 | 5,177 | 3,868 |
|
|
4315
|
+
| \`data-table\` | 208,407 | 62,308 | 53,145 | 97,585 | 25,249 | 19,981 |
|
|
4316
|
+
| \`date-input\` | 143,652 | 44,428 | 39,012 | 38,543 | 9,503 | 7,477 |
|
|
4317
|
+
| \`date-picker\` | 61,377 | 20,763 | 18,588 | 20,319 | 5,572 | 4,195 |
|
|
4318
|
+
| \`description-list\` | 23,412 | 8,907 | 7,880 | 2,225 | 663 | 386 |
|
|
4319
|
+
| \`dialog\` | 39,660 | 14,075 | 12,485 | 6,219 | 1,895 | 1,304 |
|
|
4320
|
+
| \`divider\` | 23,173 | 9,044 | 8,008 | 1,745 | 640 | 416 |
|
|
4321
|
+
| \`donut-chart\` | 90,591 | 31,236 | 27,691 | 15,268 | 4,657 | 3,636 |
|
|
4322
|
+
| \`drawer\` | 44,304 | 15,612 | 13,853 | 8,080 | 2,463 | 1,825 |
|
|
4323
|
+
| \`drilldown\` | 43,328 | 15,038 | 13,350 | 10,162 | 2,818 | 1,954 |
|
|
4324
|
+
| \`empty\` | 24,376 | 9,368 | 8,289 | 2,282 | 783 | 457 |
|
|
4325
|
+
| \`file-input\` | 58,793 | 20,112 | 17,827 | 13,746 | 4,248 | 3,272 |
|
|
4326
|
+
| \`filter-input\` | 96,474 | 31,917 | 28,269 | 19,508 | 5,479 | 4,185 |
|
|
4327
|
+
| \`format-date\` | 30,340 | 11,408 | 10,201 | 4,769 | 1,382 | 877 |
|
|
4328
|
+
| \`graph\` | 72,038 | 23,773 | 21,085 | 18,971 | 5,747 | 4,418 |
|
|
4329
|
+
| \`heatmap\` | 95,882 | 32,715 | 28,893 | 17,554 | 5,064 | 3,834 |
|
|
4330
|
+
| \`icon\` | 31,354 | 11,873 | 10,467 | 8,833 | 3,007 | 2,252 |
|
|
4331
|
+
| \`icon-button\` | 37,247 | 13,128 | 11,726 | 5,666 | 1,661 | 1,118 |
|
|
4332
|
+
| \`image\` | 25,686 | 9,596 | 8,498 | 4,159 | 1,280 | 787 |
|
|
4333
|
+
| \`input\` | 47,149 | 16,122 | 14,209 | 7,688 | 2,551 | 1,803 |
|
|
4334
|
+
| \`kbd\` | 27,537 | 10,604 | 9,364 | 3,825 | 1,234 | 776 |
|
|
4335
|
+
| \`legend\` | 35,366 | 13,053 | 11,629 | 3,289 | 1,132 | 743 |
|
|
4336
|
+
| \`lightbox\` | 56,786 | 18,937 | 16,839 | 17,408 | 4,847 | 3,421 |
|
|
4337
|
+
| \`line-chart\` | 92,719 | 31,985 | 28,300 | 15,394 | 4,567 | 3,555 |
|
|
4338
|
+
| \`list\` | 62,376 | 21,453 | 19,146 | 15,975 | 4,621 | 3,467 |
|
|
4339
|
+
| \`listbox\` | 81,930 | 26,368 | 23,313 | 19,854 | 5,533 | 4,144 |
|
|
4340
|
+
| \`loader\` | 26,561 | 10,165 | 9,002 | 3,105 | 1,098 | 673 |
|
|
4341
|
+
| \`map\` | 82,476 | 24,898 | 21,673 | 40,792 | 10,620 | 8,107 |
|
|
4342
|
+
| \`megamenu\` | 60,537 | 21,791 | 19,316 | 8,929 | 2,517 | 1,698 |
|
|
4343
|
+
| \`menu\` | 104,806 | 34,690 | 30,606 | 33,419 | 8,641 | 6,760 |
|
|
4344
|
+
| \`meter\` | 31,965 | 12,146 | 10,878 | 5,291 | 1,600 | 1,143 |
|
|
4345
|
+
| \`navigation\` | 33,270 | 12,546 | 11,147 | 3,696 | 1,299 | 881 |
|
|
4346
|
+
| \`notifications\` | 59,536 | 19,809 | 17,632 | 18,781 | 5,008 | 3,761 |
|
|
4347
|
+
| \`number-input\` | 56,978 | 18,967 | 16,900 | 13,860 | 3,741 | 2,664 |
|
|
4348
|
+
| \`object-inspector\` | 116,618 | 38,694 | 34,093 | 37,093 | 10,495 | 8,235 |
|
|
4349
|
+
| \`option\` | 27,320 | 9,919 | 8,780 | 5,521 | 1,398 | 941 |
|
|
4350
|
+
| \`outline\` | 33,838 | 12,725 | 11,296 | 8,200 | 2,703 | 1,890 |
|
|
4351
|
+
| \`pagination\` | 139,318 | 43,647 | 37,911 | 47,844 | 12,105 | 9,295 |
|
|
4352
|
+
| \`pin-input\` | 47,831 | 16,523 | 14,799 | 7,048 | 2,354 | 1,600 |
|
|
4353
|
+
| \`popover\` | 64,354 | 23,048 | 20,379 | 6,748 | 2,019 | 1,278 |
|
|
4354
|
+
| \`progress\` | 28,266 | 10,847 | 9,665 | 3,305 | 1,066 | 736 |
|
|
4355
|
+
| \`qr-code\` | 42,901 | 16,762 | 14,927 | 17,336 | 6,488 | 5,275 |
|
|
4356
|
+
| \`quote\` | 22,698 | 9,005 | 7,944 | 1,539 | 680 | 297 |
|
|
4357
|
+
| \`radio\` | 43,556 | 14,464 | 12,839 | 4,432 | 1,370 | 793 |
|
|
4358
|
+
| \`rating\` | 51,043 | 17,408 | 15,502 | 8,367 | 2,569 | 1,792 |
|
|
4359
|
+
| \`scatter-chart\` | 92,662 | 31,811 | 28,148 | 16,759 | 5,000 | 3,762 |
|
|
4360
|
+
| \`scroll-area\` | 30,549 | 11,169 | 9,879 | 8,810 | 2,705 | 1,954 |
|
|
4361
|
+
| \`select\` | 122,566 | 39,270 | 34,452 | 32,039 | 8,293 | 6,177 |
|
|
4362
|
+
| \`skeleton\` | 22,510 | 8,766 | 7,771 | 1,321 | 539 | 217 |
|
|
4363
|
+
| \`skip-link\` | 24,054 | 9,460 | 8,363 | 1,553 | 607 | 361 |
|
|
4364
|
+
| \`slider\` | 53,659 | 17,942 | 16,079 | 13,495 | 3,937 | 2,857 |
|
|
4365
|
+
| \`sparkline\` | 48,052 | 17,558 | 15,663 | 6,289 | 2,251 | 1,720 |
|
|
4366
|
+
| \`speed-dial\` | 69,853 | 24,833 | 22,034 | 11,841 | 3,124 | 2,280 |
|
|
4367
|
+
| \`splitter\` | 43,932 | 15,278 | 13,664 | 14,732 | 3,974 | 3,038 |
|
|
4368
|
+
| \`stat\` | 25,766 | 9,817 | 8,715 | 2,962 | 919 | 588 |
|
|
4369
|
+
| \`steps\` | 56,226 | 19,220 | 17,062 | 14,578 | 4,061 | 3,094 |
|
|
4370
|
+
| \`switch\` | 39,558 | 13,455 | 11,993 | 1,963 | 727 | 286 |
|
|
4371
|
+
| \`table\` | 119,860 | 36,938 | 32,130 | 46,795 | 12,723 | 10,067 |
|
|
4372
|
+
| \`tabs\` | 49,181 | 16,557 | 14,714 | 11,170 | 2,981 | 2,161 |
|
|
4373
|
+
| \`tag\` | 44,369 | 16,108 | 14,374 | 9,122 | 2,692 | 1,890 |
|
|
4374
|
+
| \`textarea\` | 44,640 | 15,082 | 13,424 | 5,738 | 1,756 | 1,154 |
|
|
4375
|
+
| \`time-input\` | 172,613 | 52,676 | 45,706 | 49,702 | 12,559 | 9,749 |
|
|
4376
|
+
| \`time-picker\` | 101,057 | 31,471 | 27,721 | 34,757 | 9,326 | 7,119 |
|
|
4377
|
+
| \`timeline\` | 32,129 | 12,023 | 10,752 | 5,055 | 1,392 | 857 |
|
|
4378
|
+
| \`toast\` | 51,650 | 18,074 | 16,034 | 12,791 | 3,677 | 2,762 |
|
|
4379
|
+
| \`toggle\` | 46,641 | 15,300 | 13,635 | 6,703 | 2,011 | 1,353 |
|
|
4380
|
+
| \`toolbar\` | 31,229 | 11,688 | 10,402 | 5,487 | 1,783 | 1,255 |
|
|
4381
|
+
| \`tooltip\` | 59,114 | 21,175 | 18,812 | 8,757 | 2,491 | 1,825 |
|
|
4382
|
+
| \`tour\` | 86,320 | 29,251 | 25,828 | 20,826 | 5,690 | 4,253 |
|
|
4383
|
+
| \`tree\` | 69,125 | 22,920 | 20,354 | 17,926 | 5,179 | 3,943 |
|
|
4384
|
+
| \`trend\` | 29,899 | 11,696 | 10,437 | 3,822 | 1,234 | 862 |
|
|
4385
|
+
| \`video\` | 146,051 | 45,106 | 39,301 | 69,860 | 17,621 | 14,148 |
|
|
4386
|
+
| \`video-playlist\` | 133,455 | 42,275 | 37,140 | 47,018 | 12,002 | 9,570 |
|
|
4387
|
+
| \`virtual-list\` | 58,901 | 20,072 | 17,900 | 21,141 | 6,476 | 5,036 |
|
|
4097
4388
|
|
|
4098
4389
|
### Styled tier
|
|
4099
4390
|
|
|
@@ -4101,111 +4392,111 @@ The headless tier plus presentation. \`bun add @fusion.dev/helix\` installs this
|
|
|
4101
4392
|
|
|
4102
4393
|
| Family | Alone raw | Alone gzip | Alone brotli | Added raw | Added gzip | Added brotli |
|
|
4103
4394
|
|---|---|---|---|---|---|---|
|
|
4104
|
-
| \`accordion\` | 36,857 | 12,854 | 11,433 | 10,116 | 2,
|
|
4105
|
-
| \`announcement\` |
|
|
4106
|
-
| \`app-header\` |
|
|
4107
|
-
| \`area-chart\` |
|
|
4108
|
-
| \`aura\` | 51,
|
|
4109
|
-
| \`avatar\` |
|
|
4110
|
-
| \`badge\` |
|
|
4111
|
-
| \`bar-chart\` | 108,
|
|
4112
|
-
| \`blockquote\` | 26,860 | 10,107 | 8,936 | 5,287 | 1,
|
|
4113
|
-
| \`breadcrumbs\` | 44,
|
|
4114
|
-
| \`button\` |
|
|
4115
|
-
| \`button-group\` | 31,742 | 11,238 | 9,978 | 9,
|
|
4116
|
-
| \`callout\` |
|
|
4117
|
-
| \`canvas\` |
|
|
4118
|
-
| \`card\` | 28,213 | 10,
|
|
4119
|
-
| \`carousel\` |
|
|
4120
|
-
| \`chat\` | 96,
|
|
4121
|
-
| \`checkbox\` |
|
|
4122
|
-
| \`checkbox-group\` |
|
|
4123
|
-
| \`code\` | 21,671 | 8,
|
|
4124
|
-
| \`code-block\` | 132,
|
|
4125
|
-
| \`color-input\` | 189,
|
|
4126
|
-
| \`color-picker\` | 144,
|
|
4127
|
-
| \`combobox\` | 155,
|
|
4128
|
-
| \`command\` | 123,
|
|
4129
|
-
| \`copy-button\` |
|
|
4130
|
-
| \`data-table\` |
|
|
4131
|
-
| \`date-input\` |
|
|
4132
|
-
| \`date-picker\` |
|
|
4133
|
-
| \`description-list\` | 27,039 | 9,669 | 8,577 | 5,841 | 1,
|
|
4134
|
-
| \`dialog\` |
|
|
4135
|
-
| \`divider\` | 25,821 | 9,
|
|
4136
|
-
| \`donut-chart\` |
|
|
4137
|
-
| \`drawer\` |
|
|
4138
|
-
| \`drilldown\` |
|
|
4139
|
-
| \`empty\` | 26,021 | 9,826 | 8,678 | 3,909 | 1,
|
|
4140
|
-
| \`file-input\` | 71,
|
|
4141
|
-
| \`filter-input\` | 119,
|
|
4142
|
-
| \`flex\` | 25,978 | 9,
|
|
4143
|
-
| \`format-date\` | 30,
|
|
4144
|
-
| \`graph\` |
|
|
4145
|
-
| \`grid\` | 27,233 | 9,
|
|
4146
|
-
| \`heatmap\` | 103,
|
|
4147
|
-
| \`icon\` | 33,537 | 12,400 | 10,
|
|
4148
|
-
| \`icon-button\` |
|
|
4149
|
-
| \`image\` | 27,417 | 10,071 | 8,
|
|
4150
|
-
| \`input\` |
|
|
4151
|
-
| \`kbd\` | 29,864 | 11,
|
|
4152
|
-
| \`legend\` | 40,
|
|
4153
|
-
| \`lightbox\` |
|
|
4154
|
-
| \`line-chart\` |
|
|
4155
|
-
| \`list\` | 69,
|
|
4156
|
-
| \`listbox\` |
|
|
4157
|
-
| \`loader\` |
|
|
4158
|
-
| \`map\` | 119,
|
|
4159
|
-
| \`megamenu\` | 65,860 | 22,
|
|
4160
|
-
| \`menu\` |
|
|
4161
|
-
| \`meter\` | 38,
|
|
4162
|
-
| \`navigation\` |
|
|
4163
|
-
| \`notifications\` | 74,
|
|
4164
|
-
| \`number-input\` | 62,
|
|
4165
|
-
| \`object-inspector\` |
|
|
4166
|
-
| \`option\` | 31,522 | 10,947 | 9,689 | 9,715 | 2,
|
|
4167
|
-
| \`orb\` |
|
|
4168
|
-
| \`outline\` |
|
|
4169
|
-
| \`pagination\` | 159,
|
|
4170
|
-
| \`pin-input\` |
|
|
4171
|
-
| \`popover\` |
|
|
4172
|
-
| \`progress\` |
|
|
4173
|
-
| \`qr-code\` |
|
|
4174
|
-
| \`quote\` | 23,589 | 9,
|
|
4175
|
-
| \`radio\` |
|
|
4176
|
-
| \`rating\` | 55,
|
|
4177
|
-
| \`sandbox\` | 105,
|
|
4178
|
-
| \`scatter-chart\` |
|
|
4179
|
-
| \`scroll-area\` | 35,927 | 12,124 | 10,777 | 14,171 | 3,
|
|
4180
|
-
| \`select\` |
|
|
4181
|
-
| \`skeleton\` | 26,269 | 9,683 | 8,
|
|
4182
|
-
| \`skip-link\` |
|
|
4183
|
-
| \`slider\` | 69,
|
|
4184
|
-
| \`sparkline\` | 53,
|
|
4185
|
-
| \`speed-dial\` |
|
|
4186
|
-
| \`splitter\` | 50,
|
|
4187
|
-
| \`stat\` | 29,
|
|
4188
|
-
| \`steps\` | 71,
|
|
4189
|
-
| \`strands\` | 53,249 | 19,273 | 17,106 | 29,252 |
|
|
4190
|
-
| \`switch\` |
|
|
4191
|
-
| \`table\` | 139,
|
|
4192
|
-
| \`tabs\` |
|
|
4193
|
-
| \`tag\` |
|
|
4194
|
-
| \`text\` | 28,979 | 10,064 | 8,869 | 7,770 | 1,
|
|
4195
|
-
| \`textarea\` |
|
|
4196
|
-
| \`time-input\` |
|
|
4197
|
-
| \`time-picker\` | 114,
|
|
4198
|
-
| \`timeline\` | 40,
|
|
4199
|
-
| \`toast\` | 60,
|
|
4200
|
-
| \`toggle\` | 52,195 | 16,
|
|
4201
|
-
| \`toolbar\` |
|
|
4202
|
-
| \`tooltip\` | 62,262 | 21,925 | 19,449 | 11,887 | 3,
|
|
4203
|
-
| \`tour\` |
|
|
4204
|
-
| \`tree\` | 78,
|
|
4205
|
-
| \`trend\` |
|
|
4206
|
-
| \`video\` | 169,
|
|
4207
|
-
| \`video-playlist\` |
|
|
4208
|
-
| \`virtual-list\` |
|
|
4395
|
+
| \`accordion\` | 36,857 | 12,854 | 11,433 | 10,116 | 2,666 | 1,973 |
|
|
4396
|
+
| \`announcement\` | 42,139 | 14,513 | 12,955 | 9,931 | 2,672 | 1,958 |
|
|
4397
|
+
| \`app-header\` | 38,268 | 13,239 | 11,762 | 11,657 | 3,113 | 2,381 |
|
|
4398
|
+
| \`area-chart\` | 100,486 | 33,715 | 29,807 | 23,472 | 6,449 | 4,999 |
|
|
4399
|
+
| \`aura\` | 51,608 | 17,795 | 15,766 | 27,816 | 8,702 | 7,230 |
|
|
4400
|
+
| \`avatar\` | 34,654 | 12,524 | 11,164 | 8,286 | 2,195 | 1,688 |
|
|
4401
|
+
| \`badge\` | 33,033 | 11,900 | 10,592 | 9,034 | 2,281 | 1,638 |
|
|
4402
|
+
| \`bar-chart\` | 108,880 | 35,490 | 31,337 | 31,716 | 8,138 | 6,511 |
|
|
4403
|
+
| \`blockquote\` | 26,860 | 10,107 | 8,936 | 5,287 | 1,582 | 1,166 |
|
|
4404
|
+
| \`breadcrumbs\` | 44,361 | 15,237 | 13,632 | 15,636 | 3,839 | 3,087 |
|
|
4405
|
+
| \`button\` | 43,933 | 14,538 | 12,956 | 12,335 | 3,085 | 2,212 |
|
|
4406
|
+
| \`button-group\` | 31,742 | 11,238 | 9,978 | 9,166 | 2,402 | 1,770 |
|
|
4407
|
+
| \`callout\` | 39,852 | 14,635 | 13,025 | 7,345 | 2,084 | 1,482 |
|
|
4408
|
+
| \`canvas\` | 131,932 | 39,201 | 34,105 | 91,848 | 25,403 | 21,177 |
|
|
4409
|
+
| \`card\` | 28,213 | 10,190 | 9,050 | 6,662 | 1,794 | 1,270 |
|
|
4410
|
+
| \`carousel\` | 53,697 | 17,099 | 15,290 | 26,186 | 6,141 | 4,832 |
|
|
4411
|
+
| \`chat\` | 96,192 | 29,069 | 25,717 | 44,844 | 11,122 | 8,733 |
|
|
4412
|
+
| \`checkbox\` | 47,530 | 15,121 | 13,473 | 10,203 | 2,629 | 1,870 |
|
|
4413
|
+
| \`checkbox-group\` | 56,154 | 17,240 | 15,371 | 16,834 | 4,220 | 2,999 |
|
|
4414
|
+
| \`code\` | 21,671 | 8,472 | 7,490 | 1,639 | 554 | 308 |
|
|
4415
|
+
| \`code-block\` | 132,186 | 39,345 | 34,718 | 64,644 | 15,016 | 12,089 |
|
|
4416
|
+
| \`color-input\` | 189,475 | 51,816 | 45,287 | 101,604 | 21,149 | 17,301 |
|
|
4417
|
+
| \`color-picker\` | 144,230 | 38,895 | 34,039 | 87,286 | 18,794 | 15,246 |
|
|
4418
|
+
| \`combobox\` | 155,221 | 45,979 | 40,297 | 57,104 | 13,056 | 10,413 |
|
|
4419
|
+
| \`command\` | 123,452 | 35,756 | 31,297 | 52,966 | 12,453 | 10,034 |
|
|
4420
|
+
| \`copy-button\` | 96,938 | 30,463 | 26,941 | 33,079 | 7,486 | 5,845 |
|
|
4421
|
+
| \`data-table\` | 292,563 | 80,953 | 66,121 | 180,517 | 43,528 | 32,494 |
|
|
4422
|
+
| \`date-input\` | 165,923 | 48,247 | 42,430 | 60,795 | 13,361 | 10,795 |
|
|
4423
|
+
| \`date-picker\` | 69,693 | 22,224 | 19,893 | 28,614 | 7,026 | 5,588 |
|
|
4424
|
+
| \`description-list\` | 27,039 | 9,669 | 8,577 | 5,841 | 1,455 | 1,033 |
|
|
4425
|
+
| \`dialog\` | 45,141 | 15,337 | 13,680 | 11,680 | 3,216 | 2,459 |
|
|
4426
|
+
| \`divider\` | 25,821 | 9,693 | 8,548 | 4,376 | 1,299 | 881 |
|
|
4427
|
+
| \`donut-chart\` | 101,279 | 33,414 | 29,508 | 25,933 | 6,892 | 5,478 |
|
|
4428
|
+
| \`drawer\` | 50,503 | 17,015 | 15,155 | 14,261 | 3,915 | 3,007 |
|
|
4429
|
+
| \`drilldown\` | 49,702 | 16,333 | 14,549 | 16,523 | 4,173 | 3,147 |
|
|
4430
|
+
| \`empty\` | 26,021 | 9,826 | 8,678 | 3,909 | 1,255 | 769 |
|
|
4431
|
+
| \`file-input\` | 71,057 | 22,555 | 19,999 | 25,997 | 6,713 | 5,269 |
|
|
4432
|
+
| \`filter-input\` | 119,014 | 36,034 | 31,901 | 41,422 | 9,492 | 7,537 |
|
|
4433
|
+
| \`flex\` | 25,978 | 9,321 | 8,257 | 5,154 | 1,178 | 832 |
|
|
4434
|
+
| \`format-date\` | 30,926 | 11,534 | 10,318 | 5,337 | 1,530 | 1,070 |
|
|
4435
|
+
| \`graph\` | 86,947 | 26,407 | 23,331 | 33,861 | 8,456 | 6,726 |
|
|
4436
|
+
| \`grid\` | 27,233 | 9,980 | 8,825 | 6,021 | 1,603 | 1,154 |
|
|
4437
|
+
| \`heatmap\` | 103,480 | 34,337 | 30,341 | 25,132 | 6,691 | 5,167 |
|
|
4438
|
+
| \`icon\` | 33,537 | 12,400 | 10,969 | 11,009 | 3,583 | 2,666 |
|
|
4439
|
+
| \`icon-button\` | 45,728 | 14,518 | 12,964 | 14,131 | 3,114 | 2,266 |
|
|
4440
|
+
| \`image\` | 27,417 | 10,071 | 8,935 | 5,872 | 1,771 | 1,248 |
|
|
4441
|
+
| \`input\` | 51,763 | 17,193 | 15,154 | 12,285 | 3,678 | 2,687 |
|
|
4442
|
+
| \`kbd\` | 29,864 | 11,147 | 9,842 | 6,137 | 1,781 | 1,217 |
|
|
4443
|
+
| \`legend\` | 40,773 | 14,327 | 12,698 | 8,570 | 2,402 | 1,742 |
|
|
4444
|
+
| \`lightbox\` | 63,778 | 20,296 | 18,045 | 24,380 | 6,220 | 4,681 |
|
|
4445
|
+
| \`line-chart\` | 104,425 | 34,390 | 30,438 | 27,084 | 7,013 | 5,487 |
|
|
4446
|
+
| \`list\` | 69,431 | 22,996 | 20,516 | 23,007 | 6,179 | 4,738 |
|
|
4447
|
+
| \`listbox\` | 86,738 | 27,514 | 24,332 | 24,641 | 6,667 | 5,035 |
|
|
4448
|
+
| \`loader\` | 29,805 | 10,954 | 9,723 | 6,332 | 1,871 | 1,426 |
|
|
4449
|
+
| \`map\` | 119,092 | 30,442 | 26,483 | 77,400 | 16,318 | 12,943 |
|
|
4450
|
+
| \`megamenu\` | 65,860 | 22,964 | 20,363 | 14,234 | 3,719 | 2,720 |
|
|
4451
|
+
| \`menu\` | 117,880 | 37,007 | 32,613 | 46,479 | 11,005 | 8,747 |
|
|
4452
|
+
| \`meter\` | 38,195 | 13,416 | 11,981 | 11,502 | 2,909 | 2,342 |
|
|
4453
|
+
| \`navigation\` | 37,354 | 13,394 | 11,949 | 7,765 | 2,192 | 1,605 |
|
|
4454
|
+
| \`notifications\` | 74,401 | 22,483 | 20,012 | 33,636 | 7,668 | 6,080 |
|
|
4455
|
+
| \`number-input\` | 62,320 | 20,165 | 17,935 | 19,186 | 4,974 | 3,729 |
|
|
4456
|
+
| \`object-inspector\` | 134,822 | 41,685 | 36,639 | 55,277 | 13,546 | 10,790 |
|
|
4457
|
+
| \`option\` | 31,522 | 10,947 | 9,689 | 9,715 | 2,424 | 1,793 |
|
|
4458
|
+
| \`orb\` | 35,455 | 13,578 | 12,106 | 10,072 | 3,824 | 3,022 |
|
|
4459
|
+
| \`outline\` | 38,432 | 13,611 | 12,114 | 12,777 | 3,623 | 2,805 |
|
|
4460
|
+
| \`pagination\` | 159,046 | 47,070 | 40,917 | 67,562 | 15,573 | 12,364 |
|
|
4461
|
+
| \`pin-input\` | 51,523 | 17,442 | 15,621 | 10,721 | 3,296 | 2,421 |
|
|
4462
|
+
| \`popover\` | 67,855 | 23,812 | 21,110 | 10,231 | 2,832 | 2,050 |
|
|
4463
|
+
| \`progress\` | 35,815 | 12,475 | 11,133 | 10,837 | 2,740 | 2,214 |
|
|
4464
|
+
| \`qr-code\` | 44,840 | 17,241 | 15,364 | 19,258 | 7,021 | 5,652 |
|
|
4465
|
+
| \`quote\` | 23,589 | 9,214 | 8,124 | 2,413 | 891 | 568 |
|
|
4466
|
+
| \`radio\` | 52,058 | 15,999 | 14,201 | 12,923 | 2,975 | 2,233 |
|
|
4467
|
+
| \`rating\` | 55,186 | 18,603 | 16,562 | 12,491 | 3,795 | 2,801 |
|
|
4468
|
+
| \`sandbox\` | 105,225 | 31,045 | 27,125 | 73,136 | 18,960 | 15,444 |
|
|
4469
|
+
| \`scatter-chart\` | 102,251 | 33,921 | 29,924 | 26,327 | 7,144 | 5,606 |
|
|
4470
|
+
| \`scroll-area\` | 35,927 | 12,124 | 10,777 | 14,171 | 3,714 | 2,807 |
|
|
4471
|
+
| \`select\` | 136,594 | 41,912 | 36,736 | 46,058 | 10,952 | 8,582 |
|
|
4472
|
+
| \`skeleton\` | 26,269 | 9,683 | 8,601 | 5,066 | 1,472 | 983 |
|
|
4473
|
+
| \`skip-link\` | 25,958 | 9,947 | 8,782 | 3,441 | 1,134 | 755 |
|
|
4474
|
+
| \`slider\` | 69,069 | 20,280 | 18,154 | 28,886 | 6,364 | 4,982 |
|
|
4475
|
+
| \`sparkline\` | 53,682 | 18,874 | 16,874 | 11,899 | 3,611 | 2,895 |
|
|
4476
|
+
| \`speed-dial\` | 77,930 | 26,268 | 23,353 | 19,904 | 4,604 | 3,637 |
|
|
4477
|
+
| \`splitter\` | 50,373 | 16,354 | 14,620 | 21,153 | 5,089 | 4,099 |
|
|
4478
|
+
| \`stat\` | 29,307 | 10,526 | 9,355 | 6,495 | 1,654 | 1,134 |
|
|
4479
|
+
| \`steps\` | 71,444 | 22,035 | 19,552 | 29,783 | 6,921 | 5,521 |
|
|
4480
|
+
| \`strands\` | 53,249 | 19,273 | 17,106 | 29,252 | 9,981 | 8,417 |
|
|
4481
|
+
| \`switch\` | 44,243 | 14,585 | 12,983 | 6,635 | 1,919 | 1,397 |
|
|
4482
|
+
| \`table\` | 139,133 | 40,132 | 34,915 | 66,067 | 15,976 | 12,851 |
|
|
4483
|
+
| \`tabs\` | 59,178 | 18,452 | 16,403 | 21,157 | 4,918 | 3,746 |
|
|
4484
|
+
| \`tag\` | 49,634 | 17,254 | 15,416 | 14,372 | 3,838 | 2,850 |
|
|
4485
|
+
| \`text\` | 28,979 | 10,064 | 8,869 | 7,770 | 1,656 | 1,207 |
|
|
4486
|
+
| \`textarea\` | 48,926 | 16,089 | 14,347 | 10,007 | 2,829 | 2,108 |
|
|
4487
|
+
| \`time-input\` | 198,752 | 56,971 | 49,480 | 75,831 | 16,908 | 13,613 |
|
|
4488
|
+
| \`time-picker\` | 114,450 | 33,974 | 29,821 | 48,141 | 11,849 | 9,369 |
|
|
4489
|
+
| \`timeline\` | 40,048 | 13,540 | 12,098 | 12,967 | 2,956 | 2,260 |
|
|
4490
|
+
| \`toast\` | 60,260 | 19,945 | 17,713 | 21,387 | 5,633 | 4,293 |
|
|
4491
|
+
| \`toggle\` | 52,195 | 16,561 | 14,695 | 12,243 | 3,324 | 2,520 |
|
|
4492
|
+
| \`toolbar\` | 34,245 | 12,192 | 10,842 | 8,488 | 2,312 | 1,681 |
|
|
4493
|
+
| \`tooltip\` | 62,262 | 21,925 | 19,449 | 11,887 | 3,251 | 2,341 |
|
|
4494
|
+
| \`tour\` | 97,695 | 31,354 | 27,746 | 32,183 | 7,819 | 6,065 |
|
|
4495
|
+
| \`tree\` | 78,536 | 24,878 | 22,161 | 27,321 | 7,194 | 5,677 |
|
|
4496
|
+
| \`trend\` | 31,751 | 12,161 | 10,881 | 5,655 | 1,724 | 1,165 |
|
|
4497
|
+
| \`video\` | 169,115 | 49,036 | 42,760 | 92,906 | 21,426 | 17,606 |
|
|
4498
|
+
| \`video-playlist\` | 152,569 | 45,478 | 39,891 | 66,116 | 15,201 | 12,282 |
|
|
4499
|
+
| \`virtual-list\` | 61,239 | 20,611 | 18,376 | 23,461 | 7,033 | 5,556 |
|
|
4209
4500
|
|
|
4210
4501
|
## What an install adds to \`node_modules\`
|
|
4211
4502
|
|
|
@@ -4217,12 +4508,12 @@ stripped column shows the bytes we removed.
|
|
|
4217
4508
|
|
|
4218
4509
|
| Package | Unpacked | Files | Source maps stripped | Runtime dependencies |
|
|
4219
4510
|
|---|---|---|---|---|
|
|
4220
|
-
| \`@fusion.dev/helix-core\` | 2,
|
|
4221
|
-
| \`@fusion.dev/helix-headless\` | 21,
|
|
4511
|
+
| \`@fusion.dev/helix-core\` | 2,444,586 | 547 | 708,645 | \`@floating-ui/dom\`, \`@fusion.dev/helix-icons\` |
|
|
4512
|
+
| \`@fusion.dev/helix-headless\` | 21,571,463 | 696 | 2,198,104 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-icons\`, \`uqr\` |
|
|
4222
4513
|
| \`@fusion.dev/helix-icons\` | 150,509 | 21 | 48,154 | \`svgo\` |
|
|
4223
4514
|
| \`@fusion.dev/helix-styles\` | 117,028 | 6 | 0 | none |
|
|
4224
4515
|
| \`@fusion.dev/helix-theme\` | 529,299 | 8 | 5,393 | none |
|
|
4225
|
-
| \`@fusion.dev/helix\` | 21,
|
|
4516
|
+
| \`@fusion.dev/helix\` | 21,629,772 | 954 | 515,838 | \`@fusion.dev/helix-core\`, \`@fusion.dev/helix-headless\`, \`@fusion.dev/helix-styles\` |
|
|
4226
4517
|
|
|
4227
4518
|
## Not measured yet
|
|
4228
4519
|
|
|
@@ -4321,7 +4612,11 @@ Anything that moves continuously without input stops completely:
|
|
|
4321
4612
|
|
|
4322
4613
|
- The aura shader
|
|
4323
4614
|
- Marquees
|
|
4324
|
-
-
|
|
4615
|
+
- The pulse loader
|
|
4616
|
+
|
|
4617
|
+
The turning \`Loader\` slows to one turn every four seconds. A loader that stops
|
|
4618
|
+
looks broken, and the turn still shows that work is in progress. The pending
|
|
4619
|
+
ring on \`IconButton\` slows the same way.
|
|
4325
4620
|
|
|
4326
4621
|
## Starting styles and view transitions
|
|
4327
4622
|
|