@synopackageland/ui 0.13.0 → 0.13.2
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 +15 -0
- package/README.md +25 -0
- package/dist/components/app/app-layout/AppLayout.vue.d.ts +8 -1
- package/dist/components/app/app-sidebar/AppTopNav.vue.d.ts +13 -0
- package/dist/components/app/app-sidebar/AppTopNavItems.vue.d.ts +13 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8739 -8518
- package/dist/json/catalog.d.ts +8 -0
- package/dist/json/registry.d.ts +136 -0
- package/dist/json-ai-prompt.md +1 -1
- package/dist/json-catalog.schema.json +15 -1
- package/dist/json-preview/preview.js +12219 -9652
- package/dist/json.js +157 -155
- package/dist/lib/adaptiveLayout.d.ts +4 -0
- package/dist/reka-runtime.json +1 -1
- package/dist/theme.css +1 -1
- package/dist/themes/dsm7-embedded-theme.css +1 -1
- package/dist/themes/dsm7-embedded.css +1 -1
- package/dist/themes/dsm7.css +1 -1
- package/docs/adaptive-layout.md +5 -0
- package/docs/json-ui.md +2 -0
- package/docs/theme-hooks.md +168 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.13.2 (2026-10-21)
|
|
4
|
+
|
|
5
|
+
- Fix inherited `--ui-nav-row-height` overrides: web and mobile layout modes now supply only an internal fallback. A theme can set the public token on any ancestor, including outside `AppLayout`; unset, window/web/mobile rows remain 42/40/46px. Sidebar, top-navigation and tree rows use the same fallback, and explicit density values remain supported.
|
|
6
|
+
- `AppLayout navigation="top"` with `AppSidebar` measures the available width and moves trailing items into a localized More dropdown instead of requiring horizontal scrolling. It preserves order, nested/selectable parents and disabled states; More shows the selected state when its subtree contains the current page. Hidden bar rows are inert and aria-hidden; keyboard navigation, Escape focus return and focus recovery on resize are supported. The default sidebar and phone drawer keep their existing navigation behavior.
|
|
7
|
+
- Document the row-height override and public overflow hooks in `docs/theme-hooks.md`; add overflow/resize regression tests and Histoire examples at 1365/1024/390px.
|
|
8
|
+
|
|
9
|
+
## 0.13.1 (2026-10-21)
|
|
10
|
+
|
|
11
|
+
Additive only: existing props, default appearance and DOM structure are unchanged (new attributes only), so this is a patch release within the 0.13 line.
|
|
12
|
+
|
|
13
|
+
- Add `AppLayout navigation="top"` (also JSON `AppShell`): the `sidebar` slot becomes one bar above the page in the DSM-window and web presentations, with the brand, the `AppSidebar` items in a row (a row with children opens them in a menu; the bar scrolls sideways when the items run out of room) and `sidebar-footer`. There is no collapse or resize in this mode. A phone keeps the drawer. The default `"sidebar"` is unchanged. The SDK's `AppShell` has to forward the prop before an app can choose it through that shell (#19).
|
|
14
|
+
- Add theme tokens `--ui-icon-size` (navigation icons), `--ui-heading-weight` (`PageHeader`, `Card`, `TypoHeader` and web toolbar titles) and `--ui-card-padding` (a regular `Card`'s inset), plus `--ui-top-nav-height/-bg/-border` for the top bar and `--ui-mobile-bar-bg/-fg/-border` for the phone bar. Each is read with a fallback equal to the previous value: unset, nothing changes (#19).
|
|
15
|
+
- `Button`, `IconButton` and `SplitButton`'s group expose their variant as `data-variant`; the phone bar's menu button has `data-ui-mobile-menu` (#19).
|
|
16
|
+
- `docs/theme-hooks.md` (shipped in the package) makes the listed `data-ui-*`/`data-*` attributes and layout tokens public API, with stability rules: names, elements and listed values hold until a release marked breaking; values may be added in a patch; classes and nesting are not API (#19).
|
|
17
|
+
|
|
3
18
|
## 0.13.0 (2026-10-20)
|
|
4
19
|
|
|
5
20
|
- Fix `SegmentControl variant="sheet"`: the selected tab keeps the content surface and accent text. Unselected background and text classes now apply only to unselected tabs, so stylesheet order cannot make the selected tab grey again (#16).
|
package/README.md
CHANGED
|
@@ -350,6 +350,22 @@ import { AppLayout, Button, PageHeader } from '@synopackageland/ui'
|
|
|
350
350
|
|
|
351
351
|
`AppLayout` also accepts `sidebar`, `toolbar`, and `footer` slots.
|
|
352
352
|
|
|
353
|
+
`navigation="top"` (0.13.1+) lays the `sidebar` slot out as one bar above the
|
|
354
|
+
page instead of a left column: the brand, then the `AppSidebar` items in a row
|
|
355
|
+
(a row with children opens them in a menu; the bar scrolls sideways when the
|
|
356
|
+
items run out of room), then `sidebar-footer`. It applies in the DSM-window
|
|
357
|
+
and web presentations; a phone keeps the drawer. The default `"sidebar"` is
|
|
358
|
+
unchanged. The JSON `AppShell` accepts the same prop; the SDK's `AppShell` must
|
|
359
|
+
forward it before an app can choose it through that shell.
|
|
360
|
+
|
|
361
|
+
```vue
|
|
362
|
+
<AppLayout navigation="top" wide-layout="web">
|
|
363
|
+
<template #sidebar><AppSidebar v-model="page" :groups="groups" /></template>
|
|
364
|
+
<template #sidebar-footer><AppSidebarUser name="Ada Lin" /></template>
|
|
365
|
+
<PageContent>…</PageContent>
|
|
366
|
+
</AppLayout>
|
|
367
|
+
```
|
|
368
|
+
|
|
353
369
|
For standalone content that owns its layout, use `<PageContent surface="none" height="fill">`.
|
|
354
370
|
It removes the page's horizontal gutters and adds no surface in web, DSM-window
|
|
355
371
|
or phone layouts. The default `surface="auto"` remains unchanged; `flat` keeps
|
|
@@ -431,6 +447,15 @@ Status tones come in pairs, a soft fill and the text that reads on it:
|
|
|
431
447
|
`StatusDot`, `StepList` and `ConnectionTopology` use only these and the base
|
|
432
448
|
tones (`--ui-success`, …).
|
|
433
449
|
|
|
450
|
+
**Theme hooks.** The `data-ui-*` and `data-*` attributes and the layout tokens
|
|
451
|
+
listed in [docs/theme-hooks.md](docs/theme-hooks.md) are public API with
|
|
452
|
+
stability rules (0.13.1+): `--ui-icon-size`, `--ui-heading-weight`,
|
|
453
|
+
`--ui-card-padding`, the top bar's `--ui-top-nav-*` and the phone bar's
|
|
454
|
+
`--ui-mobile-bar-*`, `Button`'s `data-variant`, the layout regions
|
|
455
|
+
(`data-ui-layout-sidebar`, `data-ui-layout-main`, `data-ui-mobile-navigation`,
|
|
456
|
+
…). Each token is unset by default and the component then looks as before.
|
|
457
|
+
Everything else (classes, nesting) is an implementation detail.
|
|
458
|
+
|
|
434
459
|
Density can be switched per application subtree:
|
|
435
460
|
|
|
436
461
|
```html
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WideLayout } from '../../../lib/adaptiveLayout';
|
|
1
|
+
import { AppNavigation, WideLayout } from '../../../lib/adaptiveLayout';
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
sidebarWidth?: string;
|
|
4
4
|
minHeight?: string;
|
|
@@ -18,6 +18,12 @@ type __VLS_Props = {
|
|
|
18
18
|
* page can keep its header and pager in view.
|
|
19
19
|
*/
|
|
20
20
|
height?: 'auto' | 'fill';
|
|
21
|
+
/**
|
|
22
|
+
* `'top'` lays the `sidebar` slot out as a bar across the top: brand,
|
|
23
|
+
* then the navigation in one row, then `sidebar-footer`. A phone keeps the
|
|
24
|
+
* drawer. Defaults to the left sidebar.
|
|
25
|
+
*/
|
|
26
|
+
navigation?: AppNavigation;
|
|
21
27
|
};
|
|
22
28
|
type __VLS_Slots = {
|
|
23
29
|
sidebar?: () => unknown;
|
|
@@ -36,6 +42,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
36
42
|
sidebarStorageKey: string;
|
|
37
43
|
brandName: string;
|
|
38
44
|
brandIcon: string;
|
|
45
|
+
navigation: AppNavigation;
|
|
39
46
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
40
47
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
41
48
|
declare const _default: typeof __VLS_export;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AppSidebarGroup, AppSidebarItem } from './types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
groups: AppSidebarGroup[];
|
|
4
|
+
modelValue?: string;
|
|
5
|
+
label: string;
|
|
6
|
+
};
|
|
7
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
8
|
+
select: (item: AppSidebarItem) => any;
|
|
9
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
10
|
+
onSelect?: ((item: AppSidebarItem) => any) | undefined;
|
|
11
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AppSidebarItem } from './types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
items: AppSidebarItem[];
|
|
4
|
+
modelValue?: string;
|
|
5
|
+
overflow?: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
8
|
+
select: (item: AppSidebarItem) => any;
|
|
9
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
10
|
+
onSelect?: ((item: AppSidebarItem) => any) | undefined;
|
|
11
|
+
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
package/dist/index.d.ts
CHANGED
|
@@ -183,7 +183,7 @@ export type { AccentScale } from './lib/accent';
|
|
|
183
183
|
export { default as AppLayout } from './components/app/app-layout/AppLayout.vue';
|
|
184
184
|
export { default as ResponsiveView } from './components/app/responsive-view/ResponsiveView.vue';
|
|
185
185
|
export { appPresentationForWidth, MOBILE_LAYOUT_MAX, WEB_LAYOUT_MIN } from './lib/adaptiveLayout';
|
|
186
|
-
export type { AppPresentation, WideLayout } from './lib/adaptiveLayout';
|
|
186
|
+
export type { AppNavigation, AppPresentation, WideLayout } from './lib/adaptiveLayout';
|
|
187
187
|
export { ensureDeviceViewport } from './lib/deviceViewport';
|
|
188
188
|
export { default as AppSidebar } from './components/app/app-sidebar/AppSidebar.vue';
|
|
189
189
|
export { default as AppSidebarUser } from './components/app/app-sidebar/AppSidebarUser.vue';
|