@synopackageland/ui 0.19.8 → 0.19.10

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
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.19.10 (2026-11-03)
4
+
5
+ - `ConnectionTopology` takes `cards` and `layout`. With `cards`, every lane is a card of one height (the tallest sets it) with node boxes of one size, each link word is centred on its own segment (one word on the middle of a lane with no relay), and the lines are solid or dashed instead of flowing dots. `layout="columns"` sets the cards side by side from 560px of container width. Without `cards` nothing changes. The real-browser check measures card heights, node boxes and word centres.
6
+
7
+ ## 0.19.9 (2026-11-03)
8
+
9
+ - `WizardDialog` takes `confirm-close`. While it is true, the close button, Escape and Cancel first ask "Discard changes?" with Keep editing and Discard; Keep editing returns to the wizard, Discard closes it and emits `cancel` once. Finish never asks, and with the prop false (the default) the wizard closes at once as before. The text follows the locale provider in every built-in locale ([wizard](docs/wizard.md#leaving-with-input)).
10
+
3
11
  ## 0.19.8 (2026-11-03)
4
12
 
5
13
  - Fix `ScheduleTable`'s notice for missing options or a `modelValue` of the wrong length ending with a closing period. It was the last text the library wrote that did, since the catalogs already dropped theirs in 0.19.3.
package/README.md CHANGED
@@ -312,7 +312,7 @@ DSM's wizards: a fixed header with the wizard's name, the step's title and a
312
312
  compact progress bar; a scrolling step with its hero and one line; and a fixed
313
313
  footer with Back and the one main action together at the end. The app behind
314
314
  takes a light scrim, and a press on it does not close the wizard. `Wizard` is
315
- the same layout for a `<Dialog flush>` of your own or a page (`framed`). See
315
+ the same layout for a `<Dialog flush>` of your own or a page (`framed`). Set `confirm-close` while the user has entered something and the close button, Escape and Cancel ask "Keep editing / Discard" first. See
316
316
  [docs/wizard.md](docs/wizard.md).
317
317
 
318
318
  ### Toast notifications
@@ -806,6 +806,14 @@ maps its own states to six link states.
806
806
  whole text on hover. `label-lines` keeps room for that many lines under
807
807
  every node (two in a dense lane), so paths side by side keep one height.
808
808
  With no lanes, one idle line shows `empty-label`.
809
+ - **Cards.** `cards` makes a method chooser of the lanes: each lane is a card
810
+ of the tallest one's height with node boxes of one size, always stacked
811
+ (`layout="columns"` puts them side by side from 560px of container width).
812
+ Each link word sits under its own link, centred on that segment; in a lane
813
+ with no relay one word is centred on the whole path, and two links in one
814
+ state draw one mark and arrow. Lines are plain: solid when working, dashed
815
+ when idle, changing or unknown, with no flowing dots. `label-lines` (two by
816
+ default) clamps the words; `selected-lane` highlights a card as before.
809
817
  - **Motion.** The keyframes `ui-flow` and `ui-pulse` stop under
810
818
  `prefers-reduced-motion`; a working link then turns solid with an arrow.
811
819
 
@@ -23,6 +23,10 @@ type __VLS_Props = {
23
23
  * unless set), so paths side by side, such as cards in a row, keep one
24
24
  * height whether or not their words wrap. */
25
25
  labelLines?: number;
26
+ /** Equal-size cards: every lane is a card of the tallest one's height, with node boxes of one size, each link word centred on its own segment (one word centred on the whole path in a lane with no relay) and calm solid or dashed lines. Always the stacked layout, at any width. */
27
+ cards?: boolean;
28
+ /** With `cards`: `columns` puts the lanes side by side once the container is 560px wide; `stacked` (default) keeps them one above the other. */
29
+ layout?: 'stacked' | 'columns';
26
30
  };
27
31
  type __VLS_Slots = Record<`node-${string}`, (props: {
28
32
  node: TopologyNode;
@@ -37,6 +41,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
37
41
  compact: boolean;
38
42
  selectable: boolean;
39
43
  selectedLane: string | number;
44
+ cards: boolean;
45
+ layout: "stacked" | "columns";
40
46
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
41
47
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
42
48
  declare const _default: typeof __VLS_export;
@@ -13,6 +13,8 @@ type __VLS_Props = {
13
13
  closeLabel?: string;
14
14
  showClose?: boolean;
15
15
  closeOnFinish?: boolean;
16
+ /** `true` asks "Keep editing / Discard" before the close button, Escape or Cancel closes the wizard; `false` closes at once. Finish never asks. */
17
+ confirmClose?: boolean;
16
18
  };
17
19
  declare var __VLS_9: {}, __VLS_20: {};
18
20
  type __VLS_Slots = {} & {
@@ -33,6 +35,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
33
35
  open: boolean;
34
36
  showClose: boolean;
35
37
  closeOnFinish: boolean;
38
+ confirmClose: boolean;
36
39
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
37
40
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
38
41
  declare const _default: typeof __VLS_export;
@@ -235,6 +235,10 @@ export declare const englishUiText: {
235
235
  readonly "Create \u201C{name}\u201D": "Create “{name}”";
236
236
  readonly "Show details": "Show details";
237
237
  readonly "Hide details": "Hide details";
238
+ readonly "Discard changes?": "Discard changes?";
239
+ readonly "What you entered will be lost": "What you entered will be lost";
240
+ readonly "Keep editing": "Keep editing";
241
+ readonly Discard: "Discard";
238
242
  };
239
243
  export type UiTextKey = keyof typeof englishUiText;
240
244
  export type UiTranslator = (key: UiTextKey, values?: Record<string, string | number>) => string;