@synopackageland/ui 0.14.9 → 0.14.11

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,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.11 (2026-10-24)
4
+
5
+ Visual change: the DSM7 light theme's page and neutral greys. Props, slots and exports stay as they were.
6
+
7
+ - The DSM7 light theme's page and neutral greys are lighter and softer: the page behind cards is a pale sage mist (`--ui-bg` `#f4f6f3`, was `#f0f2f5`), and grey buttons, neutral badges, inset blocks, grid rules and card and field frames share that mist (new `--ui-mist-a2/a3/a6/a7/a8`) instead of DSM's blue-grey steps. Text, tones, the accent and the selection are unchanged; text keeps 4.5:1. The web frame fallback (`--ui-app-web-border`) follows `--ui-border`.
8
+ - `ExpandableItem` opens and closes from a click anywhere on its header (icon, title, summary), not only the arrow. A click in the detail or on a control a slot puts in the header is left alone; a `selectable` row still selects on a click and expands on a double click. The arrow stays the keyboard stop (Enter/Space, focus ring).
9
+
10
+ ## 0.14.10 (2026-10-23)
11
+
12
+ Visual change: `Callout` and `Toast`. Existing props, slots, events and the toast API keep working.
13
+
14
+ - `Callout` and `Toast` share one look: a raised neutral surface with no frame or tinted fill, a soft shadow and a 1px ring, a light of the tone along the top edge, and a faint glow of the tone behind an 18px icon. Corners are 12px. Action buttons are capsules. A Callout fades in and rises; a toast slides in; reduced motion turns both off. The Callout's leading tone bar is gone.
15
+ - `Callout` puts its actions at the end of the message (under it when the width runs out) and stops at 720px (`--ui-callout-max-width`); `fill` spans the container.
16
+ - `Callout variant="inline"`: the same icon and tones as a line of text without the surface, for short risk notes.
17
+ - `Callout` `#details` slot holds longer text behind a "Learn more" toggle (`v-model:expanded`, `moreLabel`, `lessLabel`; translated defaults).
18
+ - New tokens: `--ui-callout-radius`, `--ui-callout-glow`, `--ui-callout-shadow`; the workbench dark theme raises the glow and deepens the shadow.
19
+ - Add [docs/callout.md](docs/callout.md): a passing result is a toast, something to act on is a Callout with one title, one line and one action, a risk is a short inline note. Callout text has no closing period.
20
+ - Inside a DSM window, app text can be selected and copied again: the theme sets `user-select: text` on the app root, overriding DSM's `html, body { user-select: none }`, and keeps buttons, tabs, menu items, sidebar and tree rows, choice labels and dividers unselectable. Text fields are unaffected. `pnpm check:text-select` checks it in a real browser.
21
+
3
22
  ## 0.14.9 (2026-10-23)
4
23
 
5
24
  - `Link` keeps short labels on one line inside content-sized wrappers, including inline-flex parents. Its horizontal hit padding and keyboard focus ring remain; long labels still wrap within the container.
package/README.md CHANGED
@@ -157,6 +157,10 @@ import { AppRoot, ToastProvider } from '@synopackageland/ui'
157
157
  `body button:lang(…)` font rules;
158
158
  - makes the app root the containing block of fixed overlays, so dialogs,
159
159
  sheets and toasts stay inside the window.
160
+ - turns text selection back on under the app root, which DSM's
161
+ `html, body { user-select: none }` turns off: content text can be selected
162
+ and copied, while buttons, tabs, menu items, sidebar and tree rows, choice
163
+ labels and dividers stay unselectable (a `select-*` utility still wins).
160
164
 
161
165
  `AppRoot` renders `<div data-ui-app data-syno-pkg-land-ui>` and routes every overlay
162
166
  portal (Dialog, Sheet, Toast, Popover, Select, DropdownMenu, ContextMenu,
@@ -503,7 +507,7 @@ DSM-style application building blocks:
503
507
 
504
508
  - SearchField
505
509
  - SettingsRow / SettingsSection
506
- - Callout / EmptyState / StepList
510
+ - Callout (see [docs/callout.md](docs/callout.md) for when to use a Callout, a toast or an inline note) / EmptyState / StepList
507
511
  - ConnectionTopology
508
512
  - DataTable / DataGrid
509
513
  - TreeView
@@ -1,22 +1,40 @@
1
1
  type __VLS_Props = {
2
2
  tone?: 'info' | 'success' | 'warning' | 'danger';
3
+ /** `soft`: a compact tinted panel. `inline`: a status line with no panel, for a short note under a field or a section. */
4
+ variant?: 'soft' | 'inline';
3
5
  title?: string;
4
6
  closable?: boolean;
5
7
  closeLabel?: string;
6
8
  /** A machine code (e.g. `login_wait_timeout`), shown after the message in a quieter style. */
7
9
  code?: string;
10
+ /** Span the container instead of stopping at `--ui-callout-max-width` (720px). */
11
+ fill?: boolean;
12
+ /** The toggle for the `details` slot. */
13
+ moreLabel?: string;
14
+ lessLabel?: string;
8
15
  };
9
- declare var __VLS_6: {}, __VLS_8: {};
16
+ type __VLS_ModelProps = {
17
+ /** Whether the `details` slot is shown. */
18
+ 'expanded'?: boolean;
19
+ };
20
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
21
+ declare var __VLS_6: {}, __VLS_13: {}, __VLS_15: {};
10
22
  type __VLS_Slots = {} & {
11
23
  default?: (props: typeof __VLS_6) => any;
12
24
  } & {
13
- actions?: (props: typeof __VLS_8) => any;
25
+ details?: (props: typeof __VLS_13) => any;
26
+ } & {
27
+ actions?: (props: typeof __VLS_15) => any;
14
28
  };
15
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
29
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
16
30
  close: () => any;
17
- }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
31
+ "update:expanded": (value: boolean) => any;
32
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
18
33
  onClose?: (() => any) | undefined;
34
+ "onUpdate:expanded"?: ((value: boolean) => any) | undefined;
19
35
  }>, {
36
+ fill: boolean;
37
+ variant: "soft" | "inline";
20
38
  tone: "info" | "success" | "warning" | "danger";
21
39
  closable: boolean;
22
40
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -50,6 +50,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
50
50
  }) => any;
51
51
  check: (payload: TreeViewCheckPayload) => any;
52
52
  "update:checkedKeys": (value: string[]) => any;
53
+ "update:expanded": (value: string[]) => any;
53
54
  reorder: (payload: {
54
55
  node: TreeNode;
55
56
  target: TreeNode;
@@ -57,7 +58,6 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
57
58
  nodes: TreeNode[];
58
59
  }) => any;
59
60
  expand: (node: TreeNode) => any;
60
- "update:expanded": (value: string[]) => any;
61
61
  "update:nodes": (value: TreeNode[]) => any;
62
62
  collapse: (node: TreeNode) => any;
63
63
  }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
@@ -69,6 +69,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
69
69
  }) => any) | undefined;
70
70
  onCheck?: ((payload: TreeViewCheckPayload) => any) | undefined;
71
71
  "onUpdate:checkedKeys"?: ((value: string[]) => any) | undefined;
72
+ "onUpdate:expanded"?: ((value: string[]) => any) | undefined;
72
73
  onReorder?: ((payload: {
73
74
  node: TreeNode;
74
75
  target: TreeNode;
@@ -76,7 +77,6 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
76
77
  nodes: TreeNode[];
77
78
  }) => any) | undefined;
78
79
  onExpand?: ((node: TreeNode) => any) | undefined;
79
- "onUpdate:expanded"?: ((value: string[]) => any) | undefined;
80
80
  "onUpdate:nodes"?: ((value: TreeNode[]) => any) | undefined;
81
81
  onCollapse?: ((node: TreeNode) => any) | undefined;
82
82
  }>, {
@@ -32,8 +32,8 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
32
32
  "onUpdate:expanded"?: ((value: boolean) => any) | undefined;
33
33
  }>, {
34
34
  hasHeader: boolean;
35
- expandable: boolean;
36
35
  expanded: boolean;
36
+ expandable: boolean;
37
37
  layoutType: "regular" | "compact";
38
38
  footerAlign: "start" | "end" | "between";
39
39
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -28,7 +28,7 @@ type __VLS_Props = {
28
28
  selected?: boolean;
29
29
  /** Enables native drag emission (`drag-start`, `drag-over`, `drop`, `drag-end`). */
30
30
  draggable?: boolean;
31
- /** Emits `select` when the summary row is clicked. */
31
+ /** Emits `select` when the summary row is clicked; the row then expands on a double click instead. */
32
32
  selectable?: boolean;
33
33
  };
34
34
  declare var __VLS_1: {}, __VLS_8: {}, __VLS_20: {}, __VLS_22: {}, __VLS_24: {}, __VLS_26: {}, __VLS_28: {}, __VLS_30: {};
@@ -65,9 +65,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
65
65
  "onDrag-end"?: ((event: DragEvent) => any) | undefined;
66
66
  }>, {
67
67
  draggable: boolean;
68
+ expanded: boolean;
68
69
  selectable: boolean;
69
70
  expandable: boolean;
70
- expanded: boolean;
71
71
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
72
72
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
73
73
  declare const _default: typeof __VLS_export;
@@ -155,6 +155,8 @@ export declare const englishUiText: {
155
155
  readonly "Notifications ({hotkey})": "Notifications ({hotkey})";
156
156
  readonly "Show password": "Show password";
157
157
  readonly "Hide password": "Hide password";
158
+ readonly "Learn more": "Learn more";
159
+ readonly "Show less": "Show less";
158
160
  readonly "Copy path": "Copy path";
159
161
  readonly "Path: {path}": "Path: {path}";
160
162
  readonly Copied: "Copied";