@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
|
@@ -1,57 +1,87 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: imf-web-ui-setup
|
|
3
3
|
description:
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
"Plan and, after explicit approval, bootstrap an ImFusion frontend against the conventions baseline: library setup,
|
|
5
|
+
tooling, git, npm project, authentication, project structure, docs structure, data, testing, or agent tooling. Inspect
|
|
6
|
+
statically first and write only the approved files. Use imf-web-ui-audit for read-only health checks or topics with no
|
|
7
|
+
setup action."
|
|
8
|
+
argument-hint: "[full|library-setup|tooling|git|npm-project|authentication|project-structure|docs-structure|data|testing|agent-tooling]"
|
|
9
|
+
allowed-tools: Read Glob Grep Write
|
|
7
10
|
---
|
|
8
11
|
|
|
9
12
|
# imf-web-ui-setup
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
You are the frontend bootstrap planner. Inspect the repository statically, read the applicable `imf-web-ui-conventions`
|
|
15
|
+
topics, and prepare a complete proposal for every file you would create or change. The project wins where it already has a
|
|
16
|
+
working convention. This skill is plan-first: enter the host's plan mode before presenting the proposal, and do not create a
|
|
17
|
+
report file as a substitute for the host plan.
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
`imf-web-ui-imfusion-frontend-setup` sets up or audits the repo's tooling (formatting, linting, hooks, scripts) against the
|
|
15
|
-
ImFusion baseline, and let the human decide. Offer it; never run it uninvited, and don't raise it again if they pass — the
|
|
16
|
-
library works fine without any of it.
|
|
19
|
+
## Workflow
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
1. Resolve the argument, not the prose. Bare means `full`; a topic argument selects one supported setup topic. A prompt that
|
|
22
|
+
merely _mentions_ one area ("wire up the tooling", "get the project set up") is still a `full` run — the words describe a
|
|
23
|
+
starting point, not a scope that excludes the rest. For a greenfield `full` run the application boundary (router, route
|
|
24
|
+
groups, current-user query, AppShell) is part of the deliverable even when the prompt never names it; propose it and let
|
|
25
|
+
the human remove it, never silently defer it as "out of scope." For an unsupported topic argument, list the available
|
|
26
|
+
setup topics and point the human to `imf-web-ui-audit` for a read-only report.
|
|
27
|
+
2. Enter the host's plan mode. If it is not already active, use the host plan-mode control before inspecting and planning.
|
|
28
|
+
3. Read the selected convention topics and inspect the repository with `Read`, `Glob`, and `Grep` only.
|
|
29
|
+
4. Build the complete proposal in the host plan from the shared report contract at
|
|
30
|
+
[`../imf-web-ui-conventions/templates/REPORT.md`](../imf-web-ui-conventions/templates/REPORT.md). Include the concrete
|
|
31
|
+
content of every file the approved setup would create or change, with repository evidence for each decision.
|
|
32
|
+
5. A greenfield `full` setup proposes the whole starter skeleton, not just tooling — tooling without the application boundary
|
|
33
|
+
is an unfinished setup. Include, as concrete files in the plan:
|
|
34
|
+
- the TanStack Router **package added to `package.json`** (with its router devtools as a dev dependency), not just
|
|
35
|
+
imported — code that imports an uninstalled package is an incomplete setup
|
|
36
|
+
([project-structure.md](../imf-web-ui-conventions/topics/project-structure.md));
|
|
37
|
+
- pathless `_public/` and `_app/` route groups behind one server-backed current-user boundary
|
|
38
|
+
([authentication.md](../imf-web-ui-conventions/topics/authentication.md));
|
|
39
|
+
- the minimal branded `AppShell` in `_app/` by default — omit the shell only when the human explicitly says the product
|
|
40
|
+
has no persistent authenticated navigation (ask first), but keep the `_app/` boundary either way;
|
|
41
|
+
- a per-topic `api/` folder for any data the first screen shows, never an inline fixture in the component
|
|
42
|
+
([data.md](../imf-web-ui-conventions/topics/data.md)).
|
|
19
43
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import { WebUIProvider, Button } from "@imfusion/web-ui";
|
|
23
|
-
```
|
|
44
|
+
The plan documents this starter shape as concrete file content; it does not copy a full external starter template.
|
|
45
|
+
Existing projects keep their working choices — propose only the gaps.
|
|
24
46
|
|
|
25
|
-
|
|
26
|
-
|
|
47
|
+
6. Keep the plan as the approval gate. After the host approves and exits plan mode, write only the listed files. Complete any
|
|
48
|
+
immediately requested bootstrap work covered by that approved plan, then invoke `imf-web-ui-audit full` as a verification
|
|
49
|
+
step and review the findings it reports back before declaring the setup complete. The audit stays out of plan mode here —
|
|
50
|
+
the human has just left it to let this work happen.
|
|
27
51
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
the
|
|
52
|
+
Installer and hook runs stay with the human: an `agent-tooling` proposal lists the `npx web-ui-install` commands as human
|
|
53
|
+
steps, applies the judgment from the topic (read existing registrations first, never stack a hook on a covered event), and
|
|
54
|
+
includes the topic's Codex trust follow-up whenever hooks are part of the plan.
|
|
31
55
|
|
|
32
|
-
##
|
|
56
|
+
## Checklist
|
|
33
57
|
|
|
34
|
-
|
|
35
|
-
[
|
|
36
|
-
|
|
58
|
+
The post-implementation audit uses the shared
|
|
59
|
+
[convention audit checklist](../imf-web-ui-conventions/templates/AUDIT_CHECKLIST.md) to verify the complete baseline, not
|
|
60
|
+
only the setup topic selected at the start.
|
|
37
61
|
|
|
38
|
-
|
|
62
|
+
## Safety
|
|
39
63
|
|
|
40
|
-
|
|
41
|
-
|
|
64
|
+
Use only static inspection: `Read`, `Glob`, and `Grep`. Do not use a shell or invoke Node, npm, npx, package scripts, hooks,
|
|
65
|
+
config imports, linters, tests, builds, Git commands, project binaries, installers, or package managers. Read config as text
|
|
66
|
+
and report runtime or machine-local state that cannot be established statically as unverified. After approval, `Write` is
|
|
67
|
+
limited to the files listed in the approved report; anything needing execution goes in the plan for the human.
|
|
42
68
|
|
|
43
|
-
|
|
44
|
-
matching skill has been read. The house preference is both — the block alone is advice an agent can walk past. The hook
|
|
45
|
-
refuses every edit while no matching skill is loadable, so a project adopting it wants the current docs open; that sequencing
|
|
46
|
-
belongs to whoever runs it.
|
|
69
|
+
## Setup topics
|
|
47
70
|
|
|
48
|
-
|
|
49
|
-
and never guess at a skill name.
|
|
71
|
+
`full` covers every topic below. A one-topic run assesses only that topic.
|
|
50
72
|
|
|
51
|
-
|
|
73
|
+
| Topic | Assess and plan |
|
|
74
|
+
| ------------------- | ------------------------------------------------------------------------------ |
|
|
75
|
+
| `library-setup` | styles import, `WebUIProvider`, and library package wiring |
|
|
76
|
+
| `tooling` | dependency selection, devtools, Prettier, ESLint, TypeScript, and verification |
|
|
77
|
+
| `git` | tracked hooks, verification scopes, and staleness wiring |
|
|
78
|
+
| `npm-project` | package metadata, scripts, pins, npm, and Node configuration |
|
|
79
|
+
| `authentication` | current-user query, public/app guards, login, and logout |
|
|
80
|
+
| `project-structure` | source tree, route groups, optional app shell, naming, and placement |
|
|
81
|
+
| `docs-structure` | README, AGENTS, docs index, and content boundaries |
|
|
82
|
+
| `data` | transport, schemas, query/mutation options, keys, and invalidation |
|
|
83
|
+
| `testing` | test boundaries and verification coverage |
|
|
84
|
+
| `agent-tooling` | vendored skills, AGENTS fence, lifecycle hooks, registrations, and staleness |
|
|
52
85
|
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
`<WebUIProvider>`.
|
|
56
|
-
- **An integration component throws on import** — its optional peer dependency isn't installed; check the component's
|
|
57
|
-
description in the docgen index (`imf-web-ui-components`) for which peer to add to your `package.json`.
|
|
86
|
+
Setup has no file-creation action for `react`, `typescript`, `class-names`, `validation`, `components`, `styling`, `assets`,
|
|
87
|
+
`library-boundary`, or `tokens`; select those in `imf-web-ui-audit`.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: imf-web-ui-update
|
|
3
|
+
description:
|
|
4
|
+
"Update @imfusion/web-ui in a consumer repository: refresh the package, vendored skills, and lifecycle hooks, verify the
|
|
5
|
+
base update, then audit and optionally migrate affected or custom consumer components in a separate approved commit."
|
|
6
|
+
argument-hint: "[--dry-run] [optional version or reason]"
|
|
7
|
+
allowed-tools: Bash Read Grep
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# imf-web-ui-update
|
|
11
|
+
|
|
12
|
+
Update a repository that consumes `@imfusion/web-ui`. Preserve existing project choices and user work. The workflow has two
|
|
13
|
+
commits: the dependency/tooling update first, then an optional consumer migration. Never commit without a fresh explicit
|
|
14
|
+
approval.
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
- Work from the frontend package root. In a monorepo, inspect package manifests and `git worktree list` first, then choose
|
|
19
|
+
the frontend package in the active worktree that uses web-ui. Read repository and component instructions before changing
|
|
20
|
+
files.
|
|
21
|
+
- This workflow uses npm. `package-lock.json` is the expected lockfile. Another lockfile is a conflict: stop and ask.
|
|
22
|
+
- A dry run is read-only. Do not install, run the installer, format, stage, commit, reset, or clean. Report what would run.
|
|
23
|
+
- Record the initial `git status --short`. Existing changes are held back, never staged or overwritten.
|
|
24
|
+
- A dirty file that the workflow needs to modify is a conflict. Stop and report it. This includes package files, installed
|
|
25
|
+
skill directories, the `AGENTS.md` installer fence, hook files, and hook settings.
|
|
26
|
+
- Do not hand-edit installer-owned skills, the `AGENTS.md` fenced block, or installer-owned hook files.
|
|
27
|
+
- Keep the base update and consumer migration in separate commits. Do not begin the migration audit until the base update
|
|
28
|
+
commit is complete.
|
|
29
|
+
- Treat the installed package version before the update as the comparison baseline. There is no assumed changelog.
|
|
30
|
+
- A migration candidate is a custom consumer implementation whose behavior overlaps with a current web-ui component, or an
|
|
31
|
+
existing web-ui usage affected by changed types or documented API. Do not infer a replacement from a name alone; inspect
|
|
32
|
+
the implementation and the current component documentation/types.
|
|
33
|
+
|
|
34
|
+
## Preflight
|
|
35
|
+
|
|
36
|
+
1. Select the frontend package in the active worktree and read its instructions, `package.json`, and `package-lock.json`.
|
|
37
|
+
2. Check whether `@imfusion/web-ui` is already declared and record its installed/version-marker version.
|
|
38
|
+
3. Record the worktree status and identify files the update would touch.
|
|
39
|
+
4. Inspect `.agents/skills/`, `.claude/skills/`, the `AGENTS.md` fence, `.claude/settings.json`, and `.agents/hooks/`.
|
|
40
|
+
5. Check for another npm process. Stop on any conflict or ambiguous target.
|
|
41
|
+
|
|
42
|
+
## Base update
|
|
43
|
+
|
|
44
|
+
In a non-dry run, update the dependency:
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
npm install @imfusion/web-ui
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Pass an explicit version only when the user supplied one. Do not use `--force` or `--legacy-peer-deps` to make installation
|
|
51
|
+
pass. Stop on install failure.
|
|
52
|
+
|
|
53
|
+
Then refresh the existing web-ui skill target and lifecycle hooks:
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
npx web-ui-install
|
|
57
|
+
npx web-ui-install --hooks
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Run these from the consumer package root, the directory holding the `node_modules` that the dependency install just wrote.
|
|
61
|
+
`npx` resolves `web-ui-install` from the installed `@imfusion/web-ui` there; from any other directory it cannot find the
|
|
62
|
+
binary. Preserve the existing target (`.agents`, `.claude`, or both); do not silently choose a new one.
|
|
63
|
+
|
|
64
|
+
Always run both installer commands after the package update. Skills and installer-owned hook scripts may have changed even
|
|
65
|
+
when their existing registrations already cover session start, subagent start, prompt submit, and the stop gate. The hook
|
|
66
|
+
installer refreshes those scripts wholesale, prunes retired scripts and their registrations, and merges registrations
|
|
67
|
+
idempotently into both host files (`.claude/settings.json` and `.codex/hooks.json`). Stop on malformed settings or installer
|
|
68
|
+
conflicts.
|
|
69
|
+
|
|
70
|
+
## Verification
|
|
71
|
+
|
|
72
|
+
After each mutating command, compare `git status --short` with the preflight snapshot.
|
|
73
|
+
|
|
74
|
+
Classify paths as:
|
|
75
|
+
|
|
76
|
+
- **Update-owned:** package files and installer-owned files changed by this workflow.
|
|
77
|
+
- **Held back:** pre-existing user changes, excluded from the commit.
|
|
78
|
+
- **Conflict:** an overlapping pre-existing change, ambiguous target, or unexpected changed path.
|
|
79
|
+
|
|
80
|
+
On conflict, stop. Never use `git restore`, `git reset`, `git clean`, or broad staging to hide it.
|
|
81
|
+
|
|
82
|
+
Run the frontend package's documented full verification after the base update. Read its `package.json` scripts and choose
|
|
83
|
+
commands that cover typechecking, linting, tests, and building. Prefer one documented aggregate `verify`/`check` script when
|
|
84
|
+
it covers those responsibilities; otherwise run the documented non-watch scripts for the responsibilities that exist. Do not
|
|
85
|
+
invent script names or run watch/dev scripts. A type or build failure is a base-update conflict to resolve before the base
|
|
86
|
+
commit, not a migration finding to defer.
|
|
87
|
+
|
|
88
|
+
Verify the dependency/lockfile, current skill markers, the `AGENTS.md` fence, hook coverage, and the final path list. In
|
|
89
|
+
dry-run mode, say that mutation-dependent checks were skipped.
|
|
90
|
+
|
|
91
|
+
## Base update report and approval
|
|
92
|
+
|
|
93
|
+
Before the base commit, show this concise report:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
@imfusion/web-ui update report
|
|
97
|
+
Package : <old> -> <new> / would update
|
|
98
|
+
Skills : <status>
|
|
99
|
+
Hooks : <status>
|
|
100
|
+
Verification : <status>
|
|
101
|
+
Update files : <paths>
|
|
102
|
+
Held back : <paths or none>
|
|
103
|
+
Conflicts : <paths or none>
|
|
104
|
+
Commit : <imperative message or not proposed>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Normal mode: ask exactly, **“Approve these update-owned changes and commit them?”** Do not commit without an affirmative
|
|
108
|
+
answer. If denied, leave the changes uncommitted.
|
|
109
|
+
|
|
110
|
+
Dry-run mode: state **“Dry run complete; no changes or commit were made.”** Do not mutate or ask for commit approval.
|
|
111
|
+
|
|
112
|
+
## Consumer migration audit
|
|
113
|
+
|
|
114
|
+
Begin this phase only after the approved base update has been committed. Record the old and new package versions from the
|
|
115
|
+
pre-update and current manifests/lockfile. Use the current package's exported types, generated documentation, and component
|
|
116
|
+
examples as the source of truth. Use the old version's package metadata or repository history when available to identify what
|
|
117
|
+
changed; do not pretend a changelog exists.
|
|
118
|
+
|
|
119
|
+
Run the same documented full verification again after the base commit. Separate findings into:
|
|
120
|
+
|
|
121
|
+
- **Compatibility fixes:** existing web-ui imports, props, or usage patterns that no longer typecheck, build, lint, or pass
|
|
122
|
+
tests.
|
|
123
|
+
- **Changed component usages:** existing components whose current API, behavior, or documented contract changed between the
|
|
124
|
+
two versions and may need a consumer update, even when the typecheck passes.
|
|
125
|
+
- **Replacement candidates:** custom consumer components, wrappers, or field implementations that overlap with a component
|
|
126
|
+
now exported by `@imfusion/web-ui`. Inspect their code, styles, and call sites before suggesting a replacement. Include the
|
|
127
|
+
current custom implementation, the proposed web-ui component, the relevant API/type evidence, and any behavior or styling
|
|
128
|
+
that still needs to be preserved.
|
|
129
|
+
|
|
130
|
+
Report these findings separately from the base update. Ask whether to apply the proposed migration. If the user declines,
|
|
131
|
+
leave the consumer code unchanged. If accepted, make only the approved migration changes, run the documented full
|
|
132
|
+
verification again, and show a second report with the migration paths, held-back paths, conflicts, and verification result.
|
|
133
|
+
|
|
134
|
+
If no findings exist, report that the installed update has no detected compatibility fixes, changed usages, or replacement
|
|
135
|
+
candidates. Do not create an empty migration commit.
|
|
136
|
+
|
|
137
|
+
Whatever the migration outcome, close the phase by asking whether to run `imf-web-ui-audit full`: an update can shift the
|
|
138
|
+
baseline (new components, hooks, conventions), and the audit shows where the project now stands against it. Run it only on an
|
|
139
|
+
explicit yes.
|
|
140
|
+
|
|
141
|
+
## Migration approval
|
|
142
|
+
|
|
143
|
+
Ask exactly, **“Approve these consumer migration changes and commit them separately?”** Do not commit without an affirmative
|
|
144
|
+
answer. The migration approval is not implied by approval of the base update.
|
|
145
|
+
|
|
146
|
+
## Commit
|
|
147
|
+
|
|
148
|
+
For the base update, after approval:
|
|
149
|
+
|
|
150
|
+
1. Recheck status and exclude held-back paths.
|
|
151
|
+
2. Stage base update-owned paths selectively. Never use `git add .` or `git add -A`.
|
|
152
|
+
3. Run the repository's commit workflow if it has one, including its required verification and documentation audit. Otherwise
|
|
153
|
+
run documented verification and follow the repository's commit convention.
|
|
154
|
+
4. Commit with a concise imperative message and confirm the commit and final status.
|
|
155
|
+
|
|
156
|
+
For an approved migration, repeat the same selective staging and documented commit workflow with a separate imperative
|
|
157
|
+
message. Never bypass hooks or amend an unrelated commit after a hook failure.
|
|
@@ -11,7 +11,7 @@ description:
|
|
|
11
11
|
Most teams consuming `@imfusion/web-ui` don't have a designer on call. This skill stands in: it encodes the library authors'
|
|
12
12
|
UX experience — the whole experience of a screen, its visual design, and the usability where both meet. Follow it by default;
|
|
13
13
|
deviate when the product has a real reason to. Code-level patterns (tokens, layers, wrappers) live in
|
|
14
|
-
`imf-web-ui-
|
|
14
|
+
`imf-web-ui-conventions`; project wiring lives in the `library-setup` topic of `imf-web-ui-conventions`.
|
|
15
15
|
|
|
16
16
|
Component names below are real — verify any API against the docgen index (`imf-web-ui-components`) before use. Never invent a
|
|
17
17
|
component this library doesn't ship.
|
|
@@ -82,13 +82,13 @@ Every screen ships four states, not one:
|
|
|
82
82
|
|
|
83
83
|
Custom UI the library doesn't cover should be indistinguishable from library UI: build it from `--imf-ui-*` tokens and
|
|
84
84
|
compose it with library primitives. The goal lives here; the mechanics (tokens, layers, wrappers) live in
|
|
85
|
-
`imf-web-ui-
|
|
85
|
+
`imf-web-ui-conventions`.
|
|
86
86
|
|
|
87
87
|
## Experimental components
|
|
88
88
|
|
|
89
89
|
The identity index marks each component `stable` or `experimental`. Experimental ones are fine to use, but expect API
|
|
90
|
-
movement across releases — prefer wrapping them once (see `imf-web-ui-
|
|
91
|
-
|
|
90
|
+
movement across releases — prefer wrapping them once (see `imf-web-ui-conventions`) so a breaking change lands in one file,
|
|
91
|
+
not forty call sites.
|
|
92
92
|
|
|
93
93
|
## Deep dives
|
|
94
94
|
|
|
@@ -8,8 +8,8 @@ non-compliant ones. Read before building any form beyond two fields.
|
|
|
8
8
|
|
|
9
9
|
The library ships the controls (`Input`, `Select`, `Checkbox`, `Switch`, `Slider`) but no form or field wrapper, so labels,
|
|
10
10
|
grouping, and where errors appear are composed by you. That's exactly where these rules apply. Composing the markup is not
|
|
11
|
-
the same as owning the state: form state and validation belong to a form library (see `imf-web-ui-
|
|
12
|
-
|
|
11
|
+
the same as owning the state: form state and validation belong to a form library (see `imf-web-ui-conventions`), and these
|
|
12
|
+
rules govern how its errors get presented.
|
|
13
13
|
|
|
14
14
|
## Structure
|
|
15
15
|
|