@imfusion/web-ui 0.10.0 → 0.10.1-dev.11.g9f5bc06e
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 +76 -0
- package/dist/code-NTcddiYk.js +139 -0
- package/dist/components/app-shell/app-shell.d.ts +1 -1
- package/dist/components/dialog/dialog.d.ts +148 -0
- package/dist/components/dialog/dialog.meta.d.ts +2 -0
- package/dist/components/dialog/index.d.ts +2 -0
- package/dist/components/drawer/drawer.d.ts +1 -1
- package/dist/components/scroll-area/index.d.ts +2 -0
- package/dist/components/scroll-area/scroll-area.d.ts +49 -0
- package/dist/components/scroll-area/scroll-area.meta.d.ts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2072 -1743
- package/dist/integrations/code-highlight.js +2 -2
- package/dist/integrations/frame-selection.js +1 -1
- package/dist/integrations/image-display-options.js +121 -111
- package/dist/{rolldown-runtime-Dy4uBu1J.js → resolve-state-props-DQf9WiGv.js} +12 -1
- package/dist/scroll-area-z9Lf9uIk.js +89 -0
- package/dist/slider-Bf274cMe.js +106 -0
- package/dist/style.css +1 -1
- package/dist/{tabs-DRyqtS04.js → tabs-Do0BFL12.js} +31 -32
- package/package.json +1 -1
- package/src/docgen/doc.gen.json +1099 -0
- package/src/llms/llms.gen.txt +12 -0
- package/src/llms/skills/imf-web-ui-conventions/templates/AUDIT_CHECKLIST.md +1 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/authentication.md +2 -3
- package/src/llms/skills/imf-web-ui-conventions/topics/components.md +4 -1
- package/src/llms/skills/imf-web-ui-conventions/topics/data.md +11 -5
- package/src/llms/skills/imf-web-ui-conventions/topics/project-structure.md +11 -0
- package/src/llms/skills/imf-web-ui-conventions/topics/react.md +6 -4
- package/src/llms/skills/imf-web-ui-update/SKILL.md +20 -10
- package/dist/code-BYkr5k55.js +0 -134
- package/dist/slider-Cqpreglu.js +0 -116
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
### Breaking
|
|
6
|
+
|
|
7
|
+
- **Breaking:** `AppShell.Main`, the AppShell aside drawer, and `Drawer.Content` scroll in a `ScrollArea` and pad their
|
|
8
|
+
content inside it ([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)). — Nikolaus Brunner <brunner@imfusion.com>
|
|
9
|
+
- `AppShell.Main` stays the scrolling element and pads with `--imf-ui-appshell-padding`; a `padding` set on it adds to
|
|
10
|
+
that.
|
|
11
|
+
- `Drawer.Content` pads with `--imf-ui-drawer-content-padding`; a `padding`, `gap`, or grid set on it applies outside the
|
|
12
|
+
padded layer and does not reach the children.
|
|
13
|
+
- The aside drawer pads its content inside the scroll area; a `padding` on `AppShell.Aside` in drawer mode adds to it.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- `ScrollArea` is a scrolling region with a slim primary-colored thumb that floats over the content and shows while the
|
|
18
|
+
area is hovered or scrolled, and a fade at each edge with more content behind it. `ScrollArea.Auto` wraps children with
|
|
19
|
+
the scrollbars for `orientation` (`vertical`, `horizontal`, `both`, or `none`); the parts compose by hand for anything else
|
|
20
|
+
([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
21
|
+
- `Dialog` is a modal window over a dimmed page, adapted from Base UI with all its parts. `Dialog.Header` takes a
|
|
22
|
+
`variant` (`main`, `support`, `minor`, or `primary` with light text); `Dialog.Title` renders as `Typo.H2` and
|
|
23
|
+
`Dialog.Description` as `Typo.P`. `Dialog.Body` scrolls in a `ScrollArea` while header and footer stay in view.
|
|
24
|
+
`Dialog.Popup` comes in `sm`, `md`, `lg`, and `full`, and stops at 40rem high (`--imf-ui-dialog-max-height`) except in
|
|
25
|
+
`full`. `Dialog.Status` adds a tinted status column like `Card.Status`, on top of the width the size sets.
|
|
26
|
+
`Dialog.Simple` builds the whole dialog from props, and `Dialog.Inline` opens it from a term inside running text
|
|
27
|
+
([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- Agent skills — Nikolaus Brunner <brunner@imfusion.com>
|
|
32
|
+
- `imf-web-ui-conventions` has query factories own a numeric `staleTime` chosen by how fast other people change the data.
|
|
33
|
+
Loaders call `queryClient.query(options)` without an override, and `"static"` no longer appears in factories or
|
|
34
|
+
`defaultOptions`, where it blocked invalidation refetches.
|
|
35
|
+
- `imf-web-ui-conventions` puts a route's own views, forms, hooks, and tests in a `-<file-name>/` folder beside the route
|
|
36
|
+
file, and reserves `partials/` for parts that more than one route uses.
|
|
37
|
+
- Components ([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
38
|
+
- The AppShell navbar drawer, `Code`, and `ImageDisplayOptions` scroll in a `ScrollArea`, with its overlay thumb and edge
|
|
39
|
+
fades.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
3
43
|
## `0.10.0` 2026.10.15
|
|
4
44
|
|
|
5
45
|
### Highlights
|
|
@@ -234,6 +274,37 @@ AppShell sections draw no dividers. Delete overrides of the border properties, w
|
|
|
234
274
|
- --imf-ui-appshell-border-width: var(--imf-ui-border-size-2);
|
|
235
275
|
```
|
|
236
276
|
|
|
277
|
+
Navbar sections pad themselves with `--imf-ui-appshell-navbar-padding`, and that rule outranks a single class. Delete your
|
|
278
|
+
own section padding, and set the variable when the gutter needs to change:
|
|
279
|
+
|
|
280
|
+
```diff
|
|
281
|
+
- .navSection { padding: 0 var(--imf-ui-appshell-padding); }
|
|
282
|
+
+ .root { --imf-ui-appshell-navbar-padding: var(--imf-ui-size-5); }
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Nav links widen past the gutter only as `AppShell.NavItem`. Replace hand-built navbar links, and pass a router link through
|
|
286
|
+
`render`:
|
|
287
|
+
|
|
288
|
+
```diff
|
|
289
|
+
- <MyNavLink to="/products" icon={Box} label="Products" />
|
|
290
|
+
+ <AppShell.NavItem render={<Link to="/products" />} icon={<Icon glyph={Box} />}>Products</AppShell.NavItem>
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Above `lg` the aside docks whether or not `open` is set. Render no aside when there is nothing to show, not an empty one:
|
|
294
|
+
|
|
295
|
+
```diff
|
|
296
|
+
- <AppShell.Aside>{selected ? <Details /> : <div />}</AppShell.Aside>
|
|
297
|
+
+ {selected ? <AppShell.Aside><Details /></AppShell.Aside> : null}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
The navbar's first row and Main's offset read the header height while an `AppShell.Header` is rendered, even when CSS hides
|
|
301
|
+
it. Render the header conditionally instead of hiding it or setting the height to `0`:
|
|
302
|
+
|
|
303
|
+
```diff
|
|
304
|
+
- <AppShell.Header className={styles.hiddenOnDesktop}>…</AppShell.Header>
|
|
305
|
+
+ {isDesktop ? null : <AppShell.Header>…</AppShell.Header>}
|
|
306
|
+
```
|
|
307
|
+
|
|
237
308
|
### Breaking
|
|
238
309
|
|
|
239
310
|
- **Breaking:** The library supports Safari 17.5, Chrome 123, and Firefox 120 or newer. — Nikolaus Brunner <brunner@imfusion.com>
|
|
@@ -241,6 +312,11 @@ AppShell sections draw no dividers. Delete overrides of the border properties, w
|
|
|
241
312
|
- The JavaScript build targets the same versions.
|
|
242
313
|
- **Breaking:** AppShell sections draw no dividers, and the `--imf-ui-appshell-border-color`, `--imf-ui-appshell-border-width`, and `--imf-ui-appshell-border-style` properties are removed. ([WEBSDK-243](https://imfusion.atlassian.net/browse/WEBSDK-243)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
243
314
|
- **Breaking:** `AppShell.Main` is the scroll container and the document does not scroll; window scroll listeners, scroll restoration, and `scrollTo` target `AppShell.Main`. ([WEBSDK-243](https://imfusion.atlassian.net/browse/WEBSDK-243)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
315
|
+
- **Breaking:** AppShell owns its navbar and aside layout. ([WEBSDK-243](https://imfusion.atlassian.net/browse/WEBSDK-243)) — Nikolaus Brunner <brunner@imfusion.com>
|
|
316
|
+
- Navbar sections pad themselves with `--imf-ui-appshell-navbar-padding` through a rule that outranks a single class.
|
|
317
|
+
- Only `AppShell.NavItem` widens past the navbar gutter.
|
|
318
|
+
- Above `lg` the aside docks whether or not `open` is set.
|
|
319
|
+
- The navbar's first row and Main's offset read the header height whenever an `AppShell.Header` is rendered.
|
|
244
320
|
|
|
245
321
|
### Added
|
|
246
322
|
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { r as e } from "./resolve-state-props-DQf9WiGv.js";
|
|
2
|
+
import { Xo as t, ja as n, pM as r } from "./icons-BsK_o-Cb.js";
|
|
3
|
+
import { t as i } from "./meta-V_KyLeGn.js";
|
|
4
|
+
import { a, i as o, n as s, o as c, s as l } from "./scroll-area-z9Lf9uIk.js";
|
|
5
|
+
import { cx as u } from "class-variance-authority";
|
|
6
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
7
|
+
import { useCallback as m, useEffect as h, useRef as g, useState as _ } from "react";
|
|
8
|
+
import { mergeProps as v } from "@base-ui/react/merge-props";
|
|
9
|
+
import { useRender as y } from "@base-ui/react/use-render";
|
|
10
|
+
//#region src/hooks/use-clipboard.ts
|
|
11
|
+
function b({ timeout: e = 1500 } = {}) {
|
|
12
|
+
let [t, n] = _(!1), r = g(void 0);
|
|
13
|
+
return h(() => () => clearTimeout(r.current), []), {
|
|
14
|
+
copied: t,
|
|
15
|
+
copy: m((t) => {
|
|
16
|
+
navigator.clipboard.writeText(t).then(() => {
|
|
17
|
+
n(!0), clearTimeout(r.current), r.current = setTimeout(() => n(!1), e);
|
|
18
|
+
});
|
|
19
|
+
}, [e])
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
var x = {
|
|
23
|
+
block: "imf-ui-code-module-block",
|
|
24
|
+
copy: "imf-ui-code-module-copy",
|
|
25
|
+
inline: "imf-ui-code-module-inline",
|
|
26
|
+
inlineCopy: "imf-ui-code-module-inlineCopy",
|
|
27
|
+
inlineLink: "imf-ui-code-module-inlineLink",
|
|
28
|
+
language: "imf-ui-code-module-language",
|
|
29
|
+
pre: "imf-ui-code-module-pre",
|
|
30
|
+
separator: "imf-ui-code-module-separator"
|
|
31
|
+
}, S = /* @__PURE__ */ e({
|
|
32
|
+
Block: () => T,
|
|
33
|
+
Inline: () => C,
|
|
34
|
+
InlineLink: () => w
|
|
35
|
+
});
|
|
36
|
+
function C({ copyable: e = !1, children: i, render: a, ...o }) {
|
|
37
|
+
let { copied: s, copy: c } = b(), l = g(null), u = s ? n : t;
|
|
38
|
+
return y({
|
|
39
|
+
defaultTagName: "code",
|
|
40
|
+
render: a,
|
|
41
|
+
props: {
|
|
42
|
+
...v(o, {
|
|
43
|
+
className: x.inline,
|
|
44
|
+
children: /* @__PURE__ */ p(d, { children: [
|
|
45
|
+
/* @__PURE__ */ f("span", {
|
|
46
|
+
ref: l,
|
|
47
|
+
children: i
|
|
48
|
+
}),
|
|
49
|
+
e && /* @__PURE__ */ f("span", { className: x.separator }),
|
|
50
|
+
e && /* @__PURE__ */ f("button", {
|
|
51
|
+
type: "button",
|
|
52
|
+
className: x.inlineCopy,
|
|
53
|
+
"data-copied": s || void 0,
|
|
54
|
+
"aria-label": s ? "Copied" : "Copy",
|
|
55
|
+
onClick: () => c(l.current?.textContent ?? ""),
|
|
56
|
+
children: /* @__PURE__ */ f(r, {
|
|
57
|
+
glyph: u,
|
|
58
|
+
size: 12,
|
|
59
|
+
strokeWidth: 2,
|
|
60
|
+
"aria-hidden": !0
|
|
61
|
+
})
|
|
62
|
+
})
|
|
63
|
+
] })
|
|
64
|
+
}),
|
|
65
|
+
"data-imf-ui-component": "Code.Inline"
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
C.displayName = "Code.Inline";
|
|
70
|
+
function w({ kind: e = "external", ...t }) {
|
|
71
|
+
let n = e === "external" ? {
|
|
72
|
+
target: "_blank",
|
|
73
|
+
rel: "noreferrer"
|
|
74
|
+
} : {};
|
|
75
|
+
return y({
|
|
76
|
+
defaultTagName: "a",
|
|
77
|
+
render: t.render,
|
|
78
|
+
props: {
|
|
79
|
+
...v(n, t, {
|
|
80
|
+
className: u(x.inline, x.inlineLink, t.className),
|
|
81
|
+
children: t.children
|
|
82
|
+
}),
|
|
83
|
+
"data-imf-ui-component": "Code.InlineLink",
|
|
84
|
+
"data-kind": e
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
w.displayName = "Code.InlineLink";
|
|
89
|
+
function T({ className: e, language: i, hideCopy: d = !1, children: m, ...h }) {
|
|
90
|
+
let { copied: _, copy: v } = b(), y = g(null), S = _ ? n : t;
|
|
91
|
+
return /* @__PURE__ */ p("div", {
|
|
92
|
+
"data-imf-ui-component": "Code.Block",
|
|
93
|
+
className: u(x.block, e),
|
|
94
|
+
children: [
|
|
95
|
+
i != null && /* @__PURE__ */ f("span", {
|
|
96
|
+
className: x.language,
|
|
97
|
+
children: i
|
|
98
|
+
}),
|
|
99
|
+
!d && /* @__PURE__ */ f("button", {
|
|
100
|
+
type: "button",
|
|
101
|
+
className: x.copy,
|
|
102
|
+
"data-copied": _ || void 0,
|
|
103
|
+
"aria-label": _ ? "Copied" : "Copy",
|
|
104
|
+
onClick: () => v(y.current?.textContent ?? ""),
|
|
105
|
+
children: /* @__PURE__ */ f(r, {
|
|
106
|
+
glyph: S,
|
|
107
|
+
size: 12,
|
|
108
|
+
strokeWidth: 2,
|
|
109
|
+
"aria-hidden": !0
|
|
110
|
+
})
|
|
111
|
+
}),
|
|
112
|
+
/* @__PURE__ */ p(o, { children: [/* @__PURE__ */ f(l, { children: /* @__PURE__ */ f(s, { children: /* @__PURE__ */ f("pre", {
|
|
113
|
+
...h,
|
|
114
|
+
className: x.pre,
|
|
115
|
+
children: /* @__PURE__ */ f("code", {
|
|
116
|
+
ref: y,
|
|
117
|
+
children: m
|
|
118
|
+
})
|
|
119
|
+
}) }) }), /* @__PURE__ */ f(a, {
|
|
120
|
+
orientation: "horizontal",
|
|
121
|
+
children: /* @__PURE__ */ f(c, {})
|
|
122
|
+
})] })
|
|
123
|
+
]
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
T.displayName = "Code.Block";
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region src/components/code/code.meta.ts
|
|
129
|
+
var E = {
|
|
130
|
+
name: "Code",
|
|
131
|
+
category: i.display,
|
|
132
|
+
status: "stable",
|
|
133
|
+
namespace: !0,
|
|
134
|
+
description: "Displays source code inline or in a block, with optional language labels and copying. Also called a code snippet or code block.",
|
|
135
|
+
origin: "native",
|
|
136
|
+
internalDependencies: ["ScrollArea"]
|
|
137
|
+
};
|
|
138
|
+
//#endregion
|
|
139
|
+
export { S as a, w as i, T as n, b as o, C as r, E as t };
|
|
@@ -44,7 +44,7 @@ declare function Footer(props: React.ComponentProps<"footer">): import("react/js
|
|
|
44
44
|
declare namespace Footer {
|
|
45
45
|
var displayName: string;
|
|
46
46
|
}
|
|
47
|
-
declare function Main(props: React.ComponentProps<"main">): import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
declare function Main({ children, ...props }: React.ComponentProps<"main">): import("react/jsx-runtime").JSX.Element;
|
|
48
48
|
declare namespace Main {
|
|
49
49
|
var displayName: string;
|
|
50
50
|
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';
|
|
2
|
+
import { VariantProps } from 'class-variance-authority';
|
|
3
|
+
import * as ScrollArea from '../scroll-area/scroll-area';
|
|
4
|
+
type HeaderVariant = "primary" | "main" | "support" | "minor";
|
|
5
|
+
declare const dialogTrigger: (props?: ({
|
|
6
|
+
inline?: boolean | null | undefined;
|
|
7
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
8
|
+
declare const dialogStatus: (props?: ({
|
|
9
|
+
variant?: "positive" | "negative" | "warning" | "info" | null | undefined;
|
|
10
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
11
|
+
export declare const createHandle: typeof DialogPrimitive.createHandle;
|
|
12
|
+
type RootProps<Payload = unknown> = React.ComponentProps<typeof DialogPrimitive.Root<Payload>>;
|
|
13
|
+
/**
|
|
14
|
+
* Dialog.Root — container that manages open/closed state.
|
|
15
|
+
*
|
|
16
|
+
* @see https://base-ui.com/react/components/dialog
|
|
17
|
+
* @llm https://base-ui.com/react/components/dialog.md
|
|
18
|
+
*/
|
|
19
|
+
export declare function Root<Payload = unknown>(props: RootProps<Payload>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare namespace Root {
|
|
21
|
+
var displayName: string;
|
|
22
|
+
}
|
|
23
|
+
/** Dialog.Trigger — button that opens the dialog. `inline` styles it as a dashed-underlined term inside running text. */
|
|
24
|
+
export declare function Trigger({ inline, ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger> & VariantProps<typeof dialogTrigger>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export declare namespace Trigger {
|
|
26
|
+
var displayName: string;
|
|
27
|
+
}
|
|
28
|
+
/** Dialog.Portal — renders backdrop and popup in a portal outside the main document flow. */
|
|
29
|
+
export declare function Portal(props: React.ComponentProps<typeof DialogPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare namespace Portal {
|
|
31
|
+
var displayName: string;
|
|
32
|
+
}
|
|
33
|
+
/** Dialog.Backdrop — flat dark overlay that dims the page behind the dialog. */
|
|
34
|
+
export declare function Backdrop(props: React.ComponentProps<typeof DialogPrimitive.Backdrop>): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export declare namespace Backdrop {
|
|
36
|
+
var displayName: string;
|
|
37
|
+
}
|
|
38
|
+
/** Dialog.Viewport — full-screen container that centres the popup. */
|
|
39
|
+
export declare function Viewport(props: React.ComponentProps<typeof DialogPrimitive.Viewport>): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export declare namespace Viewport {
|
|
41
|
+
var displayName: string;
|
|
42
|
+
}
|
|
43
|
+
interface PopupProps extends React.ComponentProps<typeof DialogPrimitive.Popup> {
|
|
44
|
+
/**
|
|
45
|
+
* Width of the window. `full` fills the screen minus a margin.
|
|
46
|
+
* @default 'md'
|
|
47
|
+
*/
|
|
48
|
+
size?: "sm" | "md" | "lg" | "full";
|
|
49
|
+
}
|
|
50
|
+
/** Dialog.Popup — the window. Holds Header, Body, and Footer, or any free content. */
|
|
51
|
+
export declare function Popup({ size, ...props }: PopupProps): import("react/jsx-runtime").JSX.Element;
|
|
52
|
+
export declare namespace Popup {
|
|
53
|
+
var displayName: string;
|
|
54
|
+
}
|
|
55
|
+
type HeaderProps = React.ComponentProps<"div"> & {
|
|
56
|
+
/**
|
|
57
|
+
* Colour of the header band. On `primary` the title, description, and close button turn light.
|
|
58
|
+
* @default 'main'
|
|
59
|
+
*/
|
|
60
|
+
variant?: HeaderVariant;
|
|
61
|
+
};
|
|
62
|
+
/** Dialog.Header — band at the top of the popup that holds the title, description, and close button. */
|
|
63
|
+
export declare function Header({ variant, ...props }: HeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
export declare namespace Header {
|
|
65
|
+
var displayName: string;
|
|
66
|
+
}
|
|
67
|
+
/** Dialog.Body — the scrolling region between header and footer, a ScrollArea with the library's thumb and edge fades. */
|
|
68
|
+
export declare function Body({ children, ...props }: React.ComponentProps<typeof ScrollArea.Auto>): import("react/jsx-runtime").JSX.Element;
|
|
69
|
+
export declare namespace Body {
|
|
70
|
+
var displayName: string;
|
|
71
|
+
}
|
|
72
|
+
/** Dialog.Footer — row of actions pinned to the bottom of the popup. */
|
|
73
|
+
export declare function Footer(props: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
74
|
+
export declare namespace Footer {
|
|
75
|
+
var displayName: string;
|
|
76
|
+
}
|
|
77
|
+
type StatusProps = React.ComponentProps<"div"> & VariantProps<typeof dialogStatus>;
|
|
78
|
+
/**
|
|
79
|
+
* Dialog.Status — a tinted column at the start of the popup, spanning its full height, that marks the dialog's
|
|
80
|
+
* status with the variant's glyph. Place it first inside `Dialog.Popup`. Pass children to replace the glyph.
|
|
81
|
+
* Decorative (`aria-hidden`); the title carries the status.
|
|
82
|
+
*/
|
|
83
|
+
export declare function Status({ variant, children, ...props }: StatusProps): import("react/jsx-runtime").JSX.Element;
|
|
84
|
+
export declare namespace Status {
|
|
85
|
+
var displayName: string;
|
|
86
|
+
}
|
|
87
|
+
/** Dialog.Title — heading that names the dialog for screen readers, set as `Typo.H2`. Light on a `primary` header. */
|
|
88
|
+
export declare function Title(props: React.ComponentProps<typeof DialogPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
|
|
89
|
+
export declare namespace Title {
|
|
90
|
+
var displayName: string;
|
|
91
|
+
}
|
|
92
|
+
/** Dialog.Description — supplementary paragraph that describes the dialog for screen readers, set as `Typo.P`. */
|
|
93
|
+
export declare function Description(props: React.ComponentProps<typeof DialogPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
|
|
94
|
+
export declare namespace Description {
|
|
95
|
+
var displayName: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Dialog.Close — button that closes the dialog. With no `children` and no `render` it renders the library's ghost close
|
|
99
|
+
* button (an × icon labelled "Close"); otherwise render your own `Button`.
|
|
100
|
+
*/
|
|
101
|
+
export declare function Close(props: React.ComponentProps<typeof DialogPrimitive.Close>): import("react/jsx-runtime").JSX.Element;
|
|
102
|
+
export declare namespace Close {
|
|
103
|
+
var displayName: string;
|
|
104
|
+
}
|
|
105
|
+
type ComposedProps = Omit<React.ComponentProps<typeof DialogPrimitive.Root>, "children"> & {
|
|
106
|
+
/** Heading of the dialog. */
|
|
107
|
+
title: React.ReactNode;
|
|
108
|
+
/** Short uppercase label above the title. */
|
|
109
|
+
eyebrow?: React.ReactNode;
|
|
110
|
+
/** Line of context under the title. */
|
|
111
|
+
description?: React.ReactNode;
|
|
112
|
+
/** Adds a `Dialog.Status` with this variant at the start of the popup. */
|
|
113
|
+
status?: NonNullable<VariantProps<typeof dialogStatus>["variant"]>;
|
|
114
|
+
/**
|
|
115
|
+
* Colour of the header band.
|
|
116
|
+
*/
|
|
117
|
+
headerVariant?: HeaderVariant;
|
|
118
|
+
/**
|
|
119
|
+
* Width of the window.
|
|
120
|
+
*/
|
|
121
|
+
size?: PopupProps["size"];
|
|
122
|
+
/** Content of the footer, usually buttons. The footer renders only when this is set. */
|
|
123
|
+
actions?: React.ReactNode;
|
|
124
|
+
/** Content of the body. */
|
|
125
|
+
children?: React.ReactNode;
|
|
126
|
+
};
|
|
127
|
+
type SimpleProps = ComposedProps & {
|
|
128
|
+
/** Element rendered as the trigger, such as a `Button`. Omit it for a controlled dialog. */
|
|
129
|
+
trigger?: React.ReactElement;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Dialog.Simple — pre-composed dialog: trigger, header with title, description, optional status and close button, a
|
|
133
|
+
* scrolling body, and an optional footer. Root props pass through.
|
|
134
|
+
*/
|
|
135
|
+
export declare function Simple({ trigger, headerVariant, size, ...props }: SimpleProps): import("react/jsx-runtime").JSX.Element;
|
|
136
|
+
export declare namespace Simple {
|
|
137
|
+
var displayName: string;
|
|
138
|
+
}
|
|
139
|
+
type InlineProps = ComposedProps & {
|
|
140
|
+
/** Text of the trigger, set as an inline term inside running prose. */
|
|
141
|
+
trigger: React.ReactNode;
|
|
142
|
+
};
|
|
143
|
+
/** Dialog.Inline — like Dialog.Simple, but the trigger is text inside a sentence. */
|
|
144
|
+
export declare function Inline({ trigger, headerVariant, size, ...props }: InlineProps): import("react/jsx-runtime").JSX.Element;
|
|
145
|
+
export declare namespace Inline {
|
|
146
|
+
var displayName: string;
|
|
147
|
+
}
|
|
148
|
+
export {};
|
|
@@ -63,7 +63,7 @@ export declare namespace Popup {
|
|
|
63
63
|
var displayName: string;
|
|
64
64
|
}
|
|
65
65
|
/** Drawer.Content — scrollable content wrapper inside the popup. */
|
|
66
|
-
export declare function Content(props: React.ComponentProps<typeof DrawerPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
66
|
+
export declare function Content({ children, ...props }: React.ComponentProps<typeof DrawerPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
67
67
|
export declare namespace Content {
|
|
68
68
|
var displayName: string;
|
|
69
69
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';
|
|
2
|
+
/**
|
|
3
|
+
* ScrollArea.Root — groups the viewport and its scrollbars. Give it a height or max-height.
|
|
4
|
+
*
|
|
5
|
+
* @see https://base-ui.com/react/components/scroll-area
|
|
6
|
+
* @llm https://base-ui.com/react/components/scroll-area.md
|
|
7
|
+
*/
|
|
8
|
+
export declare function Root(props: React.ComponentProps<typeof ScrollAreaPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare namespace Root {
|
|
10
|
+
var displayName: string;
|
|
11
|
+
}
|
|
12
|
+
/** ScrollArea.Viewport — the scrolling box. It fades its content out at each edge with more to scroll. */
|
|
13
|
+
export declare function Viewport(props: React.ComponentProps<typeof ScrollAreaPrimitive.Viewport>): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare namespace Viewport {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
/** ScrollArea.Content — wraps the scrolled content so the viewport can measure it. */
|
|
18
|
+
export declare function Content(props: React.ComponentProps<typeof ScrollAreaPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare namespace Content {
|
|
20
|
+
var displayName: string;
|
|
21
|
+
}
|
|
22
|
+
/** ScrollArea.Scrollbar — overlay bar that shows while the area is hovered or scrolling. */
|
|
23
|
+
export declare function Scrollbar(props: React.ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare namespace Scrollbar {
|
|
25
|
+
var displayName: string;
|
|
26
|
+
}
|
|
27
|
+
/** ScrollArea.Thumb — the draggable part of the scrollbar. */
|
|
28
|
+
export declare function Thumb(props: React.ComponentProps<typeof ScrollAreaPrimitive.Thumb>): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare namespace Thumb {
|
|
30
|
+
var displayName: string;
|
|
31
|
+
}
|
|
32
|
+
/** ScrollArea.Corner — the square where a vertical and a horizontal scrollbar meet. */
|
|
33
|
+
export declare function Corner(props: React.ComponentProps<typeof ScrollAreaPrimitive.Corner>): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export declare namespace Corner {
|
|
35
|
+
var displayName: string;
|
|
36
|
+
}
|
|
37
|
+
interface AutoProps extends React.ComponentProps<typeof ScrollAreaPrimitive.Root> {
|
|
38
|
+
/**
|
|
39
|
+
* Which scrollbars to render. `both` also adds the Corner; `none` scrolls and fades without a visible bar.
|
|
40
|
+
* @default 'vertical'
|
|
41
|
+
*/
|
|
42
|
+
orientation?: "vertical" | "horizontal" | "both" | "none";
|
|
43
|
+
}
|
|
44
|
+
/** ScrollArea.Auto — Root, Viewport, Content, and the scrollbars for `orientation`, around `children`. */
|
|
45
|
+
export declare function Auto({ orientation, children, ...props }: AutoProps): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
export declare namespace Auto {
|
|
47
|
+
var displayName: string;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -15,10 +15,12 @@ export { Toggle, toggleMeta } from './components/toggle';
|
|
|
15
15
|
export { ToggleGroup, toggleGroupMeta } from './components/toggle-group';
|
|
16
16
|
export { AppShell, appShellMeta } from './components/app-shell';
|
|
17
17
|
export { Card, cardMeta } from './components/card';
|
|
18
|
+
export { Dialog, dialogMeta } from './components/dialog';
|
|
18
19
|
export { Drawer, drawerMeta } from './components/drawer';
|
|
19
20
|
export { Popover, popoverMeta } from './components/popover';
|
|
20
21
|
export { Prose, proseMeta } from './components/prose';
|
|
21
22
|
export { Row, rowMeta } from './components/row';
|
|
23
|
+
export { ScrollArea, scrollAreaMeta } from './components/scroll-area';
|
|
22
24
|
export { Separator, separatorMeta } from './components/separator';
|
|
23
25
|
export { Stack, stackMeta } from './components/stack';
|
|
24
26
|
export { AccountCard, accountCardMeta } from './components/account-card';
|