@imfusion/web-ui 0.9.0 → 0.9.1-dev.7.g0a2385ef

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.9.0",
3
+ "version": "0.9.1-dev.7.g0a2385ef",
4
4
  "description": "The official Web UI component library for ImFusion web apps",
5
5
  "author": "ImFusion GmbH",
6
6
  "homepage": "https://imfusion.com",
@@ -5268,6 +5268,50 @@
5268
5268
  },
5269
5269
  "subComponents": []
5270
5270
  },
5271
+ "rich-link": {
5272
+ "root": {
5273
+ "name": "RichLink",
5274
+ "description": "RichLink — a link as a whole row: an optional leading icon on a tinted tile, the label with an optional description\nline, and a trailing icon for where it leads. Draws no divider; stacked links get their spacing from the layout. Wrap it\nwith TanStack Router's `createLink` to use it as a router link.",
5275
+ "props": [
5276
+ {
5277
+ "name": "description",
5278
+ "required": false,
5279
+ "type": "ReactNode",
5280
+ "defaultValue": null,
5281
+ "description": "Second line under the label. When set, the label turns bold."
5282
+ },
5283
+ {
5284
+ "name": "endGlyph",
5285
+ "required": false,
5286
+ "type": "IconComponent",
5287
+ "defaultValue": null,
5288
+ "description": "Trailing icon from `@imfusion/web-ui/icons`, replacing the arrow `kind` picks, such as `Download` for a file."
5289
+ },
5290
+ {
5291
+ "name": "glyph",
5292
+ "required": false,
5293
+ "type": "IconComponent",
5294
+ "defaultValue": null,
5295
+ "description": "Leading icon from `@imfusion/web-ui/icons`, shown on a tile in the primary color."
5296
+ },
5297
+ {
5298
+ "name": "kind",
5299
+ "required": false,
5300
+ "type": "\"external\" | \"internal\"",
5301
+ "defaultValue": "external",
5302
+ "description": "Link target scope. `\"external\"` (default) opens in a new tab with a diagonal `ArrowUpRight` icon; `\"internal\"` stays in the current tab with a horizontal `ArrowRight` icon."
5303
+ },
5304
+ {
5305
+ "name": "ref",
5306
+ "required": false,
5307
+ "type": "Ref<HTMLAnchorElement>",
5308
+ "defaultValue": null,
5309
+ "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}"
5310
+ }
5311
+ ]
5312
+ },
5313
+ "subComponents": []
5314
+ },
5271
5315
  "row": {
5272
5316
  "root": {
5273
5317
  "name": "Row",
@@ -6352,14 +6396,14 @@
6352
6396
  "skeleton": {
6353
6397
  "root": {
6354
6398
  "name": "Skeleton.Root",
6355
- "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.",
6399
+ "description": "Skeleton.Root — marks a region as loading. The view inside renders for real; bones stand in for the data. While\n`loading`, sets `aria-busy` and announces `label` once, however many bones it holds. When `loading` turns false, the\ndata fades in over the bones.",
6356
6400
  "props": [
6357
6401
  {
6358
6402
  "name": "animation",
6359
6403
  "required": false,
6360
6404
  "type": "\"none\" | \"shimmer\"",
6361
6405
  "defaultValue": "shimmer",
6362
- "description": "`none` holds every bone inside still."
6406
+ "description": "`none` holds every bone inside still and swaps in the data without a reveal."
6363
6407
  },
6364
6408
  {
6365
6409
  "name": "label",
@@ -6368,6 +6412,13 @@
6368
6412
  "defaultValue": null,
6369
6413
  "description": "Announced once through a visually hidden status. Pass `\"\"` when something else already speaks for the region."
6370
6414
  },
6415
+ {
6416
+ "name": "loading",
6417
+ "required": false,
6418
+ "type": "boolean",
6419
+ "defaultValue": "true",
6420
+ "description": "Whether the region is still loading. Root stays mounted and reveals the data when this turns false."
6421
+ },
6371
6422
  {
6372
6423
  "name": "ref",
6373
6424
  "required": false,
@@ -163,6 +163,11 @@ Floating panel anchored to a trigger for contextual content, quick forms, or act
163
163
  Flow container that spaces long-form text and the blocks inside it. Also called an article or rich-text container. Use Stack or Row for UI layout.
164
164
  - props: node_modules/@imfusion/web-ui/src/docgen/doc.gen.json -> .prose (jq: jq '.prose' node_modules/@imfusion/web-ui/src/docgen/doc.gen.json)
165
165
 
166
+ ## RichLink
167
+ - category: Buttons, status: experimental
168
+ Link as a whole row: optional leading icon, label, optional description line, and a trailing arrow for where it leads. Also called a link row or resource link. Use ChipLink for a compact link inside other content.
169
+ - props: node_modules/@imfusion/web-ui/src/docgen/doc.gen.json -> .rich-link (jq: jq '.rich-link' node_modules/@imfusion/web-ui/src/docgen/doc.gen.json)
170
+
166
171
  ## Row
167
172
  - category: Layout, status: stable
168
173
  Horizontal layout primitive for spacing, aligning, and wrapping children. Also called a horizontal stack or flex row.
@@ -9,6 +9,12 @@ integration seams.
9
9
  - If Web UI is missing a component or part, report the gap instead of reaching around it.
10
10
  - Import glyphs from `@imfusion/web-ui/icons` and render them with `Icon`.
11
11
 
12
+ ## Stand in for a missing component
13
+
14
+ When a generic component is missing from Web UI and the app cannot wait, build it in `components/web-ui-pending/<name>/` and
15
+ file the gap with the library. Keep it free of app logic and name it as the library would, so the swap is an import change.
16
+ Delete the folder once Web UI ships the component.
17
+
12
18
  ## Wrap primitives when the app has a reason to
13
19
 
14
20
  Create an app-level dumb wrapper when you repeat a default, composition, styling override, accessibility improvement, or API
@@ -46,6 +46,8 @@ reason.
46
46
  ## Choose between similar controls
47
47
 
48
48
  - `Button` performs an action, `ChipLink` goes somewhere, and `Chip` labels something.
49
+ - Use `ChipLink` for a link inside text or a row of chips, and `RichLink` for a link that fills its own row, such as a list
50
+ of resources.
49
51
  - Use plain `Table` parts for static small data. Pair them with a headless table library for sorting, pagination, or column
50
52
  logic. TanStack Table is the recommended choice.
51
53
  - Use `Callout` for persistent in-place status. Put transient confirmation near the action until a toast pattern exists.
@@ -573,7 +573,7 @@
573
573
  },
574
574
  {
575
575
  "name": "--imf-ui-font-lineheight-title",
576
- "value": "clamp(2.0125rem, 1.8134rem + 0.8846vw, 2.5875rem)"
576
+ "value": "clamp(1.9872rem, 1.7979rem + 0.8413vw, 2.8076rem)"
577
577
  },
578
578
  {
579
579
  "name": "--imf-ui-font-size-0",
@@ -625,23 +625,23 @@
625
625
  },
626
626
  {
627
627
  "name": "--imf-ui-font-size-fluid-0",
628
- "value": "clamp(1.125rem, 4.5vw, 1.3125rem)"
628
+ "value": "clamp(1.2rem, 1.1163rem + 0.3718vw, 1.5625rem)"
629
629
  },
630
630
  {
631
631
  "name": "--imf-ui-font-size-fluid-1",
632
- "value": "clamp(1rem, 4vw, 1.5rem)"
632
+ "value": "clamp(1.44rem, 1.3216rem + 0.5263vw, 1.9531rem)"
633
633
  },
634
634
  {
635
635
  "name": "--imf-ui-font-size-fluid-2",
636
- "value": "clamp(1.75rem, 1.5769rem + 0.7692vw, 2.25rem)"
636
+ "value": "clamp(1.728rem, 1.5634rem + 0.7317vw, 2.4414rem)"
637
637
  },
638
638
  {
639
639
  "name": "--imf-ui-font-size-fluid-3",
640
- "value": "clamp(2rem, 1.1154rem + 2.8205vw, 4.5rem)"
640
+ "value": "clamp(2rem, 1.4231rem + 2.5641vw, 4.5rem)"
641
641
  },
642
642
  {
643
643
  "name": "--imf-ui-font-size-hero",
644
- "value": "clamp(3rem, 1.8rem + 6vw, 9rem)"
644
+ "value": "clamp(3rem, 1.6154rem + 6.1538vw, 9rem)"
645
645
  },
646
646
  {
647
647
  "name": "--imf-ui-font-weight-1",