@imfusion/web-ui 0.8.1-dev.36.g641eac85 → 0.8.1-dev.47.gcdcf0a9b

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 (34) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +1 -0
  3. package/THIRD_PARTY_NOTICES.md +34 -0
  4. package/dist/{code-DBIxhqGE.js → code-GwkswukD.js} +3 -3
  5. package/dist/codegen/gen-icons.d.ts +29 -4
  6. package/dist/codegen/sharpen-icon.d.ts +11 -0
  7. package/dist/components/app-shell/app-shell.d.ts +55 -30
  8. package/dist/components/button/button.d.ts +1 -1
  9. package/dist/components/icon-button/icon-button.d.ts +19 -0
  10. package/dist/components/icon-button/icon-button.meta.d.ts +2 -0
  11. package/dist/components/icon-button/index.d.ts +2 -0
  12. package/dist/components/logo/logo.d.ts +1 -1
  13. package/dist/components/skeleton/index.d.ts +2 -0
  14. package/dist/components/skeleton/skeleton.d.ts +47 -0
  15. package/dist/components/skeleton/skeleton.meta.d.ts +2 -0
  16. package/dist/components/table/table.d.ts +9 -0
  17. package/dist/icons/catalog.gen.d.ts +3797 -0
  18. package/dist/icons/create-icon.d.ts +3 -0
  19. package/dist/icons/icon-config-context.d.ts +3 -0
  20. package/dist/icons/icon-config.d.ts +2 -2
  21. package/dist/icons/icons.gen.d.ts +1736 -1672
  22. package/dist/icons-DUxZcuf9.js +36339 -0
  23. package/dist/icons.js +2 -2
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.js +1567 -1233
  26. package/dist/integrations/code-highlight.js +1 -1
  27. package/dist/style.css +1 -1
  28. package/package.json +4 -3
  29. package/src/docgen/doc.gen.json +364 -6
  30. package/src/llms/icon-catalog.gen.json +5533 -1671
  31. package/src/llms/llms.gen.txt +10 -0
  32. package/src/llms/skills/imf-web-ui-audit/SKILL.md +13 -1
  33. package/src/llms/skills/imf-web-ui-update/SKILL.md +5 -1
  34. package/dist/icons-CM68Ql5d.js +0 -78
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imfusion/web-ui",
3
- "version": "0.8.1-dev.36.g641eac85",
3
+ "version": "0.8.1-dev.47.gcdcf0a9b",
4
4
  "description": "The official Web UI component library for ImFusion web apps",
5
5
  "author": "ImFusion GmbH",
6
6
  "homepage": "https://imfusion.com",
@@ -118,8 +118,7 @@
118
118
  "@base-ui/react": "1.6.0",
119
119
  "@clack/prompts": "1.7.0",
120
120
  "class-variance-authority": "0.7.1",
121
- "commander": "15.0.0",
122
- "iconoir-react": "7.12.1"
121
+ "commander": "15.0.0"
123
122
  },
124
123
  "devDependencies": {
125
124
  "@imfusion/sdk": "1.0.0",
@@ -140,6 +139,8 @@
140
139
  "@vitest/browser-playwright": "5.0.3",
141
140
  "concurrently": "9.2.1",
142
141
  "culori": "4.0.2",
142
+ "fast-xml-parser": "5.11.2",
143
+ "iconoir": "7.12.1",
143
144
  "knip": "6.14.2",
144
145
  "lightningcss": "1.32.0",
145
146
  "mermaid": "12.0.0",
@@ -89,20 +89,118 @@
89
89
  "app-shell": {
90
90
  "root": {
91
91
  "name": "AppShell.Root",
92
- "description": "AppShell — application layout shell.\n\nThe classic dashboard frame: a fixed header, collapsible navbar/aside\nsidebars, an optional footer, and a scrolling main content area. Also called\nan app layout, application frame, dashboard shell, or sidebar layout.\n\nComposed of seven sub-components used with dot-notation: `AppShell.Root` wraps\n`AppShell.Header`, `AppShell.Navbar`, `AppShell.Aside`, `AppShell.Footer`,\n`AppShell.Main`, and (inside a sidebar) `AppShell.Section`.\n\nSizing is CSS-driven — override the `--imf-ui-appshell-*` custom properties\nrather than passing dimension props. Below the responsive breakpoints the\nnavbar (`md`) and aside (`lg`) become sliding overlays toggled via the `open`\nprop; the consumer wires that to a burger button.\n\nCopied and adapted from Mantine's AppShell; no upstream runtime dependency.\nMIT licensed (see Mantine repo).",
93
- "props": []
92
+ "description": "",
93
+ "props": [
94
+ {
95
+ "name": "ref",
96
+ "required": false,
97
+ "type": "Ref<HTMLDivElement>",
98
+ "defaultValue": null,
99
+ "description": "Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}"
100
+ }
101
+ ]
94
102
  },
95
103
  "subComponents": [
96
104
  {
97
105
  "name": "AppShell.Aside",
98
- "description": "",
106
+ "description": "Below `lg` the aside opens as a drawer: from the bottom on phones, from the inline end on tablets.",
99
107
  "props": [
108
+ {
109
+ "name": "onOpenChange",
110
+ "required": false,
111
+ "type": "(open: boolean) => void",
112
+ "defaultValue": null,
113
+ "description": "Called when the drawer asks to open or close: scrim, swipe, or Escape."
114
+ },
115
+ {
116
+ "name": "onWidthChange",
117
+ "required": false,
118
+ "type": "(width: number) => void",
119
+ "defaultValue": null,
120
+ "description": "Called with the new width in px when a drag ends, on each arrow-key step, and on reset."
121
+ },
100
122
  {
101
123
  "name": "open",
102
124
  "required": false,
103
125
  "type": "boolean",
104
126
  "defaultValue": null,
105
- "description": "Whether the mobile overlay is open. Ignored above the `lg` breakpoint, where the aside is always visible."
127
+ "description": "Whether the drawer is open below the breakpoint. Ignored while the section is docked."
128
+ },
129
+ {
130
+ "name": "resizable",
131
+ "required": false,
132
+ "type": "boolean",
133
+ "defaultValue": "true",
134
+ "description": "Adds a drag handle on the inline-start edge from the `lg` breakpoint up. Double-click or Home restores the default width."
135
+ },
136
+ {
137
+ "name": "resizeLabel",
138
+ "required": false,
139
+ "type": "string",
140
+ "defaultValue": "Resize panel",
141
+ "description": "Accessible name of the drag handle."
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ "name": "AppShell.Burger",
147
+ "description": "AppShell.Burger — the header's menu toggle: three sheared bands that cross when `opened`. Takes its color from the\nsurface and hides from `md` up, where the navbar is docked.",
148
+ "props": [
149
+ {
150
+ "name": "className",
151
+ "required": false,
152
+ "type": "string | ((state: ButtonState) => string)",
153
+ "defaultValue": null,
154
+ "description": "CSS class applied to the element, or a function that\nreturns a class based on the component's state."
155
+ },
156
+ {
157
+ "name": "focusableWhenDisabled",
158
+ "required": false,
159
+ "type": "boolean",
160
+ "defaultValue": "false",
161
+ "description": "Whether the button should be focusable when disabled."
162
+ },
163
+ {
164
+ "name": "label",
165
+ "required": false,
166
+ "type": "string",
167
+ "defaultValue": null,
168
+ "description": "Accessible name. Defaults to \"Open navigation\" or \"Close navigation\" from `opened`."
169
+ },
170
+ {
171
+ "name": "nativeButton",
172
+ "required": false,
173
+ "type": "boolean",
174
+ "defaultValue": "true",
175
+ "description": "Whether the component renders a native `<button>` element when replacing it\nvia the `render` prop.\nSet to `false` if the rendered element is not a button (for example, `<div>`)."
176
+ },
177
+ {
178
+ "name": "opened",
179
+ "required": false,
180
+ "type": "boolean",
181
+ "defaultValue": "false",
182
+ "description": "Whether the navigation it controls is open; draws the cross and sets `aria-expanded`."
183
+ },
184
+ {
185
+ "name": "ref",
186
+ "required": false,
187
+ "type": "Ref<HTMLDivElement>",
188
+ "defaultValue": null,
189
+ "description": "Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}"
190
+ },
191
+ {
192
+ "name": "render",
193
+ "required": false,
194
+ "type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, ButtonState>",
195
+ "defaultValue": null,
196
+ "description": "Allows you to replace the component's HTML element\nwith a different tag, or compose it with another component.\n\nAccepts a `ReactElement` or a function that returns the element to render."
197
+ },
198
+ {
199
+ "name": "style",
200
+ "required": false,
201
+ "type": "| CSSProperties\n| ((state: ButtonState) => CSSProperties)",
202
+ "defaultValue": null,
203
+ "description": "Style applied to the element, or a function that\nreturns a style object based on the component's state."
106
204
  }
107
205
  ]
108
206
  },
@@ -123,14 +221,62 @@
123
221
  },
124
222
  {
125
223
  "name": "AppShell.Navbar",
126
- "description": "",
224
+ "description": "`variant=\"branded\"` paints the primary color; children opt into on-color themselves. Below `md` the navbar opens as a\ndrawer from the inline end.",
127
225
  "props": [
226
+ {
227
+ "name": "onOpenChange",
228
+ "required": false,
229
+ "type": "(open: boolean) => void",
230
+ "defaultValue": null,
231
+ "description": "Called when the drawer asks to open or close: scrim, swipe, or Escape."
232
+ },
128
233
  {
129
234
  "name": "open",
130
235
  "required": false,
131
236
  "type": "boolean",
132
237
  "defaultValue": null,
133
- "description": "Whether the mobile overlay is open. Ignored above the `md` breakpoint, where the navbar is always visible."
238
+ "description": "Whether the drawer is open below the breakpoint. Ignored while the section is docked."
239
+ },
240
+ {
241
+ "name": "variant",
242
+ "required": false,
243
+ "type": "\"default\" | \"branded\" | null",
244
+ "defaultValue": "default",
245
+ "description": ""
246
+ }
247
+ ]
248
+ },
249
+ {
250
+ "name": "AppShell.NavItem",
251
+ "description": "AppShell.NavItem — a navbar link: icon, mono label, and an optional description. Takes its color from the navbar;\n`aria-current=\"page\"` marks the current page. Pass a router link through `render`.",
252
+ "props": [
253
+ {
254
+ "name": "description",
255
+ "required": false,
256
+ "type": "ReactNode",
257
+ "defaultValue": null,
258
+ "description": "One line under the label saying what is behind the link."
259
+ },
260
+ {
261
+ "name": "icon",
262
+ "required": false,
263
+ "type": "ReactNode",
264
+ "defaultValue": null,
265
+ "description": "Leading icon, decorative."
266
+ },
267
+ {
268
+ "name": "ref",
269
+ "required": false,
270
+ "type": "Ref<HTMLDivElement>",
271
+ "defaultValue": null,
272
+ "description": "Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}"
273
+ },
274
+ {
275
+ "name": "render",
276
+ "required": false,
277
+ "type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, {}>",
278
+ "defaultValue": null,
279
+ "description": "Allows you to replace the component's HTML element\nwith a different tag, or compose it with another component.\n\nAccepts a `ReactElement` or a function that returns the element to render."
134
280
  }
135
281
  ]
136
282
  },
@@ -2221,6 +2367,113 @@
2221
2367
  },
2222
2368
  "subComponents": []
2223
2369
  },
2370
+ "icon-button": {
2371
+ "root": {
2372
+ "name": "IconButton",
2373
+ "description": "IconButton — a square Button that shows a single Icon. Composes Button, so every Button variant and native attribute\npasses through.",
2374
+ "props": [
2375
+ {
2376
+ "name": "chamfer",
2377
+ "required": false,
2378
+ "type": "boolean | null",
2379
+ "defaultValue": null,
2380
+ "description": ""
2381
+ },
2382
+ {
2383
+ "name": "className",
2384
+ "required": false,
2385
+ "type": "string | ((state: ButtonState) => string)",
2386
+ "defaultValue": null,
2387
+ "description": "CSS class applied to the element, or a function that\nreturns a class based on the component's state."
2388
+ },
2389
+ {
2390
+ "name": "context",
2391
+ "required": false,
2392
+ "type": "\"default\" | \"oncolor\" | null",
2393
+ "defaultValue": null,
2394
+ "description": ""
2395
+ },
2396
+ {
2397
+ "name": "focusableWhenDisabled",
2398
+ "required": false,
2399
+ "type": "boolean",
2400
+ "defaultValue": "false",
2401
+ "description": "Whether the button should be focusable when disabled."
2402
+ },
2403
+ {
2404
+ "name": "glyph",
2405
+ "required": true,
2406
+ "type": "IconComponent",
2407
+ "defaultValue": null,
2408
+ "description": "Icon component imported from `@imfusion/web-ui/icons`."
2409
+ },
2410
+ {
2411
+ "name": "iconProps",
2412
+ "required": false,
2413
+ "type": "Omit<Omit<Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>, \"color\"> & VariantProps<(props?: (ConfigVariants<...> & ClassProp)) => string> & { ...; }, \"glyph\">",
2414
+ "defaultValue": null,
2415
+ "description": "Props for the inner Icon, such as `strokeWidth` or a `size` override."
2416
+ },
2417
+ {
2418
+ "name": "label",
2419
+ "required": true,
2420
+ "type": "string",
2421
+ "defaultValue": null,
2422
+ "description": "Accessible name; the button renders no visible text."
2423
+ },
2424
+ {
2425
+ "name": "nativeButton",
2426
+ "required": false,
2427
+ "type": "boolean",
2428
+ "defaultValue": "true",
2429
+ "description": "Whether the component renders a native `<button>` element when replacing it\nvia the `render` prop.\nSet to `false` if the rendered element is not a button (for example, `<div>`)."
2430
+ },
2431
+ {
2432
+ "name": "radius",
2433
+ "required": false,
2434
+ "type": "\"sm\" | \"md\" | \"lg\" | \"none\" | \"round\" | null",
2435
+ "defaultValue": null,
2436
+ "description": ""
2437
+ },
2438
+ {
2439
+ "name": "ref",
2440
+ "required": false,
2441
+ "type": "Ref<HTMLElement>",
2442
+ "defaultValue": null,
2443
+ "description": "Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}"
2444
+ },
2445
+ {
2446
+ "name": "render",
2447
+ "required": false,
2448
+ "type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, ButtonState>",
2449
+ "defaultValue": null,
2450
+ "description": "Allows you to replace the component's HTML element\nwith a different tag, or compose it with another component.\n\nAccepts a `ReactElement` or a function that returns the element to render."
2451
+ },
2452
+ {
2453
+ "name": "size",
2454
+ "required": false,
2455
+ "type": "\"sm\" | \"md\" | \"lg\" | \"hero\" | null",
2456
+ "defaultValue": "md",
2457
+ "description": ""
2458
+ },
2459
+ {
2460
+ "name": "style",
2461
+ "required": false,
2462
+ "type": "| CSSProperties\n| ((state: ButtonState) => CSSProperties)",
2463
+ "defaultValue": null,
2464
+ "description": "Style applied to the element, or a function that\nreturns a style object based on the component's state."
2465
+ },
2466
+ {
2467
+ "name": "variant",
2468
+ "required": false,
2469
+ "type": "| \"primary\"\n| \"secondary\"\n| \"positive\"\n| \"negative\"\n| \"outline\"\n| \"ghost\"\n| null",
2470
+ "defaultValue": null,
2471
+ "description": ""
2472
+ }
2473
+ ]
2474
+ },
2475
+ "subComponents": []
2476
+ },
2224
2477
  "input": {
2225
2478
  "root": {
2226
2479
  "name": "Input",
@@ -5566,6 +5819,91 @@
5566
5819
  },
5567
5820
  "subComponents": []
5568
5821
  },
5822
+ "skeleton": {
5823
+ "root": {
5824
+ "name": "Skeleton.Root",
5825
+ "description": "Skeleton.Root — marks a region as loading. The view inside renders for real; bones stand in for the data. Sets\n`aria-busy` and announces `label` once, however many bones it holds.",
5826
+ "props": [
5827
+ {
5828
+ "name": "animation",
5829
+ "required": false,
5830
+ "type": "\"none\" | \"shimmer\"",
5831
+ "defaultValue": "shimmer",
5832
+ "description": "`none` holds every bone inside still."
5833
+ },
5834
+ {
5835
+ "name": "label",
5836
+ "required": true,
5837
+ "type": "string",
5838
+ "defaultValue": null,
5839
+ "description": "Announced once through a visually hidden status. Pass `\"\"` when something else already speaks for the region."
5840
+ },
5841
+ {
5842
+ "name": "ref",
5843
+ "required": false,
5844
+ "type": "Ref<HTMLDivElement>",
5845
+ "defaultValue": null,
5846
+ "description": "Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}"
5847
+ },
5848
+ {
5849
+ "name": "render",
5850
+ "required": false,
5851
+ "type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, {}>",
5852
+ "defaultValue": null,
5853
+ "description": "Allows you to replace the component's HTML element\nwith a different tag, or compose it with another component.\n\nAccepts a `ReactElement` or a function that returns the element to render."
5854
+ }
5855
+ ]
5856
+ },
5857
+ "subComponents": [
5858
+ {
5859
+ "name": "Skeleton.Block",
5860
+ "description": "Skeleton.Block — a sized placeholder for a shaped element such as a meter, chip, or avatar.",
5861
+ "props": [
5862
+ {
5863
+ "name": "height",
5864
+ "required": false,
5865
+ "type": "Height<string | number>",
5866
+ "defaultValue": null,
5867
+ "description": "Height of the block."
5868
+ },
5869
+ {
5870
+ "name": "shape",
5871
+ "required": false,
5872
+ "type": "\"circle\" | \"rect\"",
5873
+ "defaultValue": "rect",
5874
+ "description": "`circle` takes its size from `width`, for avatars."
5875
+ },
5876
+ {
5877
+ "name": "width",
5878
+ "required": false,
5879
+ "type": "Width<string | number>",
5880
+ "defaultValue": "100%",
5881
+ "description": "Width of the block, capped at the container width. A circle uses it for both sides."
5882
+ }
5883
+ ]
5884
+ },
5885
+ {
5886
+ "name": "Skeleton.Text",
5887
+ "description": "Skeleton.Text — a text bar exactly one line of the parent's font tall. Place it inside the real Typo element so the\nrow keeps the loaded row's height.",
5888
+ "props": [
5889
+ {
5890
+ "name": "lines",
5891
+ "required": false,
5892
+ "type": "number",
5893
+ "defaultValue": "1",
5894
+ "description": "Number of stacked lines. The last of several is 60% wide."
5895
+ },
5896
+ {
5897
+ "name": "width",
5898
+ "required": false,
5899
+ "type": "Width<string | number>",
5900
+ "defaultValue": "100%",
5901
+ "description": "Width of the bar, capped at the container width."
5902
+ }
5903
+ ]
5904
+ }
5905
+ ]
5906
+ },
5569
5907
  "slider": {
5570
5908
  "root": {
5571
5909
  "name": "Slider.Root",
@@ -6264,6 +6602,26 @@
6264
6602
  "description": "Table.Row — a `<tr>` in header or body.",
6265
6603
  "props": []
6266
6604
  },
6605
+ {
6606
+ "name": "Table.RowLink",
6607
+ "description": "Table.RowLink — an `<a>` that stands in for its whole row, such as a link to the row's detail page. Reads as row text,\nnot as a separate link, and wraps anywhere so long values like emails stay inside a narrow table.",
6608
+ "props": [
6609
+ {
6610
+ "name": "ref",
6611
+ "required": false,
6612
+ "type": "Ref<HTMLAnchorElement>",
6613
+ "defaultValue": null,
6614
+ "description": "Allows getting a ref to the component instance.\nOnce the component unmounts, React will set `ref.current` to `null`\n(or call the ref with `null` if you passed a callback ref).\n@see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs}"
6615
+ },
6616
+ {
6617
+ "name": "render",
6618
+ "required": false,
6619
+ "type": "| ReactElement<\n unknown,\n string | JSXElementConstructor<any>\n >\n| ComponentRenderFn<HTMLProps, {}>",
6620
+ "defaultValue": null,
6621
+ "description": "Allows you to replace the component's HTML element\nwith a different tag, or compose it with another component.\n\nAccepts a `ReactElement` or a function that returns the element to render."
6622
+ }
6623
+ ]
6624
+ },
6267
6625
  {
6268
6626
  "name": "Table.SortableHeaderCell",
6269
6627
  "description": "Table.SortableHeaderCell — a header cell whose label is a sort toggle,\npre-composing HeaderCell + HeaderButton so `aria-sort` and the direction\nindicator aren't re-derived per consumer. Omit `onToggle` for a plain cell.",