@imfusion/web-ui 0.8.1-dev.52.g0818e1db → 0.8.1-dev.58.g0912b389
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 +136 -59
- package/dist/components/account-card/account-card.d.ts +8 -8
- package/dist/components/app-shell/app-shell.d.ts +6 -6
- package/dist/components/callout/callout.d.ts +4 -4
- package/dist/components/card/card.d.ts +4 -4
- package/dist/components/chip/chip.d.ts +1 -1
- package/dist/components/chip-link/chip-link.d.ts +1 -1
- package/dist/components/code/code.d.ts +1 -1
- package/dist/components/logo/logo.d.ts +1 -1
- package/dist/components/navigation-menu/subs/link.d.ts +1 -1
- package/dist/components/popover/popover.d.ts +1 -1
- package/dist/components/prose/prose.d.ts +1 -1
- package/dist/components/row/row.d.ts +1 -1
- package/dist/components/skeleton/skeleton.d.ts +2 -2
- package/dist/components/spinner/spinner.d.ts +1 -1
- package/dist/components/stack/stack.d.ts +1 -1
- package/dist/components/table/table.d.ts +7 -7
- package/dist/components/tabs/tabs.d.ts +1 -1
- package/dist/integrations/frame-selection/frame-selection-view.d.ts +1 -1
- package/dist/integrations/image-display-options/image-display-options-view.d.ts +1 -1
- package/dist/integrations/image-display-options/image-display-options.d.ts +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/docgen/doc.gen.json +397 -35
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## `0.9.0` TBD
|
|
4
4
|
|
|
5
5
|
### Highlights
|
|
6
6
|
|
|
7
|
+
#### A reworked AppShell
|
|
8
|
+
|
|
9
|
+
The navbar runs the full height of the screen on the support background, and Header and Footer start beside it.
|
|
10
|
+
`AppShell.Main` is the one scroll container, with a thin scrollbar, so the header, navbar, and
|
|
11
|
+
aside stay put while the content scrolls. Sections drop their dividers and are set apart by their backgrounds
|
|
12
|
+
([WEBSDK-243](https://imfusion.atlassian.net/browse/WEBSDK-243)).
|
|
13
|
+
|
|
14
|
+
- `variant="branded"` fills the navbar with the primary color and switches its text to on-color.
|
|
15
|
+
- `AppShell.NavItem` is a navbar link with an icon, a label, and a description, in the navbar's text color.
|
|
16
|
+
- `AppShell.Burger` opens the navbar as a drawer below its breakpoint. The aside opens as a bottom sheet on phones and a side
|
|
17
|
+
drawer on tablets, and both report through `onOpenChange`.
|
|
18
|
+
- The docked aside has a drag handle that resizes it; a double-click or Home resets it. `resizable`, `onWidthChange`, and
|
|
19
|
+
`resizeLabel` configure it.
|
|
20
|
+
- `AppShell.Root` is an inline-size container. The navbar, the aside, and Main size against it, and Main keeps at least 45%
|
|
21
|
+
of the shell.
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+

|
|
25
|
+

|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
#### Medical imaging icons
|
|
29
|
+
|
|
30
|
+
`@imfusion/web-ui/icons` has 65 Medical Imaging icons from the ImFusion design team, such as `ToolBrush`, `ToolWindowLevel`,
|
|
31
|
+
and `DefineRoiAction`. Every icon now has square corners, line caps, and joins to match them; letters, digits, stars, and
|
|
32
|
+
badges keep Iconoir's round shapes. The package generates its icons from Iconoir's SVG source, so `iconoir-react` is no longer
|
|
33
|
+
a dependency, and `strokeWidth` reaches every part of an icon, circles and rectangles included
|
|
34
|
+
([WEBSDK-267](https://imfusion.atlassian.net/browse/WEBSDK-267)).
|
|
35
|
+
|
|
36
|
+
The Iconography catalog filters by origin, `iconoir` or `imfusion`, and gives every icon its own page with a shareable link
|
|
37
|
+
and an SVG download. `imf-web-ui-update` proposes catalog icons for project-local icons they now cover.
|
|
38
|
+
|
|
7
39
|
#### Built with Vite+
|
|
8
40
|
|
|
9
41
|
Web UI builds, tests, lints, and formats with [Vite+](https://viteplus.dev/), a single `vp` toolchain over Vite, Vitest,
|
|
@@ -25,6 +57,102 @@ Someone new to npm gets a plain sentence before each command and a short gloss f
|
|
|
25
57
|
gets the short version. You can ask for a pause after each step or after each finished piece, and the approvals the
|
|
26
58
|
workflows already ask for stay as they are. Say "change my profile" to answer again.
|
|
27
59
|
|
|
60
|
+
#### New and updated components
|
|
61
|
+
|
|
62
|
+
- `Avatar` is new. It shows a person's photo, their initials, or a person glyph, in three sizes and an on-color context.
|
|
63
|
+
|
|
64
|
+

|
|
65
|
+

|
|
66
|
+
|
|
67
|
+
- `AccountCard` is new. It links to the signed-in person's account, with an action such as Log out in its top row, and
|
|
68
|
+
`AccountCard.Group` lists several cards with the current one marked. `splitEmail` and `initialsFromEmail` fill an
|
|
69
|
+
`AccountCard` or `Avatar` before the person's name is known.
|
|
70
|
+
|
|
71
|
+

|
|
72
|
+

|
|
73
|
+
|
|
74
|
+
- `Skeleton` is new. It holds the place of loading data, one text line or a sized block at a time.
|
|
75
|
+
|
|
76
|
+

|
|
77
|
+

|
|
78
|
+
|
|
79
|
+
- `Meter` is new. It shows a measured amount within a range, such as seats in use, as a read-only bar
|
|
80
|
+
([WEBSDK-250](https://imfusion.atlassian.net/browse/WEBSDK-250)).
|
|
81
|
+
|
|
82
|
+

|
|
83
|
+

|
|
84
|
+
|
|
85
|
+
- `IconButton` is new. It is a square `Button` with a single icon, named by its `label`.
|
|
86
|
+
|
|
87
|
+

|
|
88
|
+

|
|
89
|
+
|
|
90
|
+
- `FrameSelection` is new, from `@imfusion/web-ui/integrations/frame-selection`. It steps through the frames of ImFusion Web
|
|
91
|
+
SDK image sets with a position slider and a current-of-total readout.
|
|
92
|
+
|
|
93
|
+

|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
- `Slider.Root` has `variant="position"`, a scrollbar-like trough and thumb for picking one position in a range.
|
|
97
|
+
|
|
98
|
+

|
|
99
|
+

|
|
100
|
+
|
|
101
|
+
- `Card.Status` marks a card's outcome with a tinted column or band and the matching `Callout` glyph.
|
|
102
|
+
|
|
103
|
+

|
|
104
|
+

|
|
105
|
+
|
|
106
|
+
- `Table.RowLink` links a row to its detail page from inside a cell and takes `render` for router links.
|
|
107
|
+
|
|
108
|
+

|
|
109
|
+

|
|
110
|
+
|
|
111
|
+
- `Typo.Eyebrow` sets a short mono label above a heading, and the `Typo` body members take a `weight` of `regular`,
|
|
112
|
+
`medium`, or `strong`.
|
|
113
|
+
|
|
114
|
+

|
|
115
|
+

|
|
116
|
+
|
|
117
|
+
- `Button` centers its icons and label when a container stretches it; `justify="spread"` pins the icons to the edges.
|
|
118
|
+
|
|
119
|
+

|
|
120
|
+

|
|
121
|
+
|
|
122
|
+
#### Important fixes
|
|
123
|
+
|
|
124
|
+
- Screen readers announce `Field.Error` when its message appears.
|
|
125
|
+
- `WebUIProvider` and the components under it render on React 18.
|
|
126
|
+
- `data-imf-ui-color-scheme` on a nested element switches the semantic colors for that subtree.
|
|
127
|
+
- The `@imfusion/sdk` and `@imfusion/sdk-react` peers accept any version, SDK dev builds included.
|
|
128
|
+
|
|
129
|
+
#### Migrating from 0.8
|
|
130
|
+
|
|
131
|
+
Web UI needs Safari 17.5, Chrome 123, or Firefox 120. Older browsers show no semantic colors.
|
|
132
|
+
|
|
133
|
+
The document no longer scrolls inside an `AppShell`. Move window scroll listeners onto `AppShell.Main`:
|
|
134
|
+
|
|
135
|
+
```diff
|
|
136
|
+
- window.addEventListener("scroll", onScroll);
|
|
137
|
+
- <AppShell.Main>…</AppShell.Main>
|
|
138
|
+
+ <AppShell.Main onScroll={onScroll}>…</AppShell.Main>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Scroll restoration and `scrollTo` take Main's element through a `ref`:
|
|
142
|
+
|
|
143
|
+
```diff
|
|
144
|
+
- window.scrollTo({ top: 0 });
|
|
145
|
+
+ mainRef.current?.scrollTo({ top: 0 });
|
|
146
|
+
+ <AppShell.Main ref={mainRef}>…</AppShell.Main>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
AppShell sections draw no dividers. Delete overrides of the border properties, which no longer apply:
|
|
150
|
+
|
|
151
|
+
```diff
|
|
152
|
+
- --imf-ui-appshell-border-color: var(--imf-ui-color-bg-brand);
|
|
153
|
+
- --imf-ui-appshell-border-width: var(--imf-ui-border-size-2);
|
|
154
|
+
```
|
|
155
|
+
|
|
28
156
|
### Breaking
|
|
29
157
|
|
|
30
158
|
- **Breaking:** The library supports Safari 17.5, Chrome 123, and Firefox 120 or newer. — Nikolaus Brunner <brunner@imfusion.com>
|
|
@@ -45,26 +173,6 @@ workflows already ask for stay as they are. Say "change my profile" to answer ag
|
|
|
45
173
|
([CP-202](https://imfusion.atlassian.net/browse/CP-202)).
|
|
46
174
|
- `web-ui-dev-new-icon` adds custom icons from an SVG, a Figma link, a Claude Design project, or a description. It checks the icon catalog
|
|
47
175
|
first, and codegen validates the SVGs in `src/icons/svg/` and exports them beside the Iconoir set ([WEBSDK-267](https://imfusion.atlassian.net/browse/WEBSDK-267)).
|
|
48
|
-
- Components — Nikolaus Brunner <brunner@imfusion.com>
|
|
49
|
-
- `Avatar` shows a person's photo, their initials, or a person glyph, in three sizes and an on-color context.
|
|
50
|
-
- `AccountCard` links to the signed-in person's account: a large title over a quiet subtitle, then the organization and a
|
|
51
|
-
mono role under a rule, with an action such as Log out in its top row. Emails wrap at the `@` and at dots, and
|
|
52
|
-
`AccountCard.Group` lists several cards with the current one marked.
|
|
53
|
-
- `Typo.Eyebrow` sets a short mono, uppercase label above a heading, in the quiet `support` color by default.
|
|
54
|
-
- `Card.Status` marks a card's outcome with a tinted column or band and the `info`, `positive`, `warning`, or `negative`
|
|
55
|
-
glyph that `Callout` uses for the same status.
|
|
56
|
-
- `Typo` body members (`P`, `Lead`, `Detail`, `Small`, `Blockquote`, `Highlight`, `Link`, and the lists) take an
|
|
57
|
-
optional `weight` of `regular`, `medium`, or `strong`, for short body text on cards that reads thin at the regular weight.
|
|
58
|
-
- `Table.RowLink` links a row to its detail page from inside a cell. It reads as row text without an underline, wraps long
|
|
59
|
-
values such as emails anywhere, and takes a `render` prop for router links.
|
|
60
|
-
- `Skeleton` holds the place of loading data: `Skeleton.Text` is one line of its parent's font tall, `Skeleton.Block`
|
|
61
|
-
takes a size or a circle, and `Skeleton.Root` announces the load once and can hold its scan line still.
|
|
62
|
-
- `Button` has a `justify` prop: `center` or `spread`, which pins the icons to the edges of a stretched button.
|
|
63
|
-
- `Meter` shows a measured amount within a range, such as seats in use, as a read-only bar with an optional label and
|
|
64
|
-
value readout. ([WEBSDK-250](https://imfusion.atlassian.net/browse/WEBSDK-250))
|
|
65
|
-
- Utilities — Nikolaus Brunner <brunner@imfusion.com>
|
|
66
|
-
- `splitEmail` splits an email into its local part and domain, and `initialsFromEmail` derives up to two initials from
|
|
67
|
-
the local part, for an `AccountCard` or `Avatar` before the person's name is known.
|
|
68
176
|
- Components — Stephan Wenninger <wenninger@imfusion.com>
|
|
69
177
|
- `Slider.Root` has a `variant="position"` that draws a scrollbar-like trough and bar thumb for picking one position in a
|
|
70
178
|
range.
|
|
@@ -73,48 +181,29 @@ workflows already ask for stay as they are. Say "change my profile" to answer ag
|
|
|
73
181
|
- `IconButton` is a square `Button` that shows a single icon and no visible text. `label` sets its accessible name, the
|
|
74
182
|
glyph size follows the button size, and `iconProps` passes props such as `strokeWidth` to the icon.
|
|
75
183
|
- AppShell ([WEBSDK-243](https://imfusion.atlassian.net/browse/WEBSDK-243)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
76
|
-
- `AppShell.Navbar` has a `variant` prop: `default` or `branded`, a rail filled with the primary color.
|
|
77
|
-
- `AppShell.Burger` toggles the navbar drawer with three sheared bands that align on hover and cross when open.
|
|
78
|
-
- `AppShell.NavItem` is a navbar link with icon, label, and description that follows the navbar's color.
|
|
79
|
-
- `AppShell.Navbar` and `AppShell.Aside` take `onOpenChange` for their drawers.
|
|
80
|
-
- `AppShell.Aside` has a drag handle that resizes it and resets on double-click or Home. It is on by default; `resizable`, `onWidthChange`, and `resizeLabel` configure it.
|
|
81
184
|
- `--imf-ui-appshell-aside-min-width` (`max(20rem, 20cqi)`) is the narrowest the docked aside gets, dragged or not.
|
|
82
185
|
- `--imf-ui-appshell-main-min-width` (`max(24rem, 45cqi)`) caps the docked aside so Main keeps at least 45% of the shell.
|
|
83
186
|
- `--imf-ui-appshell-main-max-width` caps Main's content at `100rem` on wide screens, aligned to the start.
|
|
187
|
+
- `--imf-ui-appshell-navbar-padding` sets one gutter for the navbar's sections. Nav items and an `AccountCard` widen
|
|
188
|
+
their surface past it, so the logo, icons, and avatar share one edge, and the first section is a header-height row.
|
|
84
189
|
- Storybook — Nikolaus Brunner <brunner@imfusion.com>
|
|
85
190
|
- The toolbar has Full HD, QHD, and Ultrawide viewports for previews past `xl`.
|
|
86
191
|
- The floating token button is hidden by default; `parameters.tokenDrawer.show` shows it for a story, and a toolbar toggle overrides either way.
|
|
87
192
|
- Sidebar labels stay in the sidebar text color when a story has test warnings or errors; the status icon carries the state.
|
|
88
193
|
- `All` matrices and stories with a fixed render hide the controls panel; stories that log actions keep it without the Controls tab.
|
|
89
194
|
|
|
90
|
-
- Icons ([WEBSDK-267](https://imfusion.atlassian.net/browse/WEBSDK-267)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
91
|
-
- 65 Medical Imaging icons from the ImFusion design team, such as `ToolBrush`, `ToolWindowLevel`, and `DefineRoiAction`.
|
|
92
|
-
|
|
93
|
-
- Storybook ([WEBSDK-267](https://imfusion.atlassian.net/browse/WEBSDK-267)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
94
|
-
- Every icon has its own Iconography page with a shareable link, and both the page and the catalog tile download the icon as
|
|
95
|
-
an SVG under its source file name.
|
|
96
|
-
|
|
97
195
|
### Changed
|
|
98
196
|
|
|
99
197
|
- Icons ([WEBSDK-267](https://imfusion.atlassian.net/browse/WEBSDK-267)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
- The package generates its icons from Iconoir's SVG source and has no `iconoir-react` dependency.
|
|
103
|
-
- `strokeWidth` set on `Icon` or through `WebUIProvider` reaches every part of an icon, circles and rectangles included.
|
|
104
|
-
- Every record in the icon catalog names its `origin`, `iconoir` or `imfusion`, and its source `file`. The Iconography
|
|
105
|
-
catalog filters by origin and badges every icon with it. While no category filter is set, each tile also names the
|
|
106
|
-
icon's category.
|
|
107
|
-
|
|
198
|
+
- Every record in the icon catalog names its `origin`, `iconoir` or `imfusion`, and its source `file`. While no category
|
|
199
|
+
filter is set, each Iconography tile names the icon's category.
|
|
108
200
|
- Components — Nikolaus Brunner <brunner@imfusion.com>
|
|
109
|
-
-
|
|
110
|
-
keeps the icons at the edges.
|
|
201
|
+
- Parts that render a plain element, such as `AppShell.Main`, `Stack`, and `Card.Root`, accept a `ref`.
|
|
111
202
|
- Documentation — Nikolaus Brunner <brunner@imfusion.com>
|
|
112
203
|
- The `CodeHighlight` install section names TanStack Highlight 0.1.x and the 0.1.0 build it is tested against.
|
|
113
204
|
- The consumer agent tooling diagram groups the skills you run in one lane, so the router and the profile each reach them
|
|
114
205
|
with a single edge.
|
|
115
206
|
- Agent skills — Nikolaus Brunner <brunner@imfusion.com>
|
|
116
|
-
- `imf-web-ui-update` proposes catalog icons for project-local icons they now cover, above all icons a release added
|
|
117
|
-
([WEBSDK-267](https://imfusion.atlassian.net/browse/WEBSDK-267)).
|
|
118
207
|
- `imf-web-ui-conventions` declares named functions, local component helpers included, with `function`, and keeps
|
|
119
208
|
inline callbacks as arrows.
|
|
120
209
|
- `imf-web-ui-conventions` loads route data with `queryClient.query({ ...options, staleTime: "static" })` in place of the
|
|
@@ -130,35 +219,25 @@ workflows already ask for stay as they are. Say "change my profile" to answer ag
|
|
|
130
219
|
- `web-ui-dev-eval-consumer-skills` records every run's benchmark, and skips the record only when the user asks for it.
|
|
131
220
|
- `web-ui-dev-claude-design-sync-legacy` uploads to the standalone Claude Design site until it closes on 2026-12-14
|
|
132
221
|
([CP-202](https://imfusion.atlassian.net/browse/CP-202)).
|
|
133
|
-
- `imf-web-ui-conventions` recommends the Vite+ toolchain: `vp dev`, `vp build`, `vp test`, Oxfmt through `vp fmt`, Oxlint
|
|
134
|
-
through `vp lint`, and a pre-commit hook that runs `vp staged`.
|
|
135
222
|
- `web-ui install` formats the files it writes, skill version markers and hook settings, with the project's `vp fmt` when
|
|
136
223
|
the project has it, and with its Prettier otherwise.
|
|
137
224
|
- `imf-web-ui-audit` searches the frontend for `TODO`, `FIXME`, `HACK`, and similar markers. A marker that admits a
|
|
138
225
|
convention gap backs that topic's finding, and the rest go under `Suggestions`.
|
|
139
226
|
- CI and verification — Nikolaus Brunner <brunner@imfusion.com>
|
|
140
|
-
- The toolchain is Vite+: `vp build` and `vp test` replace the Vite and Vitest scripts, and Oxlint and Oxfmt replace ESLint and Prettier.
|
|
141
|
-
- The pre-commit hook runs `vp staged` against the staged state and never rewrites or stages files.
|
|
142
227
|
- `verify:generated` checks every committed `*.gen.*` file against the sources that produce it. It runs in the pre-commit hook, in `verify:full`, and as a TeamCity step.
|
|
143
228
|
- The pre-push hook runs `verify:fast`, the `verify:full` suite without the builds and tests.
|
|
144
229
|
- AppShell ([WEBSDK-243](https://imfusion.atlassian.net/browse/WEBSDK-243)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
145
|
-
- The navbar sits on the support background by default.
|
|
146
|
-
- The navbar variants set the navbar's text color: `fg-main` by default, `fg-oncolor` when branded.
|
|
147
|
-
- The navbar runs the full height of the screen; Header and Footer start beside it.
|
|
148
|
-
- `AppShell.Main` scrolls with a thin scrollbar.
|
|
149
230
|
- Below their breakpoints the navbar opens as a drawer from the inline end and the aside as a bottom sheet on phones or a side drawer on tablets.
|
|
150
231
|
- `AppShell.Root` is an inline-size container; the navbar is `clamp(16rem, 18cqi, 20rem)` and the aside `clamp(20rem, 30cqi, 40rem)` wide.
|
|
232
|
+
- Main and aside padding grow with the shell, from `1.25rem` up to `3rem` and `2rem`, and the header is `4rem` tall.
|
|
151
233
|
|
|
152
234
|
### Fixed
|
|
153
235
|
|
|
154
236
|
- Components — Nikolaus Brunner <brunner@imfusion.com>
|
|
155
|
-
- Screen readers announce `Field.Error` when its message appears; it has `role="alert"` by default.
|
|
156
|
-
- `WebUIProvider` and the components under it render on React 18, the runtime Claude's design canvases use.
|
|
157
237
|
- On-color `ghost` and `outline` Buttons invert to a white fill on hover instead of near-black.
|
|
158
238
|
- `Button`'s `startIcon` sits level with the label.
|
|
159
239
|
- Peer dependencies — Nikolaus Brunner <brunner@imfusion.com>
|
|
160
|
-
- The
|
|
161
|
-
`FrameSelection` and `ImageDisplayOptions` install sections name SDK 1.x and the 1.0.0 build they are tested against.
|
|
240
|
+
- The `FrameSelection` and `ImageDisplayOptions` install sections name SDK 1.x and the 1.0.0 build they are tested against.
|
|
162
241
|
- CI and verification — Nikolaus Brunner <brunner@imfusion.com>
|
|
163
242
|
- The dev skill eval report scores the dev scenarios and lists only the `web-ui-dev-*` skills.
|
|
164
243
|
- `verify:icons` fails when a one-icon import bundles any other icon ([WEBSDK-267](https://imfusion.atlassian.net/browse/WEBSDK-267)).
|
|
@@ -170,8 +249,6 @@ workflows already ask for stay as they are. Say "change my profile" to answer ag
|
|
|
170
249
|
- The Iconography catalog shows solid icons as drawn, and its Copy JSX snippet adds no fill or stroke override.
|
|
171
250
|
- Long icon names in the Iconography catalog break between words instead of being cut off.
|
|
172
251
|
- Button's controls list `variant`, `size`, and its other variant props before the inherited Base UI props.
|
|
173
|
-
- Token defaults — Nikolaus Brunner <brunner@imfusion.com>
|
|
174
|
-
- `data-imf-ui-color-scheme` on a nested element switches the semantic colors for that element's subtree.
|
|
175
252
|
|
|
176
253
|
---
|
|
177
254
|
|
|
@@ -4,7 +4,7 @@ import * as AvatarParts from '../avatar/avatar';
|
|
|
4
4
|
declare const root: (props?: ({
|
|
5
5
|
context?: "default" | "oncolor" | null | undefined;
|
|
6
6
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
|
-
type RootProps = React.
|
|
7
|
+
type RootProps = React.ComponentProps<"div"> & VariantProps<typeof root>;
|
|
8
8
|
/**
|
|
9
9
|
* AccountCard.Root — the signed-in person's card: `AccountCard.Link` and, in its top row, `AccountCard.Action`. The
|
|
10
10
|
* action sits beside the link, not inside it, since a link cannot contain a button.
|
|
@@ -24,7 +24,7 @@ declare function Link({ render, ...props }: useRender.ComponentProps<"a">): impo
|
|
|
24
24
|
declare namespace Link {
|
|
25
25
|
var displayName: string;
|
|
26
26
|
}
|
|
27
|
-
type AvatarProps = React.
|
|
27
|
+
type AvatarProps = React.ComponentProps<"span"> & {
|
|
28
28
|
/** The person's photo. Until it loads, and when it fails, the initials or the person glyph show instead. */
|
|
29
29
|
src?: string;
|
|
30
30
|
/** The avatar size. */
|
|
@@ -42,7 +42,7 @@ declare namespace Avatar {
|
|
|
42
42
|
* AccountCard.Title — the account's name, or the email's local part until a name exists. Set large; text wraps before
|
|
43
43
|
* an `@` and after a dot.
|
|
44
44
|
*/
|
|
45
|
-
declare function Title({ children, ...props }: React.
|
|
45
|
+
declare function Title({ children, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
46
46
|
declare namespace Title {
|
|
47
47
|
var displayName: string;
|
|
48
48
|
}
|
|
@@ -50,17 +50,17 @@ declare namespace Title {
|
|
|
50
50
|
* AccountCard.Subtitle — the quiet line under the title: the email's domain, or the whole email once the title is a
|
|
51
51
|
* name. Text wraps before an `@` and after a dot.
|
|
52
52
|
*/
|
|
53
|
-
declare function Subtitle({ children, ...props }: React.
|
|
53
|
+
declare function Subtitle({ children, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
54
54
|
declare namespace Subtitle {
|
|
55
55
|
var displayName: string;
|
|
56
56
|
}
|
|
57
57
|
/** AccountCard.Description — the organization, under a rule at the foot of the card. */
|
|
58
|
-
declare function Description(props: React.
|
|
58
|
+
declare function Description(props: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
59
59
|
declare namespace Description {
|
|
60
60
|
var displayName: string;
|
|
61
61
|
}
|
|
62
62
|
/** AccountCard.Role — a mono uppercase label beside the description, such as the person's role. */
|
|
63
|
-
declare function Role(props: React.
|
|
63
|
+
declare function Role(props: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
64
64
|
declare namespace Role {
|
|
65
65
|
var displayName: string;
|
|
66
66
|
}
|
|
@@ -68,7 +68,7 @@ declare namespace Role {
|
|
|
68
68
|
* AccountCard.Action — a slot in the card's top row, beside the link, such as a ghost icon `Button` that logs out. The
|
|
69
69
|
* button carries its own `aria-label` and its own `context`.
|
|
70
70
|
*/
|
|
71
|
-
declare function Action(props: React.
|
|
71
|
+
declare function Action(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
72
72
|
declare namespace Action {
|
|
73
73
|
var displayName: string;
|
|
74
74
|
}
|
|
@@ -76,7 +76,7 @@ declare namespace Action {
|
|
|
76
76
|
* AccountCard.Group — a list of cards, such as accounts to switch between. Inside it a link with `aria-current="page"`
|
|
77
77
|
* shows as current; a standalone card is always the signed-in account and shows no current state.
|
|
78
78
|
*/
|
|
79
|
-
declare function Group(props: React.
|
|
79
|
+
declare function Group(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
80
80
|
declare namespace Group {
|
|
81
81
|
var displayName: string;
|
|
82
82
|
}
|
|
@@ -8,7 +8,7 @@ declare function Root({ ref, ...props }: React.ComponentProps<"div">): import("r
|
|
|
8
8
|
declare namespace Root {
|
|
9
9
|
var displayName: string;
|
|
10
10
|
}
|
|
11
|
-
declare function Header(props: React.
|
|
11
|
+
declare function Header(props: React.ComponentProps<"header">): import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
declare namespace Header {
|
|
13
13
|
var displayName: string;
|
|
14
14
|
}
|
|
@@ -18,7 +18,7 @@ type DrawerProps = {
|
|
|
18
18
|
/** Called when the drawer asks to open or close: scrim, swipe, or Escape. */
|
|
19
19
|
onOpenChange?: (open: boolean) => void;
|
|
20
20
|
};
|
|
21
|
-
type NavbarProps = React.
|
|
21
|
+
type NavbarProps = React.ComponentProps<"nav"> & VariantProps<typeof navbarSurface> & DrawerProps;
|
|
22
22
|
/**
|
|
23
23
|
* `variant="branded"` paints the primary color; children opt into on-color themselves. Below `md` the navbar opens as a
|
|
24
24
|
* drawer from the inline end.
|
|
@@ -27,7 +27,7 @@ declare function Navbar({ variant, open, onOpenChange, ...props }: NavbarProps):
|
|
|
27
27
|
declare namespace Navbar {
|
|
28
28
|
var displayName: string;
|
|
29
29
|
}
|
|
30
|
-
type AsideProps = React.
|
|
30
|
+
type AsideProps = React.ComponentProps<"aside"> & DrawerProps & {
|
|
31
31
|
/** Adds a drag handle on the inline-start edge from the `lg` breakpoint up. Double-click or Home restores the default width. */
|
|
32
32
|
resizable?: boolean;
|
|
33
33
|
/** Called with the new width in px when a drag ends, on each arrow-key step, and on reset. */
|
|
@@ -40,15 +40,15 @@ declare function Aside({ open, onOpenChange, resizable, onWidthChange, resizeLab
|
|
|
40
40
|
declare namespace Aside {
|
|
41
41
|
var displayName: string;
|
|
42
42
|
}
|
|
43
|
-
declare function Footer(props: React.
|
|
43
|
+
declare function Footer(props: React.ComponentProps<"footer">): import("react/jsx-runtime").JSX.Element;
|
|
44
44
|
declare namespace Footer {
|
|
45
45
|
var displayName: string;
|
|
46
46
|
}
|
|
47
|
-
declare function Main(props: React.
|
|
47
|
+
declare function Main(props: React.ComponentProps<"main">): import("react/jsx-runtime").JSX.Element;
|
|
48
48
|
declare namespace Main {
|
|
49
49
|
var displayName: string;
|
|
50
50
|
}
|
|
51
|
-
type SectionProps = React.
|
|
51
|
+
type SectionProps = React.ComponentProps<"div"> & {
|
|
52
52
|
/** If set, the section expands to fill the remaining space in its sidebar. */
|
|
53
53
|
grow?: boolean;
|
|
54
54
|
};
|
|
@@ -9,7 +9,7 @@ declare const root: (props?: ({
|
|
|
9
9
|
* the banner so it reads as a block region, not full container width. A persistent content-flow
|
|
10
10
|
* element — not a transient Toast, not a modal Alert Dialog.
|
|
11
11
|
*/
|
|
12
|
-
declare function Root({ variant, maxWidth, children, ...props }: React.
|
|
12
|
+
declare function Root({ variant, maxWidth, children, ...props }: React.ComponentProps<"div"> & VariantProps<typeof root>): import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
declare namespace Root {
|
|
14
14
|
var displayName: string;
|
|
15
15
|
}
|
|
@@ -18,17 +18,17 @@ declare namespace Root {
|
|
|
18
18
|
* are passed; pass a custom icon as children to override. `aria-hidden` (variant is conveyed by
|
|
19
19
|
* copy) and inherits colour via `currentColor`.
|
|
20
20
|
*/
|
|
21
|
-
declare function Icon({ children, ...props }: React.
|
|
21
|
+
declare function Icon({ children, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
|
|
22
22
|
declare namespace Icon {
|
|
23
23
|
var displayName: string;
|
|
24
24
|
}
|
|
25
25
|
/** Callout.Title — an optional short heading, set in the semi-mono UPPERCASE technical voice. */
|
|
26
|
-
declare function Title(props: React.
|
|
26
|
+
declare function Title(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
27
27
|
declare namespace Title {
|
|
28
28
|
var displayName: string;
|
|
29
29
|
}
|
|
30
30
|
/** Callout.Description — the message body, set in the editorial (grotesk) body voice. */
|
|
31
|
-
declare function Description(props: React.
|
|
31
|
+
declare function Description(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
32
32
|
declare namespace Description {
|
|
33
33
|
var displayName: string;
|
|
34
34
|
}
|
|
@@ -6,7 +6,7 @@ declare const root: (props?: ({
|
|
|
6
6
|
radius?: "sm" | "md" | "lg" | "brand" | null | undefined;
|
|
7
7
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
8
8
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
9
|
-
type RootProps = React.
|
|
9
|
+
type RootProps = React.ComponentProps<"div"> & VariantProps<typeof root> & {
|
|
10
10
|
/** Draws the hairline border. Applies to the neutral variants only — coloured variants are always borderless. */
|
|
11
11
|
/** @default true */
|
|
12
12
|
withBorder?: boolean;
|
|
@@ -30,7 +30,7 @@ declare function Root({ density, variant, shadow, radius, orientation, withBorde
|
|
|
30
30
|
declare namespace Root {
|
|
31
31
|
var displayName: string;
|
|
32
32
|
}
|
|
33
|
-
type ImageProps = React.
|
|
33
|
+
type ImageProps = React.ComponentProps<"img"> & {
|
|
34
34
|
/** Width divided by height, or "auto" to use the image's intrinsic ratio. */
|
|
35
35
|
aspectRatio?: number | "auto";
|
|
36
36
|
};
|
|
@@ -45,7 +45,7 @@ declare namespace Image {
|
|
|
45
45
|
declare const status: (props?: ({
|
|
46
46
|
variant?: "positive" | "negative" | "warning" | "info" | null | undefined;
|
|
47
47
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
48
|
-
type StatusProps = React.
|
|
48
|
+
type StatusProps = React.ComponentProps<"div"> & VariantProps<typeof status>;
|
|
49
49
|
/**
|
|
50
50
|
* Card.Status — a tinted slot that marks the card's status with the variant's glyph. Pass
|
|
51
51
|
* children to replace the glyph. Like `Card.Image`, place it first among the slots: a column
|
|
@@ -56,7 +56,7 @@ declare function Status({ variant, children, ...props }: StatusProps): import("r
|
|
|
56
56
|
declare namespace Status {
|
|
57
57
|
var displayName: string;
|
|
58
58
|
}
|
|
59
|
-
type SlotProps = React.
|
|
59
|
+
type SlotProps = React.ComponentProps<"div">;
|
|
60
60
|
/** Card.Header — the padded title region at the top of the card body. */
|
|
61
61
|
declare function Header(props: SlotProps): import("react/jsx-runtime").JSX.Element;
|
|
62
62
|
declare namespace Header {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
import { chip } from './chip.cva';
|
|
3
|
-
type Props = React.
|
|
3
|
+
type Props = React.ComponentProps<"span"> & VariantProps<typeof chip> & {
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { chip } from '../chip/chip.cva';
|
|
2
2
|
import { VariantProps } from 'class-variance-authority';
|
|
3
3
|
export type ChipLinkKind = "external" | "internal";
|
|
4
|
-
type Props = React.
|
|
4
|
+
type Props = React.ComponentProps<"a"> & VariantProps<typeof chip> & {
|
|
5
5
|
href: string;
|
|
6
6
|
/** 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. */
|
|
7
7
|
kind?: ChipLinkKind;
|
|
@@ -30,7 +30,7 @@ export declare function InlineLink({ kind, ...props }: InlineLinkProps): import(
|
|
|
30
30
|
export declare namespace InlineLink {
|
|
31
31
|
var displayName: string;
|
|
32
32
|
}
|
|
33
|
-
type BlockProps = Omit<React.
|
|
33
|
+
type BlockProps = Omit<React.ComponentProps<"pre">, "children"> & {
|
|
34
34
|
/** Code content shown in the block. The copy button copies its rendered text. */
|
|
35
35
|
children: React.ReactNode;
|
|
36
36
|
/** Language label shown in the corner notch. Omit to hide the notch. */
|
|
@@ -4,7 +4,7 @@ declare const logo: (props?: ({
|
|
|
4
4
|
size?: "sm" | "md" | "lg" | "hero" | "xl" | "xs" | "fit" | null | undefined;
|
|
5
5
|
variant?: "oncolor" | "main" | "inherit" | "support" | "minor" | "brand" | null | undefined;
|
|
6
6
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
|
-
type Props = Omit<React.
|
|
7
|
+
type Props = Omit<React.ComponentProps<"span">, "children"> & VariantProps<typeof logo> & {
|
|
8
8
|
/** Logo source — an image URL or inline SVG node. No brand default; see `ImFusionLogo` for the ImFusion mark. */
|
|
9
9
|
src: string | ReactNode;
|
|
10
10
|
alt: string;
|
|
@@ -15,7 +15,7 @@ export declare namespace Link {
|
|
|
15
15
|
* Owns the flyout list layout so consumers wrap each card in an `<li>` and add no
|
|
16
16
|
* layout styling of their own. Renders a `<ul>`.
|
|
17
17
|
*/
|
|
18
|
-
export declare function LinkList(props: React.
|
|
18
|
+
export declare function LinkList(props: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
export declare namespace LinkList {
|
|
20
20
|
var displayName: string;
|
|
21
21
|
}
|
|
@@ -59,7 +59,7 @@ export declare namespace Viewport {
|
|
|
59
59
|
var displayName: string;
|
|
60
60
|
}
|
|
61
61
|
/** Popover.Eyebrow — small uppercase label above Title, for a category or kicker (e.g. "Glossary definition"). */
|
|
62
|
-
export declare function Eyebrow(props: React.
|
|
62
|
+
export declare function Eyebrow(props: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
|
|
63
63
|
export declare namespace Eyebrow {
|
|
64
64
|
var displayName: string;
|
|
65
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function Prose(props: React.
|
|
1
|
+
export declare function Prose(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
@@ -5,7 +5,7 @@ declare const row: (props?: ({
|
|
|
5
5
|
justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
|
|
6
6
|
wrap?: boolean | null | undefined;
|
|
7
7
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
8
|
-
type Props = React.
|
|
8
|
+
type Props = React.ComponentProps<"div"> & VariantProps<typeof row> & {
|
|
9
9
|
/**
|
|
10
10
|
* Cross-axis alignment. Sets both `align-items` (item alignment within a
|
|
11
11
|
* row) and `align-content` (row distribution when `wrap` is on). `"stretch"`
|
|
@@ -13,7 +13,7 @@ declare function Root({ label, animation, render, ...props }: RootProps): import
|
|
|
13
13
|
declare namespace Root {
|
|
14
14
|
var displayName: string;
|
|
15
15
|
}
|
|
16
|
-
type TextProps = React.
|
|
16
|
+
type TextProps = React.ComponentProps<"span"> & {
|
|
17
17
|
/** Width of the bar, capped at the container width. */
|
|
18
18
|
width?: React.CSSProperties["width"];
|
|
19
19
|
/** Number of stacked lines. The last of several is 60% wide. */
|
|
@@ -27,7 +27,7 @@ declare function Text({ width, lines, style, ...props }: TextProps): import("rea
|
|
|
27
27
|
declare namespace Text {
|
|
28
28
|
var displayName: string;
|
|
29
29
|
}
|
|
30
|
-
type BlockProps = React.
|
|
30
|
+
type BlockProps = React.ComponentProps<"span"> & ({
|
|
31
31
|
/** `circle` takes its size from `width`, for avatars. */
|
|
32
32
|
shape?: "rect";
|
|
33
33
|
/** Width of the block, capped at the container width. A circle uses it for both sides. */
|
|
@@ -7,7 +7,7 @@ declare const sources: {
|
|
|
7
7
|
declare const spinner: (props?: ({
|
|
8
8
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
9
9
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
10
|
-
type Props = Omit<React.
|
|
10
|
+
type Props = Omit<React.ComponentProps<"span">, "role"> & VariantProps<typeof spinner> & {
|
|
11
11
|
/** Accessible label announced by assistive tech. */
|
|
12
12
|
label?: string;
|
|
13
13
|
/**
|
|
@@ -4,7 +4,7 @@ declare const stack: (props?: ({
|
|
|
4
4
|
align?: "center" | "end" | "start" | "stretch" | null | undefined;
|
|
5
5
|
justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
|
|
6
6
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
|
-
type Props = React.
|
|
7
|
+
type Props = React.ComponentProps<"div"> & VariantProps<typeof stack>;
|
|
8
8
|
/**
|
|
9
9
|
* Stack — vertical layout primitive.
|
|
10
10
|
*
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { useRender } from '@base-ui/react/use-render';
|
|
2
|
-
type HeaderCellProps = React.
|
|
2
|
+
type HeaderCellProps = React.ComponentProps<"th">;
|
|
3
3
|
/** Table.Root — the `<table>` element. */
|
|
4
|
-
export declare function Root(props: React.
|
|
4
|
+
export declare function Root(props: React.ComponentProps<"table">): import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
export declare namespace Root {
|
|
6
6
|
var displayName: string;
|
|
7
7
|
}
|
|
8
8
|
/** Table.Header — the `<thead>` section. */
|
|
9
|
-
export declare function Header(props: React.
|
|
9
|
+
export declare function Header(props: React.ComponentProps<"thead">): import("react/jsx-runtime").JSX.Element;
|
|
10
10
|
export declare namespace Header {
|
|
11
11
|
var displayName: string;
|
|
12
12
|
}
|
|
13
13
|
/** Table.Body — the `<tbody>` section. */
|
|
14
|
-
export declare function Body(props: React.
|
|
14
|
+
export declare function Body(props: React.ComponentProps<"tbody">): import("react/jsx-runtime").JSX.Element;
|
|
15
15
|
export declare namespace Body {
|
|
16
16
|
var displayName: string;
|
|
17
17
|
}
|
|
18
18
|
/** Table.Row — a `<tr>` in header or body. */
|
|
19
|
-
export declare function Row(props: React.
|
|
19
|
+
export declare function Row(props: React.ComponentProps<"tr">): import("react/jsx-runtime").JSX.Element;
|
|
20
20
|
export declare namespace Row {
|
|
21
21
|
var displayName: string;
|
|
22
22
|
}
|
|
@@ -26,7 +26,7 @@ export declare namespace HeaderCell {
|
|
|
26
26
|
var displayName: string;
|
|
27
27
|
}
|
|
28
28
|
/** Table.Cell — a `<td>` data cell. */
|
|
29
|
-
export declare function Cell(props: React.
|
|
29
|
+
export declare function Cell(props: React.ComponentProps<"td">): import("react/jsx-runtime").JSX.Element;
|
|
30
30
|
export declare namespace Cell {
|
|
31
31
|
var displayName: string;
|
|
32
32
|
}
|
|
@@ -43,7 +43,7 @@ export declare namespace RowLink {
|
|
|
43
43
|
* design: sorting toggles, filter toggles, column menus all render through it
|
|
44
44
|
* rather than each inventing a button. Icon/indicator goes in `children`.
|
|
45
45
|
*/
|
|
46
|
-
export declare function HeaderButton({ type, ...props }: React.
|
|
46
|
+
export declare function HeaderButton({ type, ...props }: React.ComponentProps<"button">): import("react/jsx-runtime").JSX.Element;
|
|
47
47
|
export declare namespace HeaderButton {
|
|
48
48
|
var displayName: string;
|
|
49
49
|
}
|
|
@@ -45,7 +45,7 @@ export declare namespace Indicator {
|
|
|
45
45
|
* No Base UI equivalent exists; it's surfaced as a named part since its
|
|
46
46
|
* hairline border is what Tabs.Indicator visually fuses into.
|
|
47
47
|
*/
|
|
48
|
-
export declare function PanelViewport(props: React.
|
|
48
|
+
export declare function PanelViewport(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
49
49
|
export declare namespace PanelViewport {
|
|
50
50
|
var displayName: string;
|
|
51
51
|
}
|