@imfusion/web-ui 0.9.0 → 0.9.1-dev.11.g7c95abf5
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 +60 -0
- package/dist/components/rich-link/index.d.ts +2 -0
- package/dist/components/rich-link/rich-link.d.ts +18 -0
- package/dist/components/rich-link/rich-link.meta.d.ts +2 -0
- package/dist/components/skeleton/skeleton.d.ts +7 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1465 -1382
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/docgen/doc.gen.json +53 -2
- package/src/llms/llms.gen.txt +5 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/library-boundary.md +6 -0
- package/src/llms/skills/imf-web-ui-ux/SKILL.md +2 -0
- package/src/llms/tokens.gen.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## `0.10.0` 2026.10.15
|
|
4
|
+
|
|
5
|
+
### Highlights
|
|
6
|
+
|
|
7
|
+
#### A type hierarchy that holds at every width
|
|
8
|
+
|
|
9
|
+
Every fluid font size grows across the same viewport range, 360px to 1920px, so a heading never ends up smaller than the one
|
|
10
|
+
below it. `--imf-ui-font-size-fluid-0` to `fluid-2` follow one ratio scale above `--imf-ui-font-size-body`: `fluid-0` runs
|
|
11
|
+
from 19.2px to 25px, `fluid-1` from 23px to 31.25px, and `fluid-2` from 27.6px to 39px.
|
|
12
|
+
|
|
13
|
+
Headings change with it, so check your pages. `Typo.H3` uses `fluid-1` and `Typo.H4` uses `fluid-0`, both at the regular
|
|
14
|
+
weight. `Typo.H2` is medium weight, `Typo.Blockquote` uses `fluid-0`, and `--imf-ui-font-lineheight-title` follows the larger
|
|
15
|
+
H2 range. The Typo page has a Hierarchy story that shows every member at 360px, 768px, 1440px, and 1920px side by side.
|
|
16
|
+
|
|
17
|
+

|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
#### New and updated components
|
|
21
|
+
|
|
22
|
+
- `RichLink` is new. It is a link that fills a row: an optional icon on a tile tinted in the primary color, a label, an
|
|
23
|
+
optional description, and a trailing arrow that `endGlyph` replaces. It renders a plain anchor, so TanStack Router's
|
|
24
|
+
`createLink` can wrap it. `imf-web-ui-ux` picks it for a link that fills its own row, and `ChipLink` for one inside text
|
|
25
|
+
([WEBSDK-272](https://imfusion.atlassian.net/browse/WEBSDK-272)).
|
|
26
|
+
|
|
27
|
+

|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
- `Skeleton.Root` takes `loading` and fades the data in over the bones when it turns false.
|
|
31
|
+
|
|
32
|
+
- The `variant="position"` `Slider` thumb is primary at rest and gray on hover. It is opaque, so a `Slider.Indicator` under
|
|
33
|
+
it stays hidden. Every Slider thumb now draws its focus ring on keyboard focus.
|
|
34
|
+
|
|
35
|
+

|
|
36
|
+

|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- Agent skills — Nikolaus Brunner <brunner@imfusion.com>
|
|
41
|
+
- `imf-web-ui-conventions` puts a stand-in for a missing Web UI component in `components/web-ui-pending/`, built as
|
|
42
|
+
the library would ship it and deleted once it does.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Agent skills — Nikolaus Brunner <brunner@imfusion.com>
|
|
47
|
+
- The `web-ui-dev-new-component` interview asks where the design comes from: a new Claude Design canvas, a local HTML
|
|
48
|
+
sketch when the session has no Claude Design, an existing design or placeholder, or a sibling to copy. The plan links
|
|
49
|
+
the design source, and verification checks the built stories against it.
|
|
50
|
+
- `web-ui-dev-update-component` and `web-ui-dev-design-component` ask how to preview a visual change when the session has
|
|
51
|
+
Claude Design, and recommend a canvas for a bigger change. A canvas is made in the Claude app before plan mode.
|
|
52
|
+
- Documentation — Nikolaus Brunner <brunner@imfusion.com>
|
|
53
|
+
- `docs/design-system.md` says to start new designs in the Claude app and when an agent session has Claude Design. The
|
|
54
|
+
standalone project's README marks it as legacy.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- Storybook — Nikolaus Brunner <brunner@imfusion.com>
|
|
59
|
+
- The Slider `All` story renders the position variant without an indicator, as the `Position` story does.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
3
63
|
## `0.9.0` 2026.10.14
|
|
4
64
|
|
|
5
65
|
### Highlights
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IconComponent } from '../icon';
|
|
2
|
+
type Props = React.ComponentProps<"a"> & {
|
|
3
|
+
/** Leading icon from `@imfusion/web-ui/icons`, shown on a tile in the primary color. */
|
|
4
|
+
glyph?: IconComponent;
|
|
5
|
+
/** Second line under the label. When set, the label turns bold. */
|
|
6
|
+
description?: React.ReactNode;
|
|
7
|
+
/** Link target scope. `"external"` (default) opens in a new tab with a diagonal `ArrowUpRight` icon; `"internal"` stays in the current tab with a horizontal `ArrowRight` icon. */
|
|
8
|
+
kind?: "external" | "internal";
|
|
9
|
+
/** Trailing icon from `@imfusion/web-ui/icons`, replacing the arrow `kind` picks, such as `Download` for a file. */
|
|
10
|
+
endGlyph?: IconComponent;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* RichLink — a link as a whole row: an optional leading icon on a tinted tile, the label with an optional description
|
|
14
|
+
* line, and a trailing icon for where it leads. Draws no divider; stacked links get their spacing from the layout. Wrap it
|
|
15
|
+
* with TanStack Router's `createLink` to use it as a router link.
|
|
16
|
+
*/
|
|
17
|
+
export declare function RichLink({ glyph, description, kind, endGlyph, children, ...props }: Props): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
@@ -2,14 +2,17 @@ import { useRender } from '@base-ui/react/use-render';
|
|
|
2
2
|
type RootProps = useRender.ComponentProps<"div"> & {
|
|
3
3
|
/** Announced once through a visually hidden status. Pass `""` when something else already speaks for the region. */
|
|
4
4
|
label: string;
|
|
5
|
-
/**
|
|
5
|
+
/** Whether the region is still loading. Root stays mounted and reveals the data when this turns false. */
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
/** `none` holds every bone inside still and swaps in the data without a reveal. */
|
|
6
8
|
animation?: "shimmer" | "none";
|
|
7
9
|
};
|
|
8
10
|
/**
|
|
9
|
-
* Skeleton.Root — marks a region as loading. The view inside renders for real; bones stand in for the data.
|
|
10
|
-
* `aria-busy` and announces `label` once, however many bones it holds.
|
|
11
|
+
* Skeleton.Root — marks a region as loading. The view inside renders for real; bones stand in for the data. While
|
|
12
|
+
* `loading`, sets `aria-busy` and announces `label` once, however many bones it holds. When `loading` turns false, the
|
|
13
|
+
* data fades in over the bones.
|
|
11
14
|
*/
|
|
12
|
-
declare function Root({ label, animation, render, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
declare function Root({ label, loading, animation, render, children, ...props }: RootProps): import("react/jsx-runtime").JSX.Element;
|
|
13
16
|
declare namespace Root {
|
|
14
17
|
var displayName: string;
|
|
15
18
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { Button, buttonMeta } from './components/button';
|
|
|
2
2
|
export { ChipLink, chipLinkMeta } from './components/chip-link';
|
|
3
3
|
export { CopyButton, copyButtonMeta } from './components/copy-button';
|
|
4
4
|
export { IconButton, iconButtonMeta } from './components/icon-button';
|
|
5
|
+
export { RichLink, richLinkMeta } from './components/rich-link';
|
|
5
6
|
export { Checkbox, checkboxMeta } from './components/checkbox';
|
|
6
7
|
export { Field, fieldMeta } from './components/field';
|
|
7
8
|
export { Fieldset, fieldsetMeta } from './components/fieldset';
|