@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imfusion/web-ui",
3
- "version": "0.11.1-dev.57.g3cec18fa",
3
+ "version": "0.11.1-dev.59.g5c2572e2",
4
4
  "description": "The official Web UI component library for ImFusion web apps",
5
5
  "author": "ImFusion GmbH",
6
6
  "homepage": "https://imfusion.com",
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "type": "module",
13
13
  "engines": {
14
- "node": "^22.22.1 || ^24.11 || >=26"
14
+ "node": "^24.14 || >=26"
15
15
  },
16
16
  "imports": {
17
17
  "#/*": "./src/*",
@@ -4081,6 +4081,124 @@
4081
4081
  ]
4082
4082
  },
4083
4083
  "subComponents": [
4084
+ {
4085
+ "name": "Dialog.Alert",
4086
+ "description": "Dialog.Alert — pre-composed confirmation that interrupts the user, announced as an `alertdialog`. Always modal; a click\non the overlay does not close it, Escape does. Like Dialog.Simple, without a header close button. Root props pass\nthrough.",
4087
+ "props": [
4088
+ {
4089
+ "name": "actions",
4090
+ "required": true,
4091
+ "type": "ReactNode",
4092
+ "defaultValue": null,
4093
+ "description": "Buttons of the footer, the only way out. Include a Cancel `Dialog.Close`."
4094
+ },
4095
+ {
4096
+ "name": "actionsRef",
4097
+ "required": false,
4098
+ "type": "RefObject<DialogRootActions | null>",
4099
+ "defaultValue": null,
4100
+ "description": "A ref to imperative actions.\n- `unmount`: Manually unmounts the alert dialog.\nCall this after any externally controlled closing animation finishes.\n- `close`: Closes the alert dialog imperatively when called."
4101
+ },
4102
+ {
4103
+ "name": "children",
4104
+ "required": false,
4105
+ "type": "ReactNode",
4106
+ "defaultValue": null,
4107
+ "description": "Content of the body."
4108
+ },
4109
+ {
4110
+ "name": "defaultOpen",
4111
+ "required": false,
4112
+ "type": "boolean",
4113
+ "defaultValue": "false",
4114
+ "description": "Whether the dialog is initially open.\n\nTo render a controlled dialog, use the `open` prop instead."
4115
+ },
4116
+ {
4117
+ "name": "defaultTriggerId",
4118
+ "required": false,
4119
+ "type": "string | null",
4120
+ "defaultValue": null,
4121
+ "description": "ID of the trigger that the dialog is associated with.\nThis is useful in conjunction with the `defaultOpen` prop to create an initially open dialog."
4122
+ },
4123
+ {
4124
+ "name": "description",
4125
+ "required": false,
4126
+ "type": "ReactNode",
4127
+ "defaultValue": null,
4128
+ "description": "Line of context under the title."
4129
+ },
4130
+ {
4131
+ "name": "eyebrow",
4132
+ "required": false,
4133
+ "type": "ReactNode",
4134
+ "defaultValue": null,
4135
+ "description": "Short uppercase label above the title."
4136
+ },
4137
+ {
4138
+ "name": "handle",
4139
+ "required": false,
4140
+ "type": "AlertDialogHandle<unknown>",
4141
+ "defaultValue": null,
4142
+ "description": "A handle to associate the alert dialog with a trigger.\nIf specified, allows external triggers to control the alert dialog's open state.\nCan be created with the AlertDialog.createHandle() method."
4143
+ },
4144
+ {
4145
+ "name": "onOpenChange",
4146
+ "required": false,
4147
+ "type": "(\n open: boolean,\n eventDetails: AlertDialogRootChangeEventDetails\n) => void",
4148
+ "defaultValue": null,
4149
+ "description": "Event handler called when the alert dialog is opened or closed."
4150
+ },
4151
+ {
4152
+ "name": "onOpenChangeComplete",
4153
+ "required": false,
4154
+ "type": "(open: boolean) => void",
4155
+ "defaultValue": null,
4156
+ "description": "Event handler called after any animations complete when the dialog is opened or closed."
4157
+ },
4158
+ {
4159
+ "name": "open",
4160
+ "required": false,
4161
+ "type": "boolean",
4162
+ "defaultValue": null,
4163
+ "description": "Whether the dialog is currently open."
4164
+ },
4165
+ {
4166
+ "name": "size",
4167
+ "required": false,
4168
+ "type": "\"sm\" | \"md\" | \"lg\" | \"full\"",
4169
+ "defaultValue": "sm",
4170
+ "description": "Width of the window."
4171
+ },
4172
+ {
4173
+ "name": "status",
4174
+ "required": false,
4175
+ "type": "| NonNullable<\n \"info\" | \"positive\" | \"warning\" | \"negative\" | null\n >\n| undefined",
4176
+ "defaultValue": null,
4177
+ "description": "Adds a `Dialog.Status` with this variant at the start of the popup."
4178
+ },
4179
+ {
4180
+ "name": "title",
4181
+ "required": true,
4182
+ "type": "ReactNode",
4183
+ "defaultValue": null,
4184
+ "description": "Heading of the dialog."
4185
+ },
4186
+ {
4187
+ "name": "trigger",
4188
+ "required": false,
4189
+ "type": "ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n>",
4190
+ "defaultValue": null,
4191
+ "description": "Element rendered as the trigger, such as a `Button`. Omit it for a controlled dialog."
4192
+ },
4193
+ {
4194
+ "name": "triggerId",
4195
+ "required": false,
4196
+ "type": "string | null",
4197
+ "defaultValue": null,
4198
+ "description": "ID of the trigger that the dialog is associated with.\nThis is useful in conjunction with the `open` prop to create a controlled dialog.\nThere's no need to specify this prop when the dialog is uncontrolled (that is, when the `open` prop is not set)."
4199
+ }
4200
+ ]
4201
+ },
4084
4202
  {
4085
4203
  "name": "Dialog.Backdrop",
4086
4204
  "description": "Dialog.Backdrop — flat dark overlay that dims the page behind the dialog.",
@@ -66,10 +66,11 @@ next action is the add from that topic. A Vite config that reads tsconfig `paths
66
66
  `vite-tsconfig-paths`) is Broken: it loads the React types package as React once Web UI comes from the registry. The fix is
67
67
  to drop it and give the `#/` alias through `imports` in `package.json`. A major or minor mismatch between the project and Web
68
68
  UI on a package listed under Aligned runtime packages in the `tooling` topic is a Deviation. Report both versions, with
69
- `npm install <package>@<Web UI's version>` as the fix. A route file that holds several views inline is a Deviation, and so is
70
- a route whose only view sits alone in its `-` folder. Name the views, with the move as the fix. A form whose state and
71
- validation are written by hand instead of TanStack Form is a Deviation, however many forms share the pattern. Name each form,
72
- with TanStack Form and its existing schema as the fix.
69
+ `npm install <package>@<Web UI's version>` as the fix. An `engines.node` that admits a Node outside the `engines.node` of the
70
+ installed `node_modules/@imfusion/web-ui/package.json` is a Deviation; report both ranges, with Web UI's as the fix. A route
71
+ file that holds several views inline is a Deviation, and so is a route whose only view sits alone in its `-` folder. Name the
72
+ views, with the move as the fix. A form whose state and validation are written by hand instead of TanStack Form is a
73
+ Deviation, however many forms share the pattern. Name each form, with TanStack Form and its existing schema as the fix.
73
74
 
74
75
  ## Topics
75
76
 
@@ -5,7 +5,8 @@ Keep project metadata, scripts, and dependency policy in `package.json` and the
5
5
  ## package.json
6
6
 
7
7
  - Use ESM with `"type": "module"`.
8
- - Set the Node floor with `engines.node` or `.nvmrc`.
8
+ - Set `engines.node` to the range in Web UI's own `package.json`, so the app promises no Node that Web UI or the `#/` alias
9
+ rejects. A `.nvmrc` selects a version inside that range.
9
10
  - Use the `#/` source alias when the project has one, and wire it through the package `imports` field.
10
11
  - Set `private: true` only for packages that are never published.
11
12
 
@@ -45,7 +45,7 @@ the Agent Skills the TanStack package provides.
45
45
  Vite+ runs development, build, tests, format, lint, and staged checks through one `vp` binary configured in `vite.config.ts`.
46
46
  Pin `vite-plus` exactly, alias `vite` to `npm:@voidzero-dev/vite-plus-core@<vite-plus version>`, pin `vitest` to the version
47
47
  `vp toolchain vitest` reports, and repeat both pins under `overrides`. Import `defineConfig` from `vite-plus` and Vitest APIs
48
- from `vite-plus/test`. It needs Node `^22.22.1 || ^24.11 || >=26` and Git 2.32 or later.
48
+ from `vite-plus/test`. It needs Git 2.32 or later; the `npm-project` topic sets the Node range.
49
49
 
50
50
  `vp <command>` is a built-in; `vp run <script>` runs a package script.
51
51