@imfusion/web-ui 0.10.1-dev.51.gc342cd5f → 0.10.1-dev.54.g47954adf
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/CHANGELOG.md +5 -0
- package/dist/components/table/table.d.ts +5 -1
- package/dist/index.js +13 -4
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/docgen/doc.gen.json +7 -0
- package/src/llms/skills/imf-web-ui-audit/SKILL.md +4 -2
- package/src/llms/skills/imf-web-ui-conventions/topics/tooling.md +15 -3
- package/src/llms/skills/imf-web-ui-setup/SKILL.md +2 -1
- package/src/llms/skills/imf-web-ui-ux/SKILL.md +22 -0
- package/src/llms/tokens.gen.json +9 -1
package/package.json
CHANGED
package/src/docgen/doc.gen.json
CHANGED
|
@@ -8338,6 +8338,13 @@
|
|
|
8338
8338
|
"name": "Table.Root",
|
|
8339
8339
|
"description": "Table.Root — the `<table>` element.",
|
|
8340
8340
|
"props": [
|
|
8341
|
+
{
|
|
8342
|
+
"name": "density",
|
|
8343
|
+
"required": false,
|
|
8344
|
+
"type": "\"compact\" | \"comfortable\" | \"spacious\"",
|
|
8345
|
+
"defaultValue": "comfortable",
|
|
8346
|
+
"description": "Cell padding: `compact` for dense data, `spacious` for a few rows at a glance."
|
|
8347
|
+
},
|
|
8341
8348
|
{
|
|
8342
8349
|
"name": "ref",
|
|
8343
8350
|
"required": false,
|
|
@@ -62,8 +62,10 @@ Use the report contract's severity, `path:line` evidence, concrete impact, and s
|
|
|
62
62
|
that same structure: unavailable runtime evidence, the impact of the unknown, and the check that resolves it. Do not promote
|
|
63
63
|
an optional tool or a working alternative to a missing finding. A `vite.config.ts` without `localWebUILink()` registered from
|
|
64
64
|
`@imfusion/web-ui/vite` is Missing. A `tsconfig.json` without the `paths` block from the `tooling` topic is Missing too. Each
|
|
65
|
-
next action is the add from that topic. A
|
|
66
|
-
|
|
65
|
+
next action is the add from that topic. A Vite config that reads tsconfig `paths` (`resolve.tsconfigPaths` or
|
|
66
|
+
`vite-tsconfig-paths`) is Broken: it loads the React types package as React once Web UI comes from the registry. The fix is
|
|
67
|
+
to drop it and give the `#/` alias through `imports` in `package.json`. A major or minor mismatch between the project and Web
|
|
68
|
+
UI on a package listed under Aligned runtime packages in the `tooling` topic is a Deviation. Report both versions, with
|
|
67
69
|
`npm install <package>@<Web UI's version>` as the fix.
|
|
68
70
|
|
|
69
71
|
## Topics
|
|
@@ -101,8 +101,15 @@ export default defineConfig({
|
|
|
101
101
|
});
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
Use strict TypeScript with bundler module resolution, `verbatimModuleSyntax`, unused-value checks, and
|
|
105
|
-
|
|
104
|
+
Use strict TypeScript with bundler module resolution, `verbatimModuleSyntax`, unused-value checks, and `import type` for
|
|
105
|
+
type-only imports. The `#/` alias is a subpath import in `package.json`, which Vite and TypeScript both read without a
|
|
106
|
+
plugin:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
"imports": {
|
|
110
|
+
"#/*": "./src/*"
|
|
111
|
+
}
|
|
112
|
+
```
|
|
106
113
|
|
|
107
114
|
## Pre-commit checks
|
|
108
115
|
|
|
@@ -150,7 +157,7 @@ Aligned versions are the primary fix. The plugin and the `paths` block below cat
|
|
|
150
157
|
checkout, it keeps one React in dev, build, and Vitest.
|
|
151
158
|
|
|
152
159
|
Add this to `compilerOptions` in `tsconfig.json`, merged by hand into an existing `paths`. For a symlinked checkout it keeps
|
|
153
|
-
one set of React and Vite types for `tsc
|
|
160
|
+
one set of React and Vite types for `tsc`:
|
|
154
161
|
|
|
155
162
|
```json
|
|
156
163
|
"paths": {
|
|
@@ -159,3 +166,8 @@ one set of React and Vite types for `tsc`, and it does nothing for an installed
|
|
|
159
166
|
"vite": ["./node_modules/vite"]
|
|
160
167
|
}
|
|
161
168
|
```
|
|
169
|
+
|
|
170
|
+
Only TypeScript reads these `paths`. Never let Vite read them: leave `resolve.tsconfigPaths` off and do not add
|
|
171
|
+
`vite-tsconfig-paths`. Either one applies the `react` mapping at runtime, loads the types package as React, and breaks the
|
|
172
|
+
build and tests once `@imfusion/web-ui` is installed from the registry. A symlinked checkout hides the break, because
|
|
173
|
+
`localWebUILink()` dedupes React first.
|
|
@@ -55,7 +55,8 @@ The plan describes the exact starter files. It does not copy a generic starter p
|
|
|
55
55
|
Propose a `vite.config.ts` that registers `imfusionBrandAssets()`, `readableCssModuleNames()`, and `localWebUILink()` from
|
|
56
56
|
`@imfusion/web-ui/vite`, next to the plugins the project already has. Register `localWebUILink()` in every project: without a
|
|
57
57
|
symlinked checkout it does nothing. Also propose the `tsconfig.json` `paths` block. Both keep one React and one set of types
|
|
58
|
-
when the package is a symlinked checkout.
|
|
58
|
+
when the package is a symlinked checkout. Vite must not read those `paths`: never propose `resolve.tsconfigPaths` or
|
|
59
|
+
`vite-tsconfig-paths`, and give the `#/` alias through `imports` in `package.json`. The `tooling` topic has the exact config.
|
|
59
60
|
|
|
60
61
|
## Installer steps
|
|
61
62
|
|
|
@@ -80,3 +80,25 @@ When no component covers a piece, compose its primitives and use `--imf-ui-*` to
|
|
|
80
80
|
|
|
81
81
|
For a screen review, read the relevant reference under `references/`: `usability-heuristics.md`, `visual-design.md`, or
|
|
82
82
|
`forms.md`.
|
|
83
|
+
|
|
84
|
+
## Public backdrop handover
|
|
85
|
+
|
|
86
|
+
Public pages share a backdrop with the Keycloak login page: a light column with an animated line mesh, and a brand-colored
|
|
87
|
+
panel. Both sides draw the same geometry, so the cross-origin navigation between them looks seamless. Read the geometry from
|
|
88
|
+
these tokens and never from literals:
|
|
89
|
+
|
|
90
|
+
- `--imf-ui-size-backdrop-edge`: where the brand panel starts on wide landscape screens.
|
|
91
|
+
- `--imf-ui-size-backdrop-band-height`: the height of the light band on top of narrow or portrait screens, with the panel
|
|
92
|
+
below it.
|
|
93
|
+
|
|
94
|
+
The switch between the two layouts is a media query, which a token cannot carry. Use the same breakpoint as the reference
|
|
95
|
+
implementations.
|
|
96
|
+
|
|
97
|
+
The backdrop also paints before React mounts, so the first frame already matches. Put the same two columns on `body` as a
|
|
98
|
+
hard-stop `linear-gradient`, with `min-block-size: 100dvh`. In a single-page app, a marker on `html`
|
|
99
|
+
(`data-backdrop-pending`), set by an inline script in `index.html` for the routes that show the backdrop, gates that
|
|
100
|
+
gradient. The backdrop component removes the marker when it mounts. Generate that script's route list at build time from the
|
|
101
|
+
router's own source, never as a hand-written copy: with TanStack file routes, a small Vite plugin (`transformIndexHtml`)
|
|
102
|
+
reads the folder of backdrop routes and fills a placeholder in `index.html`, so a new route gets the pre-paint without anyone
|
|
103
|
+
touching the script. The ImFusion Portal's public backdrop component and the Keycloak login theme's copy of it are the
|
|
104
|
+
reference implementations.
|
package/src/llms/tokens.gen.json
CHANGED
|
@@ -913,6 +913,14 @@
|
|
|
913
913
|
"name": "--imf-ui-size-9",
|
|
914
914
|
"value": "4rem"
|
|
915
915
|
},
|
|
916
|
+
{
|
|
917
|
+
"name": "--imf-ui-size-backdrop-band-height",
|
|
918
|
+
"value": "30dvh"
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
"name": "--imf-ui-size-backdrop-edge",
|
|
922
|
+
"value": "38%"
|
|
923
|
+
},
|
|
916
924
|
{
|
|
917
925
|
"name": "--imf-ui-size-content-1",
|
|
918
926
|
"value": "20ch"
|
|
@@ -947,5 +955,5 @@
|
|
|
947
955
|
}
|
|
948
956
|
]
|
|
949
957
|
},
|
|
950
|
-
"count":
|
|
958
|
+
"count": 233
|
|
951
959
|
}
|