@imfusion/web-ui 0.5.1-dev.5.gb4de52d7 → 0.5.1-dev.51.gad24cd6e
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/README.md +156 -55
- package/bin/install.js +428 -0
- package/bin/install.test.ts +329 -0
- package/dist/build/vite-css-module-names/index.d.ts +20 -0
- package/dist/build/vite-css-module-names.js +17 -0
- package/dist/{code-qBbqAHK-.js → code-B83kAmnS.js} +21 -15
- package/dist/components/code/code.d.ts +10 -18
- package/dist/components/field/field.d.ts +104 -0
- package/dist/components/field/field.meta.d.ts +2 -0
- package/dist/components/field/index.d.ts +2 -0
- package/dist/components/fieldset/fieldset.d.ts +29 -0
- package/dist/components/fieldset/fieldset.meta.d.ts +2 -0
- package/dist/components/fieldset/index.d.ts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4956 -4317
- package/dist/integrations/code-highlight/code-highlight.d.ts +8 -6
- package/dist/integrations/code-highlight/highlighter.d.ts +32 -3
- package/dist/integrations/code-highlight/language-patterns.d.ts +7 -0
- package/dist/integrations/code-highlight/languages/cmake.d.ts +1 -0
- package/dist/integrations/code-highlight/languages/cpp.d.ts +1 -0
- package/dist/integrations/code-highlight/languages/python.d.ts +1 -0
- package/dist/integrations/code-highlight.js +196 -58
- package/dist/integrations/image-display-options.js +1 -1
- package/dist/llms/gen-tokens.d.ts +7 -0
- package/dist/style.css +1 -1
- package/dist/{tabs-DqBFSqq6.js → tabs-CVp_SgBl.js} +1 -1
- package/package.json +39 -25
- package/src/docgen/doc.gen.json +341 -35
- package/src/llms/install-templates/AGENTS.md +34 -0
- package/src/llms/install-templates/codex-hooks.json +44 -0
- package/src/llms/install-templates/hooks/baseline-staleness.sh +17 -0
- package/src/llms/install-templates/hooks/session-start.sh +5 -0
- package/src/llms/install-templates/hooks/stop.sh +18 -0
- package/src/llms/install-templates/hooks/subagent-start.sh +5 -0
- package/src/llms/install-templates/hooks/user-prompt-submit.sh +5 -0
- package/src/llms/install-templates/settings.json +45 -0
- package/src/llms/llms.gen.txt +12 -0
- package/src/llms/skills/imf-web-ui/SKILL.md +13 -12
- package/src/llms/skills/imf-web-ui-audit/SKILL.md +119 -0
- package/src/llms/skills/imf-web-ui-components/SKILL.md +2 -1
- package/src/llms/skills/imf-web-ui-conventions/SKILL.md +57 -0
- package/src/llms/skills/imf-web-ui-conventions/templates/AUDIT_CHECKLIST.md +141 -0
- package/src/llms/skills/imf-web-ui-conventions/templates/REPORT.md +45 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/agent-tooling.md +82 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/assets.md +27 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/authentication.md +65 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/class-names.md +50 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/components.md +101 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/data.md +221 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/docs-structure.md +40 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/git.md +34 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/library-boundary.md +33 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/library-setup.md +26 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/npm-project.md +53 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/project-structure.md +44 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/react.md +109 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/styling.md +88 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/testing.md +25 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/tokens.md +7 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/tooling.md +116 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/typescript.md +73 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/validation.md +62 -0
- package/src/llms/skills/imf-web-ui-setup/SKILL.md +67 -37
- package/src/llms/skills/imf-web-ui-update/SKILL.md +157 -0
- package/src/llms/skills/imf-web-ui-ux/SKILL.md +4 -4
- package/src/llms/skills/imf-web-ui-ux/references/forms.md +2 -2
- package/src/llms/tokens.gen.json +887 -0
- package/bin/install-skill.js +0 -180
- package/src/llms/skills/imf-web-ui-frontend-patterns/SKILL.md +0 -93
- package/src/llms/skills/imf-web-ui-frontend-patterns/references/code-conventions.md +0 -133
- package/src/llms/skills/imf-web-ui-frontend-patterns/references/react-patterns.md +0 -94
- package/src/llms/skills/imf-web-ui-imfusion-frontend-setup/SKILL.md +0 -201
|
@@ -3786,4 +3786,4 @@ function Mo({ className: e, ...t }) {
|
|
|
3786
3786
|
}
|
|
3787
3787
|
Mo.displayName = "Tabs.Panel";
|
|
3788
3788
|
//#endregion
|
|
3789
|
-
export { Hn as $,
|
|
3789
|
+
export { Hn as $, ee as $n, Vt as $t, Kr as A, Je as An, xn as At, Tr as B, Ee as Bn, pn as Bt, ha as C, ct as Cn, Tn as Ct, gi as D, rt as Dn, kn as Dt, hi as E, it as En, wn as Et, Fr as F, Pe as Fn, vn as Ft, mr as G, V as Gn, en as Gt, Sr as H, _e as Hn, fn as Ht, Nr as I, Ae as In, yn as It, fr as J, F as Jn, Jt, pr as K, B as Kn, $t as Kt, Mr as L, je as Ln, hn as Lt, zr as M, qe as Mn, Cn as Mt, Ir as N, Ue as Nn, bn as Nt, mi as O, Xe as On, Dn as Ot, Pr as P, Z as Pn, _n as Pt, Kn as Q, f as Qn, Kt as Qt, kr as R, X as Rn, mn as Rt, _a as S, ut as Sn, jn as St, ra as T, st as Tn, En as Tt, br as U, J as Un, sn as Ut, Cr as V, be as Vn, ln as Vt, hr as W, U as Wn, tn as Wt, Gn as X, O as Xn, qt as Xt, gr as Y, N as Yn, Zt as Yt, Un as Z, T as Zn, Gt as Zt, Ta as _, _t as _n, In as _t, Do as a, jt as an, w as ar, Yn as at, fa as b, dt as bn, Fn as bt, to as c, Pt as cn, D as cr, ur as ct, Xa as d, Ot as dn, g as dr, Bn as dt, zt as en, u as er, Jn as et, Ua as f, gt as fn, v as fr, zn as ft, ka as g, vt as gn, Ln as gt, Oa as h, yt as hn, Rn as ht, jo as i, Dt as in, d as ir, er as it, Wr as j, Ke as jn, Sn as jt, ai as k, $e as kn, An as kt, $a as l, xt as ln, p as lr, qn as lt, Na as m, Ft as mn, E as mr, Vn as mt, Oo as n, At as nn, M as nr, $n as nt, ko as o, Et as on, m as or, sr as ot, Ra as p, bt as pn, y as pr, dr as pt, vr as q, L as qn, Qt as qt, Mo as r, St as rn, A as rr, Xn as rt, bo as s, Tt as sn, h as sr, cr as st, Ao as t, Lt as tn, k as tr, Qn as tt, Za as u, Ct as un, _ as ur, Zn as ut, ma as v, It as vn, Nn as vt, pa as w, ot as wn, On as wt, da as x, ft as xn, Mn as xt, ga as y, pt as yn, Pn as yt, Or as z, ke as zn, dn as zt };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imfusion/web-ui",
|
|
3
|
-
"version": "0.5.1-dev.
|
|
3
|
+
"version": "0.5.1-dev.51.gad24cd6e",
|
|
4
4
|
"description": "The official Web UI component library for ImFusion web apps",
|
|
5
5
|
"author": "ImFusion GmbH",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -9,10 +9,17 @@
|
|
|
9
9
|
"access": "restricted"
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
|
+
"engines": {
|
|
13
|
+
"node": ">=24"
|
|
14
|
+
},
|
|
15
|
+
"imports": {
|
|
16
|
+
"#/*": "./src/*",
|
|
17
|
+
"#/storybook/*": "./.storybook/*"
|
|
18
|
+
},
|
|
12
19
|
"module": "./dist/index.js",
|
|
13
20
|
"types": "./dist/index.d.ts",
|
|
14
21
|
"bin": {
|
|
15
|
-
"web-ui-install
|
|
22
|
+
"web-ui-install": "bin/install.js"
|
|
16
23
|
},
|
|
17
24
|
"exports": {
|
|
18
25
|
".": {
|
|
@@ -23,6 +30,10 @@
|
|
|
23
30
|
"types": "./dist/integrations/*/index.d.ts",
|
|
24
31
|
"import": "./dist/integrations/*.js"
|
|
25
32
|
},
|
|
33
|
+
"./build/*": {
|
|
34
|
+
"types": "./dist/build/*/index.d.ts",
|
|
35
|
+
"import": "./dist/build/*.js"
|
|
36
|
+
},
|
|
26
37
|
"./styles.css": "./dist/style.css",
|
|
27
38
|
"./docgen.json": "./src/docgen/doc.gen.json",
|
|
28
39
|
"./llms.txt": "./src/llms/llms.gen.txt",
|
|
@@ -30,44 +41,46 @@
|
|
|
30
41
|
},
|
|
31
42
|
"files": [
|
|
32
43
|
"dist",
|
|
44
|
+
"src/llms/install-templates",
|
|
33
45
|
"src/docgen/doc.gen.json",
|
|
34
46
|
"src/llms/llms.gen.txt",
|
|
47
|
+
"src/llms/tokens.gen.json",
|
|
35
48
|
"src/llms/skills",
|
|
36
49
|
"bin"
|
|
37
50
|
],
|
|
38
51
|
"scripts": {
|
|
39
|
-
"codegen:docgen": "tsx src/docgen/gen-docgen.ts",
|
|
40
|
-
"codegen:llms": "tsx src/llms/gen-llms.ts",
|
|
41
|
-
"codegen:watch": "tsx watch src/codegen/run.ts",
|
|
42
|
-
"codegen:storybook": "tsx src/codegen/run.ts --storybook",
|
|
43
|
-
"codegen": "tsx src/codegen/run.ts",
|
|
44
|
-
"build": "npm run codegen && rm -rf dist && vite build && npm run codegen:docgen && npm run codegen:llms",
|
|
45
52
|
"dev": "tsx scripts/dev.ts",
|
|
46
53
|
"dev:host": "tsx scripts/dev.ts --host",
|
|
47
54
|
"dev:lib": "concurrently -n codegen,lib -c yellow,blue \"npm run codegen:watch\" \"vite build --watch\"",
|
|
48
|
-
"
|
|
55
|
+
"build": "npm run codegen && rm -rf dist && vite build && npm run codegen:docgen && npm run codegen:llms && npm run codegen:tokens",
|
|
56
|
+
"build:storybook": "npm run codegen:storybook && storybook build",
|
|
57
|
+
"storybook": "npm run codegen:storybook && storybook dev -p 6006 --no-open",
|
|
58
|
+
"storybook:free-ports": "tsx scripts/free-storybook-ports.ts",
|
|
59
|
+
"codegen": "tsx src/codegen/run.ts",
|
|
60
|
+
"codegen:watch": "tsx watch src/codegen/run.ts",
|
|
61
|
+
"codegen:storybook": "tsx src/codegen/run.ts --storybook",
|
|
62
|
+
"codegen:docgen": "tsx src/docgen/gen-docgen.ts",
|
|
63
|
+
"codegen:llms": "tsx src/llms/gen-llms.ts",
|
|
64
|
+
"codegen:tokens": "tsx src/llms/gen-tokens.ts",
|
|
65
|
+
"verify:format": "prettier --check .",
|
|
66
|
+
"verify:lint": "eslint . --cache --max-warnings=0",
|
|
67
|
+
"verify:typecheck": "npm run codegen && tsc -p tsconfig.json --noEmit && tsc -p tsconfig.lib.json --noEmit && tsc -p .storybook/tsconfig.json --noEmit",
|
|
68
|
+
"verify:tests": "vitest run",
|
|
69
|
+
"verify:knip": "knip",
|
|
70
|
+
"verify:deps": "tsx scripts/check-pinned-dependencies.ts",
|
|
71
|
+
"verify:changelog": "tsx scripts/verify/changelog.ts",
|
|
72
|
+
"verify:staged": "tsx scripts/verify/staged.ts",
|
|
73
|
+
"verify:full": "tsx scripts/verify/full.ts && npm run verify:tests",
|
|
49
74
|
"format": "prettier --write .",
|
|
50
|
-
"
|
|
51
|
-
"lint": "eslint . --cache --max-warnings=0",
|
|
52
|
-
"lint:fix": "eslint . --cache --fix",
|
|
75
|
+
"lint": "eslint . --cache --fix",
|
|
53
76
|
"lint:inspect": "npx @eslint/config-inspector@latest",
|
|
77
|
+
"test:unit": "vitest run --project unit",
|
|
78
|
+
"test:stories": "vitest run --project storybook",
|
|
79
|
+
"test:watch": "vitest",
|
|
54
80
|
"skills:eval": "node src/llms/evals/run.mjs",
|
|
55
81
|
"skills:eval:dev": "WEB_UI_SKILL_EVAL_ROOT=/private/tmp/web-ui-dev-skill-evals WEB_UI_SKILL_EVAL_RESULTS_DIR=.agents/evals/results WEB_UI_SKILL_EVAL_REPORT_PATH=.agents/evals/REPORT.md WEB_UI_SKILL_EVAL_SKILL_FAMILY=web-ui-dev WEB_UI_SKILL_EVAL_WORKSPACE_LABEL='development repository' node src/llms/evals/run.mjs --scenarios-dir .agents/evals/scenarios --setup .agents/evals/setup-env.sh",
|
|
56
82
|
"skills:eval:compare": "node src/llms/evals/compare.mjs",
|
|
57
83
|
"skills:eval:report": "node src/llms/evals/report.mjs",
|
|
58
|
-
"storybook": "npm run codegen:storybook && storybook dev -p 6006 --no-open",
|
|
59
|
-
"storybook:free-ports": "tsx scripts/free-storybook-ports.ts",
|
|
60
|
-
"build:storybook": "npm run codegen:storybook && storybook build",
|
|
61
|
-
"test": "vitest run",
|
|
62
|
-
"test:unit": "vitest run --project unit",
|
|
63
|
-
"test:stories": "vitest run --project storybook",
|
|
64
|
-
"test:watch": "vitest",
|
|
65
|
-
"verify:preflight": "tsx scripts/verify/full.ts",
|
|
66
|
-
"verify:full": "npm run verify:preflight && npm run test",
|
|
67
|
-
"worktree:create": "tsx scripts/worktrees.ts create",
|
|
68
|
-
"worktree:close": "tsx scripts/worktrees.ts close",
|
|
69
|
-
"worktree:discard": "tsx scripts/worktrees.ts discard",
|
|
70
|
-
"knip": "knip",
|
|
71
84
|
"git:config": "git config core.hooksPath .githooks && git config pull.rebase true && git config merge.ff only"
|
|
72
85
|
},
|
|
73
86
|
"peerDependencies": {
|
|
@@ -124,6 +137,7 @@
|
|
|
124
137
|
"globals": "15.15.0",
|
|
125
138
|
"jiti": "2.7.0",
|
|
126
139
|
"knip": "6.14.2",
|
|
140
|
+
"lightningcss": "1.32.0",
|
|
127
141
|
"nano-staged": "1.0.2",
|
|
128
142
|
"playwright": "1.60.0",
|
|
129
143
|
"prettier": "3.8.3",
|
package/src/docgen/doc.gen.json
CHANGED
|
@@ -491,14 +491,14 @@
|
|
|
491
491
|
"subComponents": [
|
|
492
492
|
{
|
|
493
493
|
"name": "Code.Block",
|
|
494
|
-
"description": "Code.Block — a fenced code block on a flat brand surface, with an optional\nchamfered language notch (top-left) and a copy button (top-right). The\nsurface follows the global corner-radius token when a preset opts in
|
|
494
|
+
"description": "Code.Block — a fenced code block on a flat brand surface, with an optional\nchamfered language notch (top-left) and a copy button (top-right). The\nsurface follows the global corner-radius token when a preset opts in. The\ncopy button copies the rendered text.",
|
|
495
495
|
"props": [
|
|
496
496
|
{
|
|
497
497
|
"name": "children",
|
|
498
498
|
"required": true,
|
|
499
|
-
"type": "
|
|
499
|
+
"type": "ReactNode",
|
|
500
500
|
"defaultValue": null,
|
|
501
|
-
"description": "
|
|
501
|
+
"description": "Code content shown in the block. The copy button copies its rendered text."
|
|
502
502
|
},
|
|
503
503
|
{
|
|
504
504
|
"name": "hideCopy",
|
|
@@ -507,13 +507,6 @@
|
|
|
507
507
|
"defaultValue": "false",
|
|
508
508
|
"description": "Hide the copy button."
|
|
509
509
|
},
|
|
510
|
-
{
|
|
511
|
-
"name": "highlighted",
|
|
512
|
-
"required": false,
|
|
513
|
-
"type": "ReactNode",
|
|
514
|
-
"defaultValue": null,
|
|
515
|
-
"description": "Pre-rendered display content (e.g. syntax-highlighted tokens) shown in place of `children`, which stays the copied value. The code-highlight integration fills this slot."
|
|
516
|
-
},
|
|
517
510
|
{
|
|
518
511
|
"name": "language",
|
|
519
512
|
"required": false,
|
|
@@ -525,14 +518,14 @@
|
|
|
525
518
|
},
|
|
526
519
|
{
|
|
527
520
|
"name": "Code.Inline",
|
|
528
|
-
"description": "Code.Inline — an inline code fragment (a `<code>` chip) for use inside running\ntext.
|
|
521
|
+
"description": "Code.Inline — an inline code fragment (a `<code>` chip) for use inside running\ntext. `Typo.InlineCode` renders this under the hood so inline-code chrome is\ndefined in one place. The copy button copies the rendered text.",
|
|
529
522
|
"props": [
|
|
530
523
|
{
|
|
531
524
|
"name": "children",
|
|
532
525
|
"required": true,
|
|
533
|
-
"type": "
|
|
526
|
+
"type": "ReactNode",
|
|
534
527
|
"defaultValue": null,
|
|
535
|
-
"description": "
|
|
528
|
+
"description": "Code content shown in the chip. The copy button copies its rendered text."
|
|
536
529
|
},
|
|
537
530
|
{
|
|
538
531
|
"name": "copyable",
|
|
@@ -540,13 +533,6 @@
|
|
|
540
533
|
"type": "boolean",
|
|
541
534
|
"defaultValue": "false",
|
|
542
535
|
"description": "Show a small copy button on the right, behind a hairline separator."
|
|
543
|
-
},
|
|
544
|
-
{
|
|
545
|
-
"name": "highlighted",
|
|
546
|
-
"required": false,
|
|
547
|
-
"type": "ReactNode",
|
|
548
|
-
"defaultValue": null,
|
|
549
|
-
"description": "Pre-rendered display content (e.g. syntax-highlighted tokens) shown in place of `children`, which stays the copied value. The code-highlight integration fills this slot."
|
|
550
536
|
}
|
|
551
537
|
]
|
|
552
538
|
},
|
|
@@ -1194,6 +1180,333 @@
|
|
|
1194
1180
|
}
|
|
1195
1181
|
]
|
|
1196
1182
|
},
|
|
1183
|
+
"field": {
|
|
1184
|
+
"root": {
|
|
1185
|
+
"name": "Field.Root",
|
|
1186
|
+
"description": "Field.Root — groups a label, control, validation state, and supporting copy.",
|
|
1187
|
+
"props": [
|
|
1188
|
+
{
|
|
1189
|
+
"name": "actionsRef",
|
|
1190
|
+
"required": false,
|
|
1191
|
+
"type": "RefObject<FieldRootActions | null>",
|
|
1192
|
+
"defaultValue": null,
|
|
1193
|
+
"description": ""
|
|
1194
|
+
},
|
|
1195
|
+
{
|
|
1196
|
+
"name": "className",
|
|
1197
|
+
"required": false,
|
|
1198
|
+
"type": "string | ((state: FieldRootState) => string)",
|
|
1199
|
+
"defaultValue": null,
|
|
1200
|
+
"description": ""
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
"name": "dirty",
|
|
1204
|
+
"required": false,
|
|
1205
|
+
"type": "boolean",
|
|
1206
|
+
"defaultValue": null,
|
|
1207
|
+
"description": ""
|
|
1208
|
+
},
|
|
1209
|
+
{
|
|
1210
|
+
"name": "disabled",
|
|
1211
|
+
"required": false,
|
|
1212
|
+
"type": "boolean",
|
|
1213
|
+
"defaultValue": "false",
|
|
1214
|
+
"description": ""
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
"name": "invalid",
|
|
1218
|
+
"required": false,
|
|
1219
|
+
"type": "boolean",
|
|
1220
|
+
"defaultValue": null,
|
|
1221
|
+
"description": ""
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"name": "name",
|
|
1225
|
+
"required": false,
|
|
1226
|
+
"type": "string",
|
|
1227
|
+
"defaultValue": null,
|
|
1228
|
+
"description": ""
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
"name": "render",
|
|
1232
|
+
"required": false,
|
|
1233
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldRootState>",
|
|
1234
|
+
"defaultValue": null,
|
|
1235
|
+
"description": ""
|
|
1236
|
+
},
|
|
1237
|
+
{
|
|
1238
|
+
"name": "style",
|
|
1239
|
+
"required": false,
|
|
1240
|
+
"type": "| CSSProperties\n| ((state: FieldRootState) => CSSProperties)",
|
|
1241
|
+
"defaultValue": null,
|
|
1242
|
+
"description": ""
|
|
1243
|
+
},
|
|
1244
|
+
{
|
|
1245
|
+
"name": "touched",
|
|
1246
|
+
"required": false,
|
|
1247
|
+
"type": "boolean",
|
|
1248
|
+
"defaultValue": null,
|
|
1249
|
+
"description": ""
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
"name": "validate",
|
|
1253
|
+
"required": false,
|
|
1254
|
+
"type": "(\n value: unknown,\n formValues: Record<string, any>\n) =>\n | string\n | string[]\n | Promise<string | string[] | null>\n | null",
|
|
1255
|
+
"defaultValue": null,
|
|
1256
|
+
"description": ""
|
|
1257
|
+
},
|
|
1258
|
+
{
|
|
1259
|
+
"name": "validationDebounceTime",
|
|
1260
|
+
"required": false,
|
|
1261
|
+
"type": "number",
|
|
1262
|
+
"defaultValue": "0",
|
|
1263
|
+
"description": ""
|
|
1264
|
+
},
|
|
1265
|
+
{
|
|
1266
|
+
"name": "validationMode",
|
|
1267
|
+
"required": false,
|
|
1268
|
+
"type": "FormValidationMode",
|
|
1269
|
+
"defaultValue": "onSubmit",
|
|
1270
|
+
"description": ""
|
|
1271
|
+
}
|
|
1272
|
+
]
|
|
1273
|
+
},
|
|
1274
|
+
"subComponents": [
|
|
1275
|
+
{
|
|
1276
|
+
"name": "Field.Control",
|
|
1277
|
+
"description": "Field.Control — a native input control with Field labeling and validation.",
|
|
1278
|
+
"props": [
|
|
1279
|
+
{
|
|
1280
|
+
"name": "className",
|
|
1281
|
+
"required": false,
|
|
1282
|
+
"type": "string | ((state: FieldControlState) => string)",
|
|
1283
|
+
"defaultValue": null,
|
|
1284
|
+
"description": ""
|
|
1285
|
+
},
|
|
1286
|
+
{
|
|
1287
|
+
"name": "defaultValue",
|
|
1288
|
+
"required": false,
|
|
1289
|
+
"type": "string | number | readonly string[]",
|
|
1290
|
+
"defaultValue": null,
|
|
1291
|
+
"description": ""
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"name": "onValueChange",
|
|
1295
|
+
"required": false,
|
|
1296
|
+
"type": "(\n value: string,\n eventDetails: {\n reason: \"none\";\n event: Event;\n cancel: () => void;\n allowPropagation: () => void;\n isCanceled: boolean;\n isPropagationAllowed: boolean;\n trigger: Element;\n }\n) => void",
|
|
1297
|
+
"defaultValue": null,
|
|
1298
|
+
"description": ""
|
|
1299
|
+
},
|
|
1300
|
+
{
|
|
1301
|
+
"name": "render",
|
|
1302
|
+
"required": false,
|
|
1303
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldControlState>",
|
|
1304
|
+
"defaultValue": null,
|
|
1305
|
+
"description": ""
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"name": "style",
|
|
1309
|
+
"required": false,
|
|
1310
|
+
"type": "| CSSProperties\n| ((state: FieldControlState) => CSSProperties)",
|
|
1311
|
+
"defaultValue": null,
|
|
1312
|
+
"description": ""
|
|
1313
|
+
}
|
|
1314
|
+
]
|
|
1315
|
+
},
|
|
1316
|
+
{
|
|
1317
|
+
"name": "Field.Description",
|
|
1318
|
+
"description": "Field.Description — supporting information for a field.",
|
|
1319
|
+
"props": [
|
|
1320
|
+
{
|
|
1321
|
+
"name": "className",
|
|
1322
|
+
"required": false,
|
|
1323
|
+
"type": "| string\n| ((state: FieldDescriptionState) => string)",
|
|
1324
|
+
"defaultValue": null,
|
|
1325
|
+
"description": ""
|
|
1326
|
+
},
|
|
1327
|
+
{
|
|
1328
|
+
"name": "render",
|
|
1329
|
+
"required": false,
|
|
1330
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldDescriptionState>",
|
|
1331
|
+
"defaultValue": null,
|
|
1332
|
+
"description": ""
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
"name": "style",
|
|
1336
|
+
"required": false,
|
|
1337
|
+
"type": "| CSSProperties\n| ((state: FieldDescriptionState) => CSSProperties)",
|
|
1338
|
+
"defaultValue": null,
|
|
1339
|
+
"description": ""
|
|
1340
|
+
}
|
|
1341
|
+
]
|
|
1342
|
+
},
|
|
1343
|
+
{
|
|
1344
|
+
"name": "Field.Error",
|
|
1345
|
+
"description": "Field.Error — an inline validation message shown when its match condition fails.",
|
|
1346
|
+
"props": [
|
|
1347
|
+
{
|
|
1348
|
+
"name": "className",
|
|
1349
|
+
"required": false,
|
|
1350
|
+
"type": "string | ((state: FieldErrorState) => string)",
|
|
1351
|
+
"defaultValue": null,
|
|
1352
|
+
"description": ""
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"name": "match",
|
|
1356
|
+
"required": false,
|
|
1357
|
+
"type": "boolean | keyof ValidityState",
|
|
1358
|
+
"defaultValue": null,
|
|
1359
|
+
"description": ""
|
|
1360
|
+
},
|
|
1361
|
+
{
|
|
1362
|
+
"name": "render",
|
|
1363
|
+
"required": false,
|
|
1364
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldErrorState>",
|
|
1365
|
+
"defaultValue": null,
|
|
1366
|
+
"description": ""
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
"name": "style",
|
|
1370
|
+
"required": false,
|
|
1371
|
+
"type": "| CSSProperties\n| ((state: FieldErrorState) => CSSProperties)",
|
|
1372
|
+
"defaultValue": null,
|
|
1373
|
+
"description": ""
|
|
1374
|
+
}
|
|
1375
|
+
]
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
"name": "Field.Item",
|
|
1379
|
+
"description": "Field.Item — groups one checkable option with its label and description.",
|
|
1380
|
+
"props": [
|
|
1381
|
+
{
|
|
1382
|
+
"name": "className",
|
|
1383
|
+
"required": false,
|
|
1384
|
+
"type": "string | ((state: FieldItemState) => string)",
|
|
1385
|
+
"defaultValue": null,
|
|
1386
|
+
"description": ""
|
|
1387
|
+
},
|
|
1388
|
+
{
|
|
1389
|
+
"name": "disabled",
|
|
1390
|
+
"required": false,
|
|
1391
|
+
"type": "boolean",
|
|
1392
|
+
"defaultValue": "false",
|
|
1393
|
+
"description": ""
|
|
1394
|
+
},
|
|
1395
|
+
{
|
|
1396
|
+
"name": "render",
|
|
1397
|
+
"required": false,
|
|
1398
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldItemState>",
|
|
1399
|
+
"defaultValue": null,
|
|
1400
|
+
"description": ""
|
|
1401
|
+
},
|
|
1402
|
+
{
|
|
1403
|
+
"name": "style",
|
|
1404
|
+
"required": false,
|
|
1405
|
+
"type": "| CSSProperties\n| ((state: FieldItemState) => CSSProperties)",
|
|
1406
|
+
"defaultValue": null,
|
|
1407
|
+
"description": ""
|
|
1408
|
+
}
|
|
1409
|
+
]
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
"name": "Field.Label",
|
|
1413
|
+
"description": "Field.Label — an accessible label automatically associated with the control.",
|
|
1414
|
+
"props": [
|
|
1415
|
+
{
|
|
1416
|
+
"name": "className",
|
|
1417
|
+
"required": false,
|
|
1418
|
+
"type": "string | ((state: FieldLabelState) => string)",
|
|
1419
|
+
"defaultValue": null,
|
|
1420
|
+
"description": ""
|
|
1421
|
+
},
|
|
1422
|
+
{
|
|
1423
|
+
"name": "nativeLabel",
|
|
1424
|
+
"required": false,
|
|
1425
|
+
"type": "boolean",
|
|
1426
|
+
"defaultValue": "true",
|
|
1427
|
+
"description": ""
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
"name": "render",
|
|
1431
|
+
"required": false,
|
|
1432
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldLabelState>",
|
|
1433
|
+
"defaultValue": null,
|
|
1434
|
+
"description": ""
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
"name": "style",
|
|
1438
|
+
"required": false,
|
|
1439
|
+
"type": "| CSSProperties\n| ((state: FieldLabelState) => CSSProperties)",
|
|
1440
|
+
"defaultValue": null,
|
|
1441
|
+
"description": ""
|
|
1442
|
+
}
|
|
1443
|
+
]
|
|
1444
|
+
},
|
|
1445
|
+
{
|
|
1446
|
+
"name": "Field.Validity",
|
|
1447
|
+
"description": "Field.Validity — renderless access to the field validity data for custom messages.\nIts function child owns the rendered element and therefore its identity and styling.",
|
|
1448
|
+
"props": []
|
|
1449
|
+
}
|
|
1450
|
+
]
|
|
1451
|
+
},
|
|
1452
|
+
"fieldset": {
|
|
1453
|
+
"root": {
|
|
1454
|
+
"name": "Fieldset.Root",
|
|
1455
|
+
"description": "Fieldset.Root — semantic grouping for related form controls and a shared legend.",
|
|
1456
|
+
"props": [
|
|
1457
|
+
{
|
|
1458
|
+
"name": "className",
|
|
1459
|
+
"required": false,
|
|
1460
|
+
"type": "string | ((state: FieldsetRootState) => string)",
|
|
1461
|
+
"defaultValue": null,
|
|
1462
|
+
"description": ""
|
|
1463
|
+
},
|
|
1464
|
+
{
|
|
1465
|
+
"name": "render",
|
|
1466
|
+
"required": false,
|
|
1467
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldsetRootState>",
|
|
1468
|
+
"defaultValue": null,
|
|
1469
|
+
"description": ""
|
|
1470
|
+
},
|
|
1471
|
+
{
|
|
1472
|
+
"name": "style",
|
|
1473
|
+
"required": false,
|
|
1474
|
+
"type": "| CSSProperties\n| ((state: FieldsetRootState) => CSSProperties)",
|
|
1475
|
+
"defaultValue": null,
|
|
1476
|
+
"description": ""
|
|
1477
|
+
}
|
|
1478
|
+
]
|
|
1479
|
+
},
|
|
1480
|
+
"subComponents": [
|
|
1481
|
+
{
|
|
1482
|
+
"name": "Fieldset.Legend",
|
|
1483
|
+
"description": "Fieldset.Legend — the accessible label for its related controls.",
|
|
1484
|
+
"props": [
|
|
1485
|
+
{
|
|
1486
|
+
"name": "className",
|
|
1487
|
+
"required": false,
|
|
1488
|
+
"type": "string | ((state: FieldsetLegendState) => string)",
|
|
1489
|
+
"defaultValue": null,
|
|
1490
|
+
"description": ""
|
|
1491
|
+
},
|
|
1492
|
+
{
|
|
1493
|
+
"name": "render",
|
|
1494
|
+
"required": false,
|
|
1495
|
+
"type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, FieldsetLegendState>",
|
|
1496
|
+
"defaultValue": null,
|
|
1497
|
+
"description": ""
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
"name": "style",
|
|
1501
|
+
"required": false,
|
|
1502
|
+
"type": "| CSSProperties\n| ((state: FieldsetLegendState) => CSSProperties)",
|
|
1503
|
+
"defaultValue": null,
|
|
1504
|
+
"description": ""
|
|
1505
|
+
}
|
|
1506
|
+
]
|
|
1507
|
+
}
|
|
1508
|
+
]
|
|
1509
|
+
},
|
|
1197
1510
|
"input": {
|
|
1198
1511
|
"root": {
|
|
1199
1512
|
"name": "Input",
|
|
@@ -4444,9 +4757,9 @@
|
|
|
4444
4757
|
{
|
|
4445
4758
|
"name": "children",
|
|
4446
4759
|
"required": true,
|
|
4447
|
-
"type": "
|
|
4760
|
+
"type": "ReactNode",
|
|
4448
4761
|
"defaultValue": null,
|
|
4449
|
-
"description": "
|
|
4762
|
+
"description": "Code content shown in the chip. The copy button copies its rendered text."
|
|
4450
4763
|
},
|
|
4451
4764
|
{
|
|
4452
4765
|
"name": "copyable",
|
|
@@ -4454,13 +4767,6 @@
|
|
|
4454
4767
|
"type": "boolean",
|
|
4455
4768
|
"defaultValue": "false",
|
|
4456
4769
|
"description": "Show a small copy button on the right, behind a hairline separator."
|
|
4457
|
-
},
|
|
4458
|
-
{
|
|
4459
|
-
"name": "highlighted",
|
|
4460
|
-
"required": false,
|
|
4461
|
-
"type": "ReactNode",
|
|
4462
|
-
"defaultValue": null,
|
|
4463
|
-
"description": "Pre-rendered display content (e.g. syntax-highlighted tokens) shown in place of `children`, which stays the copied value. The code-highlight integration fills this slot."
|
|
4464
4770
|
}
|
|
4465
4771
|
]
|
|
4466
4772
|
},
|
|
@@ -4588,14 +4894,14 @@
|
|
|
4588
4894
|
"subComponents": [
|
|
4589
4895
|
{
|
|
4590
4896
|
"name": "CodeHighlight.Block",
|
|
4591
|
-
"description": "Code.Block — the core `Code.Block` with TanStack Highlight tokens
|
|
4897
|
+
"description": "Code.Block — the core `Code.Block` with TanStack Highlight tokens rendered inside.",
|
|
4592
4898
|
"props": [
|
|
4593
4899
|
{
|
|
4594
4900
|
"name": "children",
|
|
4595
4901
|
"required": true,
|
|
4596
4902
|
"type": "string",
|
|
4597
4903
|
"defaultValue": null,
|
|
4598
|
-
"description": "
|
|
4904
|
+
"description": "Language of `children`: grammar for tokenization and label for the corner notch. Omit to hide the notch and skip highlighting."
|
|
4599
4905
|
},
|
|
4600
4906
|
{
|
|
4601
4907
|
"name": "hideCopy",
|
|
@@ -4609,20 +4915,20 @@
|
|
|
4609
4915
|
"required": false,
|
|
4610
4916
|
"type": "SupportedLanguage",
|
|
4611
4917
|
"defaultValue": null,
|
|
4612
|
-
"description": "
|
|
4918
|
+
"description": ""
|
|
4613
4919
|
}
|
|
4614
4920
|
]
|
|
4615
4921
|
},
|
|
4616
4922
|
{
|
|
4617
4923
|
"name": "CodeHighlight.Inline",
|
|
4618
|
-
"description": "Code.Inline — the core `Code.Inline` with TanStack Highlight tokens
|
|
4924
|
+
"description": "Code.Inline — the core `Code.Inline` with TanStack Highlight tokens rendered inside.",
|
|
4619
4925
|
"props": [
|
|
4620
4926
|
{
|
|
4621
4927
|
"name": "children",
|
|
4622
4928
|
"required": true,
|
|
4623
4929
|
"type": "string",
|
|
4624
4930
|
"defaultValue": null,
|
|
4625
|
-
"description": "
|
|
4931
|
+
"description": "Grammar used to tokenize the fragment. Purely visual — the chip shows no language label. Omit for plain text."
|
|
4626
4932
|
},
|
|
4627
4933
|
{
|
|
4628
4934
|
"name": "copyable",
|
|
@@ -4636,7 +4942,7 @@
|
|
|
4636
4942
|
"required": false,
|
|
4637
4943
|
"type": "SupportedLanguage",
|
|
4638
4944
|
"defaultValue": null,
|
|
4639
|
-
"description": "
|
|
4945
|
+
"description": ""
|
|
4640
4946
|
}
|
|
4641
4947
|
]
|
|
4642
4948
|
},
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
<Keep this file lean — target ~50 lines. Decision test for every line: would the agent make a costly mistake without it? If
|
|
4
|
+
it would just need to read a file first, cut it. Dev commands, path aliases, and tool config are discoverable from the files
|
|
5
|
+
themselves.>
|
|
6
|
+
|
|
7
|
+
<One paragraph: what the app is and the stack in one line.>
|
|
8
|
+
|
|
9
|
+
Scripts, deps, and setup: [`README.md`](./README.md) and [`package.json`](./package.json) are the source of truth. Check the
|
|
10
|
+
`package.json` scripts before running or suggesting a command — don't infer one exists by pattern-matching a sibling.
|
|
11
|
+
|
|
12
|
+
## Read before you write
|
|
13
|
+
|
|
14
|
+
<One bullet per doc in docs/, each with when to read it, e.g.:>
|
|
15
|
+
|
|
16
|
+
- [`docs/<topic>.md`](./docs/<topic>.md) — <what it covers>. Read before <the change it governs>.
|
|
17
|
+
|
|
18
|
+
[`docs/index.md`](./docs/index.md) registers all of them.
|
|
19
|
+
|
|
20
|
+
## Working here
|
|
21
|
+
|
|
22
|
+
<The fenced block below is the only part of this file `npx web-ui-install` touches: its content comes from this template and
|
|
23
|
+
is refreshed on every skills install. Everything else in the file is scaffolded once by the setup skill and then owned by the
|
|
24
|
+
repo.>
|
|
25
|
+
|
|
26
|
+
<!-- imf-web-ui:begin — managed by `npx web-ui-install`; edits inside the fence are overwritten -->
|
|
27
|
+
|
|
28
|
+
`.agents/skills/imf-web-ui-*` is vendored from `@imfusion/web-ui` and resynced with `npx web-ui-install`. Don't edit it and
|
|
29
|
+
don't put repo conventions there. Load the matching `imf-web-ui-*` skill before writing code, styles, data fetching, or docs;
|
|
30
|
+
repo docs hold only what is unique to this repo.
|
|
31
|
+
|
|
32
|
+
<!-- imf-web-ui:end -->
|
|
33
|
+
|
|
34
|
+
<Repo-specific agent guidance: generated files that are committed, tools to verify APIs against, things never to touch.>
|