@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.
Files changed (32) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/dist/code-NTcddiYk.js +139 -0
  3. package/dist/components/app-shell/app-shell.d.ts +1 -1
  4. package/dist/components/dialog/dialog.d.ts +148 -0
  5. package/dist/components/dialog/dialog.meta.d.ts +2 -0
  6. package/dist/components/dialog/index.d.ts +2 -0
  7. package/dist/components/drawer/drawer.d.ts +1 -1
  8. package/dist/components/scroll-area/index.d.ts +2 -0
  9. package/dist/components/scroll-area/scroll-area.d.ts +49 -0
  10. package/dist/components/scroll-area/scroll-area.meta.d.ts +2 -0
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.js +2072 -1743
  13. package/dist/integrations/code-highlight.js +2 -2
  14. package/dist/integrations/frame-selection.js +1 -1
  15. package/dist/integrations/image-display-options.js +121 -111
  16. package/dist/{rolldown-runtime-Dy4uBu1J.js → resolve-state-props-DQf9WiGv.js} +12 -1
  17. package/dist/scroll-area-z9Lf9uIk.js +89 -0
  18. package/dist/slider-Bf274cMe.js +106 -0
  19. package/dist/style.css +1 -1
  20. package/dist/{tabs-DRyqtS04.js → tabs-Do0BFL12.js} +31 -32
  21. package/package.json +1 -1
  22. package/src/docgen/doc.gen.json +1099 -0
  23. package/src/llms/llms.gen.txt +12 -0
  24. package/src/llms/skills/imf-web-ui-conventions/templates/AUDIT_CHECKLIST.md +1 -0
  25. package/src/llms/skills/imf-web-ui-conventions/topics/authentication.md +2 -3
  26. package/src/llms/skills/imf-web-ui-conventions/topics/components.md +4 -1
  27. package/src/llms/skills/imf-web-ui-conventions/topics/data.md +11 -5
  28. package/src/llms/skills/imf-web-ui-conventions/topics/project-structure.md +11 -0
  29. package/src/llms/skills/imf-web-ui-conventions/topics/react.md +6 -4
  30. package/src/llms/skills/imf-web-ui-update/SKILL.md +20 -10
  31. package/dist/code-BYkr5k55.js +0 -134
  32. 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` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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 {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const dialogMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ export * as Dialog from './dialog';
2
+ export { dialogMeta } from './dialog.meta';
@@ -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,2 @@
1
+ export * as ScrollArea from './scroll-area';
2
+ export { scrollAreaMeta } from './scroll-area.meta';
@@ -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 {};
@@ -0,0 +1,2 @@
1
+ import { ComponentMeta } from '../../types/meta';
2
+ export declare const scrollAreaMeta: ComponentMeta;
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';