@synopackageland/ui 0.14.1 → 0.14.3

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,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.3 (2026-10-22)
4
+
5
+ - `AppLayout` emits `brand(event: MouseEvent)` when its default logo/name is activated. Listening opts into a native button with token-based hover/focus styles and a home label in all nine languages; no listener keeps the existing markup. Works in the sidebar, collapsed rail, top navigation and phone bar/drawer; activation closes the drawer. A custom `brand` slot retains its own behavior.
6
+
7
+ ## 0.14.2 (2026-10-22)
8
+
9
+ Additive only: existing props, defaults and DOM stay as they were.
10
+
11
+ - `LoadingMask`: `delay` (ms, default 0) shows the mask only once `loading` has lasted that long, so a quick load does not flash it; it hides as soon as `loading` ends. The region is `aria-busy` from the start.
12
+
3
13
  ## 0.14.1 (2026-10-22)
4
14
 
5
15
  Additive only: existing props, defaults and DOM stay as they were.
package/README.md CHANGED
@@ -350,6 +350,24 @@ import { AppLayout, Button, PageHeader } from '@synopackageland/ui'
350
350
 
351
351
  `AppLayout` also accepts `sidebar`, `toolbar`, and `footer` slots.
352
352
 
353
+ Listen to `@brand` to make the default logo and name a native home button:
354
+
355
+ ```vue
356
+ <AppLayout wide-layout="web" brand-name="My App" @brand="page = 'home'">
357
+ <template #sidebar><AppSidebar v-model="page" :groups="groups" /></template>
358
+ <PageContent>…</PageContent>
359
+ </AppLayout>
360
+ ```
361
+
362
+ The event receives the original `MouseEvent`, including native Enter/Space
363
+ activation. The button uses a localized “Go to home” accessible name in all nine
364
+ built-in languages, token-based hover and keyboard focus styles, and works in
365
+ the expanded/collapsed sidebar, top navigation, phone bar and phone drawer. A
366
+ brand activation closes the phone drawer and returns focus to its menu button.
367
+ Without a listener the existing logo/name markup stays unchanged. The `brand`
368
+ slot replaces the default brand and owns its own interaction; it is never
369
+ wrapped in a button. A DSM window's title bar remains managed by DSM.
370
+
353
371
  `navigation="top"` (0.13.1+) lays the `sidebar` slot out as one bar above the
354
372
  page instead of a left column: the brand, then the `AppSidebar` items in a row
355
373
  (a row with children opens them in a menu; the bar scrolls sideways when the
@@ -628,7 +646,7 @@ phone; use `DataGrid` for anything a user searches or arranges.
628
646
 
629
647
  ### Loading
630
648
 
631
- `Spinner` is the DSM ring (`size` is the box in px, default 24). `LoadingMask` wraps content and covers it with a white 60% mask and a centred message box while `loading`; `LoadingArea` fills its container (give the parent a height) and centres the indicator, for whole-page or whole-panel waits. `Button loading` shows the 16px ring inline. Do not place a bare `Spinner` in a block container and expect it to be centred: use `LoadingArea`.
649
+ `Spinner` is the DSM ring (`size` is the box in px, default 24). `LoadingMask` wraps content and covers it with a white 60% mask and a centred message box while `loading` (`delay` in ms holds the mask back so a quick load never flashes it; the region is `aria-busy` at once, so disable the actions it gates yourself); `LoadingArea` fills its container (give the parent a height) and centres the indicator, for whole-page or whole-panel waits. `Button loading` shows the 16px ring inline. Do not place a bare `Spinner` in a block container and expect it to be centred: use `LoadingArea`.
632
650
 
633
651
  ### Toolbar
634
652
 
@@ -2,7 +2,12 @@ type __VLS_Props = {
2
2
  name?: string;
3
3
  icon?: string;
4
4
  collapsed?: boolean;
5
+ interactive?: boolean;
5
6
  };
6
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
7
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
8
+ activate: (event: MouseEvent) => any;
9
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onActivate?: ((event: MouseEvent) => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
7
12
  declare const _default: typeof __VLS_export;
8
13
  export default _default;
@@ -33,7 +33,11 @@ type __VLS_Slots = {
33
33
  default?: () => unknown;
34
34
  footer?: () => unknown;
35
35
  };
36
- declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
36
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
37
+ brand: (event: MouseEvent) => any;
38
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
39
+ onBrand?: ((event: MouseEvent) => any) | undefined;
40
+ }>, {
37
41
  height: "auto" | "fill";
38
42
  minHeight: string;
39
43
  sidebarWidth: string;
@@ -1,6 +1,8 @@
1
1
  type __VLS_Props = {
2
2
  loading?: boolean;
3
3
  text?: string;
4
+ /** Milliseconds `loading` must last before the overlay shows, so a quick load does not flash it. The region is `aria-busy` at once. */
5
+ delay?: number;
4
6
  };
5
7
  declare var __VLS_1: {};
6
8
  type __VLS_Slots = {} & {
@@ -9,6 +11,7 @@ type __VLS_Slots = {} & {
9
11
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
12
  text: string;
11
13
  loading: boolean;
14
+ delay: number;
12
15
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
13
16
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
17
  declare const _default: typeof __VLS_export;
@@ -32,6 +32,7 @@ export declare const englishUiText: {
32
32
  readonly Notifications: "Notifications";
33
33
  readonly "Press F6 to access notifications": "Press F6 to access notifications";
34
34
  readonly "Application navigation": "Application navigation";
35
+ readonly "Go to home": "Go to home";
35
36
  readonly "Collapse navigation": "Collapse navigation";
36
37
  readonly "Expand navigation": "Expand navigation";
37
38
  readonly "Resize navigation": "Resize navigation";