@imfusion/web-ui 0.11.1-dev.57.g3cec18fa → 0.11.1-dev.59.g5c2572e2

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 CHANGED
@@ -4,6 +4,11 @@
4
4
 
5
5
  ### Added
6
6
 
7
+ - `Dialog.Alert` composes a confirmation from props like `Dialog.Simple`, on Base UI's Alert Dialog: screen readers announce
8
+ it as an `alertdialog`, it is always modal, and a click on the overlay leaves it open. `actions` is required, the header has
9
+ no close button, and `status` takes any variant. It replaces a `Dialog.Simple` or a hand-composed `Dialog.Root` that asks
10
+ the user to confirm a step, such as removing a member or discarding changes. [Dialog](src/components/dialog/dialog.mdx)
11
+ ([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)) — Nikolaus Brunner <brunner@imfusion.com>
7
12
  - `Progress` is a new bar for the completion of a running task, adapted from Base UI. `size` runs from `xs` (a 2px hairline) to
8
13
  `lg`, `layout` is `stacked` or `inline`, `value={null}` sweeps while the amount is unknown, and the fill turns positive at the
9
14
  maximum. [Progress](src/components/progress/progress.mdx) — Nikolaus Brunner <brunner@imfusion.com>
@@ -59,6 +64,9 @@
59
64
 
60
65
  ### Changed
61
66
 
67
+ - `Dialog.Simple` and `Dialog.Inline` without children render no `Dialog.Body`, so the header sits directly on the footer
68
+ without the body's padding between them. [Dialog](src/components/dialog/dialog.mdx)
69
+ ([WEBSDK-247](https://imfusion.atlassian.net/browse/WEBSDK-247)) — Nikolaus Brunner <brunner@imfusion.com>
62
70
  - `initialsFromEmail` gives the first two letters of a single-segment local part, `jkeller@…` gives `JK`, and `?` for an
63
71
  empty one, the same rule as `initialsFromName`. [Avatar](src/components/avatar/avatar.mdx) — Nikolaus Brunner
64
72
  <brunner@imfusion.com>
@@ -90,6 +98,8 @@
90
98
  ([WEBSDK-245](https://imfusion.atlassian.net/browse/WEBSDK-245)) — Nikolaus Brunner <brunner@imfusion.com>
91
99
  - Agent skills — Nikolaus Brunner <brunner@imfusion.com>
92
100
  - `imf-web-ui-conventions` exempts React components from the explicit return type on exported functions.
101
+ - The `imf-web-ui-conventions` `npm-project` topic sets `engines.node` to Web UI's own range, and `imf-web-ui-audit`
102
+ reports an app whose range admits a Node outside it.
93
103
  - The `project-structure` topic keeps a route's only view, such as a form, in the route file and moves views to the `-`
94
104
  folder only when the page composes several. `imf-web-ui-audit` reports by views, not line counts.
95
105
  - The `imf-web-ui-conventions` `assets` topic encodes photographs as AVIF and WebP at 800 and 1600px and renders them
@@ -139,6 +149,8 @@
139
149
  - Combobox and Autocomplete stories start at the same top-left corner, so clicking through them does not shift the
140
150
  layout. A story resizes its frame with `parameters.frame`, which `withFrame` reads.
141
151
  - The Autocomplete interaction test reads the popup's height after it reopens, so it passes on every run.
152
+ - `engines.node` is `^24.14 || >=26`. Node 22 and Node 24 before 24.14 reject `#/` subpath imports, so Storybook did not
153
+ start there. CI builds on Node 24.14.0, and `.nvmrc` selects Node 24. — Nikolaus Brunner <brunner@imfusion.com>
142
154
  - `RichLink` sets every label in the strong weight, with or without a `description`. [RichLink](src/components/rich-link/rich-link.mdx) — Nikolaus Brunner <brunner@imfusion.com>
143
155
 
144
156
  ### Fixed
@@ -1,3 +1,4 @@
1
+ import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog';
1
2
  import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';
2
3
  import { VariantProps } from 'class-variance-authority';
3
4
  import * as ScrollArea from '../scroll-area/scroll-area';
@@ -102,7 +103,7 @@ export declare function Close(props: React.ComponentProps<typeof DialogPrimitive
102
103
  export declare namespace Close {
103
104
  var displayName: string;
104
105
  }
105
- type ComposedProps = Omit<React.ComponentProps<typeof DialogPrimitive.Root>, "children"> & {
106
+ type ContentProps = {
106
107
  /** Heading of the dialog. */
107
108
  title: React.ReactNode;
108
109
  /** Short uppercase label above the title. */
@@ -127,6 +128,7 @@ type ComposedProps = Omit<React.ComponentProps<typeof DialogPrimitive.Root>, "ch
127
128
  /** Content of the body. */
128
129
  children?: React.ReactNode;
129
130
  };
131
+ type ComposedProps = Omit<React.ComponentProps<typeof DialogPrimitive.Root>, "children"> & ContentProps;
130
132
  type SimpleProps = ComposedProps & {
131
133
  /** Element rendered as the trigger, such as a `Button`. Omit it for a controlled dialog. */
132
134
  trigger?: React.ReactElement;
@@ -135,7 +137,7 @@ type SimpleProps = ComposedProps & {
135
137
  * Dialog.Simple — pre-composed dialog: trigger, header with title, description, and optional status, a scrolling body,
136
138
  * and either a close button in the header or a footer of `actions`. Root props pass through.
137
139
  */
138
- export declare function Simple({ trigger, headerVariant, size, ...props }: SimpleProps): import("react/jsx-runtime").JSX.Element;
140
+ export declare function Simple({ trigger, headerVariant, size, eyebrow, title, description, status, actions, children, ...rootProps }: SimpleProps): import("react/jsx-runtime").JSX.Element;
139
141
  export declare namespace Simple {
140
142
  var displayName: string;
141
143
  }
@@ -144,8 +146,26 @@ type InlineProps = ComposedProps & {
144
146
  trigger: React.ReactNode;
145
147
  };
146
148
  /** Dialog.Inline — like Dialog.Simple, but the trigger is text inside a sentence. */
147
- export declare function Inline({ trigger, headerVariant, size, ...props }: InlineProps): import("react/jsx-runtime").JSX.Element;
149
+ export declare function Inline({ trigger, headerVariant, size, eyebrow, title, description, status, actions, children, ...rootProps }: InlineProps): import("react/jsx-runtime").JSX.Element;
148
150
  export declare namespace Inline {
149
151
  var displayName: string;
150
152
  }
153
+ type AlertProps = Omit<React.ComponentProps<typeof AlertDialogPrimitive.Root>, "children"> & Omit<ContentProps, "headerVariant" | "actions"> & {
154
+ /** Element rendered as the trigger, such as a `Button`. Omit it for a controlled dialog. */
155
+ trigger?: React.ReactElement;
156
+ /** Buttons of the footer, the only way out. Include a Cancel `Dialog.Close`. */
157
+ actions: React.ReactNode;
158
+ };
159
+ /**
160
+ * Dialog.Alert — pre-composed confirmation that interrupts the user, announced as an `alertdialog`. Always modal; a click
161
+ * on the overlay does not close it, Escape does. Like Dialog.Simple, without a header close button. Root props pass
162
+ * through.
163
+ *
164
+ * @see https://base-ui.com/react/components/alert-dialog
165
+ * @llm https://base-ui.com/react/components/alert-dialog.md
166
+ */
167
+ export declare function Alert({ trigger, size, eyebrow, title, description, status, actions, children, ...rootProps }: AlertProps): import("react/jsx-runtime").JSX.Element;
168
+ export declare namespace Alert {
169
+ var displayName: string;
170
+ }
151
171
  export {};