@fusion.dev/helix 0.193.0 → 0.195.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/api.json +1 -1
- package/custom-elements.json +335 -81
- package/dist/accordion/root/accordion-root.d.ts +2 -0
- package/dist/blockquote/root/blockquote-root.d.ts +2 -0
- package/dist/button/root/button-root.d.ts +2 -0
- package/dist/checkbox/root/checkbox-root.d.ts +2 -0
- package/dist/code/root/code-root.d.ts +2 -0
- package/dist/code-block/root/code-block-root.d.ts +2 -0
- package/dist/color-input/root/color-input-root.d.ts +2 -0
- package/dist/date-input/root/date-input-root.d.ts +2 -0
- package/dist/dialog/root/dialog-root.d.ts +2 -0
- package/dist/divider/root/divider-root.d.ts +2 -0
- package/dist/file-input/root/file-input-root.d.ts +2 -0
- package/dist/image/root/image-root.d.ts +2 -0
- package/dist/input/root/input-root.d.ts +2 -0
- package/dist/kbd/root/kbd-root.d.ts +2 -0
- package/dist/list/root/list-root.d.ts +2 -0
- package/dist/meter/root/meter-root.d.ts +2 -0
- package/dist/notifications/root/notifications-root.css.js +1 -1
- package/dist/number-input/root/number-input-root.d.ts +2 -0
- package/dist/progress/root/progress-root.d.ts +2 -0
- package/dist/quote/root/quote-root.d.ts +2 -0
- package/dist/radio/root/radio-root.d.ts +2 -0
- package/dist/select/root/select-root.d.ts +2 -0
- package/dist/slider/root/slider-root.d.ts +2 -0
- package/dist/spatial-heatmap/root/spatial-heatmap-root.css.js +1 -1
- package/dist/spatial-heatmap/root/spatial-heatmap-root.d.ts +2 -1
- package/dist/spatial-scatter-chart/root/spatial-scatter-chart-root.css.js +1 -1
- package/dist/spatial-scatter-chart/root/spatial-scatter-chart-root.d.ts +3 -3
- package/dist/spatial-surface-chart/root/spatial-surface-chart-root.css.js +1 -1
- package/dist/spatial-surface-chart/root/spatial-surface-chart-root.d.ts +2 -2
- package/dist/table/root/table-root.d.ts +2 -0
- package/dist/text/root/text-root.d.ts +2 -0
- package/dist/textarea/root/textarea-root.d.ts +2 -0
- package/dist/time-input/root/time-input-root.d.ts +2 -0
- package/dist/video/root/video-root.d.ts +2 -0
- package/examples.json +1 -1
- package/lint.json +1 -1
- package/package.json +6 -6
- package/skills/helix/SKILL.md +58 -296
- package/types/jsx.d.ts +24 -34
- package/types/vue.d.ts +7 -13
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix",
|
|
3
3
|
"description": "Styled component tier. Extends the headless tier with token-driven presentation.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.195.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -60,14 +60,14 @@
|
|
|
60
60
|
},
|
|
61
61
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@fusion.dev/helix-core": "0.
|
|
64
|
-
"@fusion.dev/helix-headless": "0.
|
|
65
|
-
"@fusion.dev/helix-styles": "0.
|
|
63
|
+
"@fusion.dev/helix-core": "0.195.0",
|
|
64
|
+
"@fusion.dev/helix-headless": "0.195.0",
|
|
65
|
+
"@fusion.dev/helix-styles": "0.195.0",
|
|
66
66
|
"tslib": "^2.8.1"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@fusion.dev/helix-cem": "0.
|
|
70
|
-
"@fusion.dev/helix-testing": "0.
|
|
69
|
+
"@fusion.dev/helix-cem": "0.195.0",
|
|
70
|
+
"@fusion.dev/helix-testing": "0.195.0",
|
|
71
71
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
72
72
|
"@happy-dom/global-registrator": "^20.14.5",
|
|
73
73
|
"@lit-labs/ssr": "^4.1.0",
|
package/skills/helix/SKILL.md
CHANGED
|
@@ -1,51 +1,62 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: helix
|
|
3
|
-
description: Writes and checks pages built with Helix, the web components in @fusion.dev/helix. Use when
|
|
3
|
+
description: Writes and checks pages built with Helix, the web components in @fusion.dev/helix. Use when building or reviewing any user interface in a project that installs @fusion.dev/helix, and when code has helix- elements, Helix tokens, or the helix command line.
|
|
4
4
|
metadata:
|
|
5
|
-
version: "0.
|
|
5
|
+
version: "0.195.0"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Helix
|
|
9
9
|
|
|
10
|
-
This guide is for @fusion.dev/helix 0.
|
|
10
|
+
This guide is for @fusion.dev/helix 0.195.0, the version installed beside it.
|
|
11
11
|
|
|
12
12
|
## Using Helix with an agent
|
|
13
13
|
|
|
14
|
-
This guide is
|
|
14
|
+
This guide is what an agent reads before writing Helix code. It is also the
|
|
15
|
+
`helix` skill: `skills/helix/SKILL.md` in `@fusion.dev/helix`, which matches the
|
|
16
|
+
version installed, and the skill in Helix's plugin for coding agents. [Coding
|
|
17
|
+
agents](https://fusion.dev/helix/docs/coding-agents) says how to install the plugin or link the skill.
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
- `skills/helix/SKILL.md` inside `@fusion.dev/helix`, which matches the version
|
|
18
|
-
you installed and works offline
|
|
19
|
+
### Use a Helix family wherever one exists
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
Write a Helix element for everything Helix has a family for, and a native
|
|
22
|
+
element only for page structure. Before you write a native element, ask whether
|
|
23
|
+
a family stands in for it:
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
- `helix api find <tag>`, or the MCP tool `helix_find`, answers a native tag
|
|
26
|
+
with its family: `button` finds Button, and `h1` finds Text.
|
|
27
|
+
- Each family's file lists the native elements it replaces under `replaces`.
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
https://fusion.dev/helix/components/<family>.md
|
|
28
|
-
https://fusion.dev/helix/components/<family>.json
|
|
29
|
-
```
|
|
29
|
+
These native elements have families:
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
- controls: `button`, `input` of every visible type, `select`, and `textarea`
|
|
32
|
+
- overlays and disclosure: `dialog` and `details`
|
|
33
|
+
- text: `h1` to `h6` and `p`, which `helix-text` writes with `as="h1"` and the
|
|
34
|
+
rest
|
|
35
|
+
- content: `img`, `picture`, `hr`, `ul`, `ol`, `table`, `code`, `pre`, `kbd`,
|
|
36
|
+
`blockquote`, `q`, `video`, `progress`, and `meter`
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
- every event, with its class and its React prop
|
|
37
|
-
- every slot, part, and custom property
|
|
38
|
-
- the examples, each with the import lines it needs
|
|
38
|
+
Page structure stays native: `main`, `section`, `article`, `header`, `footer`,
|
|
39
|
+
`nav`, `form`, `label`, `div`, `span`, and `a`. So does markup a CMS writes
|
|
40
|
+
inside `data-prose`.
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
`helix scan` and the MCP tool `helix_check` report each native element a page
|
|
43
|
+
writes where an installed family stands in for it, as `native-element`.
|
|
44
|
+
|
|
45
|
+
### Look up a family before writing its tags
|
|
46
|
+
|
|
47
|
+
Each family's API is in the packages you installed, and on this site:
|
|
48
|
+
|
|
49
|
+
- `helix api family <family>`, or the MCP tool `helix_family`
|
|
50
|
+
- `node_modules/@fusion.dev/helix/api.json`
|
|
51
|
+
- `https://fusion.dev/helix/components/<family>.md` and `.json`
|
|
44
52
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
53
|
+
Each lists the import lines, every tag, every property with its literal union,
|
|
54
|
+
every event with its React prop, every slot, part, and custom property, and the
|
|
55
|
+
examples with the imports each one needs.
|
|
56
|
+
|
|
57
|
+
**If a tag is not in a family's file, it does not exist.** A property value
|
|
58
|
+
outside a declared union is invalid. Find a family by name, alias, or purpose
|
|
59
|
+
with `helix api find`, or the MCP tool `helix_find`.
|
|
49
60
|
|
|
50
61
|
### Five mistakes that look like Helix bugs
|
|
51
62
|
|
|
@@ -150,12 +161,9 @@ Each missing layer has its own symptom:
|
|
|
150
161
|
- Unstyled headings mean `base.css` is missing.
|
|
151
162
|
- No color anywhere means `primitives.css` or `tokens.css` is missing.
|
|
152
163
|
|
|
153
|
-
To tell the last two apart, look at the stylesheet.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
to `rgba(0, 0, 0, 0)`, because `tokens.css` refers to a primitive 297 times and
|
|
157
|
-
to nothing else. A missing `primitives.css` looks like a working install, and
|
|
158
|
-
`helix.css` exists to prevent it.
|
|
164
|
+
To tell the last two apart, look at the stylesheet. Without `tokens.css`,
|
|
165
|
+
nothing declares `--helix-color-*`. Without `primitives.css`, every token is
|
|
166
|
+
declared and every color resolves to transparent.
|
|
159
167
|
|
|
160
168
|
### Choosing a component family
|
|
161
169
|
|
|
@@ -195,73 +203,25 @@ You can style a component in three ways. Try them in this order:
|
|
|
195
203
|
belong to `@fusion.dev/helix-styles`. The underscore marks them as internal.
|
|
196
204
|
Read the semantic tokens that refer to them.
|
|
197
205
|
|
|
198
|
-
###
|
|
199
|
-
|
|
200
|
-
`@fusion.dev/helix-styles` is plain CSS with no JavaScript. It includes recipes
|
|
201
|
-
for markup that Helix does not render:
|
|
202
|
-
|
|
203
|
-
```html
|
|
204
|
-
<button
|
|
205
|
-
data-button="solid"
|
|
206
|
-
data-button-tone="primary"
|
|
207
|
-
>Save</button>
|
|
208
|
-
<article data-prose><h2>From a CMS</h2></article>
|
|
209
|
-
<div data-density="sm">…</div>
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
A recipe sets appearance only. It has none of these:
|
|
213
|
-
|
|
214
|
-
- state
|
|
215
|
-
- form participation
|
|
216
|
-
- focus trapping
|
|
217
|
-
- keyboard handling
|
|
218
|
-
|
|
219
|
-
If you are adding a script to a recipe, use the component.
|
|
220
|
-
|
|
221
|
-
### Link your tool to this guide
|
|
222
|
-
|
|
223
|
-
**Point your tool at the guide, and do not copy it.** A copy starts to go stale
|
|
224
|
-
as soon as you paste it, and the guide changes with the library.
|
|
225
|
-
|
|
226
|
-
The skill in the package matches the Helix you installed. In Claude Code, link
|
|
227
|
-
it into your project's skills folder:
|
|
228
|
-
|
|
229
|
-
```sh
|
|
230
|
-
mkdir -p .claude/skills
|
|
231
|
-
ln -s ../../node_modules/@fusion.dev/helix/skills/helix .claude/skills/helix
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
Other tools read a file in your repository. Add a line to it that names the
|
|
235
|
-
skill, or this page:
|
|
236
|
-
|
|
237
|
-
```md
|
|
238
|
-
Helix: read node_modules/@fusion.dev/helix/skills/helix/SKILL.md before
|
|
239
|
-
writing components, and node_modules/@fusion.dev/helix/api.json for the API.
|
|
240
|
-
```
|
|
206
|
+
### Markup Helix does not render
|
|
241
207
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
| Cursor | `.cursor/rules/` |
|
|
246
|
-
| GitHub Copilot | `.github/copilot-instructions.md` |
|
|
247
|
-
| Anything else | Whatever it reads. The line is the same |
|
|
208
|
+
HTML that a CMS or a Markdown library writes, inside an element with
|
|
209
|
+
`data-prose`, takes Helix's typography from `@fusion.dev/helix-styles` and needs
|
|
210
|
+
no Helix elements. Everywhere else, write the Helix element.
|
|
248
211
|
|
|
249
|
-
|
|
250
|
-
have to maintain a file we generated in your repository against our changes. A
|
|
251
|
-
tool that rewrote it on install would be a dependency you did not ask for, in a
|
|
252
|
-
directory you own. You add the link or the line, and you can delete it.
|
|
212
|
+
### Check the code you wrote
|
|
253
213
|
|
|
254
|
-
|
|
214
|
+
Run these after you write Helix code, and fix every finding at `error` and
|
|
215
|
+
`warn` before you finish. Each prints JSON with `--json`.
|
|
255
216
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
217
|
+
| Command | MCP tool | What it finds |
|
|
218
|
+
|---|---|---|
|
|
219
|
+
| `helix scan` | `helix_check` | Unknown tags, attributes, values, slots, parts, hooks, events, and tokens, a native element a Helix family replaces, a missing import, and the rest, each with its file and line |
|
|
220
|
+
| `helix diagnostics --once <url>` | `helix_check_page` | The same on the running page, and what the library logged as it ran |
|
|
221
|
+
| `helix theme audit` | `helix_audit_theme` | Every foreground and background pair in your theme that misses its contrast target |
|
|
259
222
|
|
|
260
|
-
`helix
|
|
261
|
-
|
|
262
|
-
takes `claude`, `cursor`, or `vscode`, and writes the server into the file that
|
|
263
|
-
client reads. [Coding agents](https://fusion.dev/helix/docs/coding-agents) lists the tools. It runs on your
|
|
264
|
-
machine, talks to a client you chose, and makes no network requests.
|
|
223
|
+
`helix scan --file <path>` reports one file's findings and still reads the whole
|
|
224
|
+
project, so an import in another file counts.
|
|
265
225
|
|
|
266
226
|
### What this guide does not cover
|
|
267
227
|
|
|
@@ -276,201 +236,3 @@ of them here would be a second copy that goes stale. Fetch the family.
|
|
|
276
236
|
**Whether a component fits your case.** Read the examples to decide. Every
|
|
277
237
|
family's `.md` file includes them as text, and
|
|
278
238
|
`https://fusion.dev/helix/sandbox?e=<family>.<slug>` opens one for editing.
|
|
279
|
-
|
|
280
|
-
## Coding agents
|
|
281
|
-
|
|
282
|
-
We publish Helix as text for agents that write Helix code, so an agent does not
|
|
283
|
-
need to read the rendered website. Three sources give it the library as text.
|
|
284
|
-
We generate all three from the same sources as this site.
|
|
285
|
-
|
|
286
|
-
### The manifest
|
|
287
|
-
|
|
288
|
-
```
|
|
289
|
-
https://fusion.dev/helix/custom-elements.json
|
|
290
|
-
@fusion.dev/helix/custom-elements.json
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
The URL and the package path serve the same file. A package path works only
|
|
294
|
-
from a `node_modules` folder. An agent that found Helix through `llms.txt` can
|
|
295
|
-
reach this site and has no checkout, so it needs the URL.
|
|
296
|
-
|
|
297
|
-
The manifest lists:
|
|
298
|
-
|
|
299
|
-
- every element
|
|
300
|
-
- every property, with its literal type union
|
|
301
|
-
- every event, with its class
|
|
302
|
-
- every slot
|
|
303
|
-
- every part
|
|
304
|
-
- every custom property
|
|
305
|
-
|
|
306
|
-
We generate the framework typings, the reference documentation, and the site's
|
|
307
|
-
component pages from the manifest, so they always match it.
|
|
308
|
-
|
|
309
|
-
**If a tag is not in the manifest, it does not exist.** An agent can check every
|
|
310
|
-
tag and value it writes against the file, so an invented component is caught. A
|
|
311
|
-
prop value outside a declared union is invalid.
|
|
312
|
-
|
|
313
|
-
For the same reason, the analyzer requires literal unions for property types.
|
|
314
|
-
`'ghost' | 'outlined' | 'solid' | 'subtle'` shows you what to write. A named
|
|
315
|
-
type such as `ButtonEmphasis` sends you somewhere else to look.
|
|
316
|
-
|
|
317
|
-
### Markdown and JSON for each component family
|
|
318
|
-
|
|
319
|
-
```
|
|
320
|
-
https://fusion.dev/helix/components/<family>.md
|
|
321
|
-
https://fusion.dev/helix/components/<family>.json
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
These are static files, one pair for each family. Read the family you are
|
|
325
|
-
writing instead of the whole manifest. The manifest holds every family in one
|
|
326
|
-
file, and it is several megabytes.
|
|
327
|
-
|
|
328
|
-
The `.md` file has:
|
|
329
|
-
|
|
330
|
-
- the family's metadata
|
|
331
|
-
- a Usage block with the import lines for the family
|
|
332
|
-
- every element's description and API tables
|
|
333
|
-
- the examples, each with the import lines it needs
|
|
334
|
-
|
|
335
|
-
The HTML page leaves the examples out on purpose. The page lists what a
|
|
336
|
-
component can do, and the sandbox beside it shows what the component looks
|
|
337
|
-
like. Keeping pictures out of the reference keeps it the one place you can trust
|
|
338
|
-
to be complete. An agent cannot use the sandbox, and it reads an example as
|
|
339
|
-
text, so the `.md` file includes the examples.
|
|
340
|
-
|
|
341
|
-
Each example the visual check pictures links its pictures under it: wide at
|
|
342
|
-
640 pixels, narrow at 390, and dark at 640, taken in the environment that
|
|
343
|
-
`examples.json` records. Compare a render of your own to them.
|
|
344
|
-
|
|
345
|
-
The `.json` file has the same family as structured data, and three fields an
|
|
346
|
-
agent uses most:
|
|
347
|
-
|
|
348
|
-
- `usage`, the import block for each tier
|
|
349
|
-
- `imports` on each example, an import line for every element it writes
|
|
350
|
-
- `specifier` and `words` on each element: the line that registers it, and the
|
|
351
|
-
properties `registerWords` translates
|
|
352
|
-
|
|
353
|
-
### Import every family you write
|
|
354
|
-
|
|
355
|
-
Each tag needs its family's entry imported. A family registers its own parts,
|
|
356
|
-
so `@fusion.dev/helix/tabs` registers Tab and Tab Panel. A family does not
|
|
357
|
-
register another family's elements that you write inside it:
|
|
358
|
-
|
|
359
|
-
```js
|
|
360
|
-
import '@fusion.dev/helix/select'
|
|
361
|
-
import '@fusion.dev/helix/option'
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
Without the Option import, the options are unknown elements and the Select
|
|
365
|
-
offers nothing. The same is true
|
|
366
|
-
of the layout around an example: a Button inside a Flex needs both imports.
|
|
367
|
-
Copy the import lines above an example together with its markup.
|
|
368
|
-
|
|
369
|
-
### Check the code you wrote
|
|
370
|
-
|
|
371
|
-
These checks run on your project, and each one prints JSON with `--json`:
|
|
372
|
-
|
|
373
|
-
| Command | What it finds |
|
|
374
|
-
|---|---|
|
|
375
|
-
| `helix scan` | Unknown tags, attributes, values, slots, parts, hooks, React event props, and tokens, a `--_helix-` primitive read, `[disabled]` on a form control, a selector on an attribute the element never writes back, and a tag whose entry nothing imports, each with its file and line |
|
|
376
|
-
| `helix theme audit` | Every foreground and background pair in your theme that misses its contrast target |
|
|
377
|
-
| `initDiagnostics()` from `@fusion.dev/helix-diagnostics` | The same findings on the running page, and what the library reports as it runs, such as an option nobody imported |
|
|
378
|
-
|
|
379
|
-
`helix scan` and `helix theme audit` exit 1 when they find an error and 0 when
|
|
380
|
-
they find none. Run them after you write Helix code, and fix each finding
|
|
381
|
-
before you finish. `helix scan --file <path>` reports one file's findings, and
|
|
382
|
-
`helix scan --stdin tsx` reads a snippet from stdin. Both still read the whole
|
|
383
|
-
project, so an import in another file counts.
|
|
384
|
-
|
|
385
|
-
### The index
|
|
386
|
-
|
|
387
|
-
```
|
|
388
|
-
/llms.txt
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
`llms.txt` lists every page on the site, in groups. Each entry links to the
|
|
392
|
-
page's `.md` file and has a one-sentence summary. We generate it from the same
|
|
393
|
-
route registry as the sitemap. Every page appears in it, and every entry in it
|
|
394
|
-
is a page that exists.
|
|
395
|
-
|
|
396
|
-
Start with `llms.txt`. In one request, it names every page on the site and the
|
|
397
|
-
two machine-readable sources above. This guide gives no page count, because a
|
|
398
|
-
number typed into prose goes stale.
|
|
399
|
-
|
|
400
|
-
### Links on each component page
|
|
401
|
-
|
|
402
|
-
Each family page has a menu beside its title with:
|
|
403
|
-
|
|
404
|
-
- **View Markdown**
|
|
405
|
-
- **Copy Markdown**
|
|
406
|
-
- links that send the document's URL to Claude or to Cursor
|
|
407
|
-
|
|
408
|
-
The links send the URL, because the URL stays current. A pasted copy starts to
|
|
409
|
-
go stale as soon as you paste it.
|
|
410
|
-
|
|
411
|
-
### The Helix MCP server
|
|
412
|
-
|
|
413
|
-
```sh
|
|
414
|
-
helix mcp init --client claude
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
`helix mcp` runs an MCP server over stdio. It answers from the Helix packages
|
|
418
|
-
your project installs, so every answer is for the version you build with, and
|
|
419
|
-
each one names that package and version. `helix mcp init` adds the server to
|
|
420
|
-
the file your client reads and keeps every other server in it:
|
|
421
|
-
|
|
422
|
-
| Client | File |
|
|
423
|
-
|---|---|
|
|
424
|
-
| `claude` | `.mcp.json` |
|
|
425
|
-
| `cursor` | `.cursor/mcp.json` |
|
|
426
|
-
| `vscode` | `.vscode/mcp.json` |
|
|
427
|
-
|
|
428
|
-
The server runs `npx @fusion.dev/helix-cli mcp`, which is the copy in your
|
|
429
|
-
project. It has nine tools:
|
|
430
|
-
|
|
431
|
-
| Tool | What it returns |
|
|
432
|
-
|---|---|
|
|
433
|
-
| `helix_find` | The families that answer a name, an alias, a tag, or a purpose, best first |
|
|
434
|
-
| `helix_family` | One family's tags, properties and their unions, events and their React props, slots, parts, custom properties, words, and import lines |
|
|
435
|
-
| `helix_example` | One example as HTML and TSX, with its stylesheet, the import lines it needs, and links to its pictures |
|
|
436
|
-
| `helix_imports` | The import lines for a list of tags, and the closest tag to any unknown one |
|
|
437
|
-
| `helix_tokens` | The semantic tokens, by a word in the name or description and by category |
|
|
438
|
-
| `helix_check` | The findings `helix scan` reports for the files you name, or for a snippet before you write it |
|
|
439
|
-
| `helix_check_page` | The findings the page diagnostics report for each address you name, opened headless, with what the library logged as the page ran |
|
|
440
|
-
| `helix_audit_theme` | Every foreground and background pair a brand color derives to, with its ratio and target |
|
|
441
|
-
| `helix_derive_theme` | The theme's CSS |
|
|
442
|
-
|
|
443
|
-
Each result is structured, with an output schema, and the same JSON as text.
|
|
444
|
-
A name that matches more than one family, such as `Dropdown`, returns an error
|
|
445
|
-
listing each family. The theme tools take the same JSON that a
|
|
446
|
-
`helix.theme.json` file holds.
|
|
447
|
-
|
|
448
|
-
Each lookup is also a command, for a script or a person:
|
|
449
|
-
|
|
450
|
-
```sh
|
|
451
|
-
helix api find dropdown
|
|
452
|
-
helix api family select
|
|
453
|
-
helix api example select
|
|
454
|
-
helix api imports helix-select helix-option
|
|
455
|
-
helix api tokens surface --category color
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
`--json` prints what the MCP tool returns.
|
|
459
|
-
|
|
460
|
-
**`helix_derive_theme` does not return a palette that fails its own targets**,
|
|
461
|
-
the same as `helix theme build`. A failing palette pasted into a stylesheet is
|
|
462
|
-
worse than a warning above it, and an agent does not read warnings.
|
|
463
|
-
|
|
464
|
-
You run `helix mcp` yourself, and we do not host it. A server we operated would
|
|
465
|
-
be one more service between you and your own tokens. `helix mcp` is a
|
|
466
|
-
subcommand of a binary you installed. It talks to a client you chose and makes
|
|
467
|
-
no network requests.
|
|
468
|
-
|
|
469
|
-
### What we do not publish for agents
|
|
470
|
-
|
|
471
|
-
**`llms-full.txt`, or any other whole-library download of the pages.** A single
|
|
472
|
-
file with every page goes out of date as soon as anything changes. Each link in
|
|
473
|
-
`llms.txt` can be cached on its own and stays current on its own.
|
|
474
|
-
|
|
475
|
-
`llms.txt` is the index, in one request, and each family's `.md` file is its
|
|
476
|
-
document. Fetch the families you use, or ask `helix mcp`.
|
package/types/jsx.d.ts
CHANGED
|
@@ -66148,7 +66148,8 @@ export type CustomElements = {
|
|
|
66148
66148
|
/**
|
|
66149
66149
|
* Each reading is a prism. The top face takes the cell's tone, and the two
|
|
66150
66150
|
* sides are the same tone, shaded darker, so the whole relief follows your
|
|
66151
|
-
* theme's colors.
|
|
66151
|
+
* theme's colors. The chart draws the relief in SVG, and
|
|
66152
|
+
* `@fusion.dev/helix-plot` can draw it with three.js.
|
|
66152
66153
|
*
|
|
66153
66154
|
* `tones="1 2 3 4 5"` uses the same five-step ramp as `Heatmap`, so the tone
|
|
66154
66155
|
* and the height both show the value. Set `--spatial-heatmap-cell-size` to
|
|
@@ -66382,7 +66383,7 @@ export type CustomElements = {
|
|
|
66382
66383
|
* - `placeReading(at: { x: number; y: number } | undefined) => void`: Says where the renderer draws the reading, as fractions of the strip from
|
|
66383
66384
|
* its top left, or `undefined` while it draws none. The tooltip points
|
|
66384
66385
|
* there. Called by the connector.
|
|
66385
|
-
* - `placeCorners(at:
|
|
66386
|
+
* - `placeCorners(at: DrawnCorners | undefined) => void`: Says where the renderer draws the two ends of the front edge, under the
|
|
66386
66387
|
* first column and the last, as fractions of the strip from its top left,
|
|
66387
66388
|
* or `undefined` while they are out of view, where the labels keep the
|
|
66388
66389
|
* last place they had. The `start` and `end` labels stand there. Called by
|
|
@@ -66428,12 +66429,9 @@ export type CustomElements = {
|
|
|
66428
66429
|
* - `--spatial-heatmap-left-shade`: How much less light the left face is than the top, as a step of OKLCH lightness from 0 to 1. 0.07 by default.
|
|
66429
66430
|
* - `--spatial-heatmap-right-shade`: How much less light the right face is than the top, as a step of OKLCH lightness from 0 to 1. 0.14 by default.
|
|
66430
66431
|
* - `--spatial-heatmap-selected-color`: The color of the dashed edges of a selected prism, under `selection-mode`. By default, white on a dark face and black on a light one.
|
|
66431
|
-
* - `--spatial-heatmap-
|
|
66432
|
-
* - `--spatial-heatmap-
|
|
66433
|
-
* - `--spatial-heatmap-end-y`: How far down the drawing the front edge ends, under the newest column, as a share of the drawing's width: its whole depth in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `end` label there reads it.
|
|
66432
|
+
* - `--spatial-heatmap-label-x`: Where the `start` or the `end` label stands clear of the drawing, from the footer's inline start, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns.
|
|
66433
|
+
* - `--spatial-heatmap-label-y`: Where the `start` or the `end` label stands clear of the drawing, from the footer's top, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns.
|
|
66434
66434
|
* - `--spatial-heatmap-span`: How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it.
|
|
66435
|
-
* - `--spatial-heatmap-start-x`: Where the front edge starts, under the first column, across the drawing, from 0 at its inline start to 1: 0 in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it.
|
|
66436
|
-
* - `--spatial-heatmap-start-y`: How far down the drawing the front edge starts, under the first column, as a share of the drawing's width. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it.
|
|
66437
66435
|
* - `--heatmap-rows`: How many rows the strip lays out. The component writes it from the data, and the stylesheet that draws the strip reads it.
|
|
66438
66436
|
* - `--heatmap-tone`: The tone of the cell it is set on. The component writes it, and the stylesheet that paints the cell reads it.
|
|
66439
66437
|
* - `--heatmap-tone-1`: The weakest step of the magnitude ramp, used by `tones="1 …"`.
|
|
@@ -66510,9 +66508,9 @@ export type CustomElements = {
|
|
|
66510
66508
|
>;
|
|
66511
66509
|
|
|
66512
66510
|
/**
|
|
66513
|
-
* The
|
|
66514
|
-
*
|
|
66515
|
-
*
|
|
66511
|
+
* The chart draws the points in 3D in SVG, and `@fusion.dev/helix-plot` can
|
|
66512
|
+
* draw them with three.js. Each group takes a series color from the theme, as
|
|
66513
|
+
* every chart's series does, in both drawings.
|
|
66516
66514
|
*
|
|
66517
66515
|
* ## Attributes & Properties
|
|
66518
66516
|
*
|
|
@@ -66744,8 +66742,8 @@ export type CustomElements = {
|
|
|
66744
66742
|
>;
|
|
66745
66743
|
|
|
66746
66744
|
/**
|
|
66747
|
-
* The
|
|
66748
|
-
*
|
|
66745
|
+
* The chart draws the surface in 3D in SVG, and `@fusion.dev/helix-plot` can
|
|
66746
|
+
* draw it with three.js. Every height is shaded along one
|
|
66749
66747
|
* ramp from the theme's primary color, quiet where it is low and strong where
|
|
66750
66748
|
* it is high, so the two drawings agree.
|
|
66751
66749
|
*
|
|
@@ -97103,7 +97101,8 @@ export type CustomElementsSolidJs = {
|
|
|
97103
97101
|
/**
|
|
97104
97102
|
* Each reading is a prism. The top face takes the cell's tone, and the two
|
|
97105
97103
|
* sides are the same tone, shaded darker, so the whole relief follows your
|
|
97106
|
-
* theme's colors.
|
|
97104
|
+
* theme's colors. The chart draws the relief in SVG, and
|
|
97105
|
+
* `@fusion.dev/helix-plot` can draw it with three.js.
|
|
97107
97106
|
*
|
|
97108
97107
|
* `tones="1 2 3 4 5"` uses the same five-step ramp as `Heatmap`, so the tone
|
|
97109
97108
|
* and the height both show the value. Set `--spatial-heatmap-cell-size` to
|
|
@@ -97337,7 +97336,7 @@ export type CustomElementsSolidJs = {
|
|
|
97337
97336
|
* - `placeReading(at: { x: number; y: number } | undefined) => void`: Says where the renderer draws the reading, as fractions of the strip from
|
|
97338
97337
|
* its top left, or `undefined` while it draws none. The tooltip points
|
|
97339
97338
|
* there. Called by the connector.
|
|
97340
|
-
* - `placeCorners(at:
|
|
97339
|
+
* - `placeCorners(at: DrawnCorners | undefined) => void`: Says where the renderer draws the two ends of the front edge, under the
|
|
97341
97340
|
* first column and the last, as fractions of the strip from its top left,
|
|
97342
97341
|
* or `undefined` while they are out of view, where the labels keep the
|
|
97343
97342
|
* last place they had. The `start` and `end` labels stand there. Called by
|
|
@@ -97383,12 +97382,9 @@ export type CustomElementsSolidJs = {
|
|
|
97383
97382
|
* - `--spatial-heatmap-left-shade`: How much less light the left face is than the top, as a step of OKLCH lightness from 0 to 1. 0.07 by default.
|
|
97384
97383
|
* - `--spatial-heatmap-right-shade`: How much less light the right face is than the top, as a step of OKLCH lightness from 0 to 1. 0.14 by default.
|
|
97385
97384
|
* - `--spatial-heatmap-selected-color`: The color of the dashed edges of a selected prism, under `selection-mode`. By default, white on a dark face and black on a light one.
|
|
97386
|
-
* - `--spatial-heatmap-
|
|
97387
|
-
* - `--spatial-heatmap-
|
|
97388
|
-
* - `--spatial-heatmap-end-y`: How far down the drawing the front edge ends, under the newest column, as a share of the drawing's width: its whole depth in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `end` label there reads it.
|
|
97385
|
+
* - `--spatial-heatmap-label-x`: Where the `start` or the `end` label stands clear of the drawing, from the footer's inline start, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns.
|
|
97386
|
+
* - `--spatial-heatmap-label-y`: Where the `start` or the `end` label stands clear of the drawing, from the footer's top, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns.
|
|
97389
97387
|
* - `--spatial-heatmap-span`: How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it.
|
|
97390
|
-
* - `--spatial-heatmap-start-x`: Where the front edge starts, under the first column, across the drawing, from 0 at its inline start to 1: 0 in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it.
|
|
97391
|
-
* - `--spatial-heatmap-start-y`: How far down the drawing the front edge starts, under the first column, as a share of the drawing's width. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it.
|
|
97392
97388
|
* - `--heatmap-rows`: How many rows the strip lays out. The component writes it from the data, and the stylesheet that draws the strip reads it.
|
|
97393
97389
|
* - `--heatmap-tone`: The tone of the cell it is set on. The component writes it, and the stylesheet that paints the cell reads it.
|
|
97394
97390
|
* - `--heatmap-tone-1`: The weakest step of the magnitude ramp, used by `tones="1 …"`.
|
|
@@ -97468,9 +97464,9 @@ export type CustomElementsSolidJs = {
|
|
|
97468
97464
|
>;
|
|
97469
97465
|
|
|
97470
97466
|
/**
|
|
97471
|
-
* The
|
|
97472
|
-
*
|
|
97473
|
-
*
|
|
97467
|
+
* The chart draws the points in 3D in SVG, and `@fusion.dev/helix-plot` can
|
|
97468
|
+
* draw them with three.js. Each group takes a series color from the theme, as
|
|
97469
|
+
* every chart's series does, in both drawings.
|
|
97474
97470
|
*
|
|
97475
97471
|
* ## Attributes & Properties
|
|
97476
97472
|
*
|
|
@@ -97703,8 +97699,8 @@ export type CustomElementsSolidJs = {
|
|
|
97703
97699
|
>;
|
|
97704
97700
|
|
|
97705
97701
|
/**
|
|
97706
|
-
* The
|
|
97707
|
-
*
|
|
97702
|
+
* The chart draws the surface in 3D in SVG, and `@fusion.dev/helix-plot` can
|
|
97703
|
+
* draw it with three.js. Every height is shaded along one
|
|
97708
97704
|
* ramp from the theme's primary color, quiet where it is low and strong where
|
|
97709
97705
|
* it is high, so the two drawings agree.
|
|
97710
97706
|
*
|
|
@@ -107036,18 +107032,12 @@ export type CustomCssProperties = {
|
|
|
107036
107032
|
"--spatial-heatmap-right-shade"?: (string) | undefined;
|
|
107037
107033
|
/** The color of the dashed edges of a selected prism, under `selection-mode`. By default, white on a dark face and black on a light one. */
|
|
107038
107034
|
"--spatial-heatmap-selected-color"?: (string) | undefined;
|
|
107039
|
-
/**
|
|
107040
|
-
"--spatial-heatmap-
|
|
107041
|
-
/** Where the
|
|
107042
|
-
"--spatial-heatmap-
|
|
107043
|
-
/** How far down the drawing the front edge ends, under the newest column, as a share of the drawing's width: its whole depth in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `end` label there reads it. */
|
|
107044
|
-
"--spatial-heatmap-end-y"?: (string) | undefined;
|
|
107035
|
+
/** Where the `start` or the `end` label stands clear of the drawing, from the footer's inline start, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns. */
|
|
107036
|
+
"--spatial-heatmap-label-x"?: (string) | undefined;
|
|
107037
|
+
/** Where the `start` or the `end` label stands clear of the drawing, from the footer's top, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns. */
|
|
107038
|
+
"--spatial-heatmap-label-y"?: (string) | undefined;
|
|
107045
107039
|
/** How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it. */
|
|
107046
107040
|
"--spatial-heatmap-span"?: (string) | undefined;
|
|
107047
|
-
/** Where the front edge starts, under the first column, across the drawing, from 0 at its inline start to 1: 0 in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it. */
|
|
107048
|
-
"--spatial-heatmap-start-x"?: (string) | undefined;
|
|
107049
|
-
/** How far down the drawing the front edge starts, under the first column, as a share of the drawing's width. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it. */
|
|
107050
|
-
"--spatial-heatmap-start-y"?: (string) | undefined;
|
|
107051
107041
|
/** How tall the plot is. */
|
|
107052
107042
|
"--spatial-scatter-chart-block-size"?: (string) | undefined;
|
|
107053
107043
|
/** How tall the plot is. */
|
package/types/vue.d.ts
CHANGED
|
@@ -24187,18 +24187,12 @@ export type CustomCssProperties = {
|
|
|
24187
24187
|
"--spatial-heatmap-right-shade"?: (string) | undefined;
|
|
24188
24188
|
/** The color of the dashed edges of a selected prism, under `selection-mode`. By default, white on a dark face and black on a light one. */
|
|
24189
24189
|
"--spatial-heatmap-selected-color"?: (string) | undefined;
|
|
24190
|
-
/**
|
|
24191
|
-
"--spatial-heatmap-
|
|
24192
|
-
/** Where the
|
|
24193
|
-
"--spatial-heatmap-
|
|
24194
|
-
/** How far down the drawing the front edge ends, under the newest column, as a share of the drawing's width: its whole depth in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `end` label there reads it. */
|
|
24195
|
-
"--spatial-heatmap-end-y"?: (string) | undefined;
|
|
24190
|
+
/** Where the `start` or the `end` label stands clear of the drawing, from the footer's inline start, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns. */
|
|
24191
|
+
"--spatial-heatmap-label-x"?: (string) | undefined;
|
|
24192
|
+
/** Where the `start` or the `end` label stands clear of the drawing, from the footer's top, in pixels. The component measures it and writes it on the label, with `data-placed`, as the view turns. */
|
|
24193
|
+
"--spatial-heatmap-label-y"?: (string) | undefined;
|
|
24196
24194
|
/** How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it. */
|
|
24197
24195
|
"--spatial-heatmap-span"?: (string) | undefined;
|
|
24198
|
-
/** Where the front edge starts, under the first column, across the drawing, from 0 at its inline start to 1: 0 in the chart's own drawing, and wherever a renderer draws it. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it. */
|
|
24199
|
-
"--spatial-heatmap-start-x"?: (string) | undefined;
|
|
24200
|
-
/** How far down the drawing the front edge starts, under the first column, as a share of the drawing's width. The component writes it on the footer, and a stylesheet that stands the `start` label there reads it. */
|
|
24201
|
-
"--spatial-heatmap-start-y"?: (string) | undefined;
|
|
24202
24196
|
/** How tall the plot is. */
|
|
24203
24197
|
"--spatial-scatter-chart-block-size"?: (string) | undefined;
|
|
24204
24198
|
/** How tall the plot is. */
|
|
@@ -25537,19 +25531,19 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
25537
25531
|
HelixSparklineVueProps,
|
|
25538
25532
|
HelixSparklineVueEvents
|
|
25539
25533
|
>;
|
|
25540
|
-
/** Each reading is a prism. The top face takes the cell's tone, and the two sides are the same tone, shaded darker, so the whole relief follows your theme's colors. 'tones="1 2 3 4 5"' uses the same five-step ramp as 'Heatmap', so the tone and the height both show the value. Set '--spatial-heatmap-cell-size' to change how large a cell may grow. */
|
|
25534
|
+
/** Each reading is a prism. The top face takes the cell's tone, and the two sides are the same tone, shaded darker, so the whole relief follows your theme's colors. The chart draws the relief in SVG, and '@fusion.dev/helix-plot' can draw it with three.js. 'tones="1 2 3 4 5"' uses the same five-step ramp as 'Heatmap', so the tone and the height both show the value. Set '--spatial-heatmap-cell-size' to change how large a cell may grow. */
|
|
25541
25535
|
"helix-spatial-heatmap": DefineCustomElement<
|
|
25542
25536
|
HelixSpatialHeatmap,
|
|
25543
25537
|
HelixSpatialHeatmapVueProps,
|
|
25544
25538
|
HelixSpatialHeatmapVueEvents
|
|
25545
25539
|
>;
|
|
25546
|
-
/** The
|
|
25540
|
+
/** The chart draws the points in 3D in SVG, and '@fusion.dev/helix-plot' can draw them with three.js. Each group takes a series color from the theme, as every chart's series does, in both drawings. */
|
|
25547
25541
|
"helix-spatial-scatter-chart": DefineCustomElement<
|
|
25548
25542
|
HelixSpatialScatterChart,
|
|
25549
25543
|
HelixSpatialScatterChartVueProps,
|
|
25550
25544
|
HelixSpatialScatterChartVueEvents
|
|
25551
25545
|
>;
|
|
25552
|
-
/** The
|
|
25546
|
+
/** The chart draws the surface in 3D in SVG, and '@fusion.dev/helix-plot' can draw it with three.js. Every height is shaded along one ramp from the theme's primary color, quiet where it is low and strong where it is high, so the two drawings agree. */
|
|
25553
25547
|
"helix-spatial-surface-chart": DefineCustomElement<
|
|
25554
25548
|
HelixSpatialSurfaceChart,
|
|
25555
25549
|
HelixSpatialSurfaceChartVueProps,
|